import { type Obj } from '../utils/helpers'; type Value = string | boolean | number | null; type ArrayValue = Value[] | { [key: string]: Value; }[]; type Data = Value | ArrayValue; export type EditedValue = { old?: Data; new?: Data; }; type CreatedItem = { [key: string]: Data; } & Partial>; type ChangedItem = { [key: string]: EditedValue; }; type ChangedItems = { [key: string]: ChangedItem | CreatedItem | null; }; type CreatedItems = { [key: string]: CreatedItem; }; interface AuditBase { client: string; product: string; user: string; version: 1; object: string; searchable: string[]; } type AuditOnlyStruct = { date: Date; }; type AuditMessageOnlyStruct = { date: number; }; export type Operations = 'edit' | 'create' | 'delete' | 'trigger'; type OperationEdit = { operation: 'edit'; values: EditValues; }; export type EditValues = { [key: string]: EditedValue | ChangedItems; }; type OperationCreate = { operation: 'create'; values: CreateValues; }; export type CreateValues = { [key: string]: Data | CreatedItems; }; export type OperationDelete = { operation: 'delete'; values?: DeleteValues; }; export type DeleteValues = { [key: string]: Value | Value[]; }; type OperationTrigger = { operation: 'trigger'; values: TriggerValues; }; export type TriggerValues = { cmd: string; [key: string]: Data; }; type AuditCommon = AuditBase & OperationEdit | AuditBase & OperationCreate | AuditBase & OperationDelete | AuditBase & OperationTrigger; export type Audit = AuditCommon & AuditOnlyStruct; export type AuditMessage = AuditCommon & AuditMessageOnlyStruct; export declare const convertMessageToAudit: (message: AuditMessage) => Audit; export declare function buildMessage(client: string, product: string, user: string, object: string, searchable: string[], operation: 'edit', values: EditValues): [AuditMessage | undefined, string | undefined]; export declare function buildMessage(client: string, product: string, user: string, object: string, searchable: string[], operation: 'create', values: CreateValues): [AuditMessage | undefined, string | undefined]; export declare function buildMessage(client: string, product: string, user: string, object: string, searchable: string[], operation: 'delete', values?: DeleteValues): [AuditMessage | undefined, string | undefined]; export declare function buildMessage(client: string, product: string, user: string, object: string, searchable: string[], operation: 'trigger', values: TriggerValues): [AuditMessage | undefined, string | undefined]; export declare const buildMessageForJS: (client: any, product: any, user: any, object: any, searchable: any, operation: any, values?: any) => [AuditMessage | undefined, string | undefined]; export declare const validateMessage: (m: any) => string | undefined; export declare const buildAttributeChange: (oldValue: any, newValue: any) => Obj | undefined; export {};