import { Channel, RedisAdapter } from "@myunisoft/redis"; import type { Logger } from "pino"; import { TransactionStore, type Transaction } from "./store/transaction.class.js"; import { IncomerStore } from "./store/incomer.class.js"; import { IncomerChannelHandler } from "./incomer-channel.class.js"; import { type StandardLog } from "../utils/index.js"; import { EventsHandler } from "./events.class.js"; import type { DispatcherApprovementMessage, TransactionMetadata, DistributedEventMessage, GenericEvent, IncomerChannelMessages, RegisteredIncomer } from "../types/index.js"; type DispatchedEvent = (IncomerChannelMessages["DispatcherMessages"] | DispatcherApprovementMessage) & { redisMetadata: Omit; }; export interface DispatchEventOptions { channel: Channel>; redisMetadata: { mainTransaction: boolean; relatedTransaction?: null | string; eventTransactionId?: null | string; resolved: boolean; }; event: DispatchedEvent; } export type TransactionHandlerOptions = { redis: RedisAdapter; eventsHandler: EventsHandler; dispatcherTransactionStore: TransactionStore<"dispatcher">; backupDispatcherTransactionStore: TransactionStore<"dispatcher">; backupIncomerTransactionStore: TransactionStore<"incomer">; incomerChannelHandler: IncomerChannelHandler; incomerStore: IncomerStore; privateUUID: string; parentLogger: Logger; idleTime: number; logger?: Logger; standardLog?: StandardLog; pingInterval?: number; }; export interface RedistributeUnresolvedSpreadTransactionOptions { backupIncomerTransaction: Transaction<"incomer">; isoListener: RegisteredIncomer; relatedDispatcherTransactionId: string; backupTransactionId: string; } export interface RedistributeUnresolvedSpreadTransactionResponse { dispatcherTransactionUUID: string; event: Omit & { redisMetadata: Omit, "iteration" | "transactionId">; }; redisMetadata: DispatchEventOptions["redisMetadata"]; } export interface RedistributeResolvedSpreadTransactionOptions { isoListener: RegisteredIncomer; backupIncomerTransaction: Transaction<"incomer">; backupTransactionId: string; relatedDispatcherTransaction: Transaction<"dispatcher">; relatedDispatcherTransactionId: string; } export declare class TransactionHandler { #private; readonly privateUUID: any; incomerStore: IncomerStore; dispatcherTransactionStore: TransactionStore<"dispatcher">; backupDispatcherTransactionStore: TransactionStore<"dispatcher">; backupIncomerTransactionStore: TransactionStore<"incomer">; constructor(opts: TransactionHandlerOptions); close(): void; resolveTransactions(): Promise; resolveInactiveIncomerTransactions(inactiveIncomer: RegisteredIncomer): Promise; private backupMainTransaction; private distributeMainTransaction; private handleBackupIncomerTransactions; private findISOIncomer; private redistributeMainTransaction; private resolvePingTransactions; private resolveMainTransactions; private republishBackupDispatcherEvents; } export {}; //# sourceMappingURL=transaction-handler.class.d.ts.map