import { TokenBalanceResults } from '../types/index.js';
import { ShogunBalancesApiClient } from '../clients/shogun-balances-api-client.js';
type SwapParams = {
    weiAmount: bigint;
    srcToken: string;
    destToken: string;
    srcNetwork: number;
    destNetwork: number;
};
export declare class GasStationCalculator {
    private errorBuilder;
    private balancesClient;
    constructor(errorBuilder: (network: string, tokenSymbol?: string, minAmountValue?: number, minUsdValue?: number) => string, balancesClient: ShogunBalancesApiClient);
    protected getNativeDestinationNetworkPrice(network: number, tokens: TokenBalanceResults[]): Promise<number>;
    protected getMinNativeBalance(network: number): bigint | undefined;
    protected calculateRefuelFeePercent(refuelAmountUsd: number, amountInUsd: number): number;
    protected calculateRefuelAmount(srcNetwork: number, destNetwork: number, tokenInput: TokenBalanceResults, tokens: TokenBalanceResults[], destinationNativeBalance: bigint, swapParams: SwapParams, systemFeePercent: number, isEoaAccount: boolean, externalServiceTxCostUsd: number): Promise<{
        additionalAffiliateFeePercent: number;
        affiliateFeeTotalValidation: {
            isValid: boolean;
            error?: string;
            totalFeePercent?: number;
        };
        refuelAmount: bigint;
        gasRefuelWarning?: string;
    }>;
    protected isCrossChainRefuel(srcNetwork: number, destNetwork: number): boolean;
    protected findTokenIn(tokens: TokenBalanceResults[], srcTokenAddress: string, srcNetwork: number, walletAddress: string): TokenBalanceResults | undefined;
    ignoreGasRefuel(tokenOut: TokenBalanceResults | undefined, walletAddress: string, network: number): Promise<boolean>;
    protected isTokenOutNative(address: string, destinationNetwork: number): boolean;
    calculateGasRefuelAmount(walletAddress: string, destinationWalletAddress: string | undefined, balances: TokenBalanceResults[], swapParams: SwapParams, systemFeePercent: number, isEoaAccount: boolean, externalServiceTxCostUsd: number, findTokenFallback?: (tokens: TokenBalanceResults[], srcTokenAddress: string, srcNetwork: number, walletAddress: string) => TokenBalanceResults): Promise<{
        success: boolean;
        refuelAmount?: bigint;
        tokenIn?: TokenBalanceResults;
        destinationWalletAddress?: string;
        additionalAffiliateFeePercent: number;
        gasRefuelWarning?: string;
        affiliateFeeTotalValidation: {
            isValid: boolean;
            error?: string;
            totalFeePercent?: number;
        };
    }>;
}
export declare class GasStationService extends GasStationCalculator {
    private apiKey;
    private apiUrl;
    private errorHandler;
    constructor(apiKey: string, apiUrl: string, errorHandler: (error: Error | string) => void, errorBuilder: (network: string, tokenSymbol?: string, minAmountValue?: number, minUsdValue?: number) => string, balancesClient: ShogunBalancesApiClient);
    protected makeGasStationApiRequest(url: string, payload: Record<string, string | number>, headers: Record<string, string>): Promise<boolean>;
    /**
     * Sends a request to the Gas Station API to refuel a wallet with native tokens
     *
     * Example curl command to test locally:
     * ```
      curl -X POST http://localhost:3000 \
        -H "Content-Type: application/json" \
        -H "x-api-key: your_api_key" \
        -d '{
          "chainId": 7565164,
          "amount": "10000",
          "recipient": "HxQpBRpH7sRHpidTWZ55xAsMxddhjHBE8BRkkj2ewHa1"
        }'
     * ```
     */
    sendGasStationRequest(amount: bigint, network: number, walletAddress: string): Promise<{
        success: boolean;
        error?: string;
    }>;
}
export {};
//# sourceMappingURL=GasStationService.d.ts.map