/**
 * Lighter-specific withdrawal helpers, hooks, and display components.
 *
 * Extracted from WithdrawalContent.tsx to keep Lighter-specific logic isolated.
 */
import type { LighterAccountIndex } from '@funkit/api-base';
import React from 'react';
import type { CustomWithdrawalConfig, WalletWithdrawalConfig } from '../../providers/FunkitCheckoutContext';
import type { SourceTokenOption } from './WithdrawAmountInput';
/** Free (withdrawable) balance for a single Lighter asset: balance - locked. */
export declare function freeBalance(balance: string, lockedBalance: string): string;
/**
 * Fetches all asset balances for a Lighter account. Returns:
 *
 * - `balances` — `Record<SYMBOL, freeBalance>` (uppercased symbol keys)
 * - `assets` — raw asset list from the API (for building source-token options)
 */
export declare function useLighterWithdrawalBalances({ accountIndex, }: {
    accountIndex: LighterAccountIndex | undefined;
}): {
    balances: Record<string, string>;
    assets: import("../../utils/customer").LighterAsset[];
    isLoading: boolean;
};
type FunkitWithdrawalConfig = WalletWithdrawalConfig | CustomWithdrawalConfig;
/**
 * Resolves the Lighter `asset_id` for a selected source token symbol. Returns
 * `undefined` when the token isn't in the fetched assets list (e.g. timing
 * race before balances load, or an invalid selection) — callers should treat
 * that as "not ready to submit" rather than falling back to `0`, which would
 * silently target the wrong Lighter asset.
 */
export declare function resolveLighterAssetIndex(lighterAssets: {
    symbol: string;
    asset_id: number;
}[], selectedSourceToken: string): number | undefined;
/**
 * Builds the source-token options list for the Lighter compound input dropdown.
 *
 * - Fast path: only USDC (Perps).
 * - Secure path: USDC (from total_asset_value) + every asset on the account.
 */
export declare function buildLighterSourceTokenOptions(config: FunkitWithdrawalConfig, lighterAssets: {
    symbol: string;
}[]): SourceTokenOption[];
/**
 * Detects Lighter Secure withdrawal (mainnet source chain), auto-fills the
 * recipient address with the connected wallet, and fetches the Lighter account
 * so per-asset balances are available to the withdrawal form.
 */
export declare function useLighterWithdrawal(config: FunkitWithdrawalConfig, setRecipientAddress: (addr: string) => void): {
    isLighterSecure: boolean;
    connectedAddress: `0x${string}` | undefined;
    lighterBalances: Record<string, string>;
    lighterAssets: import("../../utils/customer").LighterAsset[];
};
/**
 * Resolves the source-token dropdown options for a Lighter customer.
 * Returns `undefined` for non-Lighter customers (no dropdown needed).
 */
export declare function useLighterSourceTokenOptions(config: FunkitWithdrawalConfig, apiKey: string, lighterAssets: {
    symbol: string;
}[]): SourceTokenOption[] | undefined;
/**
 * Lighter Secure: read-only recipient address display.
 * The address is locked to the connected wallet.
 */
export declare function LighterSecureAddressDisplay({ address }: {
    address: string;
}): React.JSX.Element;
/**
 * Lighter Secure: display-only receive token + chain. Both are locked —
 * token matches the source asset, chain is always Ethereum mainnet.
 */
export declare function LighterSecureReceiveDisplay({ sourceTokenSymbol, }: {
    sourceTokenSymbol: string;
}): React.JSX.Element;
/**
 * Lighter Secure: receive amount value (1:1 — same token, no swap).
 */
export declare function LighterSecureReceiveAmountValue({ amount, tokenSymbol, }: {
    amount: string;
    tokenSymbol: string;
}): React.JSX.Element;
export declare function LighterSecureWithdrawalSuccess({ onClose, onNewWithdrawal, amount, tokenSymbol, txHash, }: {
    onClose: () => void;
    onNewWithdrawal: () => void;
    amount: string;
    tokenSymbol: string;
    txHash: string;
}): React.JSX.Element;
export {};
