import type { MarkOptional } from 'ts-essentials';
import type { ApiToken, TokenListItem } from '../types';
/**
 * @type hex token or account address
 */
export type Address = string;
/**
 * @type hex token address or token symbol
 */
export type AddressOrSymbol = string;
/**
 * @type number in string form
 */
export type PriceString = string;
/**
 * @type transaction hash
 */
export type TxHash = `0x${string}`;
export type LendingToken = 'cToken' | 'iToken' | 'aToken' | 'aToken2' | 'idleToken' | 'Chai' | 'bDAI';
export type TokenType = 'ETH' | 'ERC20' | 'SYNTH';
/**
 * @type Token object returned from API used internally in API
 */
export type Token = {
    address: string;
    decimals: number;
    symbol?: string | undefined;
    name?: string | undefined;
    tags: string[];
    sources: string[];
    categories: string[];
    tokenType: LendingToken | TokenType;
    mainConnector: string;
    connectors: string[];
    network: number;
    img?: string | undefined;
    allowance?: string | undefined;
    balance?: string | undefined;
};
type DefaultedKeys = 'tokenType' | 'mainConnector' | 'connectors' | 'network' | 'sources' | 'categories' | 'tags';
type ConstructTokenInput = MarkOptional<Token, DefaultedKeys>;
export declare const constructToken: <T extends ConstructTokenInput>(tokenProps: T) => Omit<T, DefaultedKeys> & Required<Pick<Token, DefaultedKeys>>;
export declare function constructApiToken(t: TokenListItem): ApiToken;
export {};
//# sourceMappingURL=token.d.ts.map