@mozaic-fi/intent-swapper-sdk-common
Version:
Intent Swapper Common SDK
10 lines (9 loc) • 872 B
TypeScript
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>;