import type { CustomWithdrawalConfig, FunkitWithdrawalConfig, MultiMethodWithdrawalConfig, WalletWithdrawalConfig } from '../providers/FunkitCheckoutContext';
/**
 * Type guard to check if withdrawal config uses wallet-based flow
 */
export declare function isWalletWithdrawalConfig(config: FunkitWithdrawalConfig): config is WalletWithdrawalConfig;
/**
 * Type guard to check if withdrawal config uses custom callback flow
 */
export declare function isCustomWithdrawalConfig(config: FunkitWithdrawalConfig): config is CustomWithdrawalConfig;
/**
 * Type guard to check if withdrawal config wraps multiple methods the user
 * must pick between (e.g. "Fast" vs "Secure").
 */
export declare function isMultiMethodWithdrawalConfig(config: FunkitWithdrawalConfig): config is MultiMethodWithdrawalConfig;
/**
 * Converts a human-readable token amount to base units using string arithmetic
 * to avoid floating-point precision loss.
 *
 * The precision is preserved because the original user-input string is passed
 * directly — it is never coerced to a JS Number/float first.
 *
 * e.g. passing the already-truncated float string '8.967660226710157' would
 *      still produce 8967660226710157000n (lossy).
 *      But keeping the original full-precision string '8.967660226710157512'
 *      produces 8967660226710157512n (exact).
 */
export declare function toWithdrawalAmountBaseUnit(amount: string, decimals: number): bigint;
