UNPKG

lotus-sdk

Version:

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

78 lines 3.14 kB
import { PublicKey } from '../publickey.js'; import { PrivateKey } from '../privatekey.js'; import { Point, BN, Signature } from '../crypto/index.js'; import { type MuSigKeyAggContext, type MuSigNonce, type MuSigAggregatedNonce } from '../crypto/musig2.js'; export declare enum MuSigSessionPhase { INIT = "init", NONCE_EXCHANGE = "nonce-exchange", PARTIAL_SIG_EXCHANGE = "partial-sig-exchange", COMPLETE = "complete", ABORTED = "aborted" } export interface SessionManagerResult { shouldTransitionTo?: MuSigSessionPhase; shouldRevealNonces?: boolean; broadcastNonces?: [Point, Point]; shouldCreatePartialSig?: boolean; shouldBroadcastPartialSig?: boolean; broadcastPartialSig?: BN; shouldFinalize?: boolean; finalSignature?: Signature; error?: string; } export interface MuSigSession { sessionId: string; signers: PublicKey[]; myIndex: number; keyAggContext: MuSigKeyAggContext; message: Buffer; metadata?: Record<string, unknown>; mySecretNonce?: MuSigNonce; myPublicNonce?: [Point, Point]; receivedPublicNonces: Map<number, [Point, Point]>; aggregatedNonce?: MuSigAggregatedNonce; myPartialSig?: BN; receivedPartialSigs: Map<number, BN>; finalSignature?: Signature; phase: MuSigSessionPhase; createdAt: number; updatedAt: number; abortReason?: string; electionMethod?: string; coordinatorIndex?: number; electionProof?: string; backupCoordinators?: number[]; } export declare class MuSigSessionManager { createSession(signers: PublicKey[], myPrivateKey: PrivateKey, message: Buffer, metadata?: Record<string, unknown>): MuSigSession; generateNonces(session: MuSigSession, privateKey: PrivateKey, extraInput?: Buffer): [Point, Point]; receiveNonces(session: MuSigSession, signerIndex: number, publicNonces: [Point, Point]): void; createPartialSignature(session: MuSigSession, privateKey: PrivateKey): BN; receivePartialSignature(session: MuSigSession, signerIndex: number, partialSig: BN): void; getFinalSignature(session: MuSigSession): Signature; abortSession(session: MuSigSession, reason: string): void; getSessionStatus(session: MuSigSession): { phase: MuSigSessionPhase; noncesCollected: number; noncesTotal: number; partialSigsCollected: number; partialSigsTotal: number; isComplete: boolean; isAborted: boolean; abortReason?: string; }; private _generateSessionId; _transitionPhaseForTesting(session: MuSigSession, newPhase: MuSigSessionPhase): void; private _aggregateNonces; private _finalizeSignature; private _clearSecretNonce; private _abortSession; hasAllNonces(session: MuSigSession): boolean; hasAllPartialSignatures(session: MuSigSession): boolean; isCoordinator(session: MuSigSession): boolean; validateBIP327Compliance(session: MuSigSession): void; private areKeysSorted; private validateMuSig2Rounds; initiateRound1(session: MuSigSession, privateKey: PrivateKey): SessionManagerResult; } //# sourceMappingURL=session.d.ts.map