/**
 * @fileoverview AppwriteUtils sidecar (extension) configuration schema.
 *
 * This schema is a STRICT SUPERSET of the official Appwrite CLI config. It
 * exists so that AppwriteUtils can hold its own per-resource extensions
 * (importDefs, attributeDisplayOrder, deployDir, predeployCommands, etc.)
 * WITHOUT mutating the user's `appwrite.config.json` — the file the official
 * CLI consumes.
 *
 * Two source-of-truth modes for the underlying Appwrite resources:
 *   - referenced: `appwriteConfig` points at an external
 *     `appwrite.config.json` file owned by the official CLI.
 *   - owned: `appwrite` embeds the full official config inline.
 *
 * If both are provided, the inline `appwrite` block wins — see the
 * `appwriteConfig`/`appwrite` descriptions below.
 *
 * The root object intentionally uses `.passthrough()` (NOT `.strict()`) so
 * that users can stuff forward-compatible fields without parser errors. The
 * per-resource extension sub-schemas also default to `passthrough` because
 * we have not yet enumerated all extension fields.
 */
import { z } from "zod";
/**
 * Function-specific extensions (predeployCommands, deployDir, ignore, etc.
 * still to be formalised). Currently passthrough.
 *
 * Known field: `forceOverwriteSecrets` — when false (default), the var-sync
 * step skips updating any Appwrite-side variable whose `secret` flag is true,
 * preserving server-managed secrets across deploys. Set to true to opt into
 * overwriting secrets from this function's local `vars` block.
 */
export declare const FunctionExtensionSchema: z.ZodObject<{
    forceOverwriteSecrets: z.ZodOptional<z.ZodBoolean>;
}, z.core.$loose>;
/**
 * Site-specific extensions (predeployCommands, deployDir, ignore, etc.
 * still to be formalised). Currently passthrough.
 */
export declare const SiteExtensionSchema: z.ZodObject<{}, z.core.$loose>;
/**
 * Bucket-specific extensions (currently passthrough).
 */
export declare const BucketExtensionSchema: z.ZodObject<{}, z.core.$loose>;
/**
 * Collection-specific extensions. Recognises `importDefs` (typed against the
 * existing `importDefSchemas`) and `attributeDisplayOrder`. Other fields are
 * passed through.
 */
export declare const CollectionExtensionSchema: z.ZodObject<{
    importDefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
        type: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
            create: "create";
            update: "update";
        }>>>;
        filePath: z.ZodString;
        basePath: z.ZodOptional<z.ZodString>;
        primaryKeyField: z.ZodDefault<z.ZodString>;
        idMappings: z.ZodOptional<z.ZodArray<z.ZodObject<{
            sourceField: z.ZodString;
            fieldToSet: z.ZodOptional<z.ZodString>;
            targetFieldToMatch: z.ZodOptional<z.ZodString>;
            targetField: z.ZodString;
            targetCollection: z.ZodString;
        }, z.core.$strip>>>;
        createUsers: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodBoolean>>>;
        updateMapping: z.ZodOptional<z.ZodObject<{
            originalIdField: z.ZodString;
            targetField: z.ZodString;
        }, z.core.$strip>>;
        attributeMappings: z.ZodArray<z.ZodObject<{
            oldKey: z.ZodOptional<z.ZodString>;
            oldKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
            targetKey: z.ZodString;
            valueToSet: z.ZodOptional<z.ZodAny>;
            fileData: z.ZodOptional<z.ZodObject<{
                name: z.ZodString;
                path: z.ZodString;
            }, z.core.$strip>>;
            converters: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
            validationActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                action: z.ZodString;
                params: z.ZodArray<z.ZodString>;
            }, z.core.$strip>>>>;
            postImportActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                action: z.ZodString;
                params: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodAny>]>>;
            }, z.core.$strip>>>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>>;
    attributeDisplayOrder: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$loose>;
/**
 * Table-specific extensions. Same shape as `CollectionExtensionSchema`,
 * defined separately so that they can evolve independently.
 */
