import { z } from 'zod'; /** * Allowed cast types for CipherStash schema fields. * * **Possible values:** * - `"bigint"` * - `"boolean"` * - `"date"` * - `"number"` * - `"string"` * - `"json"` * * @remarks * This is a Zod enum used at runtime to validate schema definitions. * Use {@link CastAs} when typing your own code. */ declare const castAsEnum: z.ZodDefault>; declare const tokenFilterSchema: z.ZodObject<{ kind: z.ZodLiteral<"downcase">; }, "strip", z.ZodTypeAny, { kind: "downcase"; }, { kind: "downcase"; }>; declare const oreIndexOptsSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>; declare const uniqueIndexOptsSchema: z.ZodObject<{ token_filters: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "downcase"; }, { kind: "downcase"; }>, "many">>>; }, "strip", z.ZodTypeAny, { token_filters?: { kind: "downcase"; }[] | undefined; }, { token_filters?: { kind: "downcase"; }[] | undefined; }>; declare const matchIndexOptsSchema: z.ZodObject<{ tokenizer: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "standard"; }, { kind: "standard"; }>, z.ZodObject<{ kind: z.ZodLiteral<"ngram">; token_length: z.ZodNumber; }, "strip", z.ZodTypeAny, { kind: "ngram"; token_length: number; }, { kind: "ngram"; token_length: number; }>]>>>; token_filters: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "downcase"; }, { kind: "downcase"; }>, "many">>>; k: z.ZodOptional>; m: z.ZodOptional>; include_original: z.ZodOptional>; }, "strip", z.ZodTypeAny, { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; }, { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; }>; declare const steVecIndexOptsSchema: z.ZodObject<{ prefix: z.ZodString; array_index_mode: z.ZodOptional, z.ZodLiteral<"none">, z.ZodObject<{ item: z.ZodOptional; wildcard: z.ZodOptional; position: z.ZodOptional; }, "strip", z.ZodTypeAny, { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; }, { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; }>]>>; }, "strip", z.ZodTypeAny, { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; }, { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; }>; declare const columnSchema: z.ZodDefault>; indexes: z.ZodDefault>; unique: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "downcase"; }, { kind: "downcase"; }>, "many">>>; }, "strip", z.ZodTypeAny, { token_filters?: { kind: "downcase"; }[] | undefined; }, { token_filters?: { kind: "downcase"; }[] | undefined; }>>; match: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "standard"; }, { kind: "standard"; }>, z.ZodObject<{ kind: z.ZodLiteral<"ngram">; token_length: z.ZodNumber; }, "strip", z.ZodTypeAny, { kind: "ngram"; token_length: number; }, { kind: "ngram"; token_length: number; }>]>>>; token_filters: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "downcase"; }, { kind: "downcase"; }>, "many">>>; k: z.ZodOptional>; m: z.ZodOptional>; include_original: z.ZodOptional>; }, "strip", z.ZodTypeAny, { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; }, { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; }>>; ste_vec: z.ZodOptional, z.ZodLiteral<"none">, z.ZodObject<{ item: z.ZodOptional; wildcard: z.ZodOptional; position: z.ZodOptional; }, "strip", z.ZodTypeAny, { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; }, { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; }>]>>; }, "strip", z.ZodTypeAny, { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; }, { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; }>>; }, "strip", z.ZodTypeAny, { ore?: {} | undefined; unique?: { token_filters?: { kind: "downcase"; }[] | undefined; } | undefined; match?: { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; } | undefined; ste_vec?: { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; } | undefined; }, { ore?: {} | undefined; unique?: { token_filters?: { kind: "downcase"; }[] | undefined; } | undefined; match?: { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; } | undefined; ste_vec?: { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; } | undefined; }>>; }, "strip", z.ZodTypeAny, { cast_as: "string" | "number" | "bigint" | "boolean" | "date" | "json"; indexes: { ore?: {} | undefined; unique?: { token_filters?: { kind: "downcase"; }[] | undefined; } | undefined; match?: { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; } | undefined; ste_vec?: { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; } | undefined; }; }, { cast_as?: "string" | "number" | "bigint" | "boolean" | "date" | "json" | undefined; indexes?: { ore?: {} | undefined; unique?: { token_filters?: { kind: "downcase"; }[] | undefined; } | undefined; match?: { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; } | undefined; ste_vec?: { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; } | undefined; } | undefined; }>>; declare const encryptConfigSchema: z.ZodObject<{ v: z.ZodNumber; tables: z.ZodDefault>; indexes: z.ZodDefault>; unique: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "downcase"; }, { kind: "downcase"; }>, "many">>>; }, "strip", z.ZodTypeAny, { token_filters?: { kind: "downcase"; }[] | undefined; }, { token_filters?: { kind: "downcase"; }[] | undefined; }>>; match: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "standard"; }, { kind: "standard"; }>, z.ZodObject<{ kind: z.ZodLiteral<"ngram">; token_length: z.ZodNumber; }, "strip", z.ZodTypeAny, { kind: "ngram"; token_length: number; }, { kind: "ngram"; token_length: number; }>]>>>; token_filters: z.ZodOptional; }, "strip", z.ZodTypeAny, { kind: "downcase"; }, { kind: "downcase"; }>, "many">>>; k: z.ZodOptional>; m: z.ZodOptional>; include_original: z.ZodOptional>; }, "strip", z.ZodTypeAny, { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; }, { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; }>>; ste_vec: z.ZodOptional, z.ZodLiteral<"none">, z.ZodObject<{ item: z.ZodOptional; wildcard: z.ZodOptional; position: z.ZodOptional; }, "strip", z.ZodTypeAny, { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; }, { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; }>]>>; }, "strip", z.ZodTypeAny, { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; }, { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; }>>; }, "strip", z.ZodTypeAny, { ore?: {} | undefined; unique?: { token_filters?: { kind: "downcase"; }[] | undefined; } | undefined; match?: { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; } | undefined; ste_vec?: { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; } | undefined; }, { ore?: {} | undefined; unique?: { token_filters?: { kind: "downcase"; }[] | undefined; } | undefined; match?: { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; } | undefined; ste_vec?: { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; } | undefined; }>>; }, "strip", z.ZodTypeAny, { cast_as: "string" | "number" | "bigint" | "boolean" | "date" | "json"; indexes: { ore?: {} | undefined; unique?: { token_filters?: { kind: "downcase"; }[] | undefined; } | undefined; match?: { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; } | undefined; ste_vec?: { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; } | undefined; }; }, { cast_as?: "string" | "number" | "bigint" | "boolean" | "date" | "json" | undefined; indexes?: { ore?: {} | undefined; unique?: { token_filters?: { kind: "downcase"; }[] | undefined; } | undefined; match?: { token_filters?: { kind: "downcase"; }[] | undefined; tokenizer?: { kind: "standard"; } | { kind: "ngram"; token_length: number; } | undefined; k?: number | undefined; m?: number | undefined; include_original?: boolean | undefined; } | undefined; ste_vec?: { prefix: string; array_index_mode?: "all" | "none" | { item?: boolean | undefined; wildcard?: boolean | undefined; position?: boolean | undefined; } | undefined; } | undefined; } | undefined; }>>>>>>; }, "strip", z.ZodTypeAny, { v: number; tables: Record>; }, { v: number; tables?: Record | undefined> | undefined; }>; /** * Type-safe alias for {@link castAsEnum} used to specify the *unencrypted* data type of a column or value. * This is important because once encrypted, all data is stored as binary blobs. * * @see {@link castAsEnum} for possible values. */ type CastAs = z.infer; type TokenFilter = z.infer; type MatchIndexOpts = z.infer; type SteVecIndexOpts = z.infer; type UniqueIndexOpts = z.infer; type OreIndexOpts = z.infer; type ColumnSchema = z.infer; type ProtectTableColumn = { [key: string]: ProtectColumn | { [key: string]: ProtectValue | { [key: string]: ProtectValue | { [key: string]: ProtectValue; }; }; }; }; type EncryptConfig = z.infer; declare class ProtectValue { private valueName; private castAsValue; constructor(valueName: string); /** * Set or override the cast_as value. */ dataType(castAs: CastAs): this; build(): { cast_as: "string" | "number" | "bigint" | "boolean" | "date" | "json"; indexes: {}; }; getName(): string; } declare class ProtectColumn { private columnName; private castAsValue; private indexesValue; constructor(columnName: string); /** * Set or override the cast_as value. */ dataType(castAs: CastAs): this; /** * Enable ORE indexing (Order-Revealing Encryption). */ orderAndRange(): this; /** * Enable an Exact index. Optionally pass tokenFilters. */ equality(tokenFilters?: TokenFilter[]): this; /** * Enable a Match index. Allows passing of custom match options. */ freeTextSearch(opts?: MatchIndexOpts): this; /** * Configure this column for searchable encrypted JSON. * Enables path queries ($.user.email) and containment queries ({ role: 'admin' }). * Automatically sets cast_as to 'json'. */ searchableJson(): this; build(): { cast_as: "string" | "number" | "bigint" | "boolean" | "date" | "json"; indexes: { ore?: OreIndexOpts; unique?: UniqueIndexOpts; match?: Required; ste_vec?: SteVecIndexOpts; }; }; getName(): string; } interface TableDefinition { tableName: string; columns: Record; } declare class ProtectTable { readonly tableName: string; private readonly columnBuilders; constructor(tableName: string, columnBuilders: T); /** * Build a TableDefinition object: tableName + built column configs. */ build(): TableDefinition; } declare function csTable(tableName: string, columns: T): ProtectTable & T; declare function csColumn(columnName: string): ProtectColumn; declare function csValue(valueName: string): ProtectValue; declare function buildEncryptConfig(...protectTables: Array>): EncryptConfig; export { type CastAs, type ColumnSchema, type EncryptConfig, type MatchIndexOpts, type OreIndexOpts, ProtectColumn, ProtectTable, type ProtectTableColumn, ProtectValue, type SteVecIndexOpts, type TokenFilter, type UniqueIndexOpts, buildEncryptConfig, castAsEnum, csColumn, csTable, csValue, encryptConfigSchema };