UNPKG

lotus-sdk

Version:

Central repository for several classes of tools for integrating with, and building for, the Lotusia ecosystem

123 lines 4.2 kB
import type { PublicKey } from '../../bitcore/publickey.js'; import type { MuSigSession } from '../../bitcore/musig2/session.js'; export declare enum MuSig2MessageType { SESSION_ANNOUNCEMENT = "musig2:session-announcement", SESSION_JOIN = "musig2:session-join", SESSION_JOIN_ACK = "musig2:session-join-ack", NONCE_SHARE = "musig2:nonce-share", PARTIAL_SIG_SHARE = "musig2:partial-sig-share", SESSION_ABORT = "musig2:session-abort", SESSION_COMPLETE = "musig2:session-complete" } export interface SessionAnnouncement { sessionId: string; requiredSigners: number; coordinatorPeerId: string; signers?: string[]; messageHash: string; createdAt: number; expiresAt: number; metadata?: Record<string, unknown>; } export interface MuSig2Payload { sessionId: string; timestamp: number; } export interface SessionJoinPayload extends MuSig2Payload { signerPublicKey: string; } export interface SessionJoinAckPayload extends MuSig2Payload { accepted: boolean; signerIndex?: number; reason?: string; } export interface NonceSharePayload extends MuSig2Payload { signerIndex: number; publicNonces: { [key: string]: string; }; } export interface PartialSigSharePayload extends MuSig2Payload { signerIndex: number; partialSig: string; } export interface SessionAbortPayload extends MuSig2Payload { reason: string; } export interface SessionCompletePayload extends MuSig2Payload { finalSignature?: { r: string; s: string; }; } export interface SessionParticipant { peerId: string; signerIndex: number; publicKey: PublicKey; hasNonce: boolean; hasPartialSig: boolean; lastSeen: number; } export interface MuSig2P2PSession { session: MuSigSession; coordinatorPeerId: string; participants: Map<string, SessionParticipant>; isCoordinator: boolean; announcement?: SessionAnnouncement; createdAt: number; lastActivity: number; } export interface MuSig2P2PConfig { announcementTopic?: string; announcementTTL?: number; nonceTimeout?: number; partialSigTimeout?: number; maxConcurrentSessions?: number; enableAutoCleanup?: boolean; cleanupInterval?: number; enableCoordinatorElection?: boolean; maxMessageSize?: number; maxTimestampSkew?: number; maxInvalidMessagesPerPeer?: number; maxNonceCount?: number; enableValidationSecurity?: boolean; trackValidationViolations?: boolean; electionMethod?: 'lexicographic' | 'hash-based' | 'first-signer' | 'last-signer'; enableCoordinatorFailover?: boolean; broadcastTimeout?: number; } export declare const DEFAULT_MUSIG2_P2P_CONFIG: Required<MuSig2P2PConfig>; export declare enum MuSig2Event { SESSION_DISCOVERED = "musig2:session-discovered", SESSION_CREATED = "musig2:session-created", PARTICIPANT_JOINED = "musig2:participant-joined", SESSION_READY = "musig2:session-ready", NONCE_RECEIVED = "musig2:nonce-received", NONCES_COMPLETE = "musig2:nonces-complete", PARTIAL_SIG_RECEIVED = "musig2:partial-sig-received", PARTIAL_SIGS_COMPLETE = "musig2:partial-sigs-complete", SESSION_COMPLETE = "musig2:session-complete", SESSION_ABORTED = "musig2:session-aborted", SESSION_TIMEOUT = "musig2:session-timeout", SESSION_ERROR = "musig2:session-error", COORDINATOR_ELECTED = "musig2:coordinator-elected", SHOULD_BROADCAST = "musig2:should-broadcast", COORDINATOR_FAILED = "musig2:coordinator-failed", FAILOVER_EXHAUSTED = "musig2:failover-exhausted", BROADCAST_CONFIRMED = "musig2:broadcast-confirmed", SIGNER_ADVERTISED = "musig2:signer-advertised", SIGNER_DISCOVERED = "musig2:signer-discovered", SIGNER_WITHDRAWN = "musig2:signer-withdrawn", SIGNING_REQUEST_CREATED = "musig2:signing-request-created", SIGNING_REQUEST_RECEIVED = "musig2:signing-request-received", SIGNING_REQUEST_JOINED = "musig2:signing-request-joined" } export declare enum TransactionType { SPEND = "spend", SWAP = "swap", COINJOIN = "coinjoin", CUSTODY = "custody", ESCROW = "escrow", CHANNEL = "channel" } //# sourceMappingURL=types.d.ts.map