import { BivariantCallback, PickRequired } from "@ariakit/utils";
import { Store } from "@ariakit/react-store";
import * as Core from "@ariakit/components/collection/collection-store";
//#region src/collection/collection-store.d.ts
declare function useCollectionStoreProps<T extends Core.CollectionStore>(store: T, update: () => void, props: CollectionStoreProps): T;
/**
 * Creates a collection store to control
 * [Collection](https://ariakit.com/components/collection) components.
 * @see https://ariakit.com/components/collection
 * @example
 * ```jsx
 * const collection = useCollectionStore();
 *
 * <Collection store={collection}>
 *   <CollectionItem>Item</CollectionItem>
 *   <CollectionItem>Item</CollectionItem>
 *   <CollectionItem>Item</CollectionItem>
 * </Collection>
 * ```
 */
declare function useCollectionStore<T extends CollectionStoreItem$1 = CollectionStoreItem$1>(props: PickRequired<CollectionStoreProps<T>, "items" | "defaultItems">): CollectionStore<T>;
declare function useCollectionStore(props?: CollectionStoreProps): CollectionStore;
interface CollectionStoreItem$1 extends Core.CollectionStoreItem {}
interface CollectionStoreState<T extends CollectionStoreItem$1 = CollectionStoreItem$1> extends Core.CollectionStoreState<T> {}
interface CollectionStoreFunctions<T extends CollectionStoreItem$1 = CollectionStoreItem$1> extends Core.CollectionStoreFunctions<T> {}
interface CollectionStoreOptions<T extends CollectionStoreItem$1 = CollectionStoreItem$1> extends Core.CollectionStoreOptions<T> {
  /**
   * A callback that gets called when the
   * [`items`](https://ariakit.com/reference/collection-provider#items) state
   * changes.
   * @example
   * const [items, setItems] = useState([]);
   * const collection = useCollectionStore({ items, setItems });
   */
  setItems?: BivariantCallback<(items: CollectionStoreState<T>["items"]) => void>;
}
interface CollectionStoreProps<T extends CollectionStoreItem$1 = CollectionStoreItem$1> extends CollectionStoreOptions<T>, Core.CollectionStoreProps<T> {}
interface CollectionStore<T extends CollectionStoreItem$1 = CollectionStoreItem$1> extends CollectionStoreFunctions<T>, Store<Core.CollectionStore<T>> {}
//#endregion
export { CollectionStoreProps as a, useCollectionStoreProps as c, CollectionStoreOptions as i, CollectionStoreFunctions as n, CollectionStoreState as o, CollectionStoreItem$1 as r, useCollectionStore as s, CollectionStore as t };
//# sourceMappingURL=collection-store-CS0ODeba.d.ts.map