import { RedisAdapter, TimedKVPeer, TimedKVPeerOptions } from "@myunisoft/redis"; import type { TransactionMetadata, DispatcherApprovementMessage, IncomerRegistrationMessage, IncomerChannelMessages, DispatcherPingMessage, DistributedEventMessage, Instance } from "../../types/index.js"; type BaseTransaction = { published?: boolean; mainTransaction: IsMain; relatedTransaction: RelatedTransaction; resolved: boolean; }; type HandlerTransaction = BaseTransaction & { eventTransactionId?: string; }; export type DispatcherMainTransaction = DispatcherPingMessage & { redisMetadata: BaseTransaction & IncomerChannelMessages["DispatcherMessages"]["redisMetadata"]; }; export interface DispatcherSpreadTransaction { dispatcherApprovementTransaction: DispatcherApprovementMessage & { redisMetadata: BaseTransaction & DispatcherApprovementMessage["redisMetadata"]; }; dispatcherDistributedEventTransaction: DistributedEventMessage & { redisMetadata: BaseTransaction & IncomerChannelMessages["DispatcherMessages"]["redisMetadata"]; }; } export interface IncomerMainTransaction { incomerRegistrationTransaction: IncomerRegistrationMessage & { redisMetadata: BaseTransaction & IncomerRegistrationMessage["redisMetadata"]; }; incomerEventCastTransaction: IncomerChannelMessages["IncomerMessages"] & { redisMetadata: BaseTransaction & IncomerChannelMessages["IncomerMessages"]["redisMetadata"]; }; } type IncomerTransaction = IncomerMainTransaction["incomerRegistrationTransaction"] | IncomerMainTransaction["incomerEventCastTransaction"]; type DispatcherTransaction = DispatcherSpreadTransaction["dispatcherApprovementTransaction"] | DispatcherSpreadTransaction["dispatcherDistributedEventTransaction"] | DispatcherMainTransaction; export type Transaction = (T extends "dispatcher" ? DispatcherTransaction : IncomerTransaction) & { aliveSince: number; }; type MetadataWithoutTransactionId = T extends "dispatcher" ? Omit, "to" | "transactionId"> & { to?: string; } & (BaseTransaction | BaseTransaction) : Omit, "transactionId"> & (BaseTransaction | HandlerTransaction); export type PartialTransaction = Omit, "redisMetadata" | "aliveSince"> & { redisMetadata: MetadataWithoutTransactionId; }; export type Transactions = Map>; export type TransactionStoreOptions = (Omit & (T extends "incomer" ? { prefix: string; } : { prefix?: string; }) & { adapter: RedisAdapter>; instance: T; }); export declare class TransactionStore extends TimedKVPeer> { #private; adapter: RedisAdapter>; constructor(options: TransactionStoreOptions); transactionLazyFetch(count?: number): AsyncGenerator; getTransactions(): Promise>; setTransaction(transaction: PartialTransaction, transactionId?: string): Promise>; updateTransaction(transactionId: string, transaction: Transaction): Promise; getTransactionById(transactionId: string): Promise | null>; deleteTransaction(transactionId: string): Promise; deleteTransactions(transactionIds: string[]): Promise; } export {}; //# sourceMappingURL=transaction.class.d.ts.map