{"version":3,"file":"types.cjs","names":[],"sources":["../../src/channel/types.ts"],"sourcesContent":["// Messages\nexport type MessageBase = {\n\trequestID: string\n}\n\nexport type RequestMessage<TType extends string = string, TData = void> = {\n\ttype: TType\n\tdata: TData\n} & MessageBase\n\nexport type ResponseMessageBase = {\n\tstatus: number\n\tmsg: string\n} & MessageBase\n\nexport type SuccessResponseMessage<TData = void> = {\n\tdata: TData\n\terror?: never\n} & ResponseMessageBase\n\nexport type ErrorResponseMessage<TError = unknown> = {\n\tdata?: never\n\terror: unknown | TError\n} & ResponseMessageBase\n\nexport type ResponseMessage<TData = void, TError = unknown> =\n\t| SuccessResponseMessage<TData>\n\t| ErrorResponseMessage<TError>\n\nexport type ExtractSuccessResponseMessage<TResponse extends UnknownResponseMessage> = Extract<\n\tTResponse,\n\t{ error?: never }\n>\n\nexport type ExtractErrorResponseMessage<TResponse extends UnknownResponseMessage> = Extract<\n\tTResponse,\n\t{ data?: never }\n>\n\n// Unknown messages\nexport type UnknownRequestMessage = RequestMessage<string, unknown>\n\nexport type UnknownSuccessResponseMessage = SuccessResponseMessage<unknown>\n\nexport type UnknownErrorResponseMessage = ErrorResponseMessage<unknown>\n\nexport type UnknownResponseMessage = UnknownSuccessResponseMessage | UnknownErrorResponseMessage\n\nexport type UnknownMessage = UnknownRequestMessage | UnknownResponseMessage\n\n// Transactions\nexport type Transaction<\n\tTRequest extends UnknownRequestMessage,\n\tTResponse extends UnknownResponseMessage = ResponseMessage<void>,\n> = {\n\trequest: TRequest\n\tresponse: TResponse\n}\n\nexport type TransactionMethod<\n\tTTransaction extends Transaction<UnknownRequestMessage, UnknownResponseMessage>,\n> = (\n\tdata: TTransaction[\"request\"][\"data\"],\n) => Promise<ExtractSuccessResponseMessage<TTransaction[\"response\"]>>\n\nexport type TransactionHandler<\n\tTTransaction extends Transaction<UnknownRequestMessage, UnknownResponseMessage>,\n> = (\n\trequest: TTransaction[\"request\"],\n\tresponse: {\n\t\tsuccess: (\n\t\t\tdata: ExtractSuccessResponseMessage<TTransaction[\"response\"]>[\"data\"],\n\t\t\tstatus?: number,\n\t\t) => ExtractSuccessResponseMessage<TTransaction[\"response\"]>\n\t\terror: (\n\t\t\terror: ExtractErrorResponseMessage<TTransaction[\"response\"]>[\"error\"],\n\t\t\tstatus?: number,\n\t\t) => ExtractErrorResponseMessage<TTransaction[\"response\"]>\n\t},\n) => Promise<TTransaction[\"response\"]> | TTransaction[\"response\"]\n\nexport type TransactionsMethods<TTransactions extends Record<string, UnknownTransaction>> = {\n\t[Key in keyof TTransactions]: TransactionMethod<TTransactions[Key]>\n}\n\nexport type TransactionsHandlers<TTransactions extends Record<string, UnknownTransaction>> = {\n\t[Key in keyof TTransactions]: TransactionHandler<TTransactions[Key]>\n}\n\n// Unknown transactions\nexport type UnknownTransaction = Transaction<UnknownRequestMessage, UnknownResponseMessage>\n\nexport type UnknownTransactionMethod = TransactionMethod<UnknownTransaction>\n\nexport type UnknownTransactionHandler = TransactionHandler<UnknownTransaction>\n\n// Emitter\nexport enum InternalEmitterRequestType {\n\tConnect = \"connect\",\n}\n\nexport type InternalEmitterTransactions<\n\tTReceiverOptions extends Record<string, unknown> = Record<string, unknown>,\n> = {\n\t[InternalEmitterRequestType.Connect]: Transaction<\n\t\tRequestMessage<\n\t\t\tInternalEmitterRequestType.Connect,\n\t\t\tPartial<Omit<TReceiverOptions, \"debug\" | \"requestIDPrefix\" | \"readyTimeout\">> | undefined\n\t\t>\n\t>\n}\n\n// Receiver\nexport enum InternalReceiverRequestType {\n\tReady = \"ready\",\n}\n\nexport type InternalReceiverTransactions = {\n\t[InternalReceiverRequestType.Ready]: Transaction<\n\t\tRequestMessage<InternalReceiverRequestType.Ready>\n\t>\n}\n"],"mappings":";AAiGA,IAAY,6BAAL,yBAAA,4BAAA;AACN,4BAAA,aAAA;;KACA;AAcD,IAAY,8BAAL,yBAAA,6BAAA;AACN,6BAAA,WAAA;;KACA"}