export declare const TableExtensionSchema: z.ZodObject<{
    importDefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
        type: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
            create: "create";
            update: "update";
        }>>>;
        filePath: z.ZodString;
        basePath: z.ZodOptional<z.ZodString>;
        primaryKeyField: z.ZodDefault<z.ZodString>;
        idMappings: z.ZodOptional<z.ZodArray<z.ZodObject<{
            sourceField: z.ZodString;
            fieldToSet: z.ZodOptional<z.ZodString>;
            targetFieldToMatch: z.ZodOptional<z.ZodString>;
            targetField: z.ZodString;
            targetCollection: z.ZodString;
        }, z.core.$strip>>>;
        createUsers: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodBoolean>>>;
        updateMapping: z.ZodOptional<z.ZodObject<{
            originalIdField: z.ZodString;
            targetField: z.ZodString;
        }, z.core.$strip>>;
        attributeMappings: z.ZodArray<z.ZodObject<{
            oldKey: z.ZodOptional<z.ZodString>;
            oldKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
            targetKey: z.ZodString;
            valueToSet: z.ZodOptional<z.ZodAny>;
            fileData: z.ZodOptional<z.ZodObject<{
                name: z.ZodString;
                path: z.ZodString;
            }, z.core.$strip>>;
            converters: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
            validationActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                action: z.ZodString;
                params: z.ZodArray<z.ZodString>;
            }, z.core.$strip>>>>;
            postImportActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                action: z.ZodString;
                params: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodAny>]>>;
            }, z.core.$strip>>>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>>;
    attributeDisplayOrder: z.ZodOptional<z.ZodArray<z.ZodString>>;
}, z.core.$loose>;
/**
 * Per-function YAML file at `functions/<id>/appwrite-utils.yaml`. Combines
 * the official function shape with our extension fields in one document.
 * Unknown keys pass through (FunctionExtensionSchema is itself passthrough).
 */
