/**
 * @fileoverview Strict Zod schema mirroring the official Appwrite CLI's
 * `appwrite.config.json` format (CLI v20+).
 *
 * The schemas here are intentionally a faithful, STRICT mirror of the source
 * of truth at `lib/commands/config.ts` in `appwrite-cli`. Unknown keys are
 * rejected on every object (`.strict()`), so that AppwriteUtils-specific
 * extensions cannot leak into a file that the official CLI is expected to
 * consume.
 *
 * Where AppwriteUtils already defines a richer schema for the same resource
 * (e.g. `BucketSchema`, `AppwriteFunctionSchema`), we intentionally define a
 * fresh, minimal schema here rather than `.omit()`-ing the extras. The two
 * shapes diverge in non-trivial ways (e.g. `permissions` vs `$permissions`,
 * `dirPath` vs `path`), and reusing them via omit would require many small
 * adjustments that obscure the parity with the official source. Keeping
 * these definitions inline makes the official contract easy to audit.
 *
 * If you need to extend a resource shape with AppwriteUtils-specific fields,
 * do that in `./utilsExtensionConfig.ts` instead.
 */
import { z } from "zod";
export declare const SettingsSchema: z.ZodObject<{
    services: z.ZodOptional<z.ZodObject<{
        account: z.ZodOptional<z.ZodBoolean>;
        avatars: z.ZodOptional<z.ZodBoolean>;
        databases: z.ZodOptional<z.ZodBoolean>;
        locale: z.ZodOptional<z.ZodBoolean>;
        health: z.ZodOptional<z.ZodBoolean>;
        storage: z.ZodOptional<z.ZodBoolean>;
        teams: z.ZodOptional<z.ZodBoolean>;
        users: z.ZodOptional<z.ZodBoolean>;
        sites: z.ZodOptional<z.ZodBoolean>;
        functions: z.ZodOptional<z.ZodBoolean>;
        graphql: z.ZodOptional<z.ZodBoolean>;
        messaging: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>;
    protocols: z.ZodOptional<z.ZodObject<{
        rest: z.ZodOptional<z.ZodBoolean>;
        graphql: z.ZodOptional<z.ZodBoolean>;
        websocket: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>;
    auth: z.ZodOptional<z.ZodObject<{
        methods: z.ZodOptional<z.ZodObject<{
            jwt: z.ZodOptional<z.ZodBoolean>;
            phone: z.ZodOptional<z.ZodBoolean>;
            invites: z.ZodOptional<z.ZodBoolean>;
            anonymous: z.ZodOptional<z.ZodBoolean>;
            "email-otp": z.ZodOptional<z.ZodBoolean>;
            "magic-url": z.ZodOptional<z.ZodBoolean>;
            "email-password": z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strict>>;
        security: z.ZodOptional<z.ZodObject<{
            duration: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
            limit: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
            sessionsLimit: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
            passwordHistory: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
            passwordDictionary: z.ZodOptional<z.ZodBoolean>;
            personalDataCheck: z.ZodOptional<z.ZodBoolean>;
            sessionAlerts: z.ZodOptional<z.ZodBoolean>;
            mockNumbers: z.ZodOptional<z.ZodArray<z.ZodObject<{
                phone: z.ZodString;
                otp: z.ZodString;
            }, z.core.$strict>>>;
        }, z.core.$strict>>;
    }, z.core.$strict>>;
}, z.core.$strict>;
export declare const SiteSchema: z.ZodObject<{
    path: z.ZodOptional<z.ZodString>;
    $id: z.ZodString;
    name: z.ZodString;
    logging: z.ZodOptional<z.ZodBoolean>;
    timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
    framework: z.ZodOptional<z.ZodString>;
    buildRuntime: z.ZodOptional<z.ZodString>;
    adapter: z.ZodOptional<z.ZodString>;
    installCommand: z.ZodOptional<z.ZodString>;
    buildCommand: z.ZodOptional<z.ZodString>;
    outputDirectory: z.ZodOptional<z.ZodString>;
    fallbackFile: z.ZodOptional<z.ZodString>;
    buildSpecification: z.ZodOptional<z.ZodString>;
    runtimeSpecification: z.ZodOptional<z.ZodString>;
    deploymentRetention: z.ZodOptional<z.ZodNumber>;
    startCommand: z.ZodOptional<z.ZodString>;
    vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, z.core.$strict>;
export declare const FunctionSchema: z.ZodObject<{
    path: z.ZodOptional<z.ZodString>;
    $id: z.ZodString;
    execute: z.ZodOptional<z.ZodArray<z.ZodString>>;
    name: z.ZodString;
    enabled: z.ZodOptional<z.ZodBoolean>;
    logging: z.ZodOptional<z.ZodBoolean>;
    runtime: z.ZodString;
    buildSpecification: z.ZodOptional<z.ZodString>;
    runtimeSpecification: z.ZodOptional<z.ZodString>;
    deploymentRetention: z.ZodOptional<z.ZodNumber>;
    scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
    events: z.ZodOptional<z.ZodArray<z.ZodString>>;
    schedule: z.ZodOptional<z.ZodString>;
    timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
    entrypoint: z.ZodOptional<z.ZodString>;
    commands: z.ZodOptional<z.ZodString>;
    vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    ignore: z.ZodOptional<z.ZodString>;
}, z.core.$strict>;
export declare const DatabaseSchema: z.ZodObject<{
    $id: z.ZodString;
    name: z.ZodString;
    enabled: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strict>;
export declare const AttributeSchema: z.ZodObject<{
    key: z.ZodString;
    type: z.ZodEnum<{
        string: "string";
        bigint: "bigint";
        boolean: "boolean";
        datetime: "datetime";
        integer: "integer";
        double: "double";
        relationship: "relationship";
        varchar: "varchar";
        text: "text";
        mediumtext: "mediumtext";
        longtext: "longtext";
        point: "point";
        polygon: "polygon";
        linestring: "linestring";
    }>;
    required: z.ZodOptional<z.ZodBoolean>;
    array: z.ZodOptional<z.ZodBoolean>;
    size: z.ZodOptional<z.ZodNumber>;
    default: z.ZodOptional<z.ZodAny>;
    min: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
    max: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
    format: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
        enum: "enum";
        email: "email";
        ip: "ip";
        url: "url";
        datetime: "datetime";
    }>, z.ZodLiteral<"">]>>;
    elements: z.ZodOptional<z.ZodArray<z.ZodString>>;
    relatedCollection: z.ZodOptional<z.ZodString>;
    relatedTable: z.ZodOptional<z.ZodString>;
    relationType: z.ZodOptional<z.ZodString>;
    twoWay: z.ZodOptional<z.ZodBoolean>;
    twoWayKey: z.ZodOptional<z.ZodString>;
    onDelete: z.ZodOptional<z.ZodString>;
    side: z.ZodOptional<z.ZodString>;
    attributes: z.ZodOptional<z.ZodArray<z.ZodString>>;
    orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
    encrypt: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strict>;
export declare const IndexSchema: z.ZodObject<{
    key: z.ZodString;
    type: z.ZodString;
    status: z.ZodOptional<z.ZodString>;
    attributes: z.ZodArray<z.ZodString>;
    orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strict>;
export declare const CollectionSchema: z.ZodObject<{
    $id: z.ZodString;
    $permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
    databaseId: z.ZodString;
    name: z.ZodString;
    enabled: z.ZodOptional<z.ZodBoolean>;
    documentSecurity: z.ZodDefault<z.ZodBoolean>;
    attributes: z.ZodOptional<z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        type: z.ZodEnum<{
            string: "string";
            bigint: "bigint";
            boolean: "boolean";
            datetime: "datetime";
            integer: "integer";
            double: "double";
            relationship: "relationship";
            varchar: "varchar";
            text: "text";
            mediumtext: "mediumtext";
            longtext: "longtext";
            point: "point";
            polygon: "polygon";
            linestring: "linestring";
        }>;
        required: z.ZodOptional<z.ZodBoolean>;
        array: z.ZodOptional<z.ZodBoolean>;
        size: z.ZodOptional<z.ZodNumber>;
        default: z.ZodOptional<z.ZodAny>;
        min: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
        max: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
        format: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
            enum: "enum";
            email: "email";
            ip: "ip";
            url: "url";
            datetime: "datetime";
        }>, z.ZodLiteral<"">]>>;
        elements: z.ZodOptional<z.ZodArray<z.ZodString>>;
        relatedCollection: z.ZodOptional<z.ZodString>;
        relatedTable: z.ZodOptional<z.ZodString>;
        relationType: z.ZodOptional<z.ZodString>;
        twoWay: z.ZodOptional<z.ZodBoolean>;
        twoWayKey: z.ZodOptional<z.ZodString>;
        onDelete: z.ZodOptional<z.ZodString>;
        side: z.ZodOptional<z.ZodString>;
        attributes: z.ZodOptional<z.ZodArray<z.ZodString>>;
        orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
        encrypt: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>>;
    indexes: z.ZodOptional<z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        type: z.ZodString;
        status: z.ZodOptional<z.ZodString>;
        attributes: z.ZodArray<z.ZodString>;
        orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strict>>>;
}, z.core.$strict>;
export declare const ColumnSchema: z.ZodObject<{
    key: z.ZodString;
    type: z.ZodEnum<{
        string: "string";
        bigint: "bigint";
        boolean: "boolean";
        datetime: "datetime";
        integer: "integer";
        double: "double";
        relationship: "relationship";
        varchar: "varchar";
        text: "text";
        mediumtext: "mediumtext";
        longtext: "longtext";
        point: "point";
        polygon: "polygon";
        linestring: "linestring";
    }>;
    required: z.ZodOptional<z.ZodBoolean>;
    array: z.ZodOptional<z.ZodBoolean>;
    size: z.ZodOptional<z.ZodNumber>;
    default: z.ZodOptional<z.ZodAny>;
    min: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
    max: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
    format: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
        enum: "enum";
        email: "email";
        ip: "ip";
        url: "url";
        datetime: "datetime";
    }>, z.ZodLiteral<"">]>>;
    elements: z.ZodOptional<z.ZodArray<z.ZodString>>;
    relatedTable: z.ZodOptional<z.ZodString>;
    relationType: z.ZodOptional<z.ZodString>;
    twoWay: z.ZodOptional<z.ZodBoolean>;
    twoWayKey: z.ZodOptional<z.ZodString>;
    onDelete: z.ZodOptional<z.ZodString>;
    side: z.ZodOptional<z.ZodString>;
    columns: z.ZodOptional<z.ZodArray<z.ZodString>>;
    orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
    encrypt: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strict>;
export declare const IndexTableSchema: z.ZodObject<{
    key: z.ZodString;
    type: z.ZodString;
    status: z.ZodOptional<z.ZodString>;
    columns: z.ZodArray<z.ZodString>;
    orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strict>;
export declare const TableSchema: z.ZodObject<{
    $id: z.ZodString;
    $permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
    databaseId: z.ZodString;
    name: z.ZodString;
    enabled: z.ZodOptional<z.ZodBoolean>;
    rowSecurity: z.ZodDefault<z.ZodBoolean>;
    columns: z.ZodOptional<z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        type: z.ZodEnum<{
            string: "string";
            bigint: "bigint";
            boolean: "boolean";
            datetime: "datetime";
            integer: "integer";
            double: "double";
            relationship: "relationship";
            varchar: "varchar";
            text: "text";
            mediumtext: "mediumtext";
            longtext: "longtext";
            point: "point";
            polygon: "polygon";
            linestring: "linestring";
        }>;
        required: z.ZodOptional<z.ZodBoolean>;
        array: z.ZodOptional<z.ZodBoolean>;
        size: z.ZodOptional<z.ZodNumber>;
        default: z.ZodOptional<z.ZodAny>;
        min: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
        max: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
        format: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
            enum: "enum";
            email: "email";
            ip: "ip";
            url: "url";
            datetime: "datetime";
        }>, z.ZodLiteral<"">]>>;
        elements: z.ZodOptional<z.ZodArray<z.ZodString>>;
        relatedTable: z.ZodOptional<z.ZodString>;
        relationType: z.ZodOptional<z.ZodString>;
        twoWay: z.ZodOptional<z.ZodBoolean>;
        twoWayKey: z.ZodOptional<z.ZodString>;
        onDelete: z.ZodOptional<z.ZodString>;
        side: z.ZodOptional<z.ZodString>;
        columns: z.ZodOptional<z.ZodArray<z.ZodString>>;
        orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
        encrypt: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>>;
    indexes: z.ZodOptional<z.ZodArray<z.ZodObject<{
        key: z.ZodString;
        type: z.ZodString;
        status: z.ZodOptional<z.ZodString>;
        columns: z.ZodArray<z.ZodString>;
        orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strict>>>;
}, z.core.$strict>;
export declare const BucketSchema: z.ZodObject<{
    $id: z.ZodString;
    $permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
    fileSecurity: z.ZodOptional<z.ZodBoolean>;
    name: z.ZodString;
    enabled: z.ZodOptional<z.ZodBoolean>;
    maximumFileSize: z.ZodOptional<z.ZodNumber>;
    allowedFileExtensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
    compression: z.ZodOptional<z.ZodString>;
    encryption: z.ZodOptional<z.ZodBoolean>;
    antivirus: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strict>;
export declare const TeamSchema: z.ZodObject<{
    $id: z.ZodString;
    name: z.ZodString;
}, z.core.$strict>;
export declare const WebhookSchema: z.ZodObject<{
    $id: z.ZodString;
    name: z.ZodString;
    url: z.ZodString;
    events: z.ZodArray<z.ZodString>;
    enabled: z.ZodOptional<z.ZodBoolean>;
    tls: z.ZodOptional<z.ZodBoolean>;
}, z.core.$strict>;
export declare const TopicSchema: z.ZodObject<{
    $id: z.ZodString;
    name: z.ZodString;
    subscribe: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strict>;
export declare const MessageSchema: z.ZodObject<{
    $id: z.ZodString;
    name: z.ZodString;
    emailTotal: z.ZodOptional<z.ZodNumber>;
    smsTotal: z.ZodOptional<z.ZodNumber>;
    pushTotal: z.ZodOptional<z.ZodNumber>;
    subscribe: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$strict>;
export declare const AppwriteOfficialConfigSchema: z.ZodObject<{
    projectId: z.ZodString;
    projectName: z.ZodOptional<z.ZodString>;
    endpoint: z.ZodOptional<z.ZodString>;
    settings: z.ZodOptional<z.ZodObject<{
        services: z.ZodOptional<z.ZodObject<{
            account: z.ZodOptional<z.ZodBoolean>;
            avatars: z.ZodOptional<z.ZodBoolean>;
            databases: z.ZodOptional<z.ZodBoolean>;
            locale: z.ZodOptional<z.ZodBoolean>;
            health: z.ZodOptional<z.ZodBoolean>;
            storage: z.ZodOptional<z.ZodBoolean>;
            teams: z.ZodOptional<z.ZodBoolean>;
            users: z.ZodOptional<z.ZodBoolean>;
            sites: z.ZodOptional<z.ZodBoolean>;
            functions: z.ZodOptional<z.ZodBoolean>;
            graphql: z.ZodOptional<z.ZodBoolean>;
            messaging: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strict>>;
        protocols: z.ZodOptional<z.ZodObject<{
            rest: z.ZodOptional<z.ZodBoolean>;
            graphql: z.ZodOptional<z.ZodBoolean>;
            websocket: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strict>>;
        auth: z.ZodOptional<z.ZodObject<{
            methods: z.ZodOptional<z.ZodObject<{
                jwt: z.ZodOptional<z.ZodBoolean>;
                phone: z.ZodOptional<z.ZodBoolean>;
                invites: z.ZodOptional<z.ZodBoolean>;
                anonymous: z.ZodOptional<z.ZodBoolean>;
                "email-otp": z.ZodOptional<z.ZodBoolean>;
                "magic-url": z.ZodOptional<z.ZodBoolean>;
                "email-password": z.ZodOptional<z.ZodBoolean>;
            }, z.core.$strict>>;
            security: z.ZodOptional<z.ZodObject<{
                duration: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
                limit: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
                sessionsLimit: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
                passwordHistory: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
                passwordDictionary: z.ZodOptional<z.ZodBoolean>;
                personalDataCheck: z.ZodOptional<z.ZodBoolean>;
                sessionAlerts: z.ZodOptional<z.ZodBoolean>;
                mockNumbers: z.ZodOptional<z.ZodArray<z.ZodObject<{
                    phone: z.ZodString;
                    otp: z.ZodString;
                }, z.core.$strict>>>;
            }, z.core.$strict>>;
        }, z.core.$strict>>;
    }, z.core.$strict>>;
    includes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    functions: z.ZodOptional<z.ZodArray<z.ZodObject<{
        path: z.ZodOptional<z.ZodString>;
        $id: z.ZodString;
        execute: z.ZodOptional<z.ZodArray<z.ZodString>>;
        name: z.ZodString;
        enabled: z.ZodOptional<z.ZodBoolean>;
        logging: z.ZodOptional<z.ZodBoolean>;
        runtime: z.ZodString;
        buildSpecification: z.ZodOptional<z.ZodString>;
        runtimeSpecification: z.ZodOptional<z.ZodString>;
        deploymentRetention: z.ZodOptional<z.ZodNumber>;
        scopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
        events: z.ZodOptional<z.ZodArray<z.ZodString>>;
        schedule: z.ZodOptional<z.ZodString>;
        timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
        entrypoint: z.ZodOptional<z.ZodString>;
        commands: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
        ignore: z.ZodOptional<z.ZodString>;
    }, z.core.$strict>>>;
    sites: z.ZodOptional<z.ZodArray<z.ZodObject<{
        path: z.ZodOptional<z.ZodString>;
        $id: z.ZodString;
        name: z.ZodString;
        logging: z.ZodOptional<z.ZodBoolean>;
        timeout: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodBigInt]>>;
        framework: z.ZodOptional<z.ZodString>;
        buildRuntime: z.ZodOptional<z.ZodString>;
        adapter: z.ZodOptional<z.ZodString>;
        installCommand: z.ZodOptional<z.ZodString>;
        buildCommand: z.ZodOptional<z.ZodString>;
        outputDirectory: z.ZodOptional<z.ZodString>;
        fallbackFile: z.ZodOptional<z.ZodString>;
        buildSpecification: z.ZodOptional<z.ZodString>;
        runtimeSpecification: z.ZodOptional<z.ZodString>;
        deploymentRetention: z.ZodOptional<z.ZodNumber>;
        startCommand: z.ZodOptional<z.ZodString>;
        vars: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
    }, z.core.$strict>>>;
    databases: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        name: z.ZodString;
        enabled: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>>;
    collections: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        $permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
        databaseId: z.ZodString;
        name: z.ZodString;
        enabled: z.ZodOptional<z.ZodBoolean>;
        documentSecurity: z.ZodDefault<z.ZodBoolean>;
        attributes: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            type: z.ZodEnum<{
                string: "string";
                bigint: "bigint";
                boolean: "boolean";
                datetime: "datetime";
                integer: "integer";
                double: "double";
                relationship: "relationship";
                varchar: "varchar";
                text: "text";
                mediumtext: "mediumtext";
                longtext: "longtext";
                point: "point";
                polygon: "polygon";
                linestring: "linestring";
            }>;
            required: z.ZodOptional<z.ZodBoolean>;
            array: z.ZodOptional<z.ZodBoolean>;
            size: z.ZodOptional<z.ZodNumber>;
            default: z.ZodOptional<z.ZodAny>;
            min: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
            max: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
            format: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
                enum: "enum";
                email: "email";
                ip: "ip";
                url: "url";
                datetime: "datetime";
            }>, z.ZodLiteral<"">]>>;
            elements: z.ZodOptional<z.ZodArray<z.ZodString>>;
            relatedCollection: z.ZodOptional<z.ZodString>;
            relatedTable: z.ZodOptional<z.ZodString>;
            relationType: z.ZodOptional<z.ZodString>;
            twoWay: z.ZodOptional<z.ZodBoolean>;
            twoWayKey: z.ZodOptional<z.ZodString>;
            onDelete: z.ZodOptional<z.ZodString>;
            side: z.ZodOptional<z.ZodString>;
            attributes: z.ZodOptional<z.ZodArray<z.ZodString>>;
            orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
            encrypt: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strict>>>;
        indexes: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            type: z.ZodString;
            status: z.ZodOptional<z.ZodString>;
            attributes: z.ZodArray<z.ZodString>;
            orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.core.$strict>>>;
    }, z.core.$strict>>>;
    tablesDB: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        name: z.ZodString;
        enabled: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>>;
    tables: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        $permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
        databaseId: z.ZodString;
        name: z.ZodString;
        enabled: z.ZodOptional<z.ZodBoolean>;
        rowSecurity: z.ZodDefault<z.ZodBoolean>;
        columns: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            type: z.ZodEnum<{
                string: "string";
                bigint: "bigint";
                boolean: "boolean";
                datetime: "datetime";
                integer: "integer";
                double: "double";
                relationship: "relationship";
                varchar: "varchar";
                text: "text";
                mediumtext: "mediumtext";
                longtext: "longtext";
                point: "point";
                polygon: "polygon";
                linestring: "linestring";
            }>;
            required: z.ZodOptional<z.ZodBoolean>;
            array: z.ZodOptional<z.ZodBoolean>;
            size: z.ZodOptional<z.ZodNumber>;
            default: z.ZodOptional<z.ZodAny>;
            min: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
            max: z.ZodPreprocess<z.ZodOptional<z.ZodNullable<z.ZodBigInt>>>;
            format: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
                enum: "enum";
                email: "email";
                ip: "ip";
                url: "url";
                datetime: "datetime";
            }>, z.ZodLiteral<"">]>>;
            elements: z.ZodOptional<z.ZodArray<z.ZodString>>;
            relatedTable: z.ZodOptional<z.ZodString>;
            relationType: z.ZodOptional<z.ZodString>;
            twoWay: z.ZodOptional<z.ZodBoolean>;
            twoWayKey: z.ZodOptional<z.ZodString>;
            onDelete: z.ZodOptional<z.ZodString>;
            side: z.ZodOptional<z.ZodString>;
            columns: z.ZodOptional<z.ZodArray<z.ZodString>>;
            orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
            encrypt: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strict>>>;
        indexes: z.ZodOptional<z.ZodArray<z.ZodObject<{
            key: z.ZodString;
            type: z.ZodString;
            status: z.ZodOptional<z.ZodString>;
            columns: z.ZodArray<z.ZodString>;
            orders: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.core.$strict>>>;
    }, z.core.$strict>>>;
    buckets: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        $permissions: z.ZodOptional<z.ZodArray<z.ZodString>>;
        fileSecurity: z.ZodOptional<z.ZodBoolean>;
        name: z.ZodString;
        enabled: z.ZodOptional<z.ZodBoolean>;
        maximumFileSize: z.ZodOptional<z.ZodNumber>;
        allowedFileExtensions: z.ZodOptional<z.ZodArray<z.ZodString>>;
        compression: z.ZodOptional<z.ZodString>;
        encryption: z.ZodOptional<z.ZodBoolean>;
        antivirus: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>>;
    teams: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        name: z.ZodString;
    }, z.core.$strict>>>;
    webhooks: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        name: z.ZodString;
        url: z.ZodString;
        events: z.ZodArray<z.ZodString>;
        enabled: z.ZodOptional<z.ZodBoolean>;
        tls: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$strict>>>;
    topics: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        name: z.ZodString;
        subscribe: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strict>>>;
    messages: z.ZodOptional<z.ZodArray<z.ZodObject<{
        $id: z.ZodString;
        name: z.ZodString;
        emailTotal: z.ZodOptional<z.ZodNumber>;
        smsTotal: z.ZodOptional<z.ZodNumber>;
        pushTotal: z.ZodOptional<z.ZodNumber>;
        subscribe: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$strict>>>;
}, z.core.$strict>;
export type AppwriteOfficialConfig = z.infer<typeof AppwriteOfficialConfigSchema>;
export type OfficialSettings = z.infer<typeof SettingsSchema>;
export type OfficialSite = z.infer<typeof SiteSchema>;
export type OfficialFunction = z.infer<typeof FunctionSchema>;
export type OfficialDatabase = z.infer<typeof DatabaseSchema>;
export type OfficialCollection = z.infer<typeof CollectionSchema>;
export type OfficialAttribute = z.infer<typeof AttributeSchema>;
export type OfficialIndex = z.infer<typeof IndexSchema>;
export type OfficialTable = z.infer<typeof TableSchema>;
export type OfficialColumn = z.infer<typeof ColumnSchema>;
export type OfficialTableIndex = z.infer<typeof IndexTableSchema>;
export type OfficialBucket = z.infer<typeof BucketSchema>;
export type OfficialTeam = z.infer<typeof TeamSchema>;
export type OfficialWebhook = z.infer<typeof WebhookSchema>;
export type OfficialTopic = z.infer<typeof TopicSchema>;
export type OfficialMessage = z.infer<typeof MessageSchema>;
