import { label, ontology, ranger } from '@synnaxlabs/client';
import { Optional } from '@synnaxlabs/x';
import { z } from 'zod';
import { Flux } from '../flux';
import { Label } from '../label';
import { List } from '../list';
import { Ontology } from '../ontology';
import { ranger as aetherRanger } from './aether';
export interface KVFluxStore extends Flux.UnaryStore<string, ranger.KVPair> {
}
export interface AliasFluxStore extends Flux.UnaryStore<ranger.Key, ranger.Alias> {
}
export declare const RANGE_KV_FLUX_STORE_KEY = "rangeKV";
export declare const RANGE_ALIASES_FLUX_STORE_KEY = "rangeAliases";
export interface FluxSubStore extends Label.FluxSubStore, Ontology.FluxSubStore {
    [aetherRanger.FLUX_STORE_KEY]: aetherRanger.FluxStore;
    [RANGE_KV_FLUX_STORE_KEY]: KVFluxStore;
    [RANGE_ALIASES_FLUX_STORE_KEY]: AliasFluxStore;
}
export interface RetrieveQuery extends Pick<ranger.RetrieveRequest, "includeLabels" | "includeParent"> {
    key: ranger.Key;
}
export declare const useSetSynchronizer: (onSet: (range: ranger.Payload) => void) => void;
export declare const useDeleteSynchronizer: (onDelete: (key: ranger.Key) => void) => void;
export interface ListChildrenQuery extends List.PagerParams {
    key?: ranger.Key;
}
export declare const useListChildren: Flux.UseList<ListChildrenQuery, string, ranger.Range>;
export interface RetrieveParentQuery {
    id: ontology.ID;
}
export declare const useRetrieveParent: Flux.UseRetrieve<RetrieveParentQuery, ranger.Range | null>, useRetrieveParentEffect: Flux.UseRetrieveEffect<RetrieveParentQuery, ranger.Range | null>;
export declare const useRetrieve: Flux.UseRetrieve<RetrieveQuery, ranger.Range>, useRetrieveObservable: Flux.UseRetrieveObservable<RetrieveQuery, ranger.Range>;
export interface RetrieveMultipleQuery {
    keys: ranger.Keys;
}
export declare const useRetrieveMultiple: Flux.UseRetrieve<RetrieveMultipleQuery, ranger.Range[]>, useRetrieveObservableMultiple: Flux.UseRetrieveObservable<RetrieveMultipleQuery, ranger.Range[]>;
export declare const formSchema: z.ZodObject<{
    labels: z.ZodArray<z.ZodUUID>;
    parent: z.ZodOptional<z.ZodString>;
    timeRange: z.ZodObject<{
        start: z.ZodNumber;
        end: z.ZodNumber;
    }, z.core.$strip>;
    key: z.ZodOptional<z.ZodUUID>;
    color: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
}, z.core.$strip>;
export declare const toFormValues: (range: ranger.Range) => z.infer<typeof formSchema>;
export interface FormQuery extends Optional<RetrieveQuery, "key"> {
}
export declare const useForm: Flux.UseForm<FormQuery, z.ZodObject<{
    labels: z.ZodArray<z.ZodUUID>;
    parent: z.ZodOptional<z.ZodString>;
    timeRange: z.ZodObject<{
        start: z.ZodNumber;
        end: z.ZodNumber;
    }, z.core.$strip>;
    key: z.ZodOptional<z.ZodUUID>;
    color: z.ZodOptional<z.ZodString>;
    name: z.ZodString;
}, z.core.$strip>, FluxSubStore>;
export declare const useLabels: (key: ranger.Key) => Flux.UseDirectRetrieveReturn<label.Label[]>;
export interface ListQuery extends Omit<ranger.RetrieveRequest, "names"> {
}
export declare const useList: Flux.UseList<ListQuery, string, ranger.Range>;
export declare const metaDataFormSchema: z.ZodObject<{
    pairs: z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        value: z.ZodString;
    }, z.core.$strip>>;
}, z.core.$strip>;
export declare const KV_FLUX_STORE_CONFIG: Flux.UnaryStoreConfig<FluxSubStore>;
export interface ListMetaDataQuery {
    rangeKey: ranger.Key;
}
export declare const useListMetaData: Flux.UseList<ListMetaDataQuery, string, ranger.KVPair>;
export declare const kvPairFormSchema: z.ZodObject<{
    range: z.ZodUUID;
    key: z.ZodString;
    value: z.ZodString;
}, z.core.$strip>;
export interface KVFormQuery extends ListMetaDataQuery {
}
export declare const useKVPairForm: Flux.UseForm<KVFormQuery, z.ZodObject<{
    range: z.ZodUUID;
    key: z.ZodString;
    value: z.ZodString;
}, z.core.$strip>, FluxSubStore>;
export interface DeleteKVParams extends ListMetaDataQuery {
    key: string;
}
export declare const useDeleteKV: Flux.UseUpdate<DeleteKVParams, DeleteKVParams, z.ZodNever>;
export interface SetKVParams extends ListMetaDataQuery, ranger.KVPair {
}
export declare const useUpdateKV: Flux.UseUpdate<SetKVParams, SetKVParams, z.ZodNever>;
export declare const useCreate: Flux.UseUpdate<ranger.New, ranger.New, z.ZodNever>;
export type DeleteParams = ranger.Key | ranger.Keys;
export declare const useDelete: Flux.UseUpdate<DeleteParams, DeleteParams, z.ZodNever>;
export declare const ALIAS_FLUX_STORE_CONFIG: Flux.UnaryStoreConfig<FluxSubStore>;
export interface RenameParams extends Pick<ranger.Payload, "key" | "name"> {
}
export declare const useRename: Flux.UseUpdate<RenameParams, RenameParams, z.ZodNever>;
//# sourceMappingURL=queries.d.ts.map