export declare const PerFunctionConfigSchema: z.ZodObject<{
    forceOverwriteSecrets: z.ZodOptional<z.ZodBoolean>;
    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.$loose>;
/**
 * Per-site YAML file at `sites/<id>/appwrite-utils.yaml`. Same pattern as
 * PerFunctionConfigSchema.
 */
export declare const PerSiteConfigSchema: 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.$loose>;
export declare const ResourceExtensionsSchema: z.ZodObject<{
    functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
        forceOverwriteSecrets: z.ZodOptional<z.ZodBoolean>;
    }, z.core.$loose>>]>>;
    sites: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
    buckets: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
    collections: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
        importDefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
            type: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
                create: "create";
                update: "update";
            }>>>;
            filePath: z.ZodString;
            basePath: z.ZodOptional<z.ZodString>;
            primaryKeyField: z.ZodDefault<z.ZodString>;
            idMappings: z.ZodOptional<z.ZodArray<z.ZodObject<{
                sourceField: z.ZodString;
                fieldToSet: z.ZodOptional<z.ZodString>;
                targetFieldToMatch: z.ZodOptional<z.ZodString>;
                targetField: z.ZodString;
                targetCollection: z.ZodString;
            }, z.core.$strip>>>;
            createUsers: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodBoolean>>>;
            updateMapping: z.ZodOptional<z.ZodObject<{
                originalIdField: z.ZodString;
                targetField: z.ZodString;
            }, z.core.$strip>>;
            attributeMappings: z.ZodArray<z.ZodObject<{
                oldKey: z.ZodOptional<z.ZodString>;
                oldKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
                targetKey: z.ZodString;
                valueToSet: z.ZodOptional<z.ZodAny>;
                fileData: z.ZodOptional<z.ZodObject<{
                    name: z.ZodString;
                    path: z.ZodString;
                }, z.core.$strip>>;
                converters: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
                validationActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                    action: z.ZodString;
                    params: z.ZodArray<z.ZodString>;
                }, z.core.$strip>>>>;
                postImportActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                    action: z.ZodString;
                    params: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodAny>]>>;
                }, z.core.$strip>>>>;
            }, z.core.$strip>>;
        }, z.core.$strip>>>;
        attributeDisplayOrder: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$loose>>]>>;
    tablesDB: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
    tables: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
        importDefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
            type: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
                create: "create";
                update: "update";
            }>>>;
            filePath: z.ZodString;
            basePath: z.ZodOptional<z.ZodString>;
            primaryKeyField: z.ZodDefault<z.ZodString>;
            idMappings: z.ZodOptional<z.ZodArray<z.ZodObject<{
                sourceField: z.ZodString;
                fieldToSet: z.ZodOptional<z.ZodString>;
                targetFieldToMatch: z.ZodOptional<z.ZodString>;
                targetField: z.ZodString;
                targetCollection: z.ZodString;
            }, z.core.$strip>>>;
            createUsers: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodBoolean>>>;
            updateMapping: z.ZodOptional<z.ZodObject<{
                originalIdField: z.ZodString;
                targetField: z.ZodString;
            }, z.core.$strip>>;
            attributeMappings: z.ZodArray<z.ZodObject<{
                oldKey: z.ZodOptional<z.ZodString>;
                oldKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
                targetKey: z.ZodString;
                valueToSet: z.ZodOptional<z.ZodAny>;
                fileData: z.ZodOptional<z.ZodObject<{
                    name: z.ZodString;
                    path: z.ZodString;
                }, z.core.$strip>>;
                converters: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
                validationActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                    action: z.ZodString;
                    params: z.ZodArray<z.ZodString>;
                }, z.core.$strip>>>>;
                postImportActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                    action: z.ZodString;
                    params: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodAny>]>>;
                }, z.core.$strip>>>>;
            }, z.core.$strip>>;
        }, z.core.$strip>>>;
        attributeDisplayOrder: z.ZodOptional<z.ZodArray<z.ZodString>>;
    }, z.core.$loose>>]>>;
    teams: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
    webhooks: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
    topics: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
    messages: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
}, z.core.$loose>;
export declare const AuthBlockSchema: z.ZodObject<{
    endpoint: z.ZodOptional<z.ZodString>;
    projectId: z.ZodOptional<z.ZodString>;
    apiKey: z.ZodOptional<z.ZodString>;
    authMode: z.ZodDefault<z.ZodEnum<{
        apiKey: "apiKey";
        session: "session";
        auto: "auto";
    }>>;
    sessionCookie: z.ZodOptional<z.ZodString>;
}, z.core.$loose>;
export declare const LoggingBlockSchema: z.ZodObject<{
    enabled: z.ZodDefault<z.ZodBoolean>;
    level: z.ZodDefault<z.ZodEnum<{
        error: "error";
        warn: "warn";
        info: "info";
        debug: "debug";
    }>>;
    logDirectory: z.ZodOptional<z.ZodString>;
    console: z.ZodDefault<z.ZodBoolean>;
}, z.core.$loose>;
export declare const SchemaConfigSchema: z.ZodObject<{
    outputDirectory: z.ZodDefault<z.ZodString>;
    yamlSchemaDirectory: z.ZodDefault<z.ZodString>;
    importDirectory: z.ZodDefault<z.ZodString>;
    collectionsDirectory: z.ZodDefault<z.ZodString>;
    tablesDirectory: z.ZodDefault<z.ZodString>;
}, z.core.$loose>;
export declare const AppwriteUtilsExtensionSchema: z.ZodObject<{
    appwriteConfig: z.ZodOptional<z.ZodString>;
    appwrite: z.ZodOptional<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>>;
    auth: z.ZodOptional<z.ZodObject<{
        endpoint: z.ZodOptional<z.ZodString>;
        projectId: z.ZodOptional<z.ZodString>;
        apiKey: z.ZodOptional<z.ZodString>;
        authMode: z.ZodDefault<z.ZodEnum<{
            apiKey: "apiKey";
            session: "session";
            auto: "auto";
        }>>;
        sessionCookie: z.ZodOptional<z.ZodString>;
    }, z.core.$loose>>;
    extensions: z.ZodOptional<z.ZodObject<{
        functions: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
            forceOverwriteSecrets: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$loose>>]>>;
        sites: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
        buckets: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
        collections: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
            importDefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
                type: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
                    create: "create";
                    update: "update";
                }>>>;
                filePath: z.ZodString;
                basePath: z.ZodOptional<z.ZodString>;
                primaryKeyField: z.ZodDefault<z.ZodString>;
                idMappings: z.ZodOptional<z.ZodArray<z.ZodObject<{
                    sourceField: z.ZodString;
                    fieldToSet: z.ZodOptional<z.ZodString>;
                    targetFieldToMatch: z.ZodOptional<z.ZodString>;
                    targetField: z.ZodString;
                    targetCollection: z.ZodString;
                }, z.core.$strip>>>;
                createUsers: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodBoolean>>>;
                updateMapping: z.ZodOptional<z.ZodObject<{
                    originalIdField: z.ZodString;
                    targetField: z.ZodString;
                }, z.core.$strip>>;
                attributeMappings: z.ZodArray<z.ZodObject<{
                    oldKey: z.ZodOptional<z.ZodString>;
                    oldKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
                    targetKey: z.ZodString;
                    valueToSet: z.ZodOptional<z.ZodAny>;
                    fileData: z.ZodOptional<z.ZodObject<{
                        name: z.ZodString;
                        path: z.ZodString;
                    }, z.core.$strip>>;
                    converters: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
                    validationActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                        action: z.ZodString;
                        params: z.ZodArray<z.ZodString>;
                    }, z.core.$strip>>>>;
                    postImportActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                        action: z.ZodString;
                        params: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodAny>]>>;
                    }, z.core.$strip>>>>;
                }, z.core.$strip>>;
            }, z.core.$strip>>>;
            attributeDisplayOrder: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.core.$loose>>]>>;
        tablesDB: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
        tables: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{
            importDefs: z.ZodOptional<z.ZodArray<z.ZodObject<{
                type: z.ZodOptional<z.ZodDefault<z.ZodEnum<{
                    create: "create";
                    update: "update";
                }>>>;
                filePath: z.ZodString;
                basePath: z.ZodOptional<z.ZodString>;
                primaryKeyField: z.ZodDefault<z.ZodString>;
                idMappings: z.ZodOptional<z.ZodArray<z.ZodObject<{
                    sourceField: z.ZodString;
                    fieldToSet: z.ZodOptional<z.ZodString>;
                    targetFieldToMatch: z.ZodOptional<z.ZodString>;
                    targetField: z.ZodString;
                    targetCollection: z.ZodString;
                }, z.core.$strip>>>;
                createUsers: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodBoolean>>>;
                updateMapping: z.ZodOptional<z.ZodObject<{
                    originalIdField: z.ZodString;
                    targetField: z.ZodString;
                }, z.core.$strip>>;
                attributeMappings: z.ZodArray<z.ZodObject<{
                    oldKey: z.ZodOptional<z.ZodString>;
                    oldKeys: z.ZodOptional<z.ZodArray<z.ZodString>>;
                    targetKey: z.ZodString;
                    valueToSet: z.ZodOptional<z.ZodAny>;
                    fileData: z.ZodOptional<z.ZodObject<{
                        name: z.ZodString;
                        path: z.ZodString;
                    }, z.core.$strip>>;
                    converters: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
                    validationActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                        action: z.ZodString;
                        params: z.ZodArray<z.ZodString>;
                    }, z.core.$strip>>>>;
                    postImportActions: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{
                        action: z.ZodString;
                        params: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodRecord<z.ZodString, z.ZodAny>]>>;
                    }, z.core.$strip>>>>;
                }, z.core.$strip>>;
            }, z.core.$strip>>>;
            attributeDisplayOrder: z.ZodOptional<z.ZodArray<z.ZodString>>;
        }, z.core.$loose>>]>>;
        teams: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
        webhooks: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
        topics: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
        messages: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodObject<{}, z.core.$loose>>]>>;
    }, z.core.$loose>>;
    apiMode: z.ZodDefault<z.ZodEnum<{
        auto: "auto";
        legacy: "legacy";
        tablesdb: "tablesdb";
    }>>;
    logging: z.ZodOptional<z.ZodObject<{
        enabled: z.ZodDefault<z.ZodBoolean>;
        level: z.ZodDefault<z.ZodEnum<{
            error: "error";
            warn: "warn";
            info: "info";
            debug: "debug";
        }>>;
        logDirectory: z.ZodOptional<z.ZodString>;
        console: z.ZodDefault<z.ZodBoolean>;
    }, z.core.$loose>>;
    enableBackups: z.ZodDefault<z.ZodBoolean>;
    backupInterval: z.ZodDefault<z.ZodNumber>;
    backupRetention: z.ZodDefault<z.ZodNumber>;
    enableBackupCleanup: z.ZodDefault<z.ZodBoolean>;
    enableMockData: z.ZodDefault<z.ZodBoolean>;
    documentBucketId: z.ZodDefault<z.ZodString>;
    usersCollectionName: z.ZodDefault<z.ZodString>;
    schemaConfig: z.ZodOptional<z.ZodObject<{
        outputDirectory: z.ZodDefault<z.ZodString>;
        yamlSchemaDirectory: z.ZodDefault<z.ZodString>;
        importDirectory: z.ZodDefault<z.ZodString>;
        collectionsDirectory: z.ZodDefault<z.ZodString>;
        tablesDirectory: z.ZodDefault<z.ZodString>;
    }, z.core.$loose>>;
}, z.core.$loose>;
export type AppwriteUtilsExtension = z.infer<typeof AppwriteUtilsExtensionSchema>;
export type AppwriteUtilsExtensionInput = z.input<typeof AppwriteUtilsExtensionSchema>;
export type AuthBlock = z.infer<typeof AuthBlockSchema>;
export type LoggingBlock = z.infer<typeof LoggingBlockSchema>;
export type ResourceExtensions = z.infer<typeof ResourceExtensionsSchema>;
export type FunctionExtension = z.infer<typeof FunctionExtensionSchema>;
export type SiteExtension = z.infer<typeof SiteExtensionSchema>;
export type BucketExtension = z.infer<typeof BucketExtensionSchema>;
export type CollectionExtension = z.infer<typeof CollectionExtensionSchema>;
export type TableExtension = z.infer<typeof TableExtensionSchema>;
export type PerFunctionConfig = z.infer<typeof PerFunctionConfigSchema>;
export type PerFunctionConfigInput = z.input<typeof PerFunctionConfigSchema>;
export type PerSiteConfig = z.infer<typeof PerSiteConfigSchema>;
export type PerSiteConfigInput = z.input<typeof PerSiteConfigSchema>;
export type SchemaConfigBlock = z.infer<typeof SchemaConfigSchema>;
