import type { ConfigUpdateResponse } from "../modules/server/SystemController";
import { ModuleApi } from "./ModuleApi";
import type { ModuleConfigs, ModuleKey, ModuleSchemas } from "./ModuleManager";
import type { TPermission } from "../auth/authorize/Permission";
export type ApiSchemaResponse = {
    version: number;
    schema: ModuleSchemas;
    config: ModuleConfigs;
    permissions: string[];
};
export declare class SystemApi extends ModuleApi<any> {
    protected getDefaultOptions(): Partial<any>;
    readConfig(): import("..").FetchPromise<import("..").ResponseObject<{
        version: number;
    } & ModuleConfigs, {
        basepath?: string | undefined;
        default_primary_format?: "integer" | "uuid" | undefined;
        entities?: {
            [x: string]: {
                name?: string | undefined;
                type?: "regular" | "system" | "generated" | undefined;
                fields?: {
                    [x: string]: {
                        name?: string | undefined;
                        config?: {
                            description?: string | undefined;
                            maxLength?: number | undefined;
                            minLength?: number | undefined;
                            pattern?: string | undefined;
                            required?: boolean | undefined;
                            default_value?: string | undefined;
                            html_config?: {
                                [x: string]: unknown;
                                element?: string | undefined;
                                props?: {
                                    [x: string]: string | number;
                                } | undefined;
                            } | undefined;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                        } | {
                            description?: string | undefined;
                            format?: "integer" | "uuid" | undefined;
                            required?: boolean | undefined;
                            default_value?: any;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                        } | {
                            description?: string | undefined;
                            required?: boolean | undefined;
                            multipleOf?: number | undefined;
                            maximum?: number | undefined;
                            exclusiveMaximum?: number | undefined;
                            minimum?: number | undefined;
                            exclusiveMinimum?: number | undefined;
                            default_value?: number | undefined;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                        } | {
                            description?: string | undefined;
                            required?: boolean | undefined;
                            default_value?: boolean | undefined;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                        } | {
                            description?: string | undefined;
                            type?: "date" | "week" | "datetime" | undefined;
                            required?: boolean | undefined;
                            default_value?: any;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                            timezone?: string | undefined;
                            min_date?: string | undefined;
                            max_date?: string | undefined;
                        } | {
                            description?: string | undefined;
                            required?: boolean | undefined;
                            default_value?: string | undefined;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                            options?: {
                                [x: string]: unknown;
                                values: string[];
                                type: "strings";
                            } | {
                                [x: string]: unknown;
                                values: {
                                    [x: string]: unknown;
                                    value: string;
                                    label: string;
                                }[];
                                type: "objects";
                            } | undefined;
                        } | {
                            description?: string | undefined;
                            required?: boolean | undefined;
                            default_value?: any;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                        } | {
                            description?: string | undefined;
                            required?: boolean | undefined;
                            default_value?: any;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                            schema?: any;
                            ui_schema?: any;
                            default_from_schema?: boolean | undefined;
                        } | {
                            description?: string | undefined;
                            required?: boolean | undefined;
                            default_value?: any;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                            target_field?: string | undefined;
                            target_field_type?: "text" | "integer" | undefined;
                            on_delete?: "cascade" | "set null" | "set default" | "restrict" | "no action" | undefined;
                            reference: string;
                            target: string;
                        } | {
                            description?: string | undefined;
                            required?: boolean | undefined;
                            default_value?: any;
                            label?: string | undefined;
                            fillable?: boolean | ("create" | "read" | "update" | "delete")[] | undefined;
                            hidden?: boolean | ("table" | "create" | "read" | "update" | "delete" | "form" | "submit")[] | undefined;
                            virtual?: boolean | undefined;
                            entity?: string | undefined;
                            min_items?: number | undefined;
                            max_items?: number | undefined;
                            mime_types?: string[] | undefined;
                        } | undefined;
                        type: "number" | "boolean" | "json" | "text" | "enum" | "media" | "date" | "relation" | "primary" | "jsonschema";
                    };
                } | undefined;
                config?: {
                    description?: string | undefined;
                    name?: string | undefined;
                    name_singular?: string | undefined;
                    sort_field?: string | undefined;
                    sort_dir?: "asc" | "desc" | undefined;
                    primary_format?: "integer" | "uuid" | undefined;
                } | undefined;
            };
        } | undefined;
        relations?: {
            [x: string]: {
                config?: {
                    required?: boolean | undefined;
                    sourceCardinality?: number | undefined;
                    with_limit?: number | undefined;
                    fieldConfig?: {
                        [x: string]: unknown;
                        label: string;
                    } | undefined;
                    mappedBy?: string | undefined;
                    inversedBy?: string | undefined;
                } | {
                    required?: boolean | undefined;
                    mappedBy?: string | undefined;
                    inversedBy?: string | undefined;
                    connectionTable?: string | undefined;
                    connectionTableMappedName?: string | undefined;
                } | {
                    required?: boolean | undefined;
                    mappedBy?: string | undefined;
                    inversedBy?: string | undefined;
                    targetCardinality?: number | undefined;
                } | undefined;
                type: string;
                target: string;
                source: string;
            };
        } | undefined;
        indices?: {
            [x: string]: {
                unique?: boolean | undefined;
                fields: string[];
                entity: string;
            };
        } | undefined;
    }>>;
    readSchema(options?: {
        config?: boolean;
        secrets?: boolean;
        fresh?: boolean;
    }): import("..").FetchPromise<import("..").ResponseObject<ApiSchemaResponse, ApiSchemaResponse>>;
    setConfig<Module extends ModuleKey>(module: Module, value: ModuleConfigs[Module], force?: boolean): import("..").FetchPromise<import("..").ResponseObject<ConfigUpdateResponse, ConfigUpdateResponse>>;
    addConfig<Module extends ModuleKey>(module: Module, path: string, value: any): import("..").FetchPromise<import("..").ResponseObject<ConfigUpdateResponse, ConfigUpdateResponse>>;
    patchConfig<Module extends ModuleKey>(module: Module, path: string, value: any): import("..").FetchPromise<import("..").ResponseObject<ConfigUpdateResponse, ConfigUpdateResponse>>;
    overwriteConfig<Module extends ModuleKey>(module: Module, path: string, value: any): import("..").FetchPromise<import("..").ResponseObject<ConfigUpdateResponse, ConfigUpdateResponse>>;
    removeConfig<Module extends ModuleKey>(module: Module, path: string): import("..").FetchPromise<import("..").ResponseObject<ConfigUpdateResponse, ConfigUpdateResponse>>;
    permissions(): import("..").FetchPromise<import("..").ResponseObject<{
        permissions: TPermission[];
        context: object;
    }, {
        permissions: TPermission[];
        context: object;
    }>>;
}
