import { user } from '@synnaxlabs/client';
import { z } from 'zod';
import { Flux } from '../flux';
import { RetrieveParams } from '../flux/retrieve';
import { Ontology } from '../ontology';
export type UseDeleteArgs = user.Key | user.Key[];
export interface FluxStore extends Flux.UnaryStore<user.Key, user.User> {
}
export declare const FLUX_STORE_KEY = "users";
export declare const FLUX_STORE_CONFIG: Flux.UnaryStoreConfig<FluxSubStore, user.Key, user.User>;
export interface FluxSubStore extends Flux.Store {
    [FLUX_STORE_KEY]: FluxStore;
    [Ontology.RELATIONSHIPS_FLUX_STORE_KEY]: Ontology.RelationshipFluxStore;
    [Ontology.RESOURCES_FLUX_STORE_KEY]: Ontology.ResourceFluxStore;
}
export declare const useDelete: Flux.UseUpdate<UseDeleteArgs, UseDeleteArgs, z.ZodNever, false, FluxSubStore>;
export interface RetrieveQuery {
    key: user.Key;
}
export declare const retrieveSingle: ({ client, query, store, }: RetrieveParams<RetrieveQuery, FluxSubStore>) => Promise<user.User>;
export interface ChangeUsernameParams extends Pick<user.User, "key" | "username"> {
}
export declare const useRename: Flux.UseUpdate<ChangeUsernameParams, ChangeUsernameParams, z.ZodNever, false, FluxSubStore>;
export interface UseRetrieveGroupArgs {
}
export declare const useRetrieveGroupID: Flux.UseRetrieve<UseRetrieveGroupArgs, {
    type: "label" | "log" | "builtin" | "cluster" | "channel" | "node" | "group" | "range" | "framer" | "range-alias" | "user" | "workspace" | "schematic" | "lineplot" | "rack" | "device" | "task" | "policy" | "role" | "table" | "arc" | "schematic_symbol" | "status" | "view";
    key: string;
} | {
    type: "node" | "view" | "label" | "table" | "range" | "group" | "log" | "status" | "role" | "cluster" | "schematic" | "channel" | "workspace" | "user" | "policy" | "task" | "device" | "rack" | "arc" | "builtin" | "framer" | "range-alias" | "lineplot" | "schematic_symbol";
    key: string;
} | undefined>;
export declare const formSchema: z.ZodObject<{
    key: z.ZodOptional<z.ZodUUID>;
    username: z.ZodString;
    password: z.ZodString;
    firstName: z.ZodString;
    lastName: z.ZodString;
    role: z.ZodUUID;
}, z.core.$strip>;
export interface UseFormParams {
    key?: user.Key;
}
export declare const useForm: Flux.UseForm<UseFormParams, z.ZodObject<{
    key: z.ZodOptional<z.ZodUUID>;
    username: z.ZodString;
    password: z.ZodString;
    firstName: z.ZodString;
    lastName: z.ZodString;
    role: z.ZodUUID;
}, z.core.$strip>, FluxSubStore>;
export declare const useRetrieve: Flux.UseRetrieve<Partial<RetrieveQuery>, user.User>;
//# sourceMappingURL=queries.d.ts.map