lotus-sdk
Version:
Central repository for several classes of tools for integrating with, and building for, the Lotusia ecosystem
123 lines • 4.2 kB
TypeScript
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