import { WrapPsbt as WasmPsbt, type WasmBIP32, type WasmECPair, type WrapDescriptor, type PsbtInputData, type PsbtOutputData, type PsbtOutputDataWithAddress } from "../wasm/wasm_utxo.js";
import type { IPsbt } from "../psbt.js";
import type { CoinName } from "../coinName.js";
import type { BIP32 } from "../bip32.js";
import { Transaction } from "../transaction.js";
export type SignPsbtResult = {
    [inputIndex: number]: [pubkey: string][];
};
export declare class Psbt implements IPsbt {
    private _wasm;
    constructor(versionOrWasm?: number | WasmPsbt, lockTime?: number);
    /** @internal Access the underlying WASM instance */
    get wasm(): WasmPsbt;
    static create(version?: number, lockTime?: number): Psbt;
    static deserialize(bytes: Uint8Array): Psbt;
    serialize(): Uint8Array;
    clone(): Psbt;
    inputCount(): number;
    outputCount(): number;
    version(): number;
    lockTime(): number;
    unsignedTxId(): string;
    getInputs(): PsbtInputData[];
    getOutputs(): PsbtOutputData[];
    getGlobalXpubs(): BIP32[];
    getOutputsWithAddress(coin: CoinName): PsbtOutputDataWithAddress[];
    addInputAtIndex(index: number, txid: string, vout: number, value: bigint, script: Uint8Array, sequence?: number): number;
    addInput(txid: string, vout: number, value: bigint, script: Uint8Array, sequence?: number): number;
    addOutputAtIndex(index: number, script: Uint8Array, value: bigint): number;
    addOutput(script: Uint8Array, value: bigint): number;
    removeInput(index: number): void;
    removeOutput(index: number): void;
    updateInputWithDescriptor(inputIndex: number, descriptor: WrapDescriptor): void;
    updateOutputWithDescriptor(outputIndex: number, descriptor: WrapDescriptor): void;
    signWithXprv(xprv: string): SignPsbtResult;
    signWithPrv(prv: Uint8Array): SignPsbtResult;
    signAll(key: WasmBIP32): SignPsbtResult;
    signAllWithEcpair(key: WasmECPair): SignPsbtResult;
    getPartialSignatures(inputIndex: number): Array<{
        pubkey: Uint8Array;
        signature: Uint8Array;
    }>;
    hasPartialSignatures(inputIndex: number): boolean;
    validateSignatureAtInput(inputIndex: number, pubkey: Uint8Array): boolean;
    verifySignatureWithKey(inputIndex: number, key: WasmBIP32): boolean;
    getUnsignedTx(): Uint8Array;
    finalize(): void;
    extractTransaction(): Transaction;
}
