import { FetchStore } from "../../store/FetchStore.js";
import type { Data } from "../../util/data.js";
import type { Identifier, Item, OptionalItem } from "../../util/item.js";
import type { Collection } from "../collection/Collection.js";
import type { DBProvider } from "../provider/DBProvider.js";
import type { MemoryDBProvider } from "../provider/MemoryDBProvider.js";
/** Store that stores a single item in a collection from a database provider. */
export declare class ItemStore<I extends Identifier, T extends Data> extends FetchStore<OptionalItem<I, T>> {
    readonly provider: DBProvider<I>;
    readonly collection: Collection<string, I, T>;
    readonly id: I;
    /**
     * The required item data of this store.
     * @throws {RequiredError} if item doesn't exist (i.e. if `this.value` is `undefined`
     */
    get item(): Item<I, T>;
    set item(data: T | Item<I, T>);
    constructor(collection: Collection<string, I, T>, id: I, provider: DBProvider<I>, memory?: MemoryDBProvider<I>);
    _fetch(_signal: AbortSignal): Promise<OptionalItem<I, T>>;
}
