lotus-sdk
Version:
Central repository for several classes of tools for integrating with, and building for, the Lotusia ecosystem
61 lines • 2.9 kB
TypeScript
import { PrivateKey } from '../privatekey.js';
import { PublicKey } from '../publickey.js';
import { Signature } from '../crypto/signature.js';
import { Point } from '../crypto/point.js';
import { Script } from '../script.js';
import { Address } from '../address.js';
import { type MuSigKeyAggContext } from '../crypto/musig2.js';
import { MuSigSessionManager, type MuSigSession } from './session.js';
import { type MuSigTaprootKeyResult } from '../taproot/musig2.js';
import { Transaction } from '../transaction/transaction.js';
import { BN } from '../crypto/bn.js';
export interface MuSig2SignerConfig {
signers: PublicKey[];
myPrivateKey: PrivateKey;
extraInput?: Buffer;
}
export interface MuSig2PrepareResult {
keyAggContext: MuSigKeyAggContext;
myPublicNonces: [Point, Point];
mySecretNonces: [BN, BN];
myIndex: number;
sessionId?: string;
}
export interface MuSig2SignResult {
signature: Signature;
aggregatedPubKey: PublicKey;
isAggregator: boolean;
}
export interface MuSig2TaprootSignResult extends MuSig2SignResult {
commitment: PublicKey;
script: Script;
address: Address;
}
export declare class MuSig2Signer {
private config;
private sessionManager?;
constructor(config: MuSig2SignerConfig);
prepare(message: Buffer | string, useSession?: boolean): MuSig2PrepareResult;
createPartialSignature(prepare: MuSig2PrepareResult, allPublicNonces: Array<[Point, Point]>, message: Buffer | string): BN;
verifyPartialSignature(partialSig: BN, publicNonce: [Point, Point], publicKey: PublicKey, signerIndex: number, prepare: MuSig2PrepareResult, allPublicNonces: Array<[Point, Point]>, message: Buffer | string): boolean;
sign(prepare: MuSig2PrepareResult, allPublicNonces: Array<[Point, Point]>, message: Buffer | string, allPartialSigs: BN[]): MuSig2SignResult;
prepareTaproot(state?: Buffer): MuSigTaprootKeyResult & {
keyAggContext: MuSigKeyAggContext;
};
signTaprootInput(prepare: MuSigTaprootKeyResult & {
keyAggContext: MuSigKeyAggContext;
}, allPublicNonces: Array<[Point, Point]>, transaction: Transaction, inputIndex: number, amount: number, sighashType?: number): BN;
completeTaprootSigning(prepare: MuSigTaprootKeyResult & {
keyAggContext: MuSigKeyAggContext;
}, allPublicNonces: Array<[Point, Point]>, allPartialSigs: BN[], transaction: Transaction, inputIndex: number, amount: number, sighashType?: number): Signature;
createSession(message: Buffer | string, metadata?: Record<string, unknown>): {
manager: MuSigSessionManager;
session: MuSigSession;
};
get myPublicKey(): PublicKey;
get allSigners(): PublicKey[];
get myIndex(): number;
private _normalizeMessage;
}
export declare function createMuSig2Signer(signers: PublicKey[], myPrivateKey: PrivateKey): MuSig2Signer;
//# sourceMappingURL=signer.d.ts.map