import { Action, Store, Template, TemplateData, ZustandStoreGetter, ZustandStoreSetter } from '../types';
export declare const perPage = 3000;
export declare const baseFields: string[];
export declare const DefaultEqualityFn: <T extends TemplateData>(a?: Template<T>, b?: Template<T>) => boolean;
type CreateInitialStoreParam<T extends TemplateData> = Pick<Store<T>, 'appKey' | 'foldersEnabled' | 'userId' | 'publishEnabled' | 'appEntities' | 'reloadListOnOpen'> & Partial<Pick<Store<T>, 'presetTemplates' | 'templateIconColors' | 'templateIconMap' | 'defaultTemplateIcon' | 'defaultTemplateIconColor' | 'userProgramIds'>>;
export declare const createInitialStore: <T extends TemplateData>({ appKey, userId, foldersEnabled, publishEnabled, presetTemplates, templateIconMap, templateIconColors, defaultTemplateIcon, defaultTemplateIconColor, appEntities, userProgramIds, reloadListOnOpen, }: CreateInitialStoreParam<T>) => (set: ZustandStoreSetter<T>, get: ZustandStoreGetter<T>) => Store<T>;
export declare const getTemplatesControlStoreApi: <T extends TemplateData>() => {
    useDefaultTemplateIcon: () => string;
    useTemplateIconMap: () => Record<string, import("react").ComponentType<{
        color?: string;
        className?: string;
        size?: number;
    }>>;
    useTemplateIconColors: () => string[];
    useTemplateMenuData: () => {
        anchorEl: HTMLElement | null | undefined;
        templateId: number;
    } | undefined;
    useFolderMenuData: () => {
        anchorEl: HTMLElement | null | undefined;
        folder: import("../types").TreeFolder;
    } | undefined;
    useFoldersEnabled: () => boolean;
    usePublishEnabled: () => boolean;
    useSelectedTemplateId: () => number | undefined;
    useIsInitialized: () => boolean;
    useIsPopoverOpen: () => boolean;
    useCanPublish: () => boolean;
    useDefaultTemplateIconColor: () => string;
    useConfirmationModalType: () => import("../types").ConfirmationModalType | undefined;
    useConfirmationCallback: () => (() => void) | undefined;
    useConfirmationTemplateId: () => number | undefined;
    useConfirmationFolder: () => import("../types").TreeFolder | undefined;
    useTemplateControls: () => import("react").ComponentType<import("..").TemplatesControlAdditionalControlProps<T>> | undefined;
    useSetOnChange: () => (value: ((template: Template<T> | undefined, reason: "initialLoad" | "reloadList" | "deleteTemplate" | "selectTemplate") => void) | undefined) => void;
    useSetSearchString: () => (value: string | undefined) => void;
    useOpenTemplateMenu: () => (value: {
        anchorEl: HTMLElement | null | undefined;
        templateId: number;
    } | undefined) => void;
    useOpenFolderMenu: () => (value: {
        anchorEl: HTMLElement | null | undefined;
        folder: import("../types").TreeFolder;
    } | undefined) => void;
    useSetHooks: () => (value: {
        getDefaultTemplate?: ((templates: Template<T>[], state: {
            currentTemplateId?: number;
            templateSettings?: T | undefined;
            event: "loadList" | "reloadList" | "deleteTemplate";
        }) => Template<T> | undefined) | undefined;
        filterInitialTemplates?: ((allTemplates: Template<T>[]) => Template<T>[] | Promise<Template<T>[]>) | undefined;
    }) => void;
    useSetTemplateControls: () => (value: import("react").ComponentType<import("..").TemplatesControlAdditionalControlProps<T>> | undefined) => void;
    useIsBusy: () => boolean;
    useHasCurrentAction: (id?: number | string, action?: Action) => boolean;
    useAllTemplates: () => Template<T>[];
    useHasUnsavedChanges: (templateId: number | undefined) => boolean;
    useTree: () => {
        folders: Record<string, import("../types").TreeFolder>;
        tree: import("../types").TreeNode[];
        pathMap: Record<string, string[]>;
    };
    useFolders: () => import("../types").TreeFolder[];
    useTemplateIcon: (template?: Template) => import("react").ComponentType<{
        color?: string;
        className?: string;
        size?: number;
    }>;
    useTemplateIconColor: (template?: Template) => string;
    useTemplateById: (templateId?: number) => Template<T> | undefined;
    useSelectedTemplate: () => Template<T> | undefined;
    useOpenPopover: () => () => Promise<void>;
    useClosePopover: () => () => void;
    useCloseTemplateMenu: () => () => void;
    useCloseFolderMenu: () => () => void;
    useUpdateTemplateIcon: () => (id: number | undefined, update: Pick<Required<import("../types").TemplateMetaData>, "icon" | "iconColor">) => Promise<Template<T> | undefined>;
    useMoveToFolder: () => (id: number | undefined, folderPath: import("../types").TemplateMetaData["folderPath"]) => Promise<void>;
    useUpdateTemplateName: () => (id: number | undefined, name: Template["name"]) => Promise<void>;
    useSelectTemplate: () => (templateId?: number, force?: boolean) => Promise<{
        settings: T;
        id: number;
        name: string;
        isPreset?: boolean;
        metadata?: import("../types").TemplateMetaData;
        published?: boolean;
        shared?: boolean;
        app_id?: number;
        company_id?: number;
        updated_at?: string;
        shared_with?: number[];
    } | undefined>;
    useInitialize: () => void;
    useSetTemplateData: () => (templateId?: number, templateSettings?: T | undefined) => Promise<void>;
    useCopyTemplate: (templateId?: number) => () => Promise<void>;
    useCloseConfirmation: () => () => void;
    useRevertToOriginal: (template: Template) => () => void;
    useDeleteTemplate: (confirmationTargetTemplateId?: number) => () => void;
    useDeleteFolder: (confirmationTargetFolder?: import("../types").TreeFolder) => () => void;
    useUnfollowTemplate: (templateId?: number) => () => Promise<void>;
    useCreateTemplate: () => (name: string) => Promise<void>;
    useExportTemplate: (templateId?: number) => () => Promise<void>;
    useImportTemplate: () => () => Promise<void>;
    useUpdateFolderName: () => (folder?: import("../types").TreeFolder, name?: string) => Promise<void>;
    useShareTemplate: () => (templateId: number | undefined, userIds: number[]) => Promise<void>;
    usePublishTemplate: () => (templateId: number, rawName: string, { rigIds, programIds }: Pick<import("../types").TemplateMetaData, "rigIds" | "programIds">) => Promise<void>;
};
export declare const storeApi: {
    useDefaultTemplateIcon: () => string;
    useTemplateIconMap: () => Record<string, import("react").ComponentType<{
        color?: string;
        className?: string;
        size?: number;
    }>>;
    useTemplateIconColors: () => string[];
    useTemplateMenuData: () => {
        anchorEl: HTMLElement | null | undefined;
        templateId: number;
    } | undefined;
    useFolderMenuData: () => {
        anchorEl: HTMLElement | null | undefined;
        folder: import("../types").TreeFolder;
    } | undefined;
    useFoldersEnabled: () => boolean;
    usePublishEnabled: () => boolean;
    useSelectedTemplateId: () => number | undefined;
    useIsInitialized: () => boolean;
    useIsPopoverOpen: () => boolean;
    useCanPublish: () => boolean;
    useDefaultTemplateIconColor: () => string;
    useConfirmationModalType: () => import("../types").ConfirmationModalType | undefined;
    useConfirmationCallback: () => (() => void) | undefined;
    useConfirmationTemplateId: () => number | undefined;
    useConfirmationFolder: () => import("../types").TreeFolder | undefined;
    useTemplateControls: () => import("react").ComponentType<import("..").TemplatesControlAdditionalControlProps<object>> | undefined;
    useSetOnChange: () => (value: ((template: Template<object> | undefined, reason: "initialLoad" | "reloadList" | "deleteTemplate" | "selectTemplate") => void) | undefined) => void;
    useSetSearchString: () => (value: string | undefined) => void;
    useOpenTemplateMenu: () => (value: {
        anchorEl: HTMLElement | null | undefined;
        templateId: number;
    } | undefined) => void;
    useOpenFolderMenu: () => (value: {
        anchorEl: HTMLElement | null | undefined;
        folder: import("../types").TreeFolder;
    } | undefined) => void;
    useSetHooks: () => (value: {
        getDefaultTemplate?: ((templates: Template<object>[], state: {
            currentTemplateId?: number;
            templateSettings?: object | undefined;
            event: "loadList" | "reloadList" | "deleteTemplate";
        }) => Template<object> | undefined) | undefined;
        filterInitialTemplates?: ((allTemplates: Template<object>[]) => Template<object>[] | Promise<Template<object>[]>) | undefined;
    }) => void;
    useSetTemplateControls: () => (value: import("react").ComponentType<import("..").TemplatesControlAdditionalControlProps<object>> | undefined) => void;
    useIsBusy: () => boolean;
    useHasCurrentAction: (id?: number | string, action?: Action) => boolean;
    useAllTemplates: () => Template<object>[];
    useHasUnsavedChanges: (templateId: number | undefined) => boolean;
    useTree: () => {
        folders: Record<string, import("../types").TreeFolder>;
        tree: import("../types").TreeNode[];
        pathMap: Record<string, string[]>;
    };
    useFolders: () => import("../types").TreeFolder[];
    useTemplateIcon: (template?: Template) => import("react").ComponentType<{
        color?: string;
        className?: string;
        size?: number;
    }>;
    useTemplateIconColor: (template?: Template) => string;
    useTemplateById: (templateId?: number) => Template<object> | undefined;
    useSelectedTemplate: () => Template<object> | undefined;
    useOpenPopover: () => () => Promise<void>;
    useClosePopover: () => () => void;
    useCloseTemplateMenu: () => () => void;
    useCloseFolderMenu: () => () => void;
    useUpdateTemplateIcon: () => (id: number | undefined, update: Pick<Required<import("../types").TemplateMetaData>, "icon" | "iconColor">) => Promise<Template<object> | undefined>;
    useMoveToFolder: () => (id: number | undefined, folderPath: import("../types").TemplateMetaData["folderPath"]) => Promise<void>;
    useUpdateTemplateName: () => (id: number | undefined, name: Template["name"]) => Promise<void>;
    useSelectTemplate: () => (templateId?: number, force?: boolean) => Promise<{
        settings: object;
        id: number;
        name: string;
        isPreset?: boolean;
        metadata?: import("../types").TemplateMetaData;
        published?: boolean;
        shared?: boolean;
        app_id?: number;
        company_id?: number;
        updated_at?: string;
        shared_with?: number[];
    } | undefined>;
    useInitialize: () => void;
    useSetTemplateData: () => (templateId?: number, templateSettings?: object | undefined) => Promise<void>;
    useCopyTemplate: (templateId?: number) => () => Promise<void>;
    useCloseConfirmation: () => () => void;
    useRevertToOriginal: (template: Template) => () => void;
    useDeleteTemplate: (confirmationTargetTemplateId?: number) => () => void;
    useDeleteFolder: (confirmationTargetFolder?: import("../types").TreeFolder) => () => void;
    useUnfollowTemplate: (templateId?: number) => () => Promise<void>;
    useCreateTemplate: () => (name: string) => Promise<void>;
    useExportTemplate: (templateId?: number) => () => Promise<void>;
    useImportTemplate: () => () => Promise<void>;
    useUpdateFolderName: () => (folder?: import("../types").TreeFolder, name?: string) => Promise<void>;
    useShareTemplate: () => (templateId: number | undefined, userIds: number[]) => Promise<void>;
    usePublishTemplate: () => (templateId: number, rawName: string, { rigIds, programIds }: Pick<import("../types").TemplateMetaData, "rigIds" | "programIds">) => Promise<void>;
};
export {};
//# sourceMappingURL=Store.d.ts.map