import { AggregatorProvider } from '../config/provider';
import { RouterData } from '@cetusprotocol/aggregator-sdk';
import { ReactNode } from 'react';
export type Token = {
    coin_type: string;
    decimals: number;
    description: string;
    name: string;
    symbol: string;
    logo_url?: string;
    id?: string;
    is_trusted?: boolean;
    labels?: any;
    coingecko_id?: string;
    pyth_id?: string;
    birdeyeid?: string;
    project_url?: string;
    coin_priority?: any;
    suggested_priority?: null | string[];
    extensions?: Record<string, any>;
};
export type TokenBalance = {
    coinType: string;
    coinObjectCount: number;
    totalBalance: string;
    lockedBalance: Record<string, string>;
    displayBalance?: string;
    totalBalanceFormat?: string;
};
export interface TokenPrice {
    base_symbol: string;
    quote_symbol: string;
    price: string;
    market: string;
}
export type TokenActionType = "select_token" | "collect_token" | "un_collect" | "delete_import";
export type SwapRouterData = {
    routerData?: RouterData;
    fromAmountUi?: string;
    toAmountUi?: string;
    byAmountIn: boolean;
    isDegrade: boolean;
    uuid: string;
    errorCode?: AggregatorServerErrorCode;
};
export type TransactionStatusType = "confirmation" | "submitted" | "success" | "rejected";
export interface BalanceChanges {
    coinType: string;
    amount: string;
}
export type CommonTypeInfo = {
    toastDescriptionContent?: string | (() => ReactNode);
    toastTitleText?: string;
    modalDescriptionText?: string;
    modalTitleText?: string;
    iconUrl?: string;
    modalConfirmButtonText?: string[];
    modalConfirmButtonClick?: (index: number) => void;
};
export type ToastType = {
    id: number;
    status?: TransactionStatusType;
    tx?: string;
    buildShowInfo?: (status: TransactionStatusType, balanceChanges?: Record<string, BalanceChanges>) => CommonTypeInfo;
};
export type TransactionOption = {
    useDevInspect?: boolean;
    useMev?: boolean;
    txAction?: "signTransactionBlock" | "signAndExecuteTransactionBlock";
};
export type SwapRouterFormat = {
    router_summery: string;
    providers: AggregatorProvider[];
    routers: {
        percentage: string;
        paths: {
            from_type: string;
            to_type: string;
            fee_rate: string;
            pool_address: string;
            provider: AggregatorProvider;
        }[];
    }[];
};
export declare enum AggregatorServerErrorCode {
    CalculateError = 10000,
    NumberTooLarge = 10001,
    NoRouter = 10002,
    InsufficientLiquidity = 10003,
    HoneyPot = 10004
}
