import { Token, TokenObject, TokenTypes } from './token';
import { TokenAmount, TokenAmountObject, TokenAmountTypes, TokenAmounts, TokenAmountsTypes } from './token-amount';
export type Classifying<T> = T extends TokenAmountsTypes ? TokenAmounts : T extends TokenAmountTypes ? TokenAmount : T extends TokenTypes ? Token : T extends Array<infer U> ? U extends undefined ? any[] : Classifying<U>[] : T extends object ? {
    [K in keyof T]: Classifying<T[K]>;
} : T;
export type Declasifying<T> = T extends TokenAmounts ? TokenAmountObject[] : T extends TokenAmount ? TokenAmountObject : T extends Token ? TokenObject : T extends Array<infer U> ? U extends undefined ? any[] : Declasifying<U>[] : T extends object ? {
    [K in keyof T]: Declasifying<T[K]>;
} : T;
export declare function classifying<T extends Record<string, any> | any[] = any>(fields: T): Classifying<T>;
