export type TriggerTiming = 'before' | 'after' | 'instead_of'; export type TriggerEvent = 'insert' | 'update' | 'delete'; export type TriggerRaiseAction = 'abort' | 'fail' | 'rollback' | 'ignore'; export type MongrelValue = 'Null' | { Bool: boolean; } | { Int64: number; } | { Float64: number; } | { Bytes: number[]; } | { Embedding: number[]; }; export type TriggerTarget = { kind: 'table'; name: string; } | { kind: 'view'; name: string; }; export type TriggerValue = { kind: 'literal'; value: MongrelValue; } | { kind: 'new_column'; value: number; } | { kind: 'old_column'; value: number; } | { kind: 'selected_column'; value: number; }; export type TriggerExpr = { kind: 'value'; value: TriggerValue; } | { kind: 'eq'; left: TriggerValue; right: TriggerValue; } | { kind: 'not_eq'; left: TriggerValue; right: TriggerValue; } | { kind: 'lt'; left: TriggerValue; right: TriggerValue; } | { kind: 'lte'; left: TriggerValue; right: TriggerValue; } | { kind: 'gt'; left: TriggerValue; right: TriggerValue; } | { kind: 'gte'; left: TriggerValue; right: TriggerValue; } | { kind: 'is_null'; value: TriggerValue; } | { kind: 'is_not_null'; value: TriggerValue; } | { kind: 'and'; left: TriggerExpr; right: TriggerExpr; } | { kind: 'or'; left: TriggerExpr; right: TriggerExpr; } | { kind: 'not'; value: TriggerExpr; }; export interface TriggerCell { column_id: number; value: TriggerValue; } export type TriggerCondition = { kind: 'pk'; value: TriggerValue; } | { kind: 'eq'; column_id: number; value: TriggerValue; } | { kind: 'not_eq'; column_id: number; value: TriggerValue; } | { kind: 'lt'; column_id: number; value: TriggerValue; } | { kind: 'lte'; column_id: number; value: TriggerValue; } | { kind: 'gt'; column_id: number; value: TriggerValue; } | { kind: 'gte'; column_id: number; value: TriggerValue; } | { kind: 'is_null'; column_id: number; } | { kind: 'is_not_null'; column_id: number; } | { kind: 'and'; left: TriggerCondition; right: TriggerCondition; } | { kind: 'or'; left: TriggerCondition; right: TriggerCondition; } | { kind: 'not'; value: TriggerCondition; }; export type TriggerStep = { kind: 'set_new'; cells: TriggerCell[]; } | { kind: 'insert'; table: string; cells: TriggerCell[]; } | { kind: 'update_by_pk'; table: string; pk: TriggerValue; cells: TriggerCell[]; } | { kind: 'delete_by_pk'; table: string; pk: TriggerValue; } | { kind: 'select'; id: string; table: string; conditions?: TriggerCondition[]; } | { kind: 'raise'; action: TriggerRaiseAction; message: TriggerValue; } | { kind: 'foreach'; id: string; steps: TriggerStep[]; } | { kind: 'delete_where'; table: string; conditions?: TriggerCondition[]; } | { kind: 'update_where'; table: string; conditions?: TriggerCondition[]; cells: TriggerCell[]; }; export interface TriggerProgram { steps: TriggerStep[]; } export interface TriggerSpec { name: string; version?: number; target: TriggerTarget; timing: TriggerTiming; event: TriggerEvent; update_of?: string[]; target_columns?: unknown[]; when?: TriggerExpr; program: TriggerProgram; enabled?: boolean; checksum?: string; created_epoch?: number; updated_epoch?: number; } export declare function trigger(spec: TriggerSpec): TriggerSpec; export declare function triggerJson(spec: TriggerSpec): string; export declare const literal: (value: MongrelValue) => TriggerValue; export declare const nullValue: () => TriggerValue; export declare const boolValue: (value: boolean) => TriggerValue; export declare const int64Value: (value: number) => TriggerValue; export declare const float64Value: (value: number) => TriggerValue; export declare const textValue: (value: string) => TriggerValue; export declare const bytesValue: (value: Uint8Array | number[]) => TriggerValue; export declare const embeddingValue: (value: number[]) => TriggerValue; export declare const newColumn: (columnId: number) => TriggerValue; export declare const oldColumn: (columnId: number) => TriggerValue; export declare const selectedColumn: (columnId: number) => TriggerValue; export declare const exprValue: (value: TriggerValue) => TriggerExpr; export declare const exprEq: (left: TriggerValue, right: TriggerValue) => TriggerExpr; export declare const exprNotEq: (left: TriggerValue, right: TriggerValue) => TriggerExpr; export declare const exprLt: (left: TriggerValue, right: TriggerValue) => TriggerExpr; export declare const exprLte: (left: TriggerValue, right: TriggerValue) => TriggerExpr; export declare const exprGt: (left: TriggerValue, right: TriggerValue) => TriggerExpr; export declare const exprGte: (left: TriggerValue, right: TriggerValue) => TriggerExpr; export declare const exprIsNull: (value: TriggerValue) => TriggerExpr; export declare const exprIsNotNull: (value: TriggerValue) => TriggerExpr; export declare const exprAnd: (left: TriggerExpr, right: TriggerExpr) => TriggerExpr; export declare const exprOr: (left: TriggerExpr, right: TriggerExpr) => TriggerExpr; export declare const exprNot: (value: TriggerExpr) => TriggerExpr; export declare const condPk: (value: TriggerValue) => TriggerCondition; export declare const condEq: (columnId: number, value: TriggerValue) => TriggerCondition; export declare const condNotEq: (columnId: number, value: TriggerValue) => TriggerCondition; export declare const condLt: (columnId: number, value: TriggerValue) => TriggerCondition; export declare const condLte: (columnId: number, value: TriggerValue) => TriggerCondition; export declare const condGt: (columnId: number, value: TriggerValue) => TriggerCondition; export declare const condGte: (columnId: number, value: TriggerValue) => TriggerCondition; export declare const condIsNull: (columnId: number) => TriggerCondition; export declare const condIsNotNull: (columnId: number) => TriggerCondition; export declare const condAnd: (left: TriggerCondition, right: TriggerCondition) => TriggerCondition; export declare const condOr: (left: TriggerCondition, right: TriggerCondition) => TriggerCondition; export declare const condNot: (value: TriggerCondition) => TriggerCondition; export declare const cell: (columnId: number, value: TriggerValue) => TriggerCell; export declare const stepSelect: (id: string, table: string, conditions?: TriggerCondition[]) => TriggerStep; export declare const stepForeach: (id: string, steps: TriggerStep[]) => TriggerStep; export declare const stepDeleteWhere: (table: string, conditions?: TriggerCondition[]) => TriggerStep; export declare const stepUpdateWhere: (table: string, cells: TriggerCell[], conditions?: TriggerCondition[]) => TriggerStep; export declare const stepSetNew: (cells: TriggerCell[]) => TriggerStep; export declare const stepInsert: (table: string, cells: TriggerCell[]) => TriggerStep; export declare const stepUpdateByPk: (table: string, pk: TriggerValue, cells: TriggerCell[]) => TriggerStep; export declare const stepDeleteByPk: (table: string, pk: TriggerValue) => TriggerStep; export declare const stepRaise: (action: TriggerRaiseAction, message: TriggerValue) => TriggerStep; //# sourceMappingURL=trigger.d.ts.map