import type { BitcoinMerkleProofResponse, UTXO } from "../types/bitcoin.js"; export interface NormalizedUTXO { txid: string; vout: number; amount: bigint; path?: string; rawTx?: Uint8Array; } export type FeeCalculator = (inputCount: number, outputCount: number) => bigint; export interface UtxoSelectionOptions { feeCalculator: FeeCalculator; dustThreshold: bigint; minChange?: bigint | undefined; maxInputs?: number | undefined; sort?: "largest-first" | "smallest-first" | undefined; } export interface UtxoSelectionResult { inputs: NormalizedUTXO[]; totalInput: bigint; fee: bigint; change: bigint; outputs: number; } export interface LinearFeeParameters { base: number; input: number; output: number; rate: number; } export interface UtxoDepositProof { merkle_proof: string[]; tx_block_blockhash: string; tx_bytes: number[]; tx_index: number; amount: bigint; } export interface UtxoWithdrawalPlan { inputs: string[]; outputs: { value: number; script_pubkey: string; }[]; fee: bigint; } export type UtxoPlanOverrides = Partial> & { dustThreshold?: bigint; minChange?: bigint; }; export interface UtxoChainService { buildWithdrawalPlan(utxos: UTXO[], amount: bigint, targetAddress: string, changeAddress: string, feeRate?: number, overrides?: UtxoPlanOverrides): UtxoWithdrawalPlan; getDepositProof(txHash: string, vout: number): Promise; getMerkleProof(txHash: string): Promise; broadcastTransaction(txHex: string): Promise; } export declare function linearFeeCalculator(params: LinearFeeParameters): FeeCalculator; export declare function buildBitcoinMerkleProof(txids: string[], targetTxid: string): { index: number; merkle: string[]; }; export declare const SIMPLE_UTXO_DEFAULTS: UtxoSelectionOptions; export declare function selectUtxos(utxos: NormalizedUTXO[], amount: bigint, options: UtxoSelectionOptions): UtxoSelectionResult; //# sourceMappingURL=index.d.ts.map