import { FederationEnvelope, type FederationEnvelopeProps, type FederationMessageType } from '../entities/federation-envelope.js'; import { FederationSession } from '../entities/federation-session.js'; export type RoutingMode = 'direct' | 'broadcast' | 'consensus'; export interface RoutingResult { readonly success: boolean; readonly mode: RoutingMode; readonly envelopeId: string; readonly targetNodeIds: readonly string[]; readonly error?: string; readonly latencyMs?: number; } export interface ConsensusProposal { readonly proposalId: string; readonly proposerNodeId: string; readonly messageType: FederationMessageType; readonly payload: unknown; readonly quorumRequired: number; readonly votes: Map; readonly createdAt: Date; readonly expiresAt: Date; } export interface RoutingServiceDeps { generateEnvelopeId: () => string; generateNonce: () => string; signEnvelope: (payload: string, sessionToken: string) => string; verifyEnvelope: (payload: string, signature: string, sessionToken: string) => boolean; scanPii: (text: string, trustLevel: number) => { transformedText: string; scanResult: FederationEnvelopeProps['piiScanResult']; }; sendToNode: (nodeId: string, envelope: FederationEnvelope) => Promise; getActiveSessions: () => FederationSession[]; getLocalNodeId: () => string; } export declare class RoutingService { private readonly deps; private readonly pendingProposals; constructor(deps: RoutingServiceDeps); selectMode(messageType: FederationMessageType): RoutingMode; send(session: FederationSession, messageType: FederationMessageType, payload: T): Promise; broadcast(messageType: FederationMessageType, payload: T): Promise; propose(messageType: FederationMessageType, payload: T, quorumFraction?: number): Promise; recordVote(proposalId: string, nodeId: string, vote: boolean): boolean; isConsensusReached(proposalId: string): { reached: boolean; approved: boolean; }; verifyInboundEnvelope(envelope: FederationEnvelope, sessionToken: string): boolean; cleanExpiredProposals(): void; } //# sourceMappingURL=routing-service.d.ts.map