0.9.101 • Published 10 months ago

@laverna_ritchie5/xwallet v0.9.101

Weekly downloads
-
License
ISC
Repository
-
Last release
10 months ago

wallet-lib

1、概览

1.1 概念说明

1.2 错误码定义

1.3 集成说明

npm install @laverna_ritchie5/xwallet
import * as sdk from "../src/index"
//配置
export const DefaultWalletConfig: WalletConfig = {
    apiOptions: {
        url: "http://47.242.165.128:8157",
        cnhtApiHost: "http://localhost:9020/1/api/v1",
        version: "v1.0.0",
        profile: "dev",
        getUserInfo: () => { im_id: 0 },
        getToken: () => "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBfa2V5IjoiIiwiZGV2aWNlX2lkIjoiIiwiZXhwIjoxNjM2OTU3ODMwLCJpYXQiOjE2MzYwOTM4MzAsImltX2lkIjoxMDExOSwiaXNzIjoiMSIsInBsYXRmb3JtIjoiYW5kcm9pZCIsInNlc3Npb24iOjE2MzYwOTM4MzAxNzd9.x052PhX9F8Cb2C7v0fy82b5xNe_VdxH4RESSKxhzA_A"
    },
    enableAxiosLogger: false,//是否开启Axios日志
    environment: "development",//development staging production
    seqUrl: "",//测试日志地址
    enrichFunction: () => { return { imId: 0 } },//日志扩展参数
    getLanguage: () => { return "en" },//语言
    getCurrency: async () => {//返回币种
        return {
            name: '人民币',
            symbol: 'CN¥',
            symbolNative: '¥',
            decimalDigits: 2,
            rounding: 0,
            code: 'CNY',
            namePlural: 'Chinese yuan',
        }
    },
    getStorage: async (key) => { console.log("getStorage", key); return undefined },//查询存储
    setStorage: async (key, data) => { console.log("setStorage", key, data) },//设置存储
}

export const DefaultWalletStorage: WalletStorage = {
    db: new Map<string, Wallet>(),
    add: async (wallet) => { DefaultWalletStorage.db!.set(wallet.id, wallet); return wallet },
    update: async (walletId, params, desc) => {
        let wallet = DefaultWalletStorage.db!.get(walletId)
        DefaultWalletStorage.db!.set(walletId, { ...wallet, ...params } as Wallet);
        console.log(desc);
    },
    remove: async (walletId: string) => { DefaultWalletStorage.db!.delete(walletId) },
    removeAll: async () => { DefaultWalletStorage.db!.clear() },
    getList: async () => { return Array.from(DefaultWalletStorage.db!.values()) },
    get: async (walletId: string) => { return DefaultWalletStorage.db!.get(walletId)! },
};

export const DefaulTagStorage: TagStorage = {
    db: new Map<string, Tag>(),
    add: async (tag) => { DefaulTagStorage.db!.set(tag.id, tag); return tag },
    update: async (tagId, params, desc) => {
        let tag = DefaulTagStorage.db!.get(tagId)
        DefaulTagStorage.db!.set(tagId, { ...tag, ...params } as Tag);
        console.log(desc);
    },
    remove: async (tagId: string) => { DefaulTagStorage.db!.delete(tagId) },
    removeAll: async () => { DefaulTagStorage.db!.clear() },
    getList: async () => { return Array.from(DefaulTagStorage.db!.values()) },
    get: async (tagId: string) => { return DefaulTagStorage.db!.get(tagId)! },
};

export const DefaultPendingTxStorage: PendingTxStorage = {
    db: new Map<string, PengdingTx>(),
    add: async (pendingTx) => { DefaultPendingTxStorage.db!.set(pendingTx.transactionHash, pendingTx) },
    remove: async (txHash: string) => { DefaultPendingTxStorage.db!.delete(txHash) },
    removeAll: async () => { DefaultPendingTxStorage.db!.clear() },
    getList: async () => { return Array.from(DefaultPendingTxStorage.db!.values()) },
    get: async (txHash: string) => { return DefaultPendingTxStorage.db!.get(txHash)! },
};

export const DefaultEventBus: Map<string, Function> = new Map<string, Function>([
    ["assetCurrencyValueChange", (wallet, eto) => { console.log("assetCurrencyValueChange", wallet.id, eto) }],
    ["txStatusChange", (tx, eto) => { console.log("txStatusChange", tx.transactionHash, eto) }]
]);

/**
 * 初始化SDK
 * @param config  基本配置
 * @param storage 钱包存储
 * @param txStorage 待刷新交易存储
 * @param bus 事件
 */
export declare function initialize(config: WalletConfig, storage: WalletStorage, gStorage: TagStorage, txStorage: PendingTxStorage, bus: Map<string, Function>): void;

/**
 * 初始化Token列表
 */
export declare function initTokenList(): Promise<void>;

2、API Reference

助记词

/**
 * 生成助记词
 *
 * @param {string} size The new phrase size.
 * @returns {string} The generated phrase based on the size.
 */
export declare const generatePhrase: (size?: number) => string
/**
 * 检查助记词
 *
 * @param {string} phrase
 * @returns {boolean} `true` or `false`
 */
export declare const validatePhrase: (phrase: string) => boolean
/**
 * Get the seed from the given phrase.
 *
 * @param {string} phrase
 * @returns {Buffer} The seed from the given phrase.
 *
 * @throws {"Invalid BIP39 phrase"} Thrown if phrase is an invalid one.
 */
export declare const getSeed: (phrase: string) => Buffer
/**
 * Get the Keystore interface from the given phrase and password.
 *
 * @param {string} phrase
 * @param {string} password
 * @returns {Keystore} The keystore interface generated from the given phrase and password.
 *
 * @throws {"Invalid BIP39 phrase"} Thrown if phrase is an invalid one.
 */
export declare const encryptToKeyStore: (phrase: string, password: string) => Promise<Keystore>
/**
 * Get the phrase from the keystore
 *
 * @param {Keystore} keystore
 * @param {string} password
 * @returns {Keystore} The phrase from the keystore.
 *
 * @throws {"Invalid password"} Thrown if password is an incorrect one.
 */
export declare const decryptFromKeystore: (keystore: Keystore, password: string) => Promise<string>

WalletService

/**
 * 获取tag列表
 * @returns
 */
export declare function getTagList(): Promise<Tag[]>
/**
 * 获取tag
 * @returns
 */
export declare function getTag(id: string): Promise<Tag>
/**
 * 获取Main tag
 * @returns
 */
export declare function getMainTag(): Promise<Tag>
/**
 * 获取钱包列表
 * @param params
 * @returns
 */
export declare function getWalletList(params?: QueryWalletsDto): Promise<Wallet[]>
/**
 * 创建钱包
 * @param coins 币种
 * @param belongMain  属于主钱包
 * @param name 名称
 * @param originalPassword 密码
 * @param originalMnemonic 助记词
 */
export declare function createWallets(params: CreateWalletDto): Promise<Tag>
/**
 * 添加币种
 * @param coins 币种
 * @param belongMain 属于主钱包
 * @param originalPassword 密码
 * @param originalMnemonic 助记词
 */
export declare function addCoins(tagId: string, coins: CoinDto[], originalPassword?: string): Promise<void>
/**
 * 重新初始化CNHT钱包
 * @param originalPassword 原始密码
 * @param originalMnemonic 助记词,可选
 * @param checkedPassword 是否检查密码, 可选
 * @returns
 */
export declare function checkAndInitCnhtWallet(originalPassword: string): Promise<Wallet>
/**
 * 添加币种,是否需要密码
 * @param coins 币种
 */
export declare function requirePwdWhenAddCoins(tagId: string, coins: CoinDto[]): Promise<boolean>
/**
 * 移除主币种
 * @param token 代币
 */
export declare function removeToken(tagId: string, chainName: string, contract?: string): Promise<void>
/**
 * 移除某个分组
 * @param id 钱包地址
 * @returns
 */
export declare function exitTag(tagId: string): Promise<void>
/**
 * 修改分组的名称
 * @param id 钱包地址
 * @returns
 */
export declare function setTagName(tagId: string, name: string): Promise<void>
/**
 * 获取钱包
 * @returns
 */
export declare function getWallet(id: string): Promise<Wallet>
/**
 * 通过地址获取钱包
 * @returns
 */
export declare function getWalletByAddress(address: string): Promise<Wallet>
/**
 * 根据address和网络返回钱包
 * @param address
 * @param networkName
 * @returns
 */
export declare function findWallet(address: string, networkName: string): Promise<Wallet | undefined>
/**
 * 获取用户所有主币和Token(收款码页面使用)
 */
export declare function getUserAllTokens(): Promise<Token[]>
/**
 * 获取用户拥有的币种(转账页面选择币种使用)
 */
export declare function getUserCoins(): Promise<CoinDto[]>
/**
 * 获取分组的助记词
 * @param password
 * @returns
 */
export declare function getTagMnemonic(tagId: string, password: string): Promise<string>
/**
 * 检查tag的密码
 * @param tagId
 * @param password
 * @returns
 */
export declare function checkTagPassword(tagId: string, password: string): Promise<boolean>
/**
 * 主钱包是否有密码
 * @returns
 */
export declare function hasMainPassword(): Promise<boolean>
/**
 * 检查主钱包密码
 * @returns
 */
export declare function checkMainPassword(password: string): Promise<boolean>
/**
 * 修改主密码
 * @param oldPassword
 * @param newPassword
 */
export declare function changeMainPassword(oldPassword: string, newPassword: string): Promise<void>
/**
 * 重置主密码
 * @param recoverToken
 * @param newPassword
 */
export declare function resetMainPassword(recoverToken: string, newPassword: string): Promise<void>
/**
 * 获取创建钱包时的Tag
 * @param belongMain
 * @returns
 */
export declare function getTagNextSort(belongMain: boolean): Promise<number>

/**
 * 初始化visualCnht钱包
 * @returns
 */
export declare function initEmptyCnhtWallet(): Promise<Wallet>
/**
 * 获取Cnht钱包
 * @param params
 */
export declare function getCnhtWallet(): Promise<Wallet>
/**
 * 初始化cnht钱包配置
 */
export declare function initCnhtSetting(): Promise<void>
/**
 * 获取cnht钱包配置
 * @returns
 */
export declare function getCnhtSetting(): Promise<GetCnhtSettingRsp>
/**
 * cnht交易签名-转账 发红包 群付款
 * @param password
 * @param data
 */
export declare function addEccSignToCnhtTransaction(password: string, data: any): Promise<any>
/**
 * 是否初始化了cnht钱包 是否有公钥、地址
 * 如果返回false,并且用户之前设置过交易密码,则需要校验交易密码,并重新更新钱包公钥、地址
 * @param params
 */
export declare function hasInitCnhtWallet(): Promise<boolean>
/**
 * 刷新CNHT钱包余额
 * @param params
 */
export declare function refreshCnhtWalletBalance(): Promise<void>

/**
 * 查询交易回执
 * @returns
 */
export declare function queryTxReceipt(params: QueryTxReceiptDto): Promise<UpdateTxDto>

Wallet Methods

export declare class Tag {
    id: string;
    name: string;
    mnemonic: string;
    password: string;
    passwordHint: string;
    belongMain: boolean;
    sort: number;
    createdAt: Date;
    updatedAt?: Date;
    tokens: any[];
    constructor({ id, mnemonic, name, belongMain, originalMnemonic, originalPassword, passwordHint, password, sort, createdAt, updatedAt }: Partial<Tag> & {
        originalMnemonic?: string;
        originalPassword?: string;
    });
    export declare type Account = {
    address: string;
    privateKey: string;
    publicKey?: string;
    networkName: string;
};
export declare class Wallet {
    id: string;
    address: string;
    chainName: string;
    belongMain: boolean;
    tagId: string;
    currentNetworkName: string;
    tokens: Token[];
    accounts: Account[];
    createdAt: Date;
    updatedAt?: Date;
    provider: IChainProvider;
    disable: boolean;
    tag: Tag;
    constructor({ id, chainName, tagId, tokens, accounts, createdAt, updatedAt, currentNetworkName, disable, originalMnemonic, originalPassword, tag, }: Partial<Wallet> & {
        originalMnemonic?: string;
        originalPassword?: string;
    });
    getCurrentAccount(): Account;
    /**
     * 获取私钥
     * @param originalPassword
     */
    getPrivateKey(originalPassword: string): string;
    /**
     * 获取单个Token余额
     * @param contract 合约地址,不传查询主币余额
     * @returns
     */
    getTokenBalance(contract?: string): Promise<AssetBalanceChangeEto>;
    /**
     * 刷新账户所有Token余额
     */
    refreshAllBalance(): Promise<void>;
    /**
     * 刷新单个Token余额
     * @param token
     * @param price
     */
    private refreshTokenBalance;
    /**
     * 刷新单个Token余额
     * @param contract
     */
    refreshContractBalance(contract?: string): Promise<void>;
    /**
     * 估算gas费用
     * @param transaction
     */
    getFee(tx: SendTxDto): Promise<FeeDto>;
    /**
     * 发送交易
     * @param transaction
     */
    sendTransaction(tx: SendTxDto, password: string): Promise<TxDetail>;
    /**
     * 获取代币列表
     * @returns
     */
    getTokens(): Token[];
    /**
     * 是否已经存在代币
     * @param contract 代币合约地址
     */
    private hasToken;
    /**
     * 添加代币
     * @param tokens
     */
    addTokens(tokens: CoinDto[]): Promise<void>;
    /**
     * 获取token
     * @param contract 代币合约地址
     */
    getToken(contract?: string): Token | undefined;
    /**
     * cnht钱包更新tagId
     * @param tagId
     */
    setTagId(tagId: string): Promise<void>;
    /**
     * 修改代币别名
     * @param contract 代币合约地址
     */
    setTokenName(contract: string | undefined, name: string): Promise<void>;
    /**
     * 移除代币
     * @param contract 代币合约地址
     */
    removeToken(contract: string): Promise<void>;
    /**
     * 修改钱包密码
     * @param oldOriginalPassword  旧密码
     * @param originalPassword     新密码
     */
    updatePassword(oldOriginalPassword: string, originalPassword: string): Promise<void>;
    formatTxParams(tx: SendTxDto): TxParams;
    /**
     * 检查密码是否正确
     * @param password
     * @returns
     * @todo 增加group,来实现检查密码
     */
    checkPassword(password: string): void;
    private updateToStorage;
    private checkAndInitMainToken;
    /**
     * 禁用主钱包
     */
    disableWallet(): Promise<void>;
    summary(): any;
}

QrcodeService

export interface QrcodeAddress {
  amount?: number | string
  chainName: string
  id: string
  type?: string
  contract?: string
}

/**
 * 解析二维码
 * @param qrcode
 */
export declare function parseQrcode(qrcode: string): QrcodeAddress
/**
 * 判断是否是二维码地址
 * @param address
 */
export declare function isQrcodeAddress(id: string): boolean
/**
 * 获取二维码
 * @param options
 */
export declare function generateQrcode(chainName: string, id: string, options?: QrcodeOptions): string

ChainService

/**
 * 获取所有支持的公链代币
 * @deprecated
 * @returns
 */
export declare function getSupportChains(): ChainSummary[]
/**
 * 获取所有主币和代币
 * @returns
 */
export declare function getSupportCoins(): Promise<CoinDto[]>
/**
 * 获取某个公链的token列表,暂时只支持以太坊
 * @param chainName
 * @param networkName
 * @returns
 */
export declare function getTokenList(chainName: string, networkName: string): Promise<TokenInfo[]>
/**
 * 获取某个代币
 * @param chainName
 * @param contract
 * @param networkName
 */
export declare function getToken(chainName: string, contract?: string, networkName?: string): Promise<CoinDto | undefined>

刷新交易

export declare function startTxRefresher(): void
export declare function stopTxRefresher(): void
/**
 * 添加pending的交易
 * @param tx
 */
export declare function pushPengdingTx(tx: TxDetail): void
export declare function clearPengdingTx(): void

闪兑

export declare class FlashSwap {
  context: BaseSwapContext
  wallet: Wallet
  amount: string
  fromToken: CoinDto
  toToken: CoinDto
  settings: any
  constructor()
  /**
   * 获取当前trade
   * @returns
   */
  trade(): import('./model').Trade | undefined
  private getAllCoins
  /**
   * 获取可以兑换的币
   * @param symbol
   * @returns
   */
  getSwapCoins(symbol?: string): Promise<CoinDto[]>
  /**
   * 设置钱包
   * @param wallet
   */
  setWallet(wallet: Wallet): Promise<void>
  /**
   * 设置交易对
   * @param from
   * @param to
   */
  setPairs(from: CoinDto, to: CoinDto): Promise<void>
  /**
   * 设置兑出金额
   * @param amount
   */
  setAmout(amount: string): Promise<void>
  /**
   * 修改settings
   * @param wallet
   */
  changeSetting(settings: any): Promise<void>
  private checkCanPreview
  /**
   * 是否可以预览
   */
  canPreview(): boolean
  /**
   * 预览
   */
  preview(): Promise<void>
  approve(password: string): Promise<string>
  /**
   * 兑换
   */
  swap(password: string): Promise<void>
}

Event

export interface AssetBalanceChangeEto {
  symbol: string
  balance: number | string
  contract?: string
  networkName: string
}
export interface AssetCurrencyValueChangeEto extends AssetBalanceChangeEto {
  currencyValue: number
  currency: string
}
export declare enum WalletEventType {
  AssetBalanceChange = 'assetBalanceChange',
  AssetCurrencyValueChange = 'assetCurrencyValueChange',
  TxStatusChange = 'txStatusChange',
  NewNotice = 'newNotice',
}
export interface TxStatusChangeEto extends UpdateTxDto {}

Utils

export declare function md5(text: string): string
export declare function sha512(text: string): string
export declare function sha256(text: string): string
export declare function encrypt(text: string, key: string): string
export declare function decrypt(text: string, key: string): string
/**
 * 使用私钥生成签名
 * @param privateKey
 * @param signStr
 * @returns
 */
export declare function createEccSignature(privateKey: string, signStr: string): string
/**
 * 请求实体进行签名
 * @param privateKey
 * @param data
 * @returns
 */
export declare function addEccSign(privateKey: string, data: any): any
export declare function stringToByte(str: any): number[]
/**
 * base单位转为asset单位
 * @param baseValue
 * @param decimals
 * @example sdk.parseToAsset('1000000000000000000', 18)
 * @returns
 */
export declare function parseToAsset(baseValue: string | number, decimals: number): string
/**
 * asset单位转为base单位
 * @param assetValue
 * @param decimals
 * @example sdk.parseToBase('1', 18)
 * @returns
 */
export declare function parseToBase(assetValue: string | number, decimals: number): string
/**
 * base单位转为asset单位
 * @param baseValue
 * @param decimals
 * @example sdk.parseToAsset('1000000000000000000', 18)
 * @returns
 */
export declare function parseToAssetNumber(baseValue: string | number, decimals: number): number
export declare function getTimestamp(): number
/**
 * 格式化手续费
 * @param chainName 链名
 * @param baseFee base手续费
 * @returns asset手续费
 */
export declare function parseBaseFee(baseFee: string, chainName: string): any
/**
 * 获取设置的币种Code
 * @returns
 */
export declare function getCurrencyCode(): string
/**
 * 获取设置的币种符号
 * @returns
 */
export declare function getCurrencySymbol(): string
/**
 * 获取价格
 * @param symbols
 * @param target
 */
export declare function getPrices(symbols: string[], target?: string): Promise<Map<string, number>>

/**
 * 根据chain名称获取公链信息
 * @param chainName
 * @returns
 */
export declare function getChain(chainName: string): Chain
/**
 * 获取个链下的默认网络名称
 * @param chainName
 */
export declare function getChainNetwork(chainName: string): string
/**
 * 获取某个公链支持的网络列表
 * @param chainName
 * @returns
 */
export declare function getChainNetworks(chainName: string): ChainNetwork[]
/**
 * 获取链的某个网络
 * @param chainName
 * @param networkName
 */
export declare function getNetwork(chainName: string, networkName?: string): ChainNetwork
/**
 * 获取某个公链的平台代币
 * @param chainName
 */
export declare function getMainToken(chainName: string): CoinDto
export declare function getWallets(params?: any): Promise<Wallet[]>

Api Service

Example

import * as sdk from '../src/index'
let api = await sdk.rpc()
let response = await api.transaction.commitTransaction({})

Model

export interface Chain {
  icon: string //图标
  name: string //名称
  symbol: string //币种标识
  decimals: number //小数位数
  derivedPath?: string
  curve?: string
  segWit?: string
  chainName: string //链名称,用来关联服务唯一键
  chainType: string //链类型
  networks: ChainNetwork[]
  sort: number
}

export interface ChainSummary {
  icon?: string //图标
  name: string //名称
  symbol: string //币种标识
  decimals: number //小数位数
  chainName?: string //链名称,用来关联服务唯一键
  contract?: string
}

// 兼容metamask。每个网络都可以有一个账户
export interface ChainNetwork {
  chainId: number //链 ID
  networkId: number //网络ID
  network: string //网络名称
  symbol: string // 符号(选填)/Currency Symbol
  networkURL: string //RPC URL/Network URL
  explorer?: string //区块浏览器 URL(选填)
  tokens?: TokenInfo[] //代币列表
}
export interface CoinDto {
  icon?: string //图标
  name: string //名称
  chainName: string //链名称
  symbol: string //符号
  decimals: number
  contract?: string //合约地址
  networkName: string //所属网络
  sort: number
}

export type Account = {
  address: string
  privateKey: string
  publicKey?: string
  networkName: string
}

export class Wallet {
  id: string = '' //id 使用钱包主网地址
  address: string = '' //钱包地址
  name: string //别名
  chainName: string //链名称 bitcoin/ethereum/...
  icon: string
  symbol: string //符号 ETH/BTC/...
  decimals: number //小数位数
  balance: number | string
  currencyValue: number //法币余额
  originalMnemonic?: string //原始助记词
  mnemonic: string //加密后的助记词
  originalPassword?: string //原始密码:创建钱包时候需要
  password: string
  passwordHint: string
  hasPassword: boolean
  belongMain: boolean
  rootDerivationPaths: object
  currentNetworkName: string //当前网络
  tokens: Token[] = [] //代币列表
  accounts: Account[] = []
  createdAt: Date
  updatedAt?: Date
  provider: IChainProvider
  disable: boolean
}

export class Token {
  walletAddress: string //钱包地址
  icon: string //图标
  name: string //名称
  networkName: string //所属网络
  contract?: string //合约地址
  symbol: string //符号
  decimals: number
  chainName: string //链名称
  balance: number | string //余额
  currencyValue: number //法币余额
  sort: number
}

export interface QueryWalletsDto {
  chainName?: string
  belongMain?: boolean
}

export interface CreateOtherWalletDto {
  passwordHint: string | undefined
  password: string
  chainName: string
  name: string
  mnemonic?: string
}

export interface SetPasswordToCnhtWalletDto {
  passwordHint: string | undefined
  password: string
}

export interface querySwapFormInfo {
  fromTokenContractAddress: string
  networkName: string //当前网络??
}

export interface GetSwapFeeDto {
  fromTokenContractAddress: string
  toTokenContractAddress: string
  ethereumAddress: string //以太坊钱包地址
  networkName: string //所属网络???
  amount: number
}

export interface SendSwapDto {
  fromContract?: string //空代表eth
  toContract?: string //空代表eth 和fromContract 不能同时为空
  ethereumAddress: string //以太坊钱包地址
  networkName: string //所属网络???
  amount: string
  slippage?: number //default: `0.005` which is 0.5%
  deadlineMinutes?: number // if not supplied it will use 20 a deadline minutes
  disableMultihops?: boolean // if not supplied it will try to use multihops, if this is true it will require swaps to direct pairs
}
/**
 * 交易数据
 */
export interface SendTxDto {
  symbol: string
  contract?: string //token转账需要传入
  to: string // 收款地址
  value: number //转账金额
  decimals: number
  gasPrice?: number //单位Wei,以太坊转账必传
  gasLimit?: number //以太坊转账必传
  note?: string //交易备注
  feeRate?: number //比特币转账必传
}

export type FeeDto = {
  fee: number
  gasPrice?: number //eth 单位Wei
  gasLimit?: number //eth
  feeRate?: number //btc,BCH
  amount?: number
}

//     UNAPPROVED: 'unapproved',
//     APPROVED: 'approved',
//     REJECTED: 'rejected',
//     SIGNED: 'signed',
//     SUBMITTED: 'submitted',
//     FAILED: 'failed',
//     DROPPED: 'dropped',
//     CONFIRMED: 'confirmed',
export enum TransactionStatus {
  PENDING = 0,
  SUCCESS = 1,
  FAIL = 2,
}

export enum TransactionType {
  TRANSFER = 1,
  SWAP = 2,
  ENTRUST = 3,
}

/**
 * 交易详情
 */
export interface TxDetail {
  transactionHash: string //交易hash id全局唯一
  from: string //转出地址
  symbol: string
  contract?: string //token转账需要传入
  toContract?: string //UniSwap类型的交易才有该字段
  to: string // 收款地址
  value: number | string //转账金额
  decimals: number
  gasPrice?: number | string
  gasLimit?: number | string
  note?: string //交易备注
  nonce: number
  chainId: number //交易链编号
  chainName: string //交易链名称
  network: string //交易网络
  confirmations: number //确认数
  status: TransactionStatus | number //交易状态
  timestamp: number
  type: TransactionType
  transactionFee: string //交易手续费,可能和原始链币种不同
  toDecimals?: number
  toSymbol?: string
  toName?: string
  fromValue?: number
  toValue?: string | number
  signature?: string
  failed_reason?: string
}

export interface UpdateTxDto {
  transactionHash: string
  status: TransactionStatus // PENDING = 0, SUCCESS = 1, FAIL = 2
  desc?: string
}

export interface UpdateBitcoinTxDto extends UpdateTxDto {
  blockHash: string
  // blockNumber: number
  confirmations: number
  timestamp: number
  transactionFee: string
}

export interface UpdateBitcoinCashTxDto extends UpdateTxDto {
  blockHash: string
  blockNumber: number
  confirmations: number
  timestamp: number
  transactionFee: string
}

export interface UpdateEthereumTxDto extends UpdateTxDto {
  //以下字段从交易回执中取
  blockHash: string
  blockNumber: number
  cumulativeGasUsed: number
  effectiveGasPrice: number
  gasPrice: number
  gasUsed: number
  transactionIndex: number
  confirmations: number
  //以下字段从交易详情中取
  // confirmations: number,
  timestamp: number
  transactionFee: string | number
  toValue?: string
}
export interface QueryTxReceiptDto {
  chainName: string
  transactionHash: string
  networkName: string
  fromContract?: string //当交易类型是swap的时候,需要传交易里的from
  toContract?: string //当交易类型是swap的时候,需要传交易里的toContract
  type: number // TRANSFER = 1, SWAP = 2, ENTRUST = 3
}

export interface PengdingTx extends TxDetail {}

/**
 * 虚拟币交易类型
 */
export enum TransactionDirection {
  TRANSFER = 1,
  TRANSFER_IN = 10, // 转入
  TRANSFER_OUT = 11, // 转出

  SWAP = 2, // 兑换
  SWAP_IN = 20, // 兑换-买入
  SWAP_OUT = 21, // 兑换-卖出

  ENTRUST = 3, // 委托
  ENTRUST_IN = 30, // 委托买入
  ENTRUST_OUT = 31, // 委托卖出

  FEE = 5, // 手续费
  COIN = 6, // 兑换- 币币兑换
  PUBLISH_IN = 9, // 买卖交易 - 进账
  PUBLISH_OUT = 10, // 买卖交易 - 出账
}

export interface Notice {
  chainName: string //交易链名称
  network: string //交易网络
  transactionHash: string
  from: string //转出地址
  symbol: string
  to: string // 收款地址
  value: number | string //转账金额
  status: TransactionStatus
  direction: TransactionDirection
}

export interface Trade {
  expectedConvertQuote: string
  minAmountConvertQuote: string | null
  tradeExpires: number
  routeText: string
  params?: any
  destroy?: Function
  approvalTransaction?: any
  transaction?: any
}
0.9.101

10 months ago

0.9.100

1 year ago

0.9.99

1 year ago

0.9.96

1 year ago

0.9.98

1 year ago

0.9.95

1 year ago

0.9.4

2 years ago

0.9.3

2 years ago

0.9.6

2 years ago

0.9.5

2 years ago

0.9.92

2 years ago

0.9.93

2 years ago

0.9.94

2 years ago

0.9.90

2 years ago

0.9.91

2 years ago

0.9.89

2 years ago

0.9.85

2 years ago

0.9.86

2 years ago

0.9.87

2 years ago

0.9.88

2 years ago

0.9.82

2 years ago

0.9.83

2 years ago

0.9.84

2 years ago

0.9.80

2 years ago

0.9.78

2 years ago

0.9.79

2 years ago

0.9.74

2 years ago

0.9.75

2 years ago

0.9.76

2 years ago

0.9.77

2 years ago

0.9.70

2 years ago

0.9.72

2 years ago

0.9.73

2 years ago

0.9.67

2 years ago

0.9.68

2 years ago

0.9.69

2 years ago

0.9.63

2 years ago

0.9.64

2 years ago

0.9.65

2 years ago

0.9.66

2 years ago

0.9.61

2 years ago

0.9.62

2 years ago

0.9.0

2 years ago

0.9.2

2 years ago

0.9.1

2 years ago

0.8.9

2 years ago

0.8.8

2 years ago

0.8.7

2 years ago

0.8.5

2 years ago

0.8.4

2 years ago

0.8.6

2 years ago

0.8.1

2 years ago

0.8.0

2 years ago

0.8.3

2 years ago

0.8.2

2 years ago

0.7.13

3 years ago

0.7.12

3 years ago

0.7.15

3 years ago

0.7.14

3 years ago

0.5.10

4 years ago

0.5.11

4 years ago

0.5.12

4 years ago

0.7.2

3 years ago

0.7.1

3 years ago

0.7.4

3 years ago

0.7.3

3 years ago

0.7.0

3 years ago

0.7.11

3 years ago

0.7.10

3 years ago

0.5.8

4 years ago

0.6.40

3 years ago

0.5.9

4 years ago

0.6.32

3 years ago

0.6.31

3 years ago

0.6.34

3 years ago

0.6.33

3 years ago

0.6.30

3 years ago

0.6.39

3 years ago

0.6.35

3 years ago

0.6.38

3 years ago

0.6.37

3 years ago

0.6.21

4 years ago

0.6.20

4 years ago

0.6.23

4 years ago

0.6.22

4 years ago

0.6.7

4 years ago

0.6.6

4 years ago

0.6.9

4 years ago

0.6.8

4 years ago

0.6.29

3 years ago

0.6.28

3 years ago

0.6.25

4 years ago

0.6.24

4 years ago

0.6.27

3 years ago

0.6.26

3 years ago

0.6.10

4 years ago

0.6.12

4 years ago

0.6.11

4 years ago

0.6.18

4 years ago

0.6.17

4 years ago

0.6.19

4 years ago

0.6.14

4 years ago

0.6.13

4 years ago

0.6.16

4 years ago

0.6.15

4 years ago

0.7.9

3 years ago

0.7.6

3 years ago

0.7.5

3 years ago

0.7.8

3 years ago

0.7.7

3 years ago

0.6.3

4 years ago

0.6.2

4 years ago

0.6.5

4 years ago

0.6.4

4 years ago

0.6.1

4 years ago

0.6.0

4 years ago

0.5.7

4 years ago

0.3.41

4 years ago

0.3.40

4 years ago

0.4.5

4 years ago

0.4.4

4 years ago

0.4.7

4 years ago

0.4.6

4 years ago

0.4.1

4 years ago

0.4.3

4 years ago

0.4.2

4 years ago

0.3.31

4 years ago

0.3.30

4 years ago

0.3.39

4 years ago

0.3.37

4 years ago

0.3.36

4 years ago

0.3.35

4 years ago

0.3.34

4 years ago

0.3.33

4 years ago

0.3.32

4 years ago

0.3.29

4 years ago

0.3.20

4 years ago

0.3.28

4 years ago

0.3.27

4 years ago

0.3.26

4 years ago

0.3.25

4 years ago

0.3.24

4 years ago

0.3.23

4 years ago

0.3.22

4 years ago

0.3.21

4 years ago

0.3.19

4 years ago

0.3.18

4 years ago

0.5.4

4 years ago

0.5.3

4 years ago

0.5.6

4 years ago

0.5.5

4 years ago

0.5.0

4 years ago

0.5.2

4 years ago

0.5.1

4 years ago

0.3.17

4 years ago

0.3.16

4 years ago

0.3.15

4 years ago

0.3.6

4 years ago

0.3.5

4 years ago

0.3.8

4 years ago

0.3.7

4 years ago

0.3.9

4 years ago

0.3.14

4 years ago

0.3.13

4 years ago

0.3.12

4 years ago

0.3.11

4 years ago

0.3.10

4 years ago

0.3.0

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.4

4 years ago

0.3.3

4 years ago

0.2.17

4 years ago

0.2.16

4 years ago

0.2.15

4 years ago

0.2.14

4 years ago

0.2.13

4 years ago

0.2.12

4 years ago

0.2.11

4 years ago

0.2.10

4 years ago

0.2.9

4 years ago

0.2.8

4 years ago

0.2.7

4 years ago

0.2.6

4 years ago

0.2.3

4 years ago

0.2.5

4 years ago

0.2.4

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.2.2

4 years ago

0.1.8

4 years ago

0.1.9

4 years ago

0.1.7

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.0.46

4 years ago

0.1.0

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.0.43

4 years ago

0.0.44

4 years ago

0.0.45

4 years ago

0.0.40

4 years ago

0.0.42

4 years ago

0.0.37

4 years ago

0.0.38

4 years ago

0.0.39

4 years ago

0.0.34

4 years ago

0.0.35

4 years ago

0.0.36

4 years ago

0.0.30

4 years ago

0.0.31

4 years ago

0.0.32

4 years ago

0.0.33

4 years ago

0.0.27

4 years ago

0.0.28

4 years ago

0.0.29

4 years ago

0.0.24

4 years ago

0.0.25

4 years ago

0.0.26

4 years ago

0.0.20

4 years ago

0.0.21

4 years ago

0.0.22

4 years ago

0.0.23

4 years ago

0.0.15

4 years ago

0.0.16

4 years ago

0.0.17

4 years ago

0.0.18

4 years ago

0.0.19

4 years ago

0.0.10

4 years ago

0.0.11

4 years ago

0.0.12

4 years ago

0.0.13

4 years ago

0.0.14

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.9

4 years ago

0.0.8

4 years ago

0.0.5

4 years ago

0.0.4

4 years ago

0.0.7

4 years ago

0.0.6

4 years ago

0.0.1

4 years ago