import { Transaction } from '@btc-vision/bitcoin';
import { UTXO } from '../utxo/interfaces/IUTXO.js';
import { ICustomTransactionParameters } from './builders/CustomScriptTransaction.js';
import { FundingTransaction } from './builders/FundingTransaction.js';
import { TransactionBuilder } from './builders/TransactionBuilder.js';
import { TransactionType } from './enums/TransactionType.js';
import { IDeploymentParameters, IFundingTransactionParameters, IInteractionParameters } from './interfaces/ITransactionParameters.js';
import { InteractionParametersWithoutSigner } from './browser/Web3Provider.js';
import { RawChallenge } from '../epoch/interfaces/IChallengeSolution.js';
export interface DeploymentResult {
    readonly transaction: [string, string];
    readonly contractAddress: string;
    readonly contractPubKey: string;
    readonly challenge: RawChallenge;
    readonly utxos: UTXO[];
}
export interface FundingTransactionResponse {
    readonly tx: Transaction;
    readonly original: FundingTransaction;
    readonly estimatedFees: bigint;
    readonly nextUTXOs: UTXO[];
}
export interface BitcoinTransferBase {
    readonly tx: string;
    readonly estimatedFees: bigint;
    readonly nextUTXOs: UTXO[];
}
export interface InteractionResponse {
    readonly fundingTransaction: string | null;
    readonly interactionTransaction: string;
    readonly estimatedFees: bigint;
    readonly nextUTXOs: UTXO[];
    readonly challenge: RawChallenge;
}
export interface BitcoinTransferResponse extends BitcoinTransferBase {
    readonly original: FundingTransaction;
}
export declare class TransactionFactory {
    createCustomScriptTransaction(interactionParameters: ICustomTransactionParameters): Promise<[string, string, UTXO[]]>;
    signInteraction(interactionParameters: IInteractionParameters | InteractionParametersWithoutSigner): Promise<InteractionResponse>;
    signDeployment(deploymentParameters: IDeploymentParameters): Promise<DeploymentResult>;
    createBTCTransfer(parameters: IFundingTransactionParameters): Promise<BitcoinTransferResponse>;
    getAllNewUTXOs(original: TransactionBuilder<TransactionType>, tx: Transaction, to: string): UTXO[];
    private parseOptionalInputs;
    private detectInteractionOPWallet;
    private detectDeploymentOPWallet;
    private createFundTransaction;
    private hasP2WDAInputs;
    private writePSBTHeader;
    private signP2WDAInteraction;
    private getPriorityFee;
    private getUTXOAsTransaction;
}
