import { label, ontology } from '@synnaxlabs/client';
import { default as z } from 'zod';
import { Flux } from '../flux';
import { RetrieveParams } from '../flux/retrieve';
import { UpdateParams } from '../flux/update';
import { Ontology } from '../ontology';
export declare const FLUX_STORE_KEY = "labels";
export declare const RESOURCE_NAME = "Label";
export declare const PLURAL_RESOURCE_NAME = "Labels";
export interface FluxStore extends Flux.UnaryStore<label.Key, label.Label> {
}
export interface FluxSubStore extends Flux.Store {
    [FLUX_STORE_KEY]: FluxStore;
    [Ontology.RELATIONSHIPS_FLUX_STORE_KEY]: Ontology.RelationshipFluxStore;
}
export declare const FLUX_STORE_CONFIG: Flux.UnaryStoreConfig<FluxSubStore>;
export interface RetrieveQuery extends label.RetrieveSingleParams {
}
export declare const retrieveSingle: ({ store, query, client, }: RetrieveParams<RetrieveQuery, FluxSubStore>) => Promise<import('node_modules/@synnaxlabs/x/dist/src/label/label').Label>;
export declare const matchRelationship: (rel: ontology.Relationship, id: ontology.ID) => boolean;
interface LabelsOfQuery {
    id: ontology.ID;
}
export declare const retrieveCachedLabelsOf: (store: FluxSubStore, id: ontology.ID) => import('node_modules/@synnaxlabs/x/dist/src/label/label').Label[];
interface SetLabelsForParams extends Omit<UpdateParams<{
    id: ontology.ID;
    labels: label.Key[];
}, FluxSubStore>, "setStatus"> {
}
export declare const setLabelsFor: ({ store, client, rollbacks, data: { id, labels }, }: SetLabelsForParams) => Promise<label.Label[]>;
export declare const useRetrieveLabelsOf: Flux.UseRetrieve<LabelsOfQuery, import('node_modules/@synnaxlabs/x/dist/src/label/label').Label[]>;
export interface ListQuery extends label.RetrieveMultipleParams {
}
export declare const useList: Flux.UseList<ListQuery, string, import('node_modules/@synnaxlabs/x/dist/src/label/label').Label>;
interface FormQuery {
    key?: label.Key;
}
export declare const formSchema: z.ZodObject<{
    key: z.ZodOptional<z.ZodUUID>;
    name: import('zod').ZodString;
    color: import('zod').ZodString;
}, z.core.$strip>;
export declare const useForm: Flux.UseForm<FormQuery, z.ZodObject<{
    key: z.ZodOptional<z.ZodUUID>;
    name: import('zod').ZodString;
    color: import('zod').ZodString;
}, z.core.$strip>, FluxSubStore>;
export type DeleteParams = label.Key | label.Key[];
export declare const useDelete: Flux.UseUpdate<DeleteParams, DeleteParams, z.ZodNever>;
export interface RetrieveMultipleParams {
    keys: label.Key[];
}
export declare const useRetrieveMultiple: Flux.UseRetrieve<RetrieveMultipleParams, import('node_modules/@synnaxlabs/x/dist/src/label/label').Label[]>;
export {};
//# sourceMappingURL=queries.d.ts.map