import * as musig2 from "../musig2";
import { TxTree } from "./vtxoTree";
export declare const ErrMissingVtxoTree: Error;
export declare const ErrMissingAggregateKey: Error;
export type TreeNonces = (Pick<musig2.Nonces, "pubNonce"> | null)[][];
export type TreePartialSigs = (musig2.PartialSig | null)[][];
export interface SignerSession {
    getPublicKey(): Uint8Array;
    init(tree: TxTree, scriptRoot: Uint8Array, rootInputAmount: bigint): void;
    getNonces(): TreeNonces;
    setAggregatedNonces(nonces: TreeNonces): void;
    sign(): TreePartialSigs;
}
export declare class TreeSignerSession implements SignerSession {
    private secretKey;
    static NOT_INITIALIZED: Error;
    private myNonces;
    private aggregateNonces;
    private tree;
    private scriptRoot;
    private rootSharedOutputAmount;
    constructor(secretKey: Uint8Array);
    static random(): TreeSignerSession;
    init(tree: TxTree, scriptRoot: Uint8Array, rootInputAmount: bigint): void;
    getPublicKey(): Uint8Array;
    getNonces(): TreeNonces;
    setAggregatedNonces(nonces: TreeNonces): void;
    sign(): TreePartialSigs;
    private generateNonces;
    private signPartial;
}
export declare function validateTreeSigs(finalAggregatedKey: Uint8Array, sharedOutputAmount: bigint, vtxoTree: TxTree): Promise<void>;
