appwrite-utils
Version:
631 lines (630 loc) • 26.8 kB
TypeScript
/**
* @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>;