import { channel, DataType, ranger } from '@synnaxlabs/client';
import { Optional } from '@synnaxlabs/x';
import { z } from 'zod';
import { Flux } from '../flux';
import { Ranger } from '../ranger';
export declare const FLUX_STORE_KEY = "channels";
export interface FluxStore extends Flux.UnaryStore<channel.Key, channel.Channel> {
}
interface SubStore extends Flux.Store {
    [FLUX_STORE_KEY]: FluxStore;
    [Ranger.RANGE_ALIASES_FLUX_STORE_KEY]: Ranger.AliasFluxStore;
}
export declare const useListenForCalculationStatus: (onChange: (status: channel.Status) => void) => void;
export declare const FLUX_STORE_CONFIG: Flux.UnaryStoreConfig<SubStore, channel.Key, channel.Channel>;
export declare const formSchema: z.ZodObject<{
    alias: z.ZodOptional<z.ZodString>;
    status: z.ZodOptional<z.ZodObject<{
        key: z.ZodString;
        variant: typeof import('node_modules/@synnaxlabs/x/dist/src/status/status').variantZ;
        message: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        time: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
            value: z.ZodBigInt;
        }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number] | [number, number] | [number, number, number]>>]>;
        details: z.ZodOptional<z.ZodUnknown>;
    }, z.core.$strip>>;
    key: z.ZodOptional<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
    leaseholder: z.ZodOptional<z.ZodNumber>;
    index: z.ZodOptional<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
    isIndex: z.ZodOptional<z.ZodBoolean>;
    internal: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    virtual: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    expression: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    requires: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodUnion<readonly [z.ZodNull, z.ZodUndefined]>, z.ZodTransform<number[], null | undefined>>, z.ZodArray<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>]>>>;
    name: z.ZodString;
    dataType: z.ZodPipe<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<DataType, string>>, z.ZodCustom<DataType, DataType>]>, z.ZodTransform<string, DataType>>;
}, z.core.$strip>;
export declare const calculatedFormSchema: z.ZodObject<{
    alias: z.ZodOptional<z.ZodString>;
    status: z.ZodOptional<z.ZodObject<{
        key: z.ZodString;
        variant: typeof import('node_modules/@synnaxlabs/x/dist/src/status/status').variantZ;
        message: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        time: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
            value: z.ZodBigInt;
        }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number] | [number, number] | [number, number, number]>>]>;
        details: z.ZodOptional<z.ZodUnknown>;
    }, z.core.$strip>>;
    key: z.ZodOptional<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
    leaseholder: z.ZodOptional<z.ZodNumber>;
    index: z.ZodOptional<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
    isIndex: z.ZodOptional<z.ZodBoolean>;
    internal: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    virtual: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    requires: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodUnion<readonly [z.ZodNull, z.ZodUndefined]>, z.ZodTransform<number[], null | undefined>>, z.ZodArray<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>]>>>;
    name: z.ZodString;
    dataType: z.ZodPipe<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<DataType, string>>, z.ZodCustom<DataType, DataType>]>, z.ZodTransform<string, DataType>>;
    expression: z.ZodString;
}, z.core.$strip>;
export interface RetrieveArgs {
    key: channel.Key;
    rangeKey?: ranger.Key;
}
export declare const ZERO_FORM_VALUES: z.infer<typeof formSchema | typeof calculatedFormSchema>;
export declare const retrieve: Flux.CreateRetrieveReturn<RetrieveArgs, channel.Channel>;
export interface RetrieveManyArgs extends channel.RetrieveOptions {
    keys: channel.Keys;
}
export declare const retrieveMany: Flux.CreateRetrieveReturn<RetrieveManyArgs, channel.Channel[]>;
export interface FormRetrieveArgs extends Optional<RetrieveArgs, "key"> {
}
export declare const useForm: Flux.UseForm<FormRetrieveArgs, z.ZodObject<{
    alias: z.ZodOptional<z.ZodString>;
    status: z.ZodOptional<z.ZodObject<{
        key: z.ZodString;
        variant: typeof import('node_modules/@synnaxlabs/x/dist/src/status/status').variantZ;
        message: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        time: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
            value: z.ZodBigInt;
        }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number] | [number, number] | [number, number, number]>>]>;
        details: z.ZodOptional<z.ZodUnknown>;
    }, z.core.$strip>>;
    key: z.ZodOptional<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
    leaseholder: z.ZodOptional<z.ZodNumber>;
    index: z.ZodOptional<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
    isIndex: z.ZodOptional<z.ZodBoolean>;
    internal: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    virtual: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    expression: z.ZodDefault<z.ZodOptional<z.ZodString>>;
    requires: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodUnion<readonly [z.ZodNull, z.ZodUndefined]>, z.ZodTransform<number[], null | undefined>>, z.ZodArray<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>]>>>;
    name: z.ZodString;
    dataType: z.ZodPipe<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<DataType, string>>, z.ZodCustom<DataType, DataType>]>, z.ZodTransform<string, DataType>>;
}, z.core.$strip>>;
export declare const useCalculatedForm: Flux.UseForm<FormRetrieveArgs, z.ZodObject<{
    alias: z.ZodOptional<z.ZodString>;
    status: z.ZodOptional<z.ZodObject<{
        key: z.ZodString;
        variant: typeof import('node_modules/@synnaxlabs/x/dist/src/status/status').variantZ;
        message: z.ZodString;
        description: z.ZodOptional<z.ZodString>;
        time: z.ZodUnion<readonly [z.ZodCustom<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeStamp>, z.ZodPipe<z.ZodObject<{
            value: z.ZodBigInt;
        }, z.core.$strip>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, {
            value: bigint;
        }>>, z.ZodPipe<z.ZodString, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, string>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, number>>, z.ZodPipe<z.ZodBigInt, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, bigint>>, z.ZodPipe<z.ZodDate, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, Date>>, z.ZodPipe<z.ZodCustom<import('@synnaxlabs/x').TimeSpan, import('@synnaxlabs/x').TimeSpan>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, import('@synnaxlabs/x').TimeSpan>>, z.ZodPipe<z.ZodUnion<readonly [z.ZodTuple<[z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt], null>, z.ZodTuple<[z.ZodInt, z.ZodInt, z.ZodInt], null>]>, z.ZodTransform<import('@synnaxlabs/x').TimeStamp, [number] | [number, number] | [number, number, number]>>]>;
        details: z.ZodOptional<z.ZodUnknown>;
    }, z.core.$strip>>;
    key: z.ZodOptional<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
    leaseholder: z.ZodOptional<z.ZodNumber>;
    index: z.ZodOptional<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>;
    isIndex: z.ZodOptional<z.ZodBoolean>;
    internal: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    virtual: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
    requires: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodPipe<z.ZodUnion<readonly [z.ZodNull, z.ZodUndefined]>, z.ZodTransform<number[], null | undefined>>, z.ZodArray<z.ZodUnion<[z.ZodUInt32, z.ZodPipe<z.ZodString, z.ZodTransform<number, string>>]>>]>>>;
    name: z.ZodString;
    dataType: z.ZodPipe<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<DataType, string>>, z.ZodCustom<DataType, DataType>]>, z.ZodTransform<string, DataType>>;
    expression: z.ZodString;
}, z.core.$strip>>;
export interface ListParams extends channel.RetrieveOptions {
    searchTerm?: string;
    rangeKey?: string;
    internal?: boolean;
    offset?: number;
    limit?: number;
}
export declare const useList: Flux.UseList<ListParams, number, channel.Channel>;
export interface UpdateArgs extends Optional<RetrieveArgs, "key"> {
}
export declare const update: Flux.CreateUpdateReturn<UpdateArgs, channel.New>;
export interface RenameArgs extends Optional<UpdateArgs, "key"> {
}
export declare const rename: Flux.CreateUpdateReturn<RenameArgs, string>;
interface UpdateAliasArgs extends Optional<UpdateArgs, "key"> {
    rangeKey?: string;
    channelKey: channel.Key;
}
export declare const updateAlias: Flux.CreateUpdateReturn<UpdateAliasArgs, string>;
export {};
//# sourceMappingURL=queries.d.ts.map