import { BlockchainNetwork, AssetSymbol, EntityId, Amount, Tag, IsoDatetime } from '../Foundations';
export declare type Wallet = {
    /**
     * Multiple tags can be attached to an entity to categorise or otherwise mark it. For example tags could indicate risk (High, Medium, Low), departments (Trading, Sales, IT), purpose (Treasury, Hot, Deposits), and jurisdictions (US, EU, DE).
     *
     * Multiple tags can be attached to same entity.
     */
    tags?: Tag[];
    /**
     * Field can be used if entity is created in external (customer’s) system first. This way the external id can be attached to identify entity from Dfns’s data store.
     */
    externalId?: string;
    /**
     * Indicates id of the Organisation, such as usually a customer, or sub-devision, sub-tenant, and others.
     */
    orgId: EntityId;
    id: EntityId;
    status: WalletStatus;
    network: BlockchainNetwork;
    address?: string;
    publicKeyId: EntityId;
    assets: AssetSymbol[];
    nfts?: string[];
    name?: string;
    dateCreated: IsoDatetime;
    dateUpdated: IsoDatetime;
};
export declare type WalletAssetBalance = {
    contract: string;
    name: string;
    symbol: string;
    decimal: Amount;
    minUnitBalance: string;
    maxUnitBalance: string;
};
export declare type WalletAssets = {
    walletId: EntityId;
    balances: Record<string, unknown>;
};
export declare type WalletNftBalance = {
    contract: string;
    name: string;
    symbol: string;
    tokenIds?: string[];
    count: number;
};
export declare type WalletNfts = {
    walletId: EntityId;
    balances: Record<string, unknown>;
};
export declare type NonFungibleToken = {
    walletId: string;
    contract: string;
    name: string;
    symbol: string;
    tokenId: string;
    tokenUri: string;
    metadata?: Record<string, unknown>;
};
export declare type CreateWalletInput = {
    network: BlockchainNetwork;
    externalId?: string;
    tags?: Tag[];
    name?: string;
};
export declare type AddWalletAssetsInput = {
    assets: AssetSymbol[];
};
export declare type AddWalletNftsInput = {
    nfts: string[];
};
export declare enum WalletStatus {
    Creating = "Creating",
    Enabled = "Enabled",
    Failed = "Failed"
}
