import * as client from '@botpress/client'; import * as utils from '../../utils/type-utils'; import * as common from '../common'; type Arg any> = Parameters[number]; type Res any> = ReturnType; type EventResponse = { event: { [K in keyof common.EnumerateEvents]: utils.Merge[K]; }>; }[keyof common.EnumerateEvents]; }; type MessageResponse = keyof common.GetMessages> = { message: utils.ValueOf<{ [K in keyof common.GetMessages as K extends TMessage ? K : never]: utils.Merge[K]; }>; }>; }; type StateResponse = utils.Merge>, { state: utils.Merge>['state'], { type: utils.Cast; payload: TBot['states'][TState]['payload']; }>; }>; export type CreateConversation<_TBot extends common.BaseBot> = client.Client['createConversation']; export type GetConversation<_TBot extends common.BaseBot> = client.Client['getConversation']; export type ListConversations<_TBot extends common.BaseBot> = client.Client['listConversations']; export type GetOrCreateConversation<_TBot extends common.BaseBot> = client.Client['getOrCreateConversation']; export type UpdateConversation<_TBot extends common.BaseBot> = client.Client['updateConversation']; export type DeleteConversation<_TBot extends common.BaseBot> = client.Client['deleteConversation']; export type ListParticipants<_TBot extends common.BaseBot> = client.Client['listParticipants']; export type AddParticipant<_TBot extends common.BaseBot> = client.Client['addParticipant']; export type GetParticipant<_TBot extends common.BaseBot> = client.Client['getParticipant']; export type RemoveParticipant<_TBot extends common.BaseBot> = client.Client['removeParticipant']; export type CreateEvent = (x: utils.Merge, { type: utils.Cast; payload: TBot['events'][TEvent]; }>) => Promise>; export type GetEvent = (x: Arg) => Promise>; export type ListEvents<_TBot extends common.BaseBot> = client.Client['listEvents']; export type CreateMessage = >(x: utils.Merge, { type: utils.Cast; payload: utils.Cast[TMessage], Record>; }>) => Promise>; export type GetMessage = (x: Arg) => Promise>; export type UpdateMessage = (x: Arg) => Promise>; export type ListMessages<_TBot extends common.BaseBot> = client.Client['listMessages']; export type DeleteMessage<_TBot extends common.BaseBot> = client.Client['deleteMessage']; export type CreateUser<_TBot extends common.BaseBot> = client.Client['createUser']; export type GetUser<_TBot extends common.BaseBot> = client.Client['getUser']; export type ListUsers<_TBot extends common.BaseBot> = client.Client['listUsers']; export type GetOrCreateUser<_TBot extends common.BaseBot> = client.Client['getOrCreateUser']; export type UpdateUser<_TBot extends common.BaseBot> = client.Client['updateUser']; export type DeleteUser<_TBot extends common.BaseBot> = client.Client['deleteUser']; export type GetState = (x: utils.Merge, { name: utils.Cast; type: utils.Cast; }>) => Promise>; export type SetState = (x: utils.Merge, { name: utils.Cast; type: utils.Cast; payload: TBot['states'][TState]['payload'] | null; }>) => Promise>; export type GetOrSetState = (x: utils.Merge, { name: utils.Cast; type: utils.Cast; payload: TBot['states'][TState]['payload']; }>) => Promise>; export type PatchState = (x: utils.Merge, { name: utils.Cast; type: utils.Cast; payload: Partial; }>) => Promise>; export type CallAction = >(x: utils.Merge, { type: utils.Cast; input: utils.Cast[ActionType], common.IntegrationInstanceActionDefinition>['input']; }>) => Promise>, { output: utils.Cast[ActionType], common.IntegrationInstanceActionDefinition>['output']; }>>; export type UploadFile<_TBot extends common.BaseBot> = client.Client['uploadFile']; export type UpsertFile<_TBot extends common.BaseBot> = client.Client['upsertFile']; export type DeleteFile<_TBot extends common.BaseBot> = client.Client['deleteFile']; export type ListFiles<_TBot extends common.BaseBot> = client.Client['listFiles']; export type GetFile<_TBot extends common.BaseBot> = client.Client['getFile']; export type UpdateFileMetadata<_TBot extends common.BaseBot> = client.Client['updateFileMetadata']; export type SearchFiles<_TBot extends common.BaseBot> = client.Client['searchFiles']; export type CreateWorkflow = >(x: utils.Merge, { name: utils.Cast; input: utils.Cast['input']; tags?: utils.AtLeastOneProperty; }>) => Promise>['workflow'], { name: NoInfer; }>; }>>; export type GetOrCreateWorkflow = >(x: utils.Merge, { name: utils.Cast; input: utils.Cast['input']; tags?: utils.AtLeastOneProperty; }>) => Promise>['workflow'], { name: NoInfer; }>; }>>; export type GetWorkflow<_TBot extends common.BaseBot> = client.Client['getWorkflow']; export type UpdateWorkflow<_TBot extends common.BaseBot> = client.Client['updateWorkflow']; export type DeleteWorkflow<_TBot extends common.BaseBot> = client.Client['deleteWorkflow']; export type ListWorkflows = >(x: utils.Merge, { name?: utils.Cast; tags?: utils.AtLeastOneProperty; }>) => Promise>>>; export type GetTableRow = , Columns = utils.Cast[TableName], Record>>(x: utils.Merge, { table: utils.Cast; id: client.Row['id']; }>) => Promise>, { row: Awaited>['row'] & Columns; }>>>; export type CreateTableRows = , Columns = utils.Cast[TableName], Record>>(x: utils.Merge, { table: utils.Cast; rows: utils.AtLeastOne[TableName], Record>>; }>) => Promise>, { rows: Awaited>['rows'] & Columns[]; }>>>; type TableRowQueryGroup = 'key' | 'avg' | 'max' | 'min' | 'sum' | 'count'; type TableRowExtraColumns = { /** * Unique identifier for the row. */ id: number; /** * Timestamp of row creation. */ createdAt: string; /** * Timestamp of the last row update. */ updatedAt: string; }; type TableRowFilter, Columns = utils.Cast[TableName], Record> & TableRowExtraColumns> = TableRowColumnFilters | TableRowLogicalFilter; type TableRowColumnFilters = utils.AtLeastOneProperty<{ [K in Extract]: TableColumnComparisonFilter; }>; type TableRowLogicalFilter, Columns = utils.Cast[TableName], Record> & TableRowExtraColumns> = utils.ExactlyOneProperty<{ $and: utils.AtLeastOne>; $or: utils.AtLeastOne>; $not: TableRowColumnFilters; }>; type TableColumnComparisonFilter = ColumnType | utils.ExactlyOneProperty<{ $eq: ColumnType; $gt: ColumnType; $gte: ColumnType; $lt: ColumnType; $lte: ColumnType; $ne: ColumnType; $mod: [number, number]; $in: utils.AtLeastOne; $nin: utils.AtLeastOne; $exists: boolean; $size: number; }>; export type FindTableRows = , Columns = utils.Cast[TableName], Record> & TableRowExtraColumns>(x: utils.Merge, { table: utils.Cast; filter?: TableRowFilter, NoInfer>; group?: NoInfer]: TableRowQueryGroup | TableRowQueryGroup[]; }>>; orderBy?: NoInfer>; }>) => Promise>, { rows: Awaited>['rows'] & Columns[]; }>>>; export type DeleteTableRows = >(x: utils.Merge, { table: utils.Cast; filter?: TableRowFilter; }>) => Promise>>>; export type UpdateTableRows = , Columns = utils.Cast[TableName], Record>>(x: utils.Merge, { table: utils.Cast; rows: utils.AtLeastOne[TableName], Record> & { id: number; }>; }>) => Promise>, { rows: Awaited>['rows'] & Columns[]; }>>>; export type UpsertTableRows = , Columns = utils.Cast[TableName], Record>>(x: utils.Merge, { table: utils.Cast; rows: utils.AtLeastOne[TableName], Record> & { id?: number; }>; keyColumn?: NoInfer[TableName], string>> | 'id'; }>) => Promise>, { inserted: Awaited>['inserted'] & Columns[]; updated: Awaited>['updated'] & Columns[]; }>>>; export type TrackAnalytics<_TBot extends common.BaseBot> = client.Client['trackAnalytics']; export type ClientOperations = { getConversation: GetConversation; listConversations: ListConversations; updateConversation: UpdateConversation; deleteConversation: DeleteConversation; listParticipants: ListParticipants; addParticipant: AddParticipant; getParticipant: GetParticipant; removeParticipant: RemoveParticipant; getEvent: GetEvent; createEvent: CreateEvent; listEvents: ListEvents; createMessage: CreateMessage; getMessage: GetMessage; updateMessage: UpdateMessage; listMessages: ListMessages; deleteMessage: DeleteMessage; getUser: GetUser; listUsers: ListUsers; updateUser: UpdateUser; deleteUser: DeleteUser; getState: GetState; setState: SetState; getOrSetState: GetOrSetState; patchState: PatchState; callAction: CallAction; uploadFile: UploadFile; upsertFile: UpsertFile; deleteFile: DeleteFile; listFiles: ListFiles; getFile: GetFile; updateFileMetadata: UpdateFileMetadata; searchFiles: SearchFiles; trackAnalytics: TrackAnalytics; getTableRow: GetTableRow; createTableRows: CreateTableRows; findTableRows: FindTableRows; deleteTableRows: DeleteTableRows; updateTableRows: UpdateTableRows; upsertTableRows: UpsertTableRows; }; export type ClientInputs = { [K in keyof ClientOperations]: Arg[K]>; }; export type ClientOutputs = { [K in keyof ClientOperations]: Awaited[K]>>; }; type ClientHooksBefore = { [K in client.Operation]?: (x: client.ClientInputs[K]) => Promise; }; type ClientHooksAfter = { [K in client.Operation]?: (y: client.ClientOutputs[K], x: client.ClientInputs[K]) => Promise; }; export type ClientHooks = { before: ClientHooksBefore; after: ClientHooksAfter; }; export {};