import { AnyRecord } from "@baqhub/sdk";
import { StoreContextProps } from "./storeContext.js";
export declare function buildAccessors(entity: string, proxyEntity: string): {
    recordByKey: (getState: () => import("./storeContext.js").EntityRecordsState<AnyRecord>) => <Q extends AnyRecord>(key: import("@baqhub/sdk").RecordKey<Q>) => Extract<AnyRecord, Q>;
    findRecordByKey: (getState: () => import("./storeContext.js").EntityRecordsState<AnyRecord>) => <Q extends AnyRecord>(key: import("@baqhub/sdk").RecordKey<Q>) => Extract<AnyRecord, Q> | undefined;
    findRecordByQuery: (getState: () => import("./storeContext.js").EntityRecordsState<AnyRecord>) => <Q extends AnyRecord>(query: import("@baqhub/sdk").Query<Q>) => Q | undefined;
    findEntityRecord: (getState: () => import("./storeContext.js").EntityRecordsState<AnyRecord>) => (targetEntity: string) => import("@baqhub/sdk").EntityRecord | undefined;
    findStandingDecision: (getState: () => import("./storeContext.js").EntityRecordsState<AnyRecord>) => (publisherEntity: string) => `${import("@baqhub/sdk").StandingDecision}`;
};
export declare function buildHelpers<T extends AnyRecord>(store: StoreContextProps<T>, accessors: ReturnType<typeof buildAccessors>, proxyEntity: string): {
    isAuthenticated: boolean;
    entity: string;
    proxyEntity: string;
    discover: (entity: string, signal?: AbortSignal) => Promise<import("@baqhub/sdk").EntityRecord>;
    downloadBlob: (record: AnyRecord, blob: import("@baqhub/sdk").AnyBlobLink, signal?: AbortSignal) => Promise<Blob>;
    recordByVersion: <Q extends T>(version: import("@baqhub/sdk").VersionHash<Q>) => Extract<T, Q>;
    recordByKey: <Q extends AnyRecord>(key: import("@baqhub/sdk").RecordKey<Q>) => Extract<AnyRecord, Q>;
    findRecordByKey: <Q extends AnyRecord>(key: import("@baqhub/sdk").RecordKey<Q>) => Extract<AnyRecord, Q> | undefined;
    findRecordByQuery: <Q extends AnyRecord>(query: import("@baqhub/sdk").Query<Q>) => Q | undefined;
    findEntityRecord: (targetEntity: string) => import("@baqhub/sdk").EntityRecord | undefined;
    findStandingDecision: (publisherEntity: string) => `${import("@baqhub/sdk").StandingDecision}`;
    updateStandingDecision: (publisherEntity: string, decision: import("@baqhub/sdk").StandingDecision) => void;
    updateRecords: import("./storeTypes.js").UpdateRecords<T>;
    uploadBlob: (blob: Blob, signal?: AbortSignal) => Promise<import("@baqhub/sdk").BlobResponse>;
    buildBlobUrl: <R extends T>(record: R, blob: import("@baqhub/sdk").AnyBlobLink, expiresInSeconds?: number) => string;
    onDisconnectRequest: import("@baqhub/sdk").Handler;
};
export interface ProxyStoreContextProps<T extends AnyRecord> {
    proxyEntity: string;
    accessors: ReturnType<typeof buildAccessors>;
    helpers: ReturnType<typeof buildHelpers<T>>;
}
export declare function buildProxyStoreContext<T extends AnyRecord>(): {
    ProxyStoreContext: import("react").Context<ProxyStoreContextProps<T> | undefined>;
    useProxyStoreContext: () => ProxyStoreContextProps<T>;
};
