import { Token } from '../interfaces';
import { ChainId } from '../constants';
export interface CustomToken {
    id: string;
    owner: string;
    address: string;
    balance: string;
    logoURI: string;
    name: string;
    symbol: string;
}
export interface GlobalWalletData {
    [key: string]: {
        value: number;
        wallets: number;
        transactions: number;
    };
}
export interface TokenWalletData {
    name: string;
    chain: string;
    gecko_id: string;
    balance: number;
    wallets: number;
    value: number;
    price: number;
    transactions: number;
}
export interface WalletTotals {
    global: GlobalData;
    result: ConnectedAssetInterface[];
}
export interface WalletInterface {
    active?: boolean;
    tokenBalances?: Token[];
    account?: string;
    chainId?: ChainId | number;
    nativeTokenBalance?: string;
    nativeTokenPrice?: number;
    nativeTokenValue?: number;
    totalValue?: number;
}
export declare type ModalVariations = 'assetSelection' | 'auth' | 'postOffer' | 'postTrade' | 'viewTrade' | 'fillTrade' | 'search' | 'addToken' | 'accountInfo' | 'changeWallet' | 'connectWallet' | 'blockUser' | 'chainSwitch' | 'unblockUsers' | 'notificationVerification' | 'pageInfo' | 'tradesAndAssetsNavigateModal' | 'confirmTrade' | 'assetSelection' | 'confirm' | 'assetInfo';
export interface ModalInterface {
    type: ModalVariations;
    state?: string;
    class?: string;
    data?: any;
    onSelectToken?: any;
    onSelectUser?: any;
    onSelectWallet?: any;
    onBackClick?: any;
    onSelectChain?: any;
}
export interface UserInfoInterface {
    uid?: string;
    email?: string;
    emailVerified?: boolean;
    phoneNumberVerified?: boolean;
    displayName?: string;
    phoneNumber?: string;
    online?: boolean;
    referId?: string | null;
    referredBy?: string | null;
}
export interface UserSettingsInterface {
    emailNotifications: boolean;
    smsNotifications: boolean;
    pushNotifications: boolean;
    messageNotifications: boolean;
    transactionNotifications: boolean;
    tradesNotifications: boolean;
    messagesSound?: boolean;
}
export interface UserProfileInterface {
    uid?: string;
    displayName?: string;
    isPublic?: boolean;
    transactionCount?: number;
    photoURL?: string;
    updatedAt?: number;
    createdAt?: number;
}
export interface MessageRoomInterface {
    id: string;
    createdAt: number;
    hash: string;
    lastMessage: MessagesInterface;
    members: string[];
    updatedAt: number;
}
export interface MessagesInterface {
    id: string;
    createdAt: number;
    updatedAt: number;
    from: string;
    read: boolean;
    text: string;
    offerId?: string;
    fbTransactionId?: string;
}
export interface AuthUserInterface {
    displayName?: string;
    email?: string;
    emailVerified?: boolean;
    phoneNumber?: string;
    photoURL?: string;
    uid?: string;
}
export interface Offers {
    limit: number;
    selectedToken0: null | Token;
    selectedToken1: null | Token;
    selectedChain: number;
    list: Offer[];
}
export interface Trades {
    limit: number;
    selectedToken0: null | Token;
    selectedToken1: null | Token;
    selectedChain: number;
    selectedStatus?: null | SelectOption;
    list: Trade[];
}
export interface Trade {
    acceptedTokens: string[];
    acceptedTokensInfo: Token[];
    chainId: number;
    createdAt?: number;
    fillCount: string;
    id: string;
    platform: string;
    status: string;
    token0: string;
    token0Amount: string;
    token0AmountFilled: string;
    token0Info: Token;
    tokenMembers: string[];
    tokenPrices: string[];
    tradeId: string;
    updatedAt?: number;
    user0: string;
    userMembers: string[];
}
export interface NFTTrades {
    limit: number;
    searchedTradeId: string;
    searchedAsset: string;
    selectedCollection: null | SelectOption;
    selectedStatus?: null | SelectOption;
    list: AssetSwap[];
}
export interface Asset {
    imageURL: string;
    name: string;
    collection: string;
    id: number;
    selected: boolean;
}
export interface AssetSwap {
    chainId: number;
    createdAt?: number;
    fillCount: string;
    id: string;
    platform: string;
    status: string;
    assetsMembers: Asset[];
    user0Assets: Asset[];
    user1Assets: Asset[];
    expiresAt: number;
    condition: string;
    user1: string;
    tradeId: string;
    updatedAt?: number;
    user0: string;
    userMembers: string[];
}
export interface TradeHistory {
    limit: number;
    list: TradeHistoryItem[];
}
interface TradeHistoryItem {
    type: string;
    fbTradeId: string;
}
export interface TradeFills {
    limit: number;
    list: TradeFill[];
}
export interface TradeFill {
    acceptedTokenAmountSent: string;
    acceptedAmounts: string[];
    acceptedToken: string;
    acceptedTokensInfo: Token[];
    fbTradeId: string;
    fillCount: string;
    filler: string;
    members: string[];
    status: string;
    token0: string;
    token0FillAmount: string;
    token0Info: Token;
    amount: string;
    symbol: string;
    tradeOwner: string;
    createdAt?: number;
    updatedAt?: number;
}
export interface ConnectedAssets {
    limit?: number;
    selectedToken0?: null | Token;
    selectedToken1?: null | Token;
    selectedChain: number;
    list?: ConnectedAssetInterface[];
}
export interface AssetInterface {
    address: string;
    chainId: number;
    coinGeckoId?: string;
    coinGeckoName?: string;
    name: string;
    price: number;
    symbol: string;
    logoURI?: string;
    totalBalance: number;
    walletCount: number;
    accounts: AssetAccountInterface[];
}
export interface ConnectedAssetInterface {
    name: string;
    gecko_id: string;
    chain: string;
    balance: number;
    wallets: number;
    value: number;
    price: number;
    transactions: number;
    icon: string;
    symbol: string;
    chain_id: number;
    address: string;
}
export interface AssetAccountInterface {
    id?: string;
    account: string;
    balance: number;
    chainId: number;
    owner: string;
    assetId: string;
    walletId: string;
}
export interface Offer {
    id: string;
    account: string;
    buyToken?: null | Token;
    buyAmount?: number;
    sellToken?: null | Token;
    sellAmount?: number;
    owner: string;
    displayName?: string;
    photoURL?: string;
    updatedAt?: number;
    createdAt?: number;
    tokenMembers?: string[];
    tokensHash?: string;
    duration?: string | number;
    chainId: number;
}
export interface GlobalData {
    [key: string]: {
        wallets?: number;
        value?: number;
        transactions?: number;
        totalTrades?: number;
    };
}
export interface Transaction {
    fbTransactionId?: string;
    transactionType?: number;
    createdAt?: number;
    expiresAt?: number;
    user0?: string;
    token0?: string;
    token0Amount?: number;
    user1?: string;
    token1?: string;
    token1Amount?: number;
    tokenMembers?: string[];
    tokensHash?: string;
    userMembers?: string[];
    usersHash?: string;
    status?: string;
    createInfo?: {
        blockNumber: number;
        transactionHash: string;
    };
    chainId?: number;
    platform?: string;
    hasDeposited?: string[];
    hasWithdrawn?: string[];
    associatedOfferId?: string;
    transactionId?: string;
}
export interface SelectOption {
    value: string;
    label: string;
}
export interface RecentActivityItem {
    createdAt: number;
    from: string;
    link: string;
    type: string;
    updatedAt: number;
    status?: string;
}
export interface BlockedUsers {
    blockedUsers: string[];
}
export interface Transactions {
    limit: number;
    selectedStatus: null | SelectOption;
    selectedChain: null | number;
    list: Transaction[];
}
export interface TransactionsDraft {
    limit: number;
    selectedChain: null | number;
    list: Transaction[];
}
export interface WithdrawalTransactions {
    limit: number;
    showWithdrawalOnly: boolean;
    list: Transaction[];
}
export interface NotificationVerification {
    attempts: number;
    code: number;
    lastAttempt: number;
    type: string;
    user: string;
}
export interface CoinGeckoCoin {
    id: string;
    name: string;
    platforms: {
        [key: string]: string;
    };
    symbol: string;
}
export interface ConnectedAssetAccount {
    id?: number;
    balance: string;
    price: string;
    account: string;
    value: string;
}
export interface ConnectedAssetAccounts {
    [key: string]: {
        list: ConnectedAssetAccount[];
        limit: number;
    };
}
export {};
