import { INetworkRepository } from '../../../domain/repositories/network-repository';
import { ITokenRepository } from '../../../domain/repositories/token-repository';
import { CoinMarketCapClient } from '../../../infrastructure/external/coinmarketcap-client';
import { TransactionRateInput } from '../../dto/transaction.dto';
export interface AmountRate {
    readonly raw: string | null;
    readonly formatted: string | null;
    readonly tokenSymbol: string | null;
    readonly tokenDecimals: number | null;
    readonly usd: number | null;
}
export interface SwapRate {
    readonly amountIn: AmountRate;
    readonly amountOut: AmountRate;
    readonly minimumSwapValueUsd: number;
    readonly minimumSwapValueFormatted: string | null;
    readonly meetsMinimum: boolean | null;
}
export interface TransactionRateOutput {
    readonly networkId: string;
    readonly method: string;
    readonly fee: AmountRate;
    readonly swap: SwapRate | null;
}
export declare class TransactionRateUseCase {
    private readonly networkRepository;
    private readonly tokenRepository;
    private readonly coinMarketCapClient;
    constructor(networkRepository: INetworkRepository, tokenRepository: ITokenRepository, coinMarketCapClient: CoinMarketCapClient);
    execute(input: TransactionRateInput): Promise<TransactionRateOutput>;
    private buildFee;
    private buildSwap;
    private resolveTokenIn;
    private resolveTokenOut;
    private findTokenBySymbolOrCode;
    private resolveAmountIn;
    private resolveAmountOut;
    private buildAmount;
    private estimateUsd;
}
//# sourceMappingURL=transaction-rate.use-case.d.ts.map