import { Utxo, Recipient } from '../types';
import { ChronikClient } from 'chronik-client';
interface UtxoSelection {
    selectedUtxos: Utxo[];
    totalInputValue: number;
    estimatedFee: number;
    changeAmount: number;
    utxoCount: number;
}
interface SlpUtxoOptions {
    dustLimit?: number;
    feeStrategy?: 'all' | 'minimal' | 'largest_first';
    tokenStrategy?: 'largest' | 'minimal' | 'all';
}
interface SlpUtxoSelection {
    selectedTokenUtxos: Utxo[];
    selectedFeeUtxos: Utxo[];
    totalFeeInputValue: number;
    estimatedFee: number;
    feeChangeAmount: number;
    tokenChange: bigint;
    finalSendAmounts: bigint[];
    totalSendTokens: bigint;
    totalTokens: bigint;
    dustLimit: number;
    summary: {
        tokenUtxoCount: number;
        feeUtxoCount: number;
        recipientCount: number;
        hasTokenChange: boolean;
        totalOutputs: number;
    };
}
interface TokenBalance {
    tokenId: string;
    totalTokens: bigint;
    utxoCount: number;
    utxos: Utxo[];
}
interface AddressBalance {
    totalBalance: number;
    utxoCount: number;
    slpUtxoCount: number;
    nonSlpUtxos: Utxo[];
    slpUtxos: Utxo[];
    tokenBalances: TokenBalance[];
}
type UtxoStrategy = 'all' | 'minimal' | 'largest_first';
/**
 * Get UTXOs for a given address
 * @param address - eCash address
 * @param chronikClient - Optional chronik client instance (uses default if not provided)
 * @returns Array of UTXOs
 */
declare function getUtxos(address: string, chronikClient?: ChronikClient): Promise<Utxo[]>;
/**
 * 选择合适的UTXOs用于普通XEC交易
 * @param utxos - 所有可用的UTXOs
 * @param sendAmount - 要发送的金额
 * @param strategy - 选择策略
 * @returns 包含选择的UTXOs和相关信息
 */
declare function selectUtxos(utxos: Utxo[], sendAmount: number, strategy?: UtxoStrategy): UtxoSelection;
/**
 * 为SLP交易选择UTXOs
 * @param utxos - 所有可用的UTXOs
 * @param tokenId - SLP代币ID
 * @param recipients - 接收方数组，包含address和amount
 * @param tokenDecimals - 代币小数位数
 * @param options - 选项
 * @returns 包含选择的UTXOs和相关信息
 */
declare function selectSlpUtxos(utxos: Utxo[], tokenId: string, recipients: Recipient[], tokenDecimals: number, options?: SlpUtxoOptions): SlpUtxoSelection;
/**
 * 获取地址余额信息
 * @param address - eCash地址
 * @param chronikClient - Optional chronik client instance (uses default if not provided)
 * @returns 余额信息
 */
declare function getAddressBalance(address: string, chronikClient?: ChronikClient): Promise<AddressBalance>;
export { getUtxos, selectUtxos, selectSlpUtxos, getAddressBalance };
//# sourceMappingURL=utxo-utils.d.ts.map