import { Network, Psbt, PsbtInputExtended, PsbtOutputExtended, Signer, Transaction } from '@btc-vision/bitcoin';
import { UpdateInput } from '../interfaces/Tap.js';
import { TransactionType } from '../enums/TransactionType.js';
import { IFundingTransactionParameters, ITransactionParameters } from '../interfaces/ITransactionParameters.js';
import { UTXO } from '../../utxo/interfaces/IUTXO.js';
import { ECPairInterface } from 'ecpair';
import { TweakedTransaction } from '../shared/TweakedTransaction.js';
import { UnisatSigner } from '../browser/extensions/UnisatSigner.js';
export declare const MINIMUM_AMOUNT_REWARD: bigint;
export declare const MINIMUM_AMOUNT_CA: bigint;
export declare const ANCHOR_SCRIPT: Buffer<ArrayBuffer>;
export declare abstract class TransactionBuilder<T extends TransactionType> extends TweakedTransaction {
    static readonly LOCK_LEAF_SCRIPT: Buffer;
    static readonly MINIMUM_DUST: bigint;
    abstract readonly type: T;
    readonly logColor: string;
    overflowFees: bigint;
    transactionFee: bigint;
    estimatedFees: bigint;
    optionalOutputs: PsbtOutputExtended[] | undefined;
    protected transaction: Psbt;
    protected readonly updateInputs: UpdateInput[];
    protected readonly outputs: PsbtOutputExtended[];
    protected feeOutput: PsbtOutputExtended | null;
    protected totalInputAmount: bigint;
    protected readonly signer: Signer | ECPairInterface | UnisatSigner;
    protected readonly network: Network;
    protected readonly feeRate: number;
    protected priorityFee: bigint;
    protected gasSatFee: bigint;
    protected utxos: UTXO[];
    protected optionalInputs: UTXO[];
    protected to: string | undefined;
    protected from: string;
    protected _maximumFeeRate: number;
    protected isPubKeyDestination: boolean;
    protected anchor: boolean;
    protected note?: Buffer;
    protected constructor(parameters: ITransactionParameters);
    static getFrom(from: string | undefined, keypair: ECPairInterface | Signer, network: Network): string;
    static witnessStackToScriptWitness(witness: Buffer[]): Buffer;
    addOPReturn(buffer: Buffer): void;
    addAnchor(): void;
    getFundingTransactionParameters(): Promise<IFundingTransactionParameters>;
    setDestinationAddress(address: string): void;
    setMaximumFeeRate(feeRate: number): void;
    signTransaction(): Promise<Transaction>;
    generateTransactionMinimalSignatures(checkPartialSigs?: boolean): Promise<void>;
    signPSBT(): Promise<Psbt>;
    addInput(input: PsbtInputExtended): void;
    addOutput(output: PsbtOutputExtended): void;
    toAddress(): string | undefined;
    address(): string | undefined;
    estimateTransactionFees(): Promise<bigint>;
    rebuildFromBase64(base64: string): Promise<Psbt>;
    setPSBT(psbt: Psbt): void;
    getInputs(): PsbtInputExtended[];
    getOutputs(): PsbtOutputExtended[];
    getOptionalOutputValue(): bigint;
    protected addRefundOutput(amountSpent: bigint): Promise<void>;
    protected addValueToToOutput(value: number | bigint): void;
    protected getTransactionOPNetFee(): bigint;
    protected calculateTotalUTXOAmount(): bigint;
    protected calculateTotalVOutAmount(): bigint;
    protected addOptionalOutputsAndGetAmount(): bigint;
    protected addInputsFromUTXO(): void;
    protected internalInit(): void;
    protected abstract buildTransaction(): Promise<void>;
    protected updateInput(input: UpdateInput): void;
    protected getWitness(): Buffer;
    protected getTapOutput(): Buffer;
    protected verifyUTXOValidity(): void;
    protected setFeeOutput(output: PsbtOutputExtended): Promise<void>;
    protected internalBuildTransaction(transaction: Psbt, checkPartialSigs?: boolean): Promise<boolean>;
}
