import * as client from '@botpress/client'; import type { commonTypes } from '../../common'; import * as utils from '../../utils/type-utils'; import * as common from '../common'; import { EnumerateMessages, ConversationTags, GetChannelByName, GetMessageByName, MessageTags, UserTags } from './sub-types'; type Arg any> = Parameters[number]; type Res any> = ReturnType; type ConversationResponse = utils.ValueOf<{ [TChannelName in ChannelName]: { conversation: utils.Merge>['conversation'], { channel: TChannelName; tags: commonTypes.ToTags; }>; }; }>; type GetOrCreateConversationResponse = utils.ValueOf<{ [TChannelName in ChannelName]: utils.Merge>, { conversation: utils.Merge>['conversation'], { channel: TChannelName; tags: commonTypes.ToTags; }>; }>; }>; export type CreateConversation = (x: { channel: utils.Cast; tags: commonTypes.ToTags['conversation']['tags']>; }) => Promise>; export type GetConversation = (x: Arg) => Promise>; export type ListConversations = (x: utils.Merge, { channel?: utils.Cast; tags?: commonTypes.ToTags['conversation']['tags']>; }>) => Res; export type GetOrCreateConversation = ['conversation']['tags']>(x: utils.Merge, { channel: utils.Cast; tags: commonTypes.ToTags; discriminateByTags?: NoInfer>; }>) => Promise>; export type UpdateConversation = (x: utils.Merge, { tags?: commonTypes.ToTags>; }>) => Promise>; export type DeleteConversation<_TIntegration extends common.BaseIntegration> = client.Client['deleteConversation']; export type ListParticipants<_TIntegration extends common.BaseIntegration> = client.Client['listParticipants']; export type AddParticipant<_TIntegration extends common.BaseIntegration> = client.Client['addParticipant']; export type GetParticipant<_TIntegration extends common.BaseIntegration> = client.Client['getParticipant']; export type RemoveParticipant<_TIntegration extends common.BaseIntegration> = client.Client['removeParticipant']; type EventResponse = { event: utils.Merge>['event'], { type: utils.Cast; payload: TIntegration['events'][TEvent]; }>; }; export type CreateEvent = (x: utils.Merge, { type: utils.Cast; payload: TIntegration['events'][TEvent]; }>) => Promise>; export type GetEvent = (x: Arg) => Promise; }>>; export type ListEvents = (x: utils.Merge, { type?: utils.Cast; }>) => Res; type MessageResponse = keyof EnumerateMessages> = { message: utils.Merge>['message'], utils.Cast[TMessage], object>>; }; export type CreateMessage = >(x: utils.Merge, { type: utils.Cast; payload: GetMessageByName['payload']; tags: commonTypes.ToTags['tags']>; }>) => Promise>; type GetOrCreateMessageResponse = keyof EnumerateMessages> = utils.Merge>, { message: utils.Merge>['message'], utils.Cast[TMessage], object>>; }>; export type GetOrCreateMessage = , TTags extends keyof GetMessageByName['tags']>(x: utils.Merge, { type: utils.Cast; payload?: GetMessageByName['payload']; tags: commonTypes.ToTags; discriminateByTags?: NoInfer>; }>) => Promise>; export type GetMessage = (x: Arg) => Promise>; export type UpdateMessage = (x: utils.Merge, { tags: commonTypes.ToTags>; }>) => Promise>; export type ListMessages = (x: utils.Merge, { tags?: commonTypes.ToTags>; }>) => Res; export type DeleteMessage<_TIntegration extends common.BaseIntegration> = client.Client['deleteMessage']; type UserResponse = { user: utils.Merge>['user'], { tags: UserTags; }>; }; export type CreateUser = (x: utils.Merge, { tags: UserTags; }>) => Promise>; export type GetUser = (x: Arg) => Promise>; export type ListUsers = (x: utils.Merge, { tags?: UserTags; }>) => Res; type GetOrCreateUserResponse = utils.Merge>, { user: utils.Merge>['user'], { tags: UserTags; }>; }>; export type GetOrCreateUser = (x: utils.Merge, { tags: commonTypes.ToTags; discriminateByTags?: NoInfer>; }>) => Promise>; export type UpdateUser = (x: utils.Merge, { tags?: UserTags; }>) => Promise>; export type DeleteUser<_TIntegration extends common.BaseIntegration> = client.Client['deleteUser']; export type InitializeIncomingMessage = (x: utils.Merge, { user?: utils.Merge['user']>, { tags: UserTags; }>; conversation?: utils.Merge['conversation']>, { tags: commonTypes.ToTags>; }>; message?: utils.Merge['message']>, { tags: commonTypes.ToTags>; }>; }>) => Promise<{ user: Awaited>['user']; conversation: Awaited>['conversation']; message?: MessageResponse; }>; type StateResponse = { state: utils.Merge>['state'], { name: utils.Cast; type: utils.Cast; payload: TIntegration['states'][TState]['payload']; }>; meta: { cached: boolean; }; }; export type GetState = (x: utils.Merge, { type: utils.Cast; name: utils.Cast; }>) => Promise>; export type SetState = (x: utils.Merge, { name: utils.Cast; type: utils.Cast; payload: TIntegration['states'][TState]['payload'] | null; }>) => Promise>; export type GetOrSetState = (x: utils.Merge, { name: utils.Cast; type: utils.Cast; payload: TIntegration['states'][TState]['payload']; }>) => Promise>; export type PatchState = (x: utils.Merge, { name: utils.Cast; type: utils.Cast; payload: Partial; }>) => Promise>; export type ConfigureIntegration<_TIntegration extends common.BaseIntegration> = client.Client['configureIntegration']; export type UploadFile<_TIntegration extends common.BaseIntegration> = client.Client['uploadFile']; export type UpsertFile<_TIntegration extends common.BaseIntegration> = client.Client['upsertFile']; export type DeleteFile<_TIntegration extends common.BaseIntegration> = client.Client['deleteFile']; export type ListFiles<_TIntegration extends common.BaseIntegration> = client.Client['listFiles']; export type GetFile<_TIntegration extends common.BaseIntegration> = client.Client['getFile']; export type UpdateFileMetadata<_TIntegration extends common.BaseIntegration> = client.Client['updateFileMetadata']; export type TrackAnalytics<_TIntegration extends common.BaseIntegration> = client.Client['trackAnalytics']; export type ClientOperations = { createConversation: CreateConversation; getConversation: GetConversation; listConversations: ListConversations; getOrCreateConversation: GetOrCreateConversation; updateConversation: UpdateConversation; deleteConversation: DeleteConversation; listParticipants: ListParticipants; addParticipant: AddParticipant; getParticipant: GetParticipant; removeParticipant: RemoveParticipant; createEvent: CreateEvent; getEvent: GetEvent; listEvents: ListEvents; createMessage: CreateMessage; getOrCreateMessage: GetOrCreateMessage; getMessage: GetMessage; updateMessage: UpdateMessage; listMessages: ListMessages; deleteMessage: DeleteMessage; createUser: CreateUser; getUser: GetUser; listUsers: ListUsers; getOrCreateUser: GetOrCreateUser; updateUser: UpdateUser; deleteUser: DeleteUser; getState: GetState; setState: SetState; getOrSetState: GetOrSetState; patchState: PatchState; configureIntegration: ConfigureIntegration; uploadFile: UploadFile; upsertFile: UpsertFile; deleteFile: DeleteFile; listFiles: ListFiles; getFile: GetFile; updateFileMetadata: UpdateFileMetadata; trackAnalytics: TrackAnalytics; }; export type ClientInputs = { [K in keyof ClientOperations]: Arg[K]>; }; export type ClientOutputs = { [K in keyof ClientOperations]: Awaited[K]>>; }; export {};