import { EthAddress, GrumpkinAddress } from '@polyaztec/barretenberg/address';
import { BridgeCallData } from '@polyaztec/barretenberg/bridge_call_data';
import { DefiSettlementTime, TxSettlementTime } from '@polyaztec/barretenberg/rollup_provider';
import { ClientEthereumBlockchain } from '@polyaztec/blockchain';
import { CoreSdk } from '../core_sdk/index.js';
export interface GetMaxTxValueOptions {
    userSpendingKeyRequired?: boolean;
    excludePendingNotes?: boolean;
    txSettlementTime?: TxSettlementTime;
    feeSignificantFigures?: number;
}
export declare class TxValueCalculator {
    private readonly core;
    private readonly blockchain;
    constructor(core: CoreSdk, blockchain: ClientEthereumBlockchain);
    getMaxWithdrawValue(userId: GrumpkinAddress, assetId: number, { recipient, ...options }?: {
        recipient?: EthAddress;
    } & GetMaxTxValueOptions): Promise<{
        assetId: number;
        value: bigint;
        fee: {
            assetId: number;
            value: bigint;
        };
    }>;
    getMaxTransferValue(userId: GrumpkinAddress, assetId: number, options?: GetMaxTxValueOptions): Promise<{
        assetId: number;
        value: bigint;
        fee: {
            assetId: number;
            value: bigint;
        };
    }>;
    getMaxDefiValue(userId: GrumpkinAddress, bridgeCallData: BridgeCallData, { txSettlementTime, ...options }?: Omit<GetMaxTxValueOptions, 'txSettlementTime'> & {
        txSettlementTime?: DefiSettlementTime;
    }): Promise<{
        assetId: number;
        value: bigint;
        fee: {
            assetId: number;
            value: bigint;
        };
    }>;
    private getMaxTxValueFromTxType;
    private getMaxTxValueFromFee;
}
//# sourceMappingURL=tx_value_calculator.d.ts.map