import { type Nonces, Session } from '@scure/btc-signer/musig2.js'; type PublicKey = Uint8Array; type PrivateKey = Uint8Array; type NonceBytes = Uint8Array; type PartialSignature = Uint8Array; type ParticipantIndex = number & { readonly __brand: unique symbol; }; type NoncePair = readonly [PublicKey, NonceBytes]; interface BaseState { readonly privateKey: PrivateKey; readonly myPublicKey: PublicKey; readonly publicKeys: ReadonlyArray; readonly myIndex: ParticipantIndex; readonly aggPubkey: PublicKey; readonly internalKey: PublicKey; readonly tweak?: Uint8Array; } interface StateWithMessage extends BaseState { readonly msg: Uint8Array; } interface StateWithNonce extends StateWithMessage { readonly nonce: Nonces; } interface StateWithAggregatedNonces extends StateWithNonce { readonly pubNonces: ReadonlyArray; readonly aggregatedNonce: NonceBytes; } interface StateWithSession extends StateWithAggregatedNonces { readonly session: Session; readonly partialSignatures: Array; } interface StateWithSignature extends StateWithSession { readonly ourSignature: PartialSignature; } declare abstract class MusigBase { protected readonly state: S; constructor(state: S); get aggPubkey(): PublicKey; get internalKey(): PublicKey; get publicKeys(): ReadonlyArray; get myPublicKey(): PublicKey; get myIndex(): ParticipantIndex; get tweak(): Uint8Array | undefined; get numParticipants(): number; hasPublicKey: (publicKey: PublicKey) => boolean; indexOfPublicKey: (publicKey: PublicKey) => ParticipantIndex; } declare abstract class MusigWithMessageBase extends MusigBase { get msg(): Uint8Array; } declare abstract class MusigWithNonceBase extends MusigWithMessageBase { get publicNonce(): NonceBytes; } declare abstract class MusigWithSessionBase extends MusigWithNonceBase { verifyPartial: (publicKeyOrIndex: PublicKey | number, signature: PartialSignature) => boolean; addPartial: (publicKeyOrIndex: PublicKey | number, signature: PartialSignature) => this; addPartials: (partials: Iterable) => this; } declare abstract class MusigWithOurPartialSignatureBase extends MusigWithSessionBase { get ourPartialSignature(): PartialSignature; } declare class MusigKeyAgg extends MusigBase { xonlyTweakAdd: (tweak: Uint8Array) => MusigKeyAgg; message: (msg: Uint8Array) => MusigWithMessage; } declare class MusigWithMessage extends MusigWithMessageBase { generateNonce: () => MusigWithNonce; } declare class MusigWithNonce extends MusigWithNonceBase { aggregateNonces: (nonces: Iterable) => MusigNoncesAggregated; aggregateNoncesOrdered: (nonces: ReadonlyArray) => MusigNoncesAggregated; } declare class MusigNoncesAggregated extends MusigWithNonceBase { initializeSession: () => MusigSession; } declare class MusigSession extends MusigWithSessionBase { signPartial: () => MusigSigned; } declare class MusigSigned extends MusigWithOurPartialSignatureBase { aggregatePartials: () => Uint8Array; } declare const aggregateKeys: (publicKeys: ReadonlyArray, tweak?: Uint8Array) => Uint8Array; declare const create: (privateKey: PrivateKey, publicKeys: ReadonlyArray) => MusigKeyAgg; export { aggregateKeys, create, MusigKeyAgg, MusigWithMessage, MusigWithNonce, MusigNoncesAggregated, MusigSession, MusigSigned, type NoncePair, type ParticipantIndex, }; //# sourceMappingURL=Musig.d.ts.map