UNPKG

bknd

Version:

Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.

534 lines (533 loc) 171 kB
import type { CreateUserPayload } from "./auth/AppAuth"; import { Event } from "./core/events"; import { Connection, type LibSqlCredentials } from "./data"; import type { Hono } from "hono"; import { ModuleManager, type InitialModuleConfigs, type ModuleBuildContext, type ModuleConfigs, type ModuleManagerOptions, type Modules } from "./modules/ModuleManager"; import { AdminController, type AdminControllerOptions } from "./modules/server/AdminController"; import { Api, type ApiOptions } from "./Api"; import type { ServerEnv } from "./modules/Controller"; export type AppPlugin = (app: App) => Promise<void> | void; declare abstract class AppEvent<A = {}> extends Event<{ app: App; } & A> { } export declare class AppConfigUpdatedEvent extends AppEvent { static slug: string; } export declare class AppBuiltEvent extends AppEvent { static slug: string; } export declare class AppFirstBoot extends AppEvent { static slug: string; } export declare class AppRequest extends AppEvent<{ request: Request; }> { static slug: string; } export declare class AppBeforeResponse extends AppEvent<{ request: Request; response: Response; }> { static slug: string; } export declare const AppEvents: { readonly AppConfigUpdatedEvent: typeof AppConfigUpdatedEvent; readonly AppBuiltEvent: typeof AppBuiltEvent; readonly AppFirstBoot: typeof AppFirstBoot; readonly AppRequest: typeof AppRequest; readonly AppBeforeResponse: typeof AppBeforeResponse; }; export type AppOptions = { plugins?: AppPlugin[]; seed?: (ctx: ModuleBuildContext & { app: App; }) => Promise<void>; manager?: Omit<ModuleManagerOptions, "initial" | "onUpdated" | "seed">; asyncEventsMode?: "sync" | "async" | "none"; }; export type CreateAppConfig = { connection?: Connection | { type: "libsql"; config: LibSqlCredentials; } | LibSqlCredentials; initialConfig?: InitialModuleConfigs; options?: AppOptions; }; export type AppConfig = InitialModuleConfigs; export type LocalApiOptions = Request | ApiOptions; export declare class App { private connection; private options?; static readonly Events: { readonly AppConfigUpdatedEvent: typeof AppConfigUpdatedEvent; readonly AppBuiltEvent: typeof AppBuiltEvent; readonly AppFirstBoot: typeof AppFirstBoot; readonly AppRequest: typeof AppRequest; readonly AppBeforeResponse: typeof AppBeforeResponse; }; modules: ModuleManager; adminController?: AdminController; _id: string; private trigger_first_boot; private plugins; private _building; constructor(connection: Connection, _initialConfig?: InitialModuleConfigs, options?: AppOptions | undefined); get emgr(): import("./core").EventManager<any>; build(options?: { sync?: boolean; fetch?: boolean; forceBuild?: boolean; }): Promise<void>; mutateConfig<Module extends keyof Modules>(module: Module): Pick<ReturnType<Modules[Module]["schema"]>, "patch" | "overwrite" | "set" | "remove">; get server(): Hono<ServerEnv, import("hono/types").BlankSchema, "/">; get em(): import("./data").EntityManager<import("./core").DB>; get fetch(): Hono["fetch"]; get module(): Modules; getSchema(): { server: import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TBoolean; basepath: import("@sinclair/typebox").TString; entity_name: import("@sinclair/typebox").TString; storage: import("@sinclair/typebox").TObject<{ body_max_size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; }>; adapter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<string>; config: import("@sinclair/typebox").TObject<import("@sinclair/typebox").TProperties>; }>[]>>; }> | import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TBoolean; basepath: import("@sinclair/typebox").TString; entity_name: import("@sinclair/typebox").TString; allow_register: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; jwt: import("@sinclair/typebox").TObject<{ secret: import("@sinclair/typebox").TString; alg: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"HS256" | "HS384" | "HS512">>; expires: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; issuer: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fields: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>; }>; cookie: import("@sinclair/typebox").TObject<{ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; sameSite: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"strict" | "lax" | "none">>; secure: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; httpOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; expires: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; renew: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; pathSuccess: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; pathLoggedOut: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; }>; strategies: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; type: import("@sinclair/typebox").TLiteral<"password"> | import("@sinclair/typebox").TLiteral<"oauth"> | import("@sinclair/typebox").TLiteral<"custom_oauth">; config: import("@sinclair/typebox").TObject<{ hashing: import("@sinclair/typebox").TUnsafe<"plain" | "sha256" | "bcrypt">; rounds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; }> | import("@sinclair/typebox").TObject<{ name: import("@sinclair/typebox").TUnsafe<"google" | "github">; type: import("@sinclair/typebox").TUnsafe<"oidc" | "oauth2">; client: import("@sinclair/typebox").TObject<{ client_id: import("@sinclair/typebox").TString; client_secret: import("@sinclair/typebox").TString; }>; }> | import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TUnsafe<"oidc" | "oauth2">; name: import("@sinclair/typebox").TString; client: import("@sinclair/typebox").TObject<{ client_id: import("@sinclair/typebox").TString; client_secret: import("@sinclair/typebox").TString; token_endpoint_auth_method: import("@sinclair/typebox").TUnsafe<"client_secret_basic">; }>; as: import("@sinclair/typebox").TObject<{ issuer: import("@sinclair/typebox").TString; code_challenge_methods_supported: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"S256">>; scopes_supported: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>; scope_separator: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; authorization_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; token_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; userinfo_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; }>; }>; }>[]>>>; guard: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>>; roles: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{ permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>; is_default: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; implicit_allow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>>>; }> | import("@sinclair/typebox").TObject<{ cors: import("@sinclair/typebox").TObject<{ origin: import("@sinclair/typebox").TString; allow_methods: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<string>>; allow_headers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>; }>; }> | import("@sinclair/typebox").TObject<{ basepath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; default_primary_format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>; entities: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; name_singular: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; sort_field: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; sort_dir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"asc" | "desc">>; primary_format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>; }>>; fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"number"> | import("@sinclair/typebox").TLiteral<"boolean"> | import("@sinclair/typebox").TLiteral<"json"> | import("@sinclair/typebox").TLiteral<"text"> | import("@sinclair/typebox").TLiteral<"media"> | import("@sinclair/typebox").TLiteral<"enum"> | import("@sinclair/typebox").TLiteral<"date"> | import("@sinclair/typebox").TLiteral<"primary"> | import("@sinclair/typebox").TLiteral<"relation"> | import("@sinclair/typebox").TLiteral<"jsonschema">; config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny]>>; minLength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; maxLength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; pattern: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; html_config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ element: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; props: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{}>>; }>>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TAny]>>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TAny]>>; minimum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; maximum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; exclusiveMinimum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; exclusiveMaximum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; multipleOf: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TUnsafe<"date" | "week" | "datetime">; timezone: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; min_date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; max_date: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; reference: import("@sinclair/typebox").TString; target: import("@sinclair/typebox").TString; target_field: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; target_field_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"text" | "integer">>; on_delete: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"no action" | "restrict" | "cascade" | "set null" | "set default">>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TLiteral<false>>; format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ entity: import("@sinclair/typebox").TString; min_items: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; max_items: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; mime_types: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>; default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny]>>; options: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"strings">; values: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>; }>, import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"objects">; values: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{ label: import("@sinclair/typebox").TString; value: import("@sinclair/typebox").TString; }>>; }>]>>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ schema: import("@sinclair/typebox").TObject<{}>; ui_schema: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{}>>; default_from_schema: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TAny>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>>; }>[]>>>; }>>>; relations: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<string>; source: import("@sinclair/typebox").TString; target: import("@sinclair/typebox").TString; config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; mappedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; inversedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; connectionTable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; connectionTableMappedName: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; mappedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; inversedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; sourceCardinality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; with_limit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; fieldConfig: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ label: import("@sinclair/typebox").TString; }>>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; mappedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; inversedBy: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; targetCardinality: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; }>>; }>[]>>>; indices: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{ entity: import("@sinclair/typebox").TString; fields: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>; unique: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>>>; }> | import("@sinclair/typebox").TObject<{ basepath: import("@sinclair/typebox").TString; flows: import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{ trigger: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"manual" | "event" | "http">; config: import("@sinclair/typebox").TObject<{ mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">; }> | import("@sinclair/typebox").TObject<{ mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">; event: import("@sinclair/typebox").TString; }> | import("@sinclair/typebox").TObject<{ mode: import("@sinclair/typebox").TUnsafe<"sync" | "async">; path: import("@sinclair/typebox").TString; method: import("@sinclair/typebox").TUnsafe<"GET" | "POST" | "PATCH" | "PUT" | "DELETE">; response_type: import("@sinclair/typebox").TUnsafe<"json" | "text" | "html">; }>; }>[]>; tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"log" | "fetch" | "render" | "subflow">; params: import("@sinclair/typebox").TObject<{ url: import("@sinclair/typebox").TString; method: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{ title: string; } & import("@sinclair/typebox").TUnsafe<string>, import("@sinclair/typebox").TString]>, string>>; headers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{ title: string; } & import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{ key: import("@sinclair/typebox").TString; value: import("@sinclair/typebox").TString; }>>, import("@sinclair/typebox").TString]>, { key: string; value: string; }[]>>; body: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{ title: string; } & import("@sinclair/typebox").TString, import("@sinclair/typebox").TString]>, string>>; normal: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{ title: string; } & import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TString]>, number>>; }> | import("@sinclair/typebox").TObject<{ delay: import("@sinclair/typebox").TNumber; }> | import("@sinclair/typebox").TObject<{ render: import("@sinclair/typebox").TString; }> | import("@sinclair/typebox").TObject<{ flow: import("@sinclair/typebox").TAny; input: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TTransform<import("@sinclair/typebox").TUnion<[{ title: string; } & import("@sinclair/typebox").TAny, import("@sinclair/typebox").TString]>, any>>; loop: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>; }>[]>>>; connections: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{ source: import("@sinclair/typebox").TString; target: import("@sinclair/typebox").TString; config: import("@sinclair/typebox").TObject<{ condition: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"success">; }>, import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"error">; }>, import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"matches">; path: import("@sinclair/typebox").TString; value: import("@sinclair/typebox").TString; }>]>>; max_retries: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; }>; }>>>; start_task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; responding_task: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; }>>; }>; data: import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TBoolean; basepath: import("@sinclair/typebox").TString; entity_name: import("@sinclair/typebox").TString; storage: import("@sinclair/typebox").TObject<{ body_max_size: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; }>; adapter: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<string>; config: import("@sinclair/typebox").TObject<import("@sinclair/typebox").TProperties>; }>[]>>; }> | import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TBoolean; basepath: import("@sinclair/typebox").TString; entity_name: import("@sinclair/typebox").TString; allow_register: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; jwt: import("@sinclair/typebox").TObject<{ secret: import("@sinclair/typebox").TString; alg: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"HS256" | "HS384" | "HS512">>; expires: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; issuer: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fields: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>; }>; cookie: import("@sinclair/typebox").TObject<{ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; sameSite: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"strict" | "lax" | "none">>; secure: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; httpOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; expires: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; renew: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; pathSuccess: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; pathLoggedOut: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; }>; strategies: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; type: import("@sinclair/typebox").TLiteral<"password"> | import("@sinclair/typebox").TLiteral<"oauth"> | import("@sinclair/typebox").TLiteral<"custom_oauth">; config: import("@sinclair/typebox").TObject<{ hashing: import("@sinclair/typebox").TUnsafe<"plain" | "sha256" | "bcrypt">; rounds: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; }> | import("@sinclair/typebox").TObject<{ name: import("@sinclair/typebox").TUnsafe<"google" | "github">; type: import("@sinclair/typebox").TUnsafe<"oidc" | "oauth2">; client: import("@sinclair/typebox").TObject<{ client_id: import("@sinclair/typebox").TString; client_secret: import("@sinclair/typebox").TString; }>; }> | import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TUnsafe<"oidc" | "oauth2">; name: import("@sinclair/typebox").TString; client: import("@sinclair/typebox").TObject<{ client_id: import("@sinclair/typebox").TString; client_secret: import("@sinclair/typebox").TString; token_endpoint_auth_method: import("@sinclair/typebox").TUnsafe<"client_secret_basic">; }>; as: import("@sinclair/typebox").TObject<{ issuer: import("@sinclair/typebox").TString; code_challenge_methods_supported: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"S256">>; scopes_supported: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>; scope_separator: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; authorization_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; token_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; userinfo_endpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; }>; }>; }>[]>>>; guard: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ enabled: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>>; roles: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{ permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>; is_default: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; implicit_allow: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>>>; }> | import("@sinclair/typebox").TObject<{ cors: import("@sinclair/typebox").TObject<{ origin: import("@sinclair/typebox").TString; allow_methods: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<string>>; allow_headers: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>; }>; }> | import("@sinclair/typebox").TObject<{ basepath: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; default_primary_format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>; entities: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; name_singular: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; sort_field: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; sort_dir: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"asc" | "desc">>; primary_format: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnsafe<"uuid" | "integer">>; }>>; fields: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TObject<{ type: import("@sinclair/typebox").TLiteral<"number"> | import("@sinclair/typebox").TLiteral<"boolean"> | import("@sinclair/typebox").TLiteral<"json"> | import("@sinclair/typebox").TLiteral<"text"> | import("@sinclair/typebox").TLiteral<"media"> | import("@sinclair/typebox").TLiteral<"enum"> | import("@sinclair/typebox").TLiteral<"date"> | import("@sinclair/typebox").TLiteral<"primary"> | import("@sinclair/typebox").TLiteral<"relation"> | import("@sinclair/typebox").TLiteral<"jsonschema">; config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny]>>; minLength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; maxLength: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; pattern: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; html_config: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ element: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; props: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{}>>; }>>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TAny]>>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>; hidden: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"form" | "table" | "create" | "read" | "update" | "delete" | "submit">>]>>; virtual: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; }>> | import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{ default_value: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TIntersect<[import("@sinclair/typebox").TNumber, import("@sinclair/typebox").TAny]>>; minimum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; maximum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; exclusiveMinimum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; exclusiveMaximum: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; multipleOf: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>; required: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>; description: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; label: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>; fillable: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TBoolean, import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnsafe<"create" | "read" | "update" | "delete">>]>>;