import { ontology, status, TimeStamp } from '@synnaxlabs/client';
import { default as z } from 'zod';
import { Flux } from '../flux';
import { Label } from '../label';
export declare const FLUX_STORE_KEY = "statuses";
export interface FluxStore extends Flux.UnaryStore<status.Key, status.Status> {
}
export interface FluxSubStore extends Label.FluxSubStore {
    [FLUX_STORE_KEY]: FluxStore;
}
export declare const FLUX_STORE_CONFIG: Flux.UnaryStoreConfig<FluxSubStore>;
export interface ListParams extends status.MultiRetrieveArgs {
}
export declare const useList: Flux.UseList<ListParams, string, {
    key: string;
    name: string;
    variant: "error" | "success" | "disabled" | "loading" | "info" | "warning";
    message: string;
    description?: string;
    time: TimeStamp;
    labels?: import('node_modules/@synnaxlabs/x/dist/src/label/label').Label[];
}>;
export declare const useDelete: Flux.UseUpdate<string | string[], string | string[], z.ZodNever>;
export interface SetParams {
    statuses: status.New | status.New[];
    parent?: ontology.ID;
}
export declare const useSet: Flux.UseUpdate<SetParams, SetParams, z.ZodNever>;
export interface RetrieveQuery extends status.SingleRetrieveArgs {
}
interface RetrieveSingleParams<DetailsSchema extends z.ZodType = z.ZodNever> extends Flux.RetrieveParams<status.SingleRetrieveArgs, FluxSubStore> {
    detailsSchema?: DetailsSchema;
}
export declare const retrieveSingle: <DetailsSchema extends z.ZodType = z.ZodNever>({ store, client, query, detailsSchema, }: RetrieveSingleParams<DetailsSchema>) => Promise<status.Status<DetailsSchema>>;
export declare const createRetrieve: <DetailsSchema extends z.ZodType = z.ZodNever>(detailsSchema?: DetailsSchema) => Flux.CreateRetrieveReturn<RetrieveQuery, status.Status<DetailsSchema>>;
export declare const useRetrieve: Flux.UseRetrieve<RetrieveQuery, {
    key: string;
    name: string;
    variant: "error" | "success" | "disabled" | "loading" | "info" | "warning";
    message: string;
    description?: string;
    time: TimeStamp;
    labels?: import('node_modules/@synnaxlabs/x/dist/src/label/label').Label[];
}>;
export declare const useSetSynchronizer: (onSet: (status: status.Status) => void) => void;
export declare const formSchema: z.ZodObject<{
    key: z.ZodString;
    message: z.ZodString;
    time: typeof TimeStamp.z;
    name: z.ZodDefault<z.ZodString>;
    variant: typeof import('node_modules/@synnaxlabs/x/dist/src/status/status').variantZ;
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodUUID>>;
}, z.core.$strip>;
export declare const useForm: Flux.UseForm<Partial<RetrieveQuery>, z.ZodObject<{
    key: z.ZodString;
    message: z.ZodString;
    time: typeof TimeStamp.z;
    name: z.ZodDefault<z.ZodString>;
    variant: typeof import('node_modules/@synnaxlabs/x/dist/src/status/status').variantZ;
    description: z.ZodOptional<z.ZodString>;
    labels: z.ZodOptional<z.ZodArray<z.ZodUUID>>;
}, z.core.$strip>, FluxSubStore>;
export interface RenameParams extends Pick<status.Status, "key" | "name"> {
}
export declare const useRename: Flux.UseUpdate<RenameParams, RenameParams, z.ZodNever>;
export {};
//# sourceMappingURL=queries.d.ts.map