@ocap/client 1.18.7 → 1.18.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/extension.js CHANGED
@@ -348,7 +348,7 @@ const createExtensionMethods = (client, { encodeTxAsBase64 = false } = {}) => {
348
348
  * @param {object} input.delegator - the wallet address that delegated permissions to the `input.wallet` address
349
349
  * @returns {Promise<string>}
350
350
  */
351
- const txSendFn = async ({ tx, wallet, signature, delegator, commit = false }) => {
351
+ const txSendFn = async ({ tx, wallet, signature, delegator, commit = false }, extra = {}) => {
352
352
  let encoded;
353
353
  if (signature) {
354
354
  encoded = tx;
@@ -370,12 +370,12 @@ const createExtensionMethods = (client, { encodeTxAsBase64 = false } = {}) => {
370
370
  const txBytes = txObj.serializeBinary();
371
371
  const txStr = toBase64(txBytes);
372
372
  debug(`sendTx.${x}.txObj`, txObj.toObject());
373
- const { hash } = await client.sendTx({ tx: txStr, commit });
373
+ const { hash } = await client.sendTx({ tx: txStr, commit }, extra);
374
374
  resolve(hash);
375
375
  } else {
376
376
  const txObj = createMessage('Transaction', encoded).toObject();
377
377
  debug(`sendTx.${x}.txObj`, txObj);
378
- const { hash } = await client.sendTx({ tx: txObj, commit });
378
+ const { hash } = await client.sendTx({ tx: txObj, commit }, extra);
379
379
  resolve(hash);
380
380
  }
381
381
  } catch (err) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/extension.js"],"names":["get","require","omit","cloneDeep","camelCase","toTypeInfoStr","isValid","transactions","typeUrls","multiSignTxs","multiSignV2Txs","createMessage","getMessageType","toTypeUrl","bytesToHex","toBase58","toBase64","toHex","toBuffer","fromTokenToUnit","fromUnitToToken","DEFAULT_TOKEN_DECIMAL","formatFactoryState","preMintFromFactory","isValidFactory","toDelegateAddress","toAssetAddress","toFactoryAddress","toTokenAddress","toStakeAddress","toRollupAddress","debug","name","createExtensionMethods","client","encodeTxAsBase64","Object","defineProperty","value","loading","ready","callbacks","token","getContext","decimal","amount","getTxSendMethods","map","x","getTxEncodeMethods","getTxSignMethods","getTxMultiSignMethods","concat","getType","fn","decodeTx","input","Transaction","deserializeBinary","toObject","ctx","context","Promise","resolve","push","result","doRawQuery","chainId","consensus","txConfig","tokenStateMap","Map","forEach","cb","getTokenStateMap","addressList","notExistAddressList","address","has","set","size","length","getTokenState","code","state","Error","all","getWallet","wallet","publicKey","toAddress","pk","txEncodeFn","tx","delegator","w","from","nonce","Date","now","signatures","Array","isArray","signaturesList","itx","typeUrl","type","feeConfig","find","t","txObj","signature","Buffer","serviceFee","fee","txToSignBytes","serializeBinary","object","buffer","encodeMethod","__tx__","txSendFn","commit","encoded","res","sign","reject","txBytes","txStr","hash","sendTx","err","sendMethod","_formatEncodedTx","encoding","txSignFn","signMethod","includes","txMultiSignFn","data","unshift","signer","multiSignMethod","item","s","declare","moniker","issuer","extra","itxData","sendDeclareTx","migrateAccount","to","sendAccountMigrateTx","delegate","privileges","ops","rules","txTypes","values","filter","startsWith","some","sendDelegateTx","revokeDelegate","sendRevokeDelegateTx","Boolean","toString","createAsset","parent","ttl","readonly","transferrable","display","endpoint","tags","payload","sendCreateAssetTx","updateAsset","sendUpdateAssetTx","createAssetFactory","factory","description","settlement","limit","trustedIssuers","output","hooks","sendCreateFactoryTx","preMintAsset","inputs","owner","options","ignoreFields","factoryState","issuerState","getFactoryState","getAccountState","asset","variables","assign","entries","key","acquireAsset","sendAcquireAssetV2Tx","mintAsset","sendMintAssetTx","transfer","assets","tokens","memo","contextToken","tmpTokens","tokensMap","sendTransferV2Tx","stake","locked","message","multiSignStakeTx","receiver","signStakeTx","sendStakeTx","revokeStake","sendRevokeStakeTx","outputs","claimStake","evidence","sendClaimStakeTx","createRollup","props","requiredProps","tokenAddress","foreignToken","toBNStr","n","maxStakeAmount","minStakeAmount","minSignerCount","maxSignerCount","minBlockSize","maxBlockSize","minBlockInterval","minBlockConfirmation","minDepositAmount","maxDepositAmount","minWithdrawAmount","maxWithdrawAmount","depositFeeRate","withdrawFeeRate","publisherFeeShare","proposerFeeShare","minDepositFee","maxDepositFee","minWithdrawFee","maxWithdrawFee","leaveWaitingPeriod","publishWaitingPeriod","publishSlashRate","sendCreateRollupTx","prepareExchange","offerToken","offerAssets","demandToken","demandAssets","offerTokens","demandTokens","tmpOfferTokens","tmpDemandTokens","signExchangeV2Tx","sender","finalizeExchange","multiSignExchangeV2Tx","exchange","sendExchangeV2Tx","createToken","symbol","unit","icon","totalSupply","initialSupply","tokenDecimal","sendCreateTokenTx","module","exports"],"mappings":"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","file":"extension.js","sourcesContent":["/* eslint-disable prefer-object-spread */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable object-curly-newline */\nconst get = require('lodash/get');\nconst omit = require('lodash/omit');\nconst cloneDeep = require('lodash/cloneDeep');\nconst camelCase = require('lodash/camelCase');\nconst { toTypeInfoStr, isValid } = require('@arcblock/did');\nconst { transactions, typeUrls, multiSignTxs, multiSignV2Txs } = require('@ocap/proto');\nconst { createMessage, getMessageType, toTypeUrl } = require('@ocap/message');\nconst { bytesToHex, toBase58, toBase64, toHex, toBuffer, fromTokenToUnit, fromUnitToToken } = require('@ocap/util');\nconst { DEFAULT_TOKEN_DECIMAL } = require('@ocap/util/lib/constant');\nconst { formatFactoryState, preMintFromFactory, isValidFactory } = require('@ocap/asset');\nconst {\n toDelegateAddress,\n toAssetAddress,\n toFactoryAddress,\n toTokenAddress,\n toStakeAddress,\n toRollupAddress,\n} = require('@arcblock/did-util');\n\nconst debug = require('debug')(require('../package.json').name);\n\n/**\n * Generate extension methods on the fly\n *\n * @public\n * @param {object} client\n * @param {object} [{ encodeTxAsBase64 = false }={}]\n */\nconst createExtensionMethods = (client, { encodeTxAsBase64 = false } = {}) => {\n Object.defineProperty(client, 'ctx', {\n value: {\n loading: false,\n ready: false,\n callbacks: [],\n },\n });\n\n /**\n * Format big number presentation amount to token number\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#fromUnitToToken\n * @param {string} value\n * @returns {string}\n */\n client.fromUnitToToken = async (value) => {\n const { token } = await client.getContext();\n return fromUnitToToken(value, token.decimal);\n };\n\n /**\n * Encode amount to corresponding token big number presentation\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#fromTokenToUnit\n * @param {number} amount\n * @returns {BN}\n */\n client.fromTokenToUnit = async (amount) => {\n const { token } = await client.getContext();\n return fromTokenToUnit(amount, token.decimal);\n };\n\n /**\n * List all transaction send methods\n * Each method can send one kind of transactions supported by forge core, such as `DeclareTx`\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getTxSendMethods\n * @returns {Array<string>} method name list\n */\n client.getTxSendMethods = () => transactions.map((x) => camelCase(`send_${x}`));\n\n /**\n * List all transaction encode methods, each method can be used to encode transaction to buffer and object\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getTxEncodeMethods\n * @returns {Array<string>} method name list\n */\n client.getTxEncodeMethods = () => transactions.map((x) => camelCase(`encode_${x}`));\n\n /**\n * List all transaction sign methods, each method can be used to sign transaction to an object\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getTxSignMethods\n * @returns {Array<string>} method name list\n */\n client.getTxSignMethods = () => transactions.map((x) => camelCase(`sign_${x}`));\n\n /**\n * List all transaction multi sign methods, each method can be used to do multi sign a transaction\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getTxMultiSignMethods\n * @returns {Array<string>} method name list\n */\n client.getTxMultiSignMethods = () => multiSignTxs.concat(multiSignV2Txs).map((x) => camelCase(`multi_sign_${x}`));\n\n /**\n * Get protobuf message class by name, only supports forge-built-in types\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getType\n * @param {string} x\n * @returns {class|null} message type\n */\n client.getType = (x) => getMessageType(x).fn;\n\n /**\n * Decode transaction buffer/base64/base58 to an object\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#decodeTx\n * @param {buffer|hex|base48|base64} input\n * @returns {object} transaction object\n */\n client.decodeTx = (input) => {\n const Transaction = client.getType('Transaction');\n return Transaction.deserializeBinary(toBuffer(input)).toObject();\n };\n\n /**\n * Ensure a connection is bootstrapped with some meta info fetched from chain node\n *\n * @private\n * @param {string} [conn=undefined]\n * @returns {object}\n */\n client.getContext = async () => {\n if (client.ctx.ready) {\n return client.context;\n }\n\n if (client.ctx.loading) {\n return new Promise((resolve) => {\n client.ctx.callbacks.push(() => resolve(client.context));\n });\n }\n\n client.ctx.loading = true;\n const result = await client.doRawQuery(`{\n getChainInfo {\n code\n info {\n network\n consensusVersion\n }\n }\n getForgeState {\n code\n state {\n token {\n decimal\n symbol\n }\n txConfig {\n txFee {\n fee\n typeUrl\n }\n }\n }\n }\n }`);\n\n client.context = {\n chainId: get(result, 'getChainInfo.info.network'),\n consensus: get(result, 'getChainInfo.info.consensusVersion'),\n token: get(result, 'getForgeState.state.token'),\n txConfig: get(result, 'getForgeState.state.txConfig'),\n tokenStateMap: new Map(),\n };\n\n client.ctx.ready = true;\n client.ctx.loading = false;\n client.ctx.callbacks.forEach((cb) => cb());\n debug('context ready');\n\n return client.context;\n };\n\n client.getTokenStateMap = async (addressList) => {\n const result = new Map();\n const notExistAddressList = [];\n addressList.forEach((address) => {\n if (client.context.tokenStateMap.has(address)) {\n result.set(address, client.context.tokenStateMap.get(address));\n } else {\n notExistAddressList.push(address);\n }\n });\n\n if (result.size === addressList.length) {\n return result;\n }\n\n const getTokenState = async (address) => {\n const {\n getTokenState: { code, state },\n } = await client.doRawQuery(`{\n getTokenState(address: \"${address}\") {\n code\n state {\n decimal\n }\n }\n }`);\n\n if (code !== 'OK') {\n throw new Error(`get token ${address} state failed`);\n }\n\n result.set(address, state);\n client.context.tokenStateMap.set(address, state);\n };\n\n await Promise.all(notExistAddressList.map((address) => getTokenState(address)));\n\n return result;\n };\n\n // Unify a client wallet | forge managed wallet\n const getWallet = (wallet) => {\n if (!wallet) {\n return {\n address: '',\n publicKey: '',\n };\n }\n\n if (typeof wallet.toAddress === 'function') {\n return {\n address: wallet.address,\n publicKey: wallet.publicKey,\n };\n }\n\n return {\n address: wallet.address,\n publicKey: wallet.pk || wallet.publicKey || '',\n };\n };\n\n // Generate transaction sign/send/encode functions on fly\n transactions.forEach((x) => {\n /**\n * Encode a transaction\n *\n * @param {object} input\n * @param {object} input.tx - data of the transaction\n * @param {object} input.tx.itx - the actual transaction object\n * @param {object} [input.tx.from] - the sender address, can be derived from wallet\n * @param {object} [input.tx.nonce] - the tx nonce, defaults to Date.now if not set\n * @param {object} [input.tx.chainId] - the chainId\n * @param {object} [input.tx.signature] - the signature\n * @param {object} [input.tx.signatures] - the signature list\n * @param {object} input.wallet - the wallet used to sign the transaction\n * @param {object} input.delegator - the wallet address that delegated permissions to the `input.wallet` address\n * @returns Promise\n */\n const txEncodeFn = async ({ tx, wallet, delegator }) => {\n const w = getWallet(wallet);\n const context = await client.getContext();\n\n // Determine sender address\n const address = tx.from || w.address;\n const pk = tx.pk || w.publicKey;\n\n // Determine chainId & nonce, only attach new one when not exist\n const nonce = typeof tx.nonce === 'undefined' ? Date.now() : tx.nonce;\n let chainId = tx.chainId || '';\n if (!chainId) {\n // eslint-disable-next-line prefer-destructuring\n chainId = context.chainId;\n }\n\n // Determine signatures for multi sig\n let signatures = [];\n if (Array.isArray(tx.signatures)) {\n // eslint-disable-next-line prefer-destructuring\n signatures = tx.signatures;\n }\n if (Array.isArray(tx.signaturesList)) {\n signatures = tx.signaturesList;\n }\n\n // Determine itx\n let itx = null;\n if (tx.itx.typeUrl && tx.itx.value) {\n // eslint-disable-next-line prefer-destructuring\n itx = tx.itx;\n } else {\n itx = { type: x, value: tx.itx };\n }\n\n const type = itx.typeUrl || toTypeUrl(itx.type);\n const feeConfig = get(context, 'txConfig.txFee', []).find((t) => t.typeUrl === type);\n\n const txObj = createMessage('Transaction', {\n from: tx.delegator ? address : delegator || address,\n nonce,\n pk,\n chainId,\n signature: tx.signature || Buffer.from([]),\n signatures,\n delegator: tx.delegator || (delegator ? address : ''),\n itx,\n serviceFee: feeConfig ? feeConfig.fee : '0',\n });\n const txToSignBytes = txObj.serializeBinary();\n\n debug(`encodeTx.${x}.txObj`, txObj.toObject());\n\n return { object: txObj.toObject(), buffer: Buffer.from(txToSignBytes) };\n };\n\n const encodeMethod = camelCase(`encode_${x}`);\n txEncodeFn.__tx__ = encodeMethod;\n client[encodeMethod] = txEncodeFn;\n\n /**\n * Send a transaction\n *\n * @param {object} input\n * @param {object} input.tx - data of the transaction\n * @param {object} input.tx.itx - the actual transaction object\n * @param {object} [input.tx.from] - the sender address, can be derived from wallet\n * @param {object} [input.tx.nonce] - the tx nonce, defaults to Date.now if not set\n * @param {object} [input.tx.chainId] - the chainId\n * @param {object} [input.tx.signature] - the signature\n * @param {object} [input.tx.signatures] - the signatures\n * @param {object} [input.commit=false] - whether we should wait for transaction commit\n * @param {object} input.wallet - the wallet used to sign the transaction, either a forge managed wallet or user managed wallet\n * @param {object} [input.signature] - the signature of the tx, if exist, we will not sign the transaction\n * @param {object} input.delegator - the wallet address that delegated permissions to the `input.wallet` address\n * @returns {Promise<string>}\n */\n const txSendFn = async ({ tx, wallet, signature, delegator, commit = false }) => {\n let encoded;\n if (signature) {\n encoded = tx;\n encoded.signature = signature;\n } else if (tx.signature) {\n const res = await txEncodeFn({ tx, wallet, delegator });\n encoded = res.object;\n } else {\n const res = await txEncodeFn({ tx, wallet, delegator });\n encoded = res.object;\n encoded.signature = wallet.sign(bytesToHex(res.buffer));\n }\n\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n if (encodeTxAsBase64) {\n const txObj = createMessage('Transaction', encoded);\n const txBytes = txObj.serializeBinary();\n const txStr = toBase64(txBytes);\n debug(`sendTx.${x}.txObj`, txObj.toObject());\n const { hash } = await client.sendTx({ tx: txStr, commit });\n resolve(hash);\n } else {\n const txObj = createMessage('Transaction', encoded).toObject();\n debug(`sendTx.${x}.txObj`, txObj);\n const { hash } = await client.sendTx({ tx: txObj, commit });\n resolve(hash);\n }\n } catch (err) {\n reject(err);\n }\n });\n };\n\n const sendMethod = camelCase(`send_${x}`);\n txSendFn.__tx__ = sendMethod;\n client[sendMethod] = txSendFn;\n\n const _formatEncodedTx = async (tx, encoding) => {\n if (encoding) {\n const { buffer: txBytes } = await txEncodeFn({ tx });\n if (encoding === 'base64') {\n return toBase64(txBytes);\n }\n if (encoding === 'base58') {\n return toBase58(txBytes);\n }\n if (encoding === 'base16' || encoding === 'hex') {\n return toHex(txBytes);\n }\n return txBytes;\n }\n\n return tx;\n };\n\n // Generate transaction signing function\n const txSignFn = async ({ tx, wallet, delegator, encoding = '' }) => {\n if (tx.signature) {\n delete tx.signature;\n }\n\n const { object, buffer } = await txEncodeFn({ tx, wallet, delegator });\n object.signature = wallet.sign(buffer);\n\n return _formatEncodedTx(object, encoding);\n };\n const signMethod = camelCase(`sign_${x}`);\n txSignFn.__tx__ = signMethod;\n client[signMethod] = txSignFn;\n\n // TODO: verify existing signatures before adding new signatures\n // Generate transaction multi sign function\n if (multiSignTxs.includes(x)) {\n const txMultiSignFn = async ({ tx, wallet, delegator, data, encoding = '' }) => {\n if (typeof wallet.toAddress !== 'function') {\n throw new Error('Multisig requires a valid wallet');\n }\n tx.signaturesList = tx.signatures || tx.signaturesList || [];\n if (delegator) {\n tx.signaturesList.unshift({\n pk: wallet.publicKey,\n signer: delegator,\n delegator: wallet.address,\n data,\n });\n } else {\n tx.signaturesList.unshift({\n pk: wallet.publicKey,\n signer: wallet.address,\n delegator: '',\n data,\n });\n }\n\n const { object, buffer } = await txEncodeFn({ tx, wallet });\n object.signaturesList[0].signature = wallet.sign(bytesToHex(buffer));\n return _formatEncodedTx(object, encoding);\n };\n const multiSignMethod = camelCase(`multi_sign_${x}`);\n txMultiSignFn.__tx__ = multiSignMethod;\n client[multiSignMethod] = txMultiSignFn;\n }\n\n if (multiSignV2Txs.includes(x)) {\n const txMultiSignFn = async ({ tx, wallet, encoding = '' }) => {\n if (typeof wallet.toAddress !== 'function') {\n throw new Error('Multisig requires a valid wallet');\n }\n\n const signer = wallet.address;\n const signatures = cloneDeep(tx.signatures || tx.signaturesList || []);\n const item = signatures.find((s) => s.signer === signer || s.delegator === signer);\n if (!item) {\n throw new Error('Signer not in the list');\n }\n\n tx.signaturesList = signatures.map((s) => omit(s, ['signature']));\n const { object, buffer } = await txEncodeFn({ tx, wallet });\n\n item.signature = wallet.sign(bytesToHex(buffer));\n object.signaturesList = signatures;\n return _formatEncodedTx(object, encoding);\n };\n const multiSignMethod = camelCase(`multi_sign_${x}`);\n txMultiSignFn.__tx__ = multiSignMethod;\n client[multiSignMethod] = txMultiSignFn;\n }\n });\n\n /**\n * Declare an DID and it's public key on chain\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#declare\n * @param {object} params\n * @param {string} params.moniker - user nickname\n * @param {string} [params.issuer=\"\"] - who issued the account\n * @param {object} [params.data=undefined] - who issued the account\n * @param {WalletObject} params.wallet - wallet to sign the tx\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the transaction hash once resolved\n */\n client.declare = ({ moniker, issuer = '', data, wallet }, extra) => {\n let itxData = data;\n\n // If there is no data attached to the account, we can attach wallet type by default\n if (!itxData) {\n itxData = { typeUrl: 'json', value: toTypeInfoStr(wallet.address) };\n }\n\n return client.sendDeclareTx(\n {\n tx: {\n itx: { moniker, issuer, data: itxData },\n },\n wallet,\n },\n extra\n );\n };\n\n /**\n * Migrate current account to a new account\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#migrateAccount\n * @param {object} params\n * @param {WalletObject} params.from - which account to migrate from\n * @param {WalletObject} params.to - which account to migrate to\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the transaction hash once resolved\n */\n client.migrateAccount = ({ from, to }, extra) =>\n client.sendAccountMigrateTx(\n {\n tx: {\n itx: {\n address: to.address,\n pk: to.publicKey,\n type: to.type,\n },\n },\n wallet: from,\n },\n extra\n );\n\n /**\n * Delegate some privileges to another account\n * So that that account can send transactions on behalf of the delegator\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#delegate\n * @param {object} params\n * @param {WalletObject} params.from - the delegator, who grants the privilege to others\n * @param {WalletObject} params.to - the delegatee, who is authorized to send transactions\n * @param {Array} params.privileges - the privilege settings\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, delegateAddress]` once resolved\n */\n client.delegate = async ({ from, to, privileges }, extra) => {\n let ops = Array.isArray(privileges) ? privileges : [privileges];\n ops = ops.map((x) => {\n if (x.typeUrl && Array.isArray(x.rules)) {\n return x;\n }\n\n return { typeUrl: x.typeUrl, rules: [] };\n });\n\n const txTypes = Object.values(typeUrls).filter((x) => x.startsWith('fg:t:'));\n if (ops.some((x) => txTypes.includes(x.typeUrl) === false)) {\n throw new Error('Invalid type url provided for delegation');\n }\n\n const address = toDelegateAddress(from.address, to.address);\n const hash = await client.sendDelegateTx(\n {\n tx: {\n itx: {\n address,\n to: to.address,\n ops,\n },\n },\n wallet: from,\n },\n extra\n );\n\n return [hash, address];\n };\n\n /**\n * Revoke a previous delegation\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#revokeDelegate\n * @param {object} params\n * @param {WalletObject} params.from - the delegator, who grants the privilege to others\n * @param {WalletObject} params.to - the delegatee, who is authorized to send transactions\n * @param {Array} params.privileges - the privilege settings\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the transaction hash once resolved\n */\n client.revokeDelegate = ({ from, to, privileges }, extra) =>\n client.sendRevokeDelegateTx(\n {\n tx: {\n itx: {\n address: toDelegateAddress(from.address, to.address),\n to: to.address,\n typeUrls: privileges.filter(Boolean).map((x) => x.toString()),\n },\n },\n wallet: from,\n },\n extra\n );\n\n /**\n * Create an new asset (non-fungible-token)\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#createAsset\n * @param {object} params\n * @param {string} params.moniker - asset name\n * @param {string} params.parent - asset parent\n * @param {object} params.data - asset data payload\n * @param {number} params.ttl - ttl after first consumption\n * @param {boolean} params.readonly - whether the asset can be updated after creation\n * @param {boolean} params.transferrable - whether the asset can be transferred to another account\n * @param {object} params.display - the display of the asset\n * @param {object} params.endpoint - the endpoint of the asset\n * @param {string} params.tags - the tag list of the asset\n * @param {string} params.delegator - who authorized this transaction\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, assetAddress]` once resolved\n */\n client.createAsset = async (\n {\n moniker,\n parent = '',\n ttl = 0,\n data,\n readonly = false,\n transferrable = true,\n display,\n endpoint,\n tags = [],\n delegator = '',\n wallet,\n },\n extra\n ) => {\n const payload = { moniker, parent, ttl, readonly, transferrable, data, display, endpoint, tags };\n const address = toAssetAddress(payload);\n payload.address = address;\n const hash = await client.sendCreateAssetTx(\n {\n tx: { itx: payload },\n delegator,\n wallet,\n },\n extra\n );\n return [hash, address];\n };\n\n /**\n * Update an existing asset (non-fungible-token)\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#updateAsset\n * @param {object} params\n * @param {string} params.address - asset address\n * @param {string} params.moniker - asset name\n * @param {object} params.data - asset data payload\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.updateAsset = ({ address, moniker, data, wallet }, extra) =>\n client.sendUpdateAssetTx(\n {\n tx: {\n itx: {\n moniker,\n address,\n data,\n },\n },\n wallet,\n },\n extra\n );\n\n /**\n * Create an asset factory that can be used to mint new assets in future transactions\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#createAssetFactory\n * @param {object} params\n * @param {string} params.factory - asset factory\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, factoryAddress]` once resolved\n */\n client.createAssetFactory = async ({ factory, wallet }, extra) => {\n const itx = {\n name: factory.name,\n description: factory.description,\n settlement: factory.settlement || 'instant',\n limit: factory.limit || 0,\n trustedIssuers: factory.trustedIssuers || [],\n input: factory.input,\n output: factory.output,\n data: factory.data || null,\n hooks: factory.hooks || [],\n display: factory.display || null,\n };\n\n itx.address = toFactoryAddress(itx);\n\n isValidFactory(itx, true);\n\n const hash = await client.sendCreateFactoryTx({ tx: { itx }, wallet }, extra);\n return [hash, itx.address];\n };\n\n /**\n * Prepare an acquire_asset itx\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#preMintAsset\n * @param {object} params\n * @param {string} params.factory - asset factory address\n * @param {object} params.inputs - factory inputs\n * @param {string} params.owner - who will own the asset\n * @param {WalletObject} params.wallet - the wallet of the asset issuer\n * @param {object} extra - other param to merge into the itx\n * @returns {Promise} the `[transactionHash, factoryAddress]` once resolved\n */\n client.preMintAsset = async ({ factory, inputs = {}, owner, wallet, extra = {} }) => {\n const options = { ignoreFields: ['context.genesisTx', 'context.renaissanceTx'] };\n const [{ state: factoryState }, { state: issuerState }] = await Promise.all([\n client.getFactoryState({ address: factory }, options),\n client.getAccountState({ address: wallet.address }, options),\n ]);\n\n if (!factoryState) {\n throw new Error('Factory does not exist on chain');\n }\n\n if (!issuerState) {\n throw new Error('Issuer does not exist on chain');\n }\n\n const { asset, address, issuer, variables } = preMintFromFactory({\n factory: formatFactoryState(factoryState),\n inputs,\n owner,\n issuer: { wallet, name: issuerState.moniker },\n });\n\n return Object.assign({}, extra, {\n asset: Object.assign({ address, owner, parent: factory }, asset),\n factory,\n address,\n variables: Object.entries(variables).map(([key, value]) => ({ name: key, value })),\n issuer,\n owner,\n });\n };\n\n /**\n * Acquire an asset from factory\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#acquireAsset\n * @param {object} params\n * @param {AcquireAssetV2Tx} params.itx - result from preMintAsset\n * @param {string} params.delegator - who authorized this transaction\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.acquireAsset = ({ itx, delegator = '', wallet }, extra) =>\n client.sendAcquireAssetV2Tx({ tx: { itx }, delegator, wallet }, extra);\n\n /**\n * Mint an asset from factory\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#mintAsset\n * @param {object} params\n * @param {MintAssetTx} params.itx - result from preMintAsset\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.mintAsset = ({ itx, wallet }, extra) => client.sendMintAssetTx({ tx: { itx }, wallet }, extra);\n\n /**\n * Transfer token or assets to another account\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#transfer\n * @param {object} params\n * @param {number} params.token - how much token can be transferred\n * @param {Array} params.assets - which assets should be transferred\n * @param {string} params.to - who receive the transfer\n * @param {string} params.memo - transaction note\n * @param {string} params.delegator - who authorized this transaction\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.transfer = async (\n { token = 0, assets = [], tokens = [], to = '', memo = '', delegator = '', wallet },\n extra\n ) => {\n if (isValid(to) === false) {\n throw new Error('Can not transfer without valid recipient');\n }\n if (!token && tokens.length === 0 && assets.length === 0) {\n throw new Error('Can not transfer without payload');\n }\n\n const { token: contextToken } = await client.getContext();\n\n let tmpTokens = [];\n if (tokens.length > 0) {\n const tokensMap = await client.getTokenStateMap(tokens.map((t) => t.address));\n tmpTokens = tokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n }\n\n return client.sendTransferV2Tx(\n {\n tx: {\n itx: {\n to,\n value: fromTokenToUnit(token, contextToken.decimal),\n assets,\n tokens: tmpTokens,\n data: {\n typeUrl: 'json',\n value: memo || 'empty',\n },\n },\n },\n delegator,\n wallet,\n },\n extra\n );\n };\n\n /**\n * Stake token or assets for another account\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#stake\n * @param {object} params\n * @param {Array} params.assets - which assets to stake\n * @param {Array} params.tokens - which tokens to stake\n * @param {string} params.to - who receive the stake\n * @param {string} params.locked - is the stake locked on creation\n * @param {string} params.message - stake note\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` and `stakeAddress` once resolved\n */\n client.stake = async ({ assets = [], tokens = [], to = '', locked = false, message = '', wallet }, extra) => {\n let tmpTokens = [];\n if (tokens.length > 0) {\n const tokensMap = await client.getTokenStateMap(tokens.map((t) => t.address));\n tmpTokens = tokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n }\n\n const from = wallet.address;\n const address = toStakeAddress(from, to);\n let tx = await client.multiSignStakeTx(\n {\n tx: {\n itx: {\n address,\n receiver: to,\n locked,\n message,\n inputs: [\n {\n owner: from,\n assets,\n tokens: tmpTokens,\n },\n ],\n },\n signatures: [\n {\n signer: from,\n pk: wallet.publicKey,\n },\n ],\n },\n wallet,\n },\n extra\n );\n\n tx = await client.signStakeTx({ tx, wallet });\n const hash = await client.sendStakeTx({ tx, wallet }, extra);\n return [hash, address];\n };\n\n /**\n * Revoke token or assets from some stake\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#revokeStake\n * @param {object} params\n * @param {Array} params.assets - which assets to stake\n * @param {Array} params.tokens - which tokens to stake\n * @param {string} params.from - stake address\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.revokeStake = async ({ assets = [], tokens = [], from = '', wallet }, extra) => {\n let tmpTokens = [];\n if (tokens.length > 0) {\n const tokensMap = await client.getTokenStateMap(tokens.map((t) => t.address));\n tmpTokens = tokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n }\n\n return client.sendRevokeStakeTx(\n {\n tx: {\n itx: {\n address: from,\n outputs: [\n {\n owner: wallet.address,\n assets,\n tokens: tmpTokens,\n },\n ],\n },\n },\n wallet,\n },\n extra\n );\n };\n\n /**\n * Claim revoked token or assets from stake\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#claimStake\n * @param {object} params\n * @param {string} params.from - stake address\n * @param {Array} params.evidence - which revoke tx hash to use\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.claimStake = async ({ from, evidence, wallet }, extra) => {\n if (!evidence) {\n throw new Error('Can not claim stake without valid evidence tx hash');\n }\n if (!from) {\n throw new Error('Can not claim stake without stake address');\n }\n\n return client.sendClaimStakeTx(\n {\n tx: {\n itx: {\n address: from,\n evidence: { hash: evidence },\n },\n },\n wallet,\n },\n extra\n );\n };\n\n /**\n * Create an rollup (sub-chain that lives in ocap)\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#createRollup\n * @param {object} params\n * @param {string} params.tokenAddress - ocap token address\n * @param {string} params.contractAddress - rollup contract address\n * @param {string} params.minStakeAmount\n * @param {string} params.maxStakeAmount\n * @param {number} params.minSignerCount\n * @param {number} params.maxSignerCount\n * @param {number} params.minBlockSize\n * @param {number} params.maxBlockSize\n * @param {number} params.minBlockInterval - in seconds\n * @param {number} params.minBlockConfirmation\n * @param {number} params.leaveWaitingPeriod\n * @param {number} params.publishWaitingPeriod\n * @param {number} params.publishSlashRate\n * @param {Array} params.seedValidators - list of seed validators\n * @param {object} params.data - data payload\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, rollupAddress]` once resolved\n */\n client.createRollup = async (props, extra) => {\n const requiredProps = ['tokenAddress', 'contractAddress', 'seedValidators', 'minStakeAmount'];\n for (const key of requiredProps) {\n if (!props[key]) {\n throw new Error(`Missing required property: ${key} when creating rollup`);\n }\n }\n\n const { state } = await client.getTokenState({ address: props.tokenAddress });\n if (!state) {\n throw new Error(`Token ${props.tokenAddress} not found when creating rollup`);\n }\n if (!state.foreignToken) {\n throw new Error(`Token ${props.tokenAddress} does not have foreignToken attached`);\n }\n\n const toBNStr = (n) => fromTokenToUnit(n, state.decimal).toString(10);\n const itx = Object.assign(\n {\n maxStakeAmount: props.minStakeAmount,\n minSignerCount: 3,\n maxSignerCount: 5,\n minBlockSize: 1,\n maxBlockSize: 10,\n minBlockInterval: 1 * 60, // 1 minute\n minBlockConfirmation: 3,\n minDepositAmount: toBNStr(100),\n maxDepositAmount: toBNStr(1000000),\n minWithdrawAmount: toBNStr(100),\n maxWithdrawAmount: toBNStr(1000000),\n depositFeeRate: 100, // 1%\n withdrawFeeRate: 100, // 1%\n publisherFeeShare: 6000, // 60%\n proposerFeeShare: 3000, // 30%\n // validatorFeeShare: 1000, // 10%\n minDepositFee: toBNStr(1),\n maxDepositFee: toBNStr(10000),\n minWithdrawFee: toBNStr(1),\n maxWithdrawFee: toBNStr(10000),\n leaveWaitingPeriod: 60 * 60, // 1 hour\n publishWaitingPeriod: 60 * 60, // 1 hour\n publishSlashRate: 10, // 0.1%\n },\n props\n );\n\n const address = toRollupAddress(itx);\n itx.address = address;\n\n const hash = await client.sendCreateRollupTx({ tx: { itx }, wallet: props.wallet }, extra);\n\n return [hash, address];\n };\n\n /**\n * Prepare an exchange transaction between multiple accounts\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#prepareExchange\n * @param {object} params\n * @param {number} params.offerToken - how much token can be sent\n * @param {Array} params.offerAssets - which assets should be sent\n * @param {number} params.demandToken - how much token can be received\n * @param {Array} params.demandAssets - which assets should be received\n * @param {string} params.receiver - who receive the transfer\n * @param {string} params.memo - transaction note\n * @param {string} params.delegator - which assets should be transferred\n * @param {WalletObject} params.wallet - the wallet who is the offerer\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transaction` object once resolved\n */\n client.prepareExchange = async (\n {\n offerToken = 0,\n offerAssets = [],\n demandToken = 0,\n demandAssets = [],\n offerTokens = [],\n demandTokens = [],\n receiver = '',\n memo = '',\n delegator = '',\n wallet,\n },\n extra\n ) => {\n const { token } = await client.getContext();\n const tokensMap = await client.getTokenStateMap([...offerTokens, ...demandTokens].map((t) => t.address));\n\n const tmpOfferTokens = offerTokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n const tmpDemandTokens = demandTokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n\n return client.signExchangeV2Tx(\n {\n tx: {\n itx: {\n to: receiver,\n sender: {\n value: fromTokenToUnit(offerToken, token.decimal),\n assets: Array.isArray(offerAssets) ? offerAssets : [],\n tokens: tmpOfferTokens,\n },\n receiver: {\n value: fromTokenToUnit(demandToken, token.decimal),\n assets: Array.isArray(demandAssets) ? demandAssets : [],\n tokens: tmpDemandTokens,\n },\n data: {\n typeUrl: 'json',\n value: memo || 'empty',\n },\n },\n },\n delegator,\n wallet,\n },\n extra\n );\n };\n\n /**\n * Finalize an exchange transaction between multiple accounts\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#finalizeExchange\n * @param {object} params\n * @param {object} params.tx - the transaction object from `prepareExchange`\n * @param {string} params.delegator - who authorized this transaction\n * @param {object} params.data - extra data in the multi sig\n * @param {WalletObject} params.wallet - the wallet who is the demander\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transaction` object once resolved\n */\n client.finalizeExchange = ({ tx, delegator = '', data, wallet }, extra) =>\n client.multiSignExchangeV2Tx({ tx, delegator, data, wallet }, extra);\n\n /**\n * Send an exchange transaction\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#exchange\n * @param {object} params\n * @param {object} params.tx - the transaction object from `finalizeExchange`\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.exchange = ({ tx, wallet }, extra) => client.sendExchangeV2Tx({ tx, wallet }, extra);\n\n /**\n * Create an new token\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#createToken\n * @param {object} params\n * @param {string} params.name\n * @param {string} params.description\n * @param {string} params.symbol\n * @param {string} params.unit\n * @param {string} params.icon\n * @param {number} params.totalSupply\n * @param {number} params.initialSupply\n * @param {number} params.foreignToken\n * @param {object} params.data - asset data payload\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, assetAddress]` once resolved\n */\n client.createToken = async (\n { name, description, symbol, unit, decimal, icon, totalSupply, initialSupply, foreignToken, data, wallet },\n extra\n ) => {\n const tokenDecimal = typeof decimal === 'undefined' ? DEFAULT_TOKEN_DECIMAL : decimal;\n\n const payload = {\n name,\n description,\n symbol,\n unit,\n decimal: tokenDecimal,\n icon,\n totalSupply: fromTokenToUnit(totalSupply, tokenDecimal).toString(),\n initialSupply: fromTokenToUnit(initialSupply || totalSupply, tokenDecimal).toString(),\n foreignToken: foreignToken || null,\n data,\n };\n\n const address = toTokenAddress(payload);\n payload.address = address;\n const hash = await client.sendCreateTokenTx(\n {\n tx: { itx: payload },\n wallet,\n },\n extra\n );\n return [hash, address];\n };\n};\n\nmodule.exports = { createExtensionMethods };\n"]}
1
+ {"version":3,"sources":["../src/extension.js"],"names":["get","require","omit","cloneDeep","camelCase","toTypeInfoStr","isValid","transactions","typeUrls","multiSignTxs","multiSignV2Txs","createMessage","getMessageType","toTypeUrl","bytesToHex","toBase58","toBase64","toHex","toBuffer","fromTokenToUnit","fromUnitToToken","DEFAULT_TOKEN_DECIMAL","formatFactoryState","preMintFromFactory","isValidFactory","toDelegateAddress","toAssetAddress","toFactoryAddress","toTokenAddress","toStakeAddress","toRollupAddress","debug","name","createExtensionMethods","client","encodeTxAsBase64","Object","defineProperty","value","loading","ready","callbacks","token","getContext","decimal","amount","getTxSendMethods","map","x","getTxEncodeMethods","getTxSignMethods","getTxMultiSignMethods","concat","getType","fn","decodeTx","input","Transaction","deserializeBinary","toObject","ctx","context","Promise","resolve","push","result","doRawQuery","chainId","consensus","txConfig","tokenStateMap","Map","forEach","cb","getTokenStateMap","addressList","notExistAddressList","address","has","set","size","length","getTokenState","code","state","Error","all","getWallet","wallet","publicKey","toAddress","pk","txEncodeFn","tx","delegator","w","from","nonce","Date","now","signatures","Array","isArray","signaturesList","itx","typeUrl","type","feeConfig","find","t","txObj","signature","Buffer","serviceFee","fee","txToSignBytes","serializeBinary","object","buffer","encodeMethod","__tx__","txSendFn","commit","extra","encoded","res","sign","reject","txBytes","txStr","hash","sendTx","err","sendMethod","_formatEncodedTx","encoding","txSignFn","signMethod","includes","txMultiSignFn","data","unshift","signer","multiSignMethod","item","s","declare","moniker","issuer","itxData","sendDeclareTx","migrateAccount","to","sendAccountMigrateTx","delegate","privileges","ops","rules","txTypes","values","filter","startsWith","some","sendDelegateTx","revokeDelegate","sendRevokeDelegateTx","Boolean","toString","createAsset","parent","ttl","readonly","transferrable","display","endpoint","tags","payload","sendCreateAssetTx","updateAsset","sendUpdateAssetTx","createAssetFactory","factory","description","settlement","limit","trustedIssuers","output","hooks","sendCreateFactoryTx","preMintAsset","inputs","owner","options","ignoreFields","factoryState","issuerState","getFactoryState","getAccountState","asset","variables","assign","entries","key","acquireAsset","sendAcquireAssetV2Tx","mintAsset","sendMintAssetTx","transfer","assets","tokens","memo","contextToken","tmpTokens","tokensMap","sendTransferV2Tx","stake","locked","message","multiSignStakeTx","receiver","signStakeTx","sendStakeTx","revokeStake","sendRevokeStakeTx","outputs","claimStake","evidence","sendClaimStakeTx","createRollup","props","requiredProps","tokenAddress","foreignToken","toBNStr","n","maxStakeAmount","minStakeAmount","minSignerCount","maxSignerCount","minBlockSize","maxBlockSize","minBlockInterval","minBlockConfirmation","minDepositAmount","maxDepositAmount","minWithdrawAmount","maxWithdrawAmount","depositFeeRate","withdrawFeeRate","publisherFeeShare","proposerFeeShare","minDepositFee","maxDepositFee","minWithdrawFee","maxWithdrawFee","leaveWaitingPeriod","publishWaitingPeriod","publishSlashRate","sendCreateRollupTx","prepareExchange","offerToken","offerAssets","demandToken","demandAssets","offerTokens","demandTokens","tmpOfferTokens","tmpDemandTokens","signExchangeV2Tx","sender","finalizeExchange","multiSignExchangeV2Tx","exchange","sendExchangeV2Tx","createToken","symbol","unit","icon","totalSupply","initialSupply","tokenDecimal","sendCreateTokenTx","module","exports"],"mappings":"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","file":"extension.js","sourcesContent":["/* eslint-disable prefer-object-spread */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable object-curly-newline */\nconst get = require('lodash/get');\nconst omit = require('lodash/omit');\nconst cloneDeep = require('lodash/cloneDeep');\nconst camelCase = require('lodash/camelCase');\nconst { toTypeInfoStr, isValid } = require('@arcblock/did');\nconst { transactions, typeUrls, multiSignTxs, multiSignV2Txs } = require('@ocap/proto');\nconst { createMessage, getMessageType, toTypeUrl } = require('@ocap/message');\nconst { bytesToHex, toBase58, toBase64, toHex, toBuffer, fromTokenToUnit, fromUnitToToken } = require('@ocap/util');\nconst { DEFAULT_TOKEN_DECIMAL } = require('@ocap/util/lib/constant');\nconst { formatFactoryState, preMintFromFactory, isValidFactory } = require('@ocap/asset');\nconst {\n toDelegateAddress,\n toAssetAddress,\n toFactoryAddress,\n toTokenAddress,\n toStakeAddress,\n toRollupAddress,\n} = require('@arcblock/did-util');\n\nconst debug = require('debug')(require('../package.json').name);\n\n/**\n * Generate extension methods on the fly\n *\n * @public\n * @param {object} client\n * @param {object} [{ encodeTxAsBase64 = false }={}]\n */\nconst createExtensionMethods = (client, { encodeTxAsBase64 = false } = {}) => {\n Object.defineProperty(client, 'ctx', {\n value: {\n loading: false,\n ready: false,\n callbacks: [],\n },\n });\n\n /**\n * Format big number presentation amount to token number\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#fromUnitToToken\n * @param {string} value\n * @returns {string}\n */\n client.fromUnitToToken = async (value) => {\n const { token } = await client.getContext();\n return fromUnitToToken(value, token.decimal);\n };\n\n /**\n * Encode amount to corresponding token big number presentation\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#fromTokenToUnit\n * @param {number} amount\n * @returns {BN}\n */\n client.fromTokenToUnit = async (amount) => {\n const { token } = await client.getContext();\n return fromTokenToUnit(amount, token.decimal);\n };\n\n /**\n * List all transaction send methods\n * Each method can send one kind of transactions supported by forge core, such as `DeclareTx`\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getTxSendMethods\n * @returns {Array<string>} method name list\n */\n client.getTxSendMethods = () => transactions.map((x) => camelCase(`send_${x}`));\n\n /**\n * List all transaction encode methods, each method can be used to encode transaction to buffer and object\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getTxEncodeMethods\n * @returns {Array<string>} method name list\n */\n client.getTxEncodeMethods = () => transactions.map((x) => camelCase(`encode_${x}`));\n\n /**\n * List all transaction sign methods, each method can be used to sign transaction to an object\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getTxSignMethods\n * @returns {Array<string>} method name list\n */\n client.getTxSignMethods = () => transactions.map((x) => camelCase(`sign_${x}`));\n\n /**\n * List all transaction multi sign methods, each method can be used to do multi sign a transaction\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getTxMultiSignMethods\n * @returns {Array<string>} method name list\n */\n client.getTxMultiSignMethods = () => multiSignTxs.concat(multiSignV2Txs).map((x) => camelCase(`multi_sign_${x}`));\n\n /**\n * Get protobuf message class by name, only supports forge-built-in types\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#getType\n * @param {string} x\n * @returns {class|null} message type\n */\n client.getType = (x) => getMessageType(x).fn;\n\n /**\n * Decode transaction buffer/base64/base58 to an object\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#decodeTx\n * @param {buffer|hex|base48|base64} input\n * @returns {object} transaction object\n */\n client.decodeTx = (input) => {\n const Transaction = client.getType('Transaction');\n return Transaction.deserializeBinary(toBuffer(input)).toObject();\n };\n\n /**\n * Ensure a connection is bootstrapped with some meta info fetched from chain node\n *\n * @private\n * @param {string} [conn=undefined]\n * @returns {object}\n */\n client.getContext = async () => {\n if (client.ctx.ready) {\n return client.context;\n }\n\n if (client.ctx.loading) {\n return new Promise((resolve) => {\n client.ctx.callbacks.push(() => resolve(client.context));\n });\n }\n\n client.ctx.loading = true;\n const result = await client.doRawQuery(`{\n getChainInfo {\n code\n info {\n network\n consensusVersion\n }\n }\n getForgeState {\n code\n state {\n token {\n decimal\n symbol\n }\n txConfig {\n txFee {\n fee\n typeUrl\n }\n }\n }\n }\n }`);\n\n client.context = {\n chainId: get(result, 'getChainInfo.info.network'),\n consensus: get(result, 'getChainInfo.info.consensusVersion'),\n token: get(result, 'getForgeState.state.token'),\n txConfig: get(result, 'getForgeState.state.txConfig'),\n tokenStateMap: new Map(),\n };\n\n client.ctx.ready = true;\n client.ctx.loading = false;\n client.ctx.callbacks.forEach((cb) => cb());\n debug('context ready');\n\n return client.context;\n };\n\n client.getTokenStateMap = async (addressList) => {\n const result = new Map();\n const notExistAddressList = [];\n addressList.forEach((address) => {\n if (client.context.tokenStateMap.has(address)) {\n result.set(address, client.context.tokenStateMap.get(address));\n } else {\n notExistAddressList.push(address);\n }\n });\n\n if (result.size === addressList.length) {\n return result;\n }\n\n const getTokenState = async (address) => {\n const {\n getTokenState: { code, state },\n } = await client.doRawQuery(`{\n getTokenState(address: \"${address}\") {\n code\n state {\n decimal\n }\n }\n }`);\n\n if (code !== 'OK') {\n throw new Error(`get token ${address} state failed`);\n }\n\n result.set(address, state);\n client.context.tokenStateMap.set(address, state);\n };\n\n await Promise.all(notExistAddressList.map((address) => getTokenState(address)));\n\n return result;\n };\n\n // Unify a client wallet | forge managed wallet\n const getWallet = (wallet) => {\n if (!wallet) {\n return {\n address: '',\n publicKey: '',\n };\n }\n\n if (typeof wallet.toAddress === 'function') {\n return {\n address: wallet.address,\n publicKey: wallet.publicKey,\n };\n }\n\n return {\n address: wallet.address,\n publicKey: wallet.pk || wallet.publicKey || '',\n };\n };\n\n // Generate transaction sign/send/encode functions on fly\n transactions.forEach((x) => {\n /**\n * Encode a transaction\n *\n * @param {object} input\n * @param {object} input.tx - data of the transaction\n * @param {object} input.tx.itx - the actual transaction object\n * @param {object} [input.tx.from] - the sender address, can be derived from wallet\n * @param {object} [input.tx.nonce] - the tx nonce, defaults to Date.now if not set\n * @param {object} [input.tx.chainId] - the chainId\n * @param {object} [input.tx.signature] - the signature\n * @param {object} [input.tx.signatures] - the signature list\n * @param {object} input.wallet - the wallet used to sign the transaction\n * @param {object} input.delegator - the wallet address that delegated permissions to the `input.wallet` address\n * @returns Promise\n */\n const txEncodeFn = async ({ tx, wallet, delegator }) => {\n const w = getWallet(wallet);\n const context = await client.getContext();\n\n // Determine sender address\n const address = tx.from || w.address;\n const pk = tx.pk || w.publicKey;\n\n // Determine chainId & nonce, only attach new one when not exist\n const nonce = typeof tx.nonce === 'undefined' ? Date.now() : tx.nonce;\n let chainId = tx.chainId || '';\n if (!chainId) {\n // eslint-disable-next-line prefer-destructuring\n chainId = context.chainId;\n }\n\n // Determine signatures for multi sig\n let signatures = [];\n if (Array.isArray(tx.signatures)) {\n // eslint-disable-next-line prefer-destructuring\n signatures = tx.signatures;\n }\n if (Array.isArray(tx.signaturesList)) {\n signatures = tx.signaturesList;\n }\n\n // Determine itx\n let itx = null;\n if (tx.itx.typeUrl && tx.itx.value) {\n // eslint-disable-next-line prefer-destructuring\n itx = tx.itx;\n } else {\n itx = { type: x, value: tx.itx };\n }\n\n const type = itx.typeUrl || toTypeUrl(itx.type);\n const feeConfig = get(context, 'txConfig.txFee', []).find((t) => t.typeUrl === type);\n\n const txObj = createMessage('Transaction', {\n from: tx.delegator ? address : delegator || address,\n nonce,\n pk,\n chainId,\n signature: tx.signature || Buffer.from([]),\n signatures,\n delegator: tx.delegator || (delegator ? address : ''),\n itx,\n serviceFee: feeConfig ? feeConfig.fee : '0',\n });\n const txToSignBytes = txObj.serializeBinary();\n\n debug(`encodeTx.${x}.txObj`, txObj.toObject());\n\n return { object: txObj.toObject(), buffer: Buffer.from(txToSignBytes) };\n };\n\n const encodeMethod = camelCase(`encode_${x}`);\n txEncodeFn.__tx__ = encodeMethod;\n client[encodeMethod] = txEncodeFn;\n\n /**\n * Send a transaction\n *\n * @param {object} input\n * @param {object} input.tx - data of the transaction\n * @param {object} input.tx.itx - the actual transaction object\n * @param {object} [input.tx.from] - the sender address, can be derived from wallet\n * @param {object} [input.tx.nonce] - the tx nonce, defaults to Date.now if not set\n * @param {object} [input.tx.chainId] - the chainId\n * @param {object} [input.tx.signature] - the signature\n * @param {object} [input.tx.signatures] - the signatures\n * @param {object} [input.commit=false] - whether we should wait for transaction commit\n * @param {object} input.wallet - the wallet used to sign the transaction, either a forge managed wallet or user managed wallet\n * @param {object} [input.signature] - the signature of the tx, if exist, we will not sign the transaction\n * @param {object} input.delegator - the wallet address that delegated permissions to the `input.wallet` address\n * @returns {Promise<string>}\n */\n const txSendFn = async ({ tx, wallet, signature, delegator, commit = false }, extra = {}) => {\n let encoded;\n if (signature) {\n encoded = tx;\n encoded.signature = signature;\n } else if (tx.signature) {\n const res = await txEncodeFn({ tx, wallet, delegator });\n encoded = res.object;\n } else {\n const res = await txEncodeFn({ tx, wallet, delegator });\n encoded = res.object;\n encoded.signature = wallet.sign(bytesToHex(res.buffer));\n }\n\n // eslint-disable-next-line no-async-promise-executor\n return new Promise(async (resolve, reject) => {\n try {\n if (encodeTxAsBase64) {\n const txObj = createMessage('Transaction', encoded);\n const txBytes = txObj.serializeBinary();\n const txStr = toBase64(txBytes);\n debug(`sendTx.${x}.txObj`, txObj.toObject());\n const { hash } = await client.sendTx({ tx: txStr, commit }, extra);\n resolve(hash);\n } else {\n const txObj = createMessage('Transaction', encoded).toObject();\n debug(`sendTx.${x}.txObj`, txObj);\n const { hash } = await client.sendTx({ tx: txObj, commit }, extra);\n resolve(hash);\n }\n } catch (err) {\n reject(err);\n }\n });\n };\n\n const sendMethod = camelCase(`send_${x}`);\n txSendFn.__tx__ = sendMethod;\n client[sendMethod] = txSendFn;\n\n const _formatEncodedTx = async (tx, encoding) => {\n if (encoding) {\n const { buffer: txBytes } = await txEncodeFn({ tx });\n if (encoding === 'base64') {\n return toBase64(txBytes);\n }\n if (encoding === 'base58') {\n return toBase58(txBytes);\n }\n if (encoding === 'base16' || encoding === 'hex') {\n return toHex(txBytes);\n }\n return txBytes;\n }\n\n return tx;\n };\n\n // Generate transaction signing function\n const txSignFn = async ({ tx, wallet, delegator, encoding = '' }) => {\n if (tx.signature) {\n delete tx.signature;\n }\n\n const { object, buffer } = await txEncodeFn({ tx, wallet, delegator });\n object.signature = wallet.sign(buffer);\n\n return _formatEncodedTx(object, encoding);\n };\n const signMethod = camelCase(`sign_${x}`);\n txSignFn.__tx__ = signMethod;\n client[signMethod] = txSignFn;\n\n // TODO: verify existing signatures before adding new signatures\n // Generate transaction multi sign function\n if (multiSignTxs.includes(x)) {\n const txMultiSignFn = async ({ tx, wallet, delegator, data, encoding = '' }) => {\n if (typeof wallet.toAddress !== 'function') {\n throw new Error('Multisig requires a valid wallet');\n }\n tx.signaturesList = tx.signatures || tx.signaturesList || [];\n if (delegator) {\n tx.signaturesList.unshift({\n pk: wallet.publicKey,\n signer: delegator,\n delegator: wallet.address,\n data,\n });\n } else {\n tx.signaturesList.unshift({\n pk: wallet.publicKey,\n signer: wallet.address,\n delegator: '',\n data,\n });\n }\n\n const { object, buffer } = await txEncodeFn({ tx, wallet });\n object.signaturesList[0].signature = wallet.sign(bytesToHex(buffer));\n return _formatEncodedTx(object, encoding);\n };\n const multiSignMethod = camelCase(`multi_sign_${x}`);\n txMultiSignFn.__tx__ = multiSignMethod;\n client[multiSignMethod] = txMultiSignFn;\n }\n\n if (multiSignV2Txs.includes(x)) {\n const txMultiSignFn = async ({ tx, wallet, encoding = '' }) => {\n if (typeof wallet.toAddress !== 'function') {\n throw new Error('Multisig requires a valid wallet');\n }\n\n const signer = wallet.address;\n const signatures = cloneDeep(tx.signatures || tx.signaturesList || []);\n const item = signatures.find((s) => s.signer === signer || s.delegator === signer);\n if (!item) {\n throw new Error('Signer not in the list');\n }\n\n tx.signaturesList = signatures.map((s) => omit(s, ['signature']));\n const { object, buffer } = await txEncodeFn({ tx, wallet });\n\n item.signature = wallet.sign(bytesToHex(buffer));\n object.signaturesList = signatures;\n return _formatEncodedTx(object, encoding);\n };\n const multiSignMethod = camelCase(`multi_sign_${x}`);\n txMultiSignFn.__tx__ = multiSignMethod;\n client[multiSignMethod] = txMultiSignFn;\n }\n });\n\n /**\n * Declare an DID and it's public key on chain\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#declare\n * @param {object} params\n * @param {string} params.moniker - user nickname\n * @param {string} [params.issuer=\"\"] - who issued the account\n * @param {object} [params.data=undefined] - who issued the account\n * @param {WalletObject} params.wallet - wallet to sign the tx\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the transaction hash once resolved\n */\n client.declare = ({ moniker, issuer = '', data, wallet }, extra) => {\n let itxData = data;\n\n // If there is no data attached to the account, we can attach wallet type by default\n if (!itxData) {\n itxData = { typeUrl: 'json', value: toTypeInfoStr(wallet.address) };\n }\n\n return client.sendDeclareTx(\n {\n tx: {\n itx: { moniker, issuer, data: itxData },\n },\n wallet,\n },\n extra\n );\n };\n\n /**\n * Migrate current account to a new account\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#migrateAccount\n * @param {object} params\n * @param {WalletObject} params.from - which account to migrate from\n * @param {WalletObject} params.to - which account to migrate to\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the transaction hash once resolved\n */\n client.migrateAccount = ({ from, to }, extra) =>\n client.sendAccountMigrateTx(\n {\n tx: {\n itx: {\n address: to.address,\n pk: to.publicKey,\n type: to.type,\n },\n },\n wallet: from,\n },\n extra\n );\n\n /**\n * Delegate some privileges to another account\n * So that that account can send transactions on behalf of the delegator\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#delegate\n * @param {object} params\n * @param {WalletObject} params.from - the delegator, who grants the privilege to others\n * @param {WalletObject} params.to - the delegatee, who is authorized to send transactions\n * @param {Array} params.privileges - the privilege settings\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, delegateAddress]` once resolved\n */\n client.delegate = async ({ from, to, privileges }, extra) => {\n let ops = Array.isArray(privileges) ? privileges : [privileges];\n ops = ops.map((x) => {\n if (x.typeUrl && Array.isArray(x.rules)) {\n return x;\n }\n\n return { typeUrl: x.typeUrl, rules: [] };\n });\n\n const txTypes = Object.values(typeUrls).filter((x) => x.startsWith('fg:t:'));\n if (ops.some((x) => txTypes.includes(x.typeUrl) === false)) {\n throw new Error('Invalid type url provided for delegation');\n }\n\n const address = toDelegateAddress(from.address, to.address);\n const hash = await client.sendDelegateTx(\n {\n tx: {\n itx: {\n address,\n to: to.address,\n ops,\n },\n },\n wallet: from,\n },\n extra\n );\n\n return [hash, address];\n };\n\n /**\n * Revoke a previous delegation\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#revokeDelegate\n * @param {object} params\n * @param {WalletObject} params.from - the delegator, who grants the privilege to others\n * @param {WalletObject} params.to - the delegatee, who is authorized to send transactions\n * @param {Array} params.privileges - the privilege settings\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the transaction hash once resolved\n */\n client.revokeDelegate = ({ from, to, privileges }, extra) =>\n client.sendRevokeDelegateTx(\n {\n tx: {\n itx: {\n address: toDelegateAddress(from.address, to.address),\n to: to.address,\n typeUrls: privileges.filter(Boolean).map((x) => x.toString()),\n },\n },\n wallet: from,\n },\n extra\n );\n\n /**\n * Create an new asset (non-fungible-token)\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#createAsset\n * @param {object} params\n * @param {string} params.moniker - asset name\n * @param {string} params.parent - asset parent\n * @param {object} params.data - asset data payload\n * @param {number} params.ttl - ttl after first consumption\n * @param {boolean} params.readonly - whether the asset can be updated after creation\n * @param {boolean} params.transferrable - whether the asset can be transferred to another account\n * @param {object} params.display - the display of the asset\n * @param {object} params.endpoint - the endpoint of the asset\n * @param {string} params.tags - the tag list of the asset\n * @param {string} params.delegator - who authorized this transaction\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, assetAddress]` once resolved\n */\n client.createAsset = async (\n {\n moniker,\n parent = '',\n ttl = 0,\n data,\n readonly = false,\n transferrable = true,\n display,\n endpoint,\n tags = [],\n delegator = '',\n wallet,\n },\n extra\n ) => {\n const payload = { moniker, parent, ttl, readonly, transferrable, data, display, endpoint, tags };\n const address = toAssetAddress(payload);\n payload.address = address;\n const hash = await client.sendCreateAssetTx(\n {\n tx: { itx: payload },\n delegator,\n wallet,\n },\n extra\n );\n return [hash, address];\n };\n\n /**\n * Update an existing asset (non-fungible-token)\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#updateAsset\n * @param {object} params\n * @param {string} params.address - asset address\n * @param {string} params.moniker - asset name\n * @param {object} params.data - asset data payload\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.updateAsset = ({ address, moniker, data, wallet }, extra) =>\n client.sendUpdateAssetTx(\n {\n tx: {\n itx: {\n moniker,\n address,\n data,\n },\n },\n wallet,\n },\n extra\n );\n\n /**\n * Create an asset factory that can be used to mint new assets in future transactions\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#createAssetFactory\n * @param {object} params\n * @param {string} params.factory - asset factory\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, factoryAddress]` once resolved\n */\n client.createAssetFactory = async ({ factory, wallet }, extra) => {\n const itx = {\n name: factory.name,\n description: factory.description,\n settlement: factory.settlement || 'instant',\n limit: factory.limit || 0,\n trustedIssuers: factory.trustedIssuers || [],\n input: factory.input,\n output: factory.output,\n data: factory.data || null,\n hooks: factory.hooks || [],\n display: factory.display || null,\n };\n\n itx.address = toFactoryAddress(itx);\n\n isValidFactory(itx, true);\n\n const hash = await client.sendCreateFactoryTx({ tx: { itx }, wallet }, extra);\n return [hash, itx.address];\n };\n\n /**\n * Prepare an acquire_asset itx\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#preMintAsset\n * @param {object} params\n * @param {string} params.factory - asset factory address\n * @param {object} params.inputs - factory inputs\n * @param {string} params.owner - who will own the asset\n * @param {WalletObject} params.wallet - the wallet of the asset issuer\n * @param {object} extra - other param to merge into the itx\n * @returns {Promise} the `[transactionHash, factoryAddress]` once resolved\n */\n client.preMintAsset = async ({ factory, inputs = {}, owner, wallet, extra = {} }) => {\n const options = { ignoreFields: ['context.genesisTx', 'context.renaissanceTx'] };\n const [{ state: factoryState }, { state: issuerState }] = await Promise.all([\n client.getFactoryState({ address: factory }, options),\n client.getAccountState({ address: wallet.address }, options),\n ]);\n\n if (!factoryState) {\n throw new Error('Factory does not exist on chain');\n }\n\n if (!issuerState) {\n throw new Error('Issuer does not exist on chain');\n }\n\n const { asset, address, issuer, variables } = preMintFromFactory({\n factory: formatFactoryState(factoryState),\n inputs,\n owner,\n issuer: { wallet, name: issuerState.moniker },\n });\n\n return Object.assign({}, extra, {\n asset: Object.assign({ address, owner, parent: factory }, asset),\n factory,\n address,\n variables: Object.entries(variables).map(([key, value]) => ({ name: key, value })),\n issuer,\n owner,\n });\n };\n\n /**\n * Acquire an asset from factory\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#acquireAsset\n * @param {object} params\n * @param {AcquireAssetV2Tx} params.itx - result from preMintAsset\n * @param {string} params.delegator - who authorized this transaction\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.acquireAsset = ({ itx, delegator = '', wallet }, extra) =>\n client.sendAcquireAssetV2Tx({ tx: { itx }, delegator, wallet }, extra);\n\n /**\n * Mint an asset from factory\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#mintAsset\n * @param {object} params\n * @param {MintAssetTx} params.itx - result from preMintAsset\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.mintAsset = ({ itx, wallet }, extra) => client.sendMintAssetTx({ tx: { itx }, wallet }, extra);\n\n /**\n * Transfer token or assets to another account\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#transfer\n * @param {object} params\n * @param {number} params.token - how much token can be transferred\n * @param {Array} params.assets - which assets should be transferred\n * @param {string} params.to - who receive the transfer\n * @param {string} params.memo - transaction note\n * @param {string} params.delegator - who authorized this transaction\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.transfer = async (\n { token = 0, assets = [], tokens = [], to = '', memo = '', delegator = '', wallet },\n extra\n ) => {\n if (isValid(to) === false) {\n throw new Error('Can not transfer without valid recipient');\n }\n if (!token && tokens.length === 0 && assets.length === 0) {\n throw new Error('Can not transfer without payload');\n }\n\n const { token: contextToken } = await client.getContext();\n\n let tmpTokens = [];\n if (tokens.length > 0) {\n const tokensMap = await client.getTokenStateMap(tokens.map((t) => t.address));\n tmpTokens = tokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n }\n\n return client.sendTransferV2Tx(\n {\n tx: {\n itx: {\n to,\n value: fromTokenToUnit(token, contextToken.decimal),\n assets,\n tokens: tmpTokens,\n data: {\n typeUrl: 'json',\n value: memo || 'empty',\n },\n },\n },\n delegator,\n wallet,\n },\n extra\n );\n };\n\n /**\n * Stake token or assets for another account\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#stake\n * @param {object} params\n * @param {Array} params.assets - which assets to stake\n * @param {Array} params.tokens - which tokens to stake\n * @param {string} params.to - who receive the stake\n * @param {string} params.locked - is the stake locked on creation\n * @param {string} params.message - stake note\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` and `stakeAddress` once resolved\n */\n client.stake = async ({ assets = [], tokens = [], to = '', locked = false, message = '', wallet }, extra) => {\n let tmpTokens = [];\n if (tokens.length > 0) {\n const tokensMap = await client.getTokenStateMap(tokens.map((t) => t.address));\n tmpTokens = tokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n }\n\n const from = wallet.address;\n const address = toStakeAddress(from, to);\n let tx = await client.multiSignStakeTx(\n {\n tx: {\n itx: {\n address,\n receiver: to,\n locked,\n message,\n inputs: [\n {\n owner: from,\n assets,\n tokens: tmpTokens,\n },\n ],\n },\n signatures: [\n {\n signer: from,\n pk: wallet.publicKey,\n },\n ],\n },\n wallet,\n },\n extra\n );\n\n tx = await client.signStakeTx({ tx, wallet });\n const hash = await client.sendStakeTx({ tx, wallet }, extra);\n return [hash, address];\n };\n\n /**\n * Revoke token or assets from some stake\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#revokeStake\n * @param {object} params\n * @param {Array} params.assets - which assets to stake\n * @param {Array} params.tokens - which tokens to stake\n * @param {string} params.from - stake address\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.revokeStake = async ({ assets = [], tokens = [], from = '', wallet }, extra) => {\n let tmpTokens = [];\n if (tokens.length > 0) {\n const tokensMap = await client.getTokenStateMap(tokens.map((t) => t.address));\n tmpTokens = tokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n }\n\n return client.sendRevokeStakeTx(\n {\n tx: {\n itx: {\n address: from,\n outputs: [\n {\n owner: wallet.address,\n assets,\n tokens: tmpTokens,\n },\n ],\n },\n },\n wallet,\n },\n extra\n );\n };\n\n /**\n * Claim revoked token or assets from stake\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#claimStake\n * @param {object} params\n * @param {string} params.from - stake address\n * @param {Array} params.evidence - which revoke tx hash to use\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.claimStake = async ({ from, evidence, wallet }, extra) => {\n if (!evidence) {\n throw new Error('Can not claim stake without valid evidence tx hash');\n }\n if (!from) {\n throw new Error('Can not claim stake without stake address');\n }\n\n return client.sendClaimStakeTx(\n {\n tx: {\n itx: {\n address: from,\n evidence: { hash: evidence },\n },\n },\n wallet,\n },\n extra\n );\n };\n\n /**\n * Create an rollup (sub-chain that lives in ocap)\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#createRollup\n * @param {object} params\n * @param {string} params.tokenAddress - ocap token address\n * @param {string} params.contractAddress - rollup contract address\n * @param {string} params.minStakeAmount\n * @param {string} params.maxStakeAmount\n * @param {number} params.minSignerCount\n * @param {number} params.maxSignerCount\n * @param {number} params.minBlockSize\n * @param {number} params.maxBlockSize\n * @param {number} params.minBlockInterval - in seconds\n * @param {number} params.minBlockConfirmation\n * @param {number} params.leaveWaitingPeriod\n * @param {number} params.publishWaitingPeriod\n * @param {number} params.publishSlashRate\n * @param {Array} params.seedValidators - list of seed validators\n * @param {object} params.data - data payload\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, rollupAddress]` once resolved\n */\n client.createRollup = async (props, extra) => {\n const requiredProps = ['tokenAddress', 'contractAddress', 'seedValidators', 'minStakeAmount'];\n for (const key of requiredProps) {\n if (!props[key]) {\n throw new Error(`Missing required property: ${key} when creating rollup`);\n }\n }\n\n const { state } = await client.getTokenState({ address: props.tokenAddress });\n if (!state) {\n throw new Error(`Token ${props.tokenAddress} not found when creating rollup`);\n }\n if (!state.foreignToken) {\n throw new Error(`Token ${props.tokenAddress} does not have foreignToken attached`);\n }\n\n const toBNStr = (n) => fromTokenToUnit(n, state.decimal).toString(10);\n const itx = Object.assign(\n {\n maxStakeAmount: props.minStakeAmount,\n minSignerCount: 3,\n maxSignerCount: 5,\n minBlockSize: 1,\n maxBlockSize: 10,\n minBlockInterval: 1 * 60, // 1 minute\n minBlockConfirmation: 3,\n minDepositAmount: toBNStr(100),\n maxDepositAmount: toBNStr(1000000),\n minWithdrawAmount: toBNStr(100),\n maxWithdrawAmount: toBNStr(1000000),\n depositFeeRate: 100, // 1%\n withdrawFeeRate: 100, // 1%\n publisherFeeShare: 6000, // 60%\n proposerFeeShare: 3000, // 30%\n // validatorFeeShare: 1000, // 10%\n minDepositFee: toBNStr(1),\n maxDepositFee: toBNStr(10000),\n minWithdrawFee: toBNStr(1),\n maxWithdrawFee: toBNStr(10000),\n leaveWaitingPeriod: 60 * 60, // 1 hour\n publishWaitingPeriod: 60 * 60, // 1 hour\n publishSlashRate: 10, // 0.1%\n },\n props\n );\n\n const address = toRollupAddress(itx);\n itx.address = address;\n\n const hash = await client.sendCreateRollupTx({ tx: { itx }, wallet: props.wallet }, extra);\n\n return [hash, address];\n };\n\n /**\n * Prepare an exchange transaction between multiple accounts\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#prepareExchange\n * @param {object} params\n * @param {number} params.offerToken - how much token can be sent\n * @param {Array} params.offerAssets - which assets should be sent\n * @param {number} params.demandToken - how much token can be received\n * @param {Array} params.demandAssets - which assets should be received\n * @param {string} params.receiver - who receive the transfer\n * @param {string} params.memo - transaction note\n * @param {string} params.delegator - which assets should be transferred\n * @param {WalletObject} params.wallet - the wallet who is the offerer\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transaction` object once resolved\n */\n client.prepareExchange = async (\n {\n offerToken = 0,\n offerAssets = [],\n demandToken = 0,\n demandAssets = [],\n offerTokens = [],\n demandTokens = [],\n receiver = '',\n memo = '',\n delegator = '',\n wallet,\n },\n extra\n ) => {\n const { token } = await client.getContext();\n const tokensMap = await client.getTokenStateMap([...offerTokens, ...demandTokens].map((t) => t.address));\n\n const tmpOfferTokens = offerTokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n const tmpDemandTokens = demandTokens.map((t) => {\n t.value = fromTokenToUnit(t.value, tokensMap.get(t.address).decimal).toString();\n return t;\n });\n\n return client.signExchangeV2Tx(\n {\n tx: {\n itx: {\n to: receiver,\n sender: {\n value: fromTokenToUnit(offerToken, token.decimal),\n assets: Array.isArray(offerAssets) ? offerAssets : [],\n tokens: tmpOfferTokens,\n },\n receiver: {\n value: fromTokenToUnit(demandToken, token.decimal),\n assets: Array.isArray(demandAssets) ? demandAssets : [],\n tokens: tmpDemandTokens,\n },\n data: {\n typeUrl: 'json',\n value: memo || 'empty',\n },\n },\n },\n delegator,\n wallet,\n },\n extra\n );\n };\n\n /**\n * Finalize an exchange transaction between multiple accounts\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#finalizeExchange\n * @param {object} params\n * @param {object} params.tx - the transaction object from `prepareExchange`\n * @param {string} params.delegator - who authorized this transaction\n * @param {object} params.data - extra data in the multi sig\n * @param {WalletObject} params.wallet - the wallet who is the demander\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transaction` object once resolved\n */\n client.finalizeExchange = ({ tx, delegator = '', data, wallet }, extra) =>\n client.multiSignExchangeV2Tx({ tx, delegator, data, wallet }, extra);\n\n /**\n * Send an exchange transaction\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#exchange\n * @param {object} params\n * @param {object} params.tx - the transaction object from `finalizeExchange`\n * @param {WalletObject} params.wallet - the wallet to sign the transaction\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `transactionHash` once resolved\n */\n client.exchange = ({ tx, wallet }, extra) => client.sendExchangeV2Tx({ tx, wallet }, extra);\n\n /**\n * Create an new token\n *\n * @memberof GraphQLClient\n * @function\n * @name GraphQLClient#createToken\n * @param {object} params\n * @param {string} params.name\n * @param {string} params.description\n * @param {string} params.symbol\n * @param {string} params.unit\n * @param {string} params.icon\n * @param {number} params.totalSupply\n * @param {number} params.initialSupply\n * @param {number} params.foreignToken\n * @param {object} params.data - asset data payload\n * @param {WalletObject} params.wallet - the initial owner of the asset\n * @param {object} extra - other param to underlying client implementation\n * @returns {Promise} the `[transactionHash, assetAddress]` once resolved\n */\n client.createToken = async (\n { name, description, symbol, unit, decimal, icon, totalSupply, initialSupply, foreignToken, data, wallet },\n extra\n ) => {\n const tokenDecimal = typeof decimal === 'undefined' ? DEFAULT_TOKEN_DECIMAL : decimal;\n\n const payload = {\n name,\n description,\n symbol,\n unit,\n decimal: tokenDecimal,\n icon,\n totalSupply: fromTokenToUnit(totalSupply, tokenDecimal).toString(),\n initialSupply: fromTokenToUnit(initialSupply || totalSupply, tokenDecimal).toString(),\n foreignToken: foreignToken || null,\n data,\n };\n\n const address = toTokenAddress(payload);\n payload.address = address;\n const hash = await client.sendCreateTokenTx(\n {\n tx: { itx: payload },\n wallet,\n },\n extra\n );\n return [hash, address];\n };\n};\n\nmodule.exports = { createExtensionMethods };\n"]}
package/dist/report.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8"/>
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
6
- <title>@ocap/client [2 Nov 2022 at 07:32]</title>
6
+ <title>@ocap/client [2 Nov 2022 at 10:17]</title>
7
7
  <link rel="shortcut icon" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAMAAACdt4HsAAABrVBMVEUAAAD///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+O1foceMD///+J0/qK1Pr7/v8Xdr/9///W8P4UdL7L7P0Scr2r4Pyj3vwad8D5/f/2/f+55f3E6f34+/2H0/ojfMKpzOd0rNgQcb3F3O/j9f7c8v6g3Pz0/P/w+v/q+P7n9v6T1/uQ1vuE0vqLut/y+v+Z2fvt+f+15Pzv9fuc2/vR7v2V2Pvd6/bg9P7I6/285/2y4/yp3/zp8vk8i8kqgMT7/P31+fyv4vxGkcz6/P6/6P3j7vfS5PNnpNUxhcbO7f7F6v3O4vHK3/DA2u631Ouy0eqXweKJud5wqthfoNMMbLvY8f73+v2dxeR8sNtTmdDx9/zX6PSjyeaCtd1YnNGX2PuQveCGt95Nls42h8dLlM3F4vBtAAAAM3RSTlMAAyOx0/sKBvik8opWGBMOAe3l1snDm2E9LSb06eHcu5JpHbarfHZCN9CBb08zzkdNS0kYaptYAAAFV0lEQVRYw92X51/aYBDHHS2O2qqttVbrqNq9m+TJIAYIShBkWwqIiCgoWvfeq7Z2/s29hyQNyUcR7LveGwVyXy6XH8/9rqxglLfUPLxVduUor3h0rfp2TYvpivk37929TkG037hffoX0+peVtZQc1589rigVUdXS/ABSAyEmGIO/1XfvldSK8vs3OqB6u3m0nxmIrvgB0dj7rr7Y9IbuF68hnfFaiHA/sxqm0wciIG43P60qKv9WXWc1RXGh/mFESFABTSBi0sNAKzqet17eCtOb3kZIDwxEEU0oAIJGYxNBDhBND29e0rtXXbcpuPmED9IhEAAQ/AXEaF8EPmnrrKsv0LvWR3fg5sWDNAFZOgAgaKvZDogHNU9MFwnnYROkc56RD5CjAbQX9Ow4g7upCsvYu55aSI/Nj0H1akgKQEUM94dwK65hYRmFU9MIcH/fqJYOZYcnuJSU/waKDgTOEVaVKhwrTRP5XzgSpAITYzom7UvkhFX5VutmxeNnWDjjswTKTyfgluNDGbUpWissXhF3s7mlSml+czWkg3D0l1nNjGNjz3myOQOa1KM/jOS6ebdbAVTCi4gljHSFrviza7tOgRWcS0MOUX9zdNgag5w7rRqA44Lzw0hr1WqES36dFliSJFlh2rXIae3FFcDDgKdxrUIDePr8jGcSClV1u7A9xeN0ModY/pHMxmR1EzRh8TJiwqsHmKW0l4FCEZI+jHio+JdPPE9qwQtTRxku2D8sIeRL2LnxWSllANCQGOIiqVHAz2ye2JR0DcH+HoxDkaADLjgxjKQ+AwCX/g0+DNgdG0ukYCONAe+dbc2IAc6fwt1ARoDSezNHxV2Cmzwv3O6lDMV55edBGwGK9n1+x2F8EDfAGCxug8MhpsMEcTEAWf3rx2vZhe/LAmtIn/6apE6PN0ULKgywD9mmdxbmFl3OvD5AS5fW5zLbv/YHmcsBTjf/afDz3MaZTVCfAP9z6/Bw6ycv8EUBWJIn9zYcoAWWlW9+OzO3vkTy8H+RANLmdrpOuYWdZYEXpo+TlCJrW5EARb7fF+bWdqf3hhyZI1nWJQHgznErZhbjoEsWqi8dQNoE294aldzFurwSABL2XXMf9+H1VQGke9exw5P/AnA5Pv5ngMul7LOvO922iwACu8WkCwLCafvM4CeWPxfA8lNHcWZSoi8EwMAIciKX2Z4SWCMAa3snCZ/G4EA8D6CMLNFsGQhkkz/gQNEBbPCbWsxGUpYVu3z8IyNAknwJkfPMEhLyrdi5RTyUVACkw4GSFRNWJNEW+fgPGwHD8/JxnRuLabN4CGNRkAE23na2+VmEAUmrYymSGjMAYqH84YUIyzgzs3XC7gNgH36Vcc4zKY9o9fgPBXUAiHHwVboBHGLiX6Zcjp1f2wu4tvzZKo0ecPnDtQYDQvJXaBeNzce45Fp28ZQLrEZVuFqgBwOalArKXnW1UzlnSusQKJqKYNuz4tOnI6sZG4zanpemv+7ySU2jbA9h6uhcgpfy6G2PahirDZ6zvq6zDduMVFTKvzw8wgyEdelwY9in3XkEPs3osJuwRQ4qTkfzifndg9Gfc4pdsu82+tTnHZTBa2EAMrqr2t43pguc8tNm7JQVQ2S0ukj2d22dhXYP0/veWtwKrCkNoNimAN5+Xr/oLrxswKbVJjteWrX7eR63o4j9q0GxnaBdWgGA5VStpanIjQmEhV0/nVt5VOFUvix6awJhPcAaTEShgrG+iGyvb5a0Ndb1YGHFPEwoqAinoaykaID1o1pdPNu7XsnCKQ3R+hwWIIhGvORcJUBYXe3Xa3vq/mF/N9V13ugufMkfXn+KHsRD0B8AAAAASUVORK5CYII=" type="image/x-icon" />
8
8
 
9
9
  <script>
package/dist/types.js CHANGED
@@ -3209,6 +3209,7 @@
3209
3209
  * @function
3210
3210
  * @name GraphQLClient#sendAccountMigrateTx
3211
3211
  * @param {GraphQLClient.AccountMigrateTxInput} params
3212
+ * @param {object} extra
3212
3213
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3213
3214
  */
3214
3215
 
@@ -3235,6 +3236,7 @@
3235
3236
  * @function
3236
3237
  * @name GraphQLClient#sendAcquireAssetV2Tx
3237
3238
  * @param {GraphQLClient.AcquireAssetV2TxInput} params
3239
+ * @param {object} extra
3238
3240
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3239
3241
  */
3240
3242
 
@@ -3261,6 +3263,7 @@
3261
3263
  * @function
3262
3264
  * @name GraphQLClient#sendAcquireAssetV3Tx
3263
3265
  * @param {GraphQLClient.AcquireAssetV3TxInput} params
3266
+ * @param {object} extra
3264
3267
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3265
3268
  */
3266
3269
 
@@ -3287,6 +3290,7 @@
3287
3290
  * @function
3288
3291
  * @name GraphQLClient#sendClaimBlockRewardTx
3289
3292
  * @param {GraphQLClient.ClaimBlockRewardTxInput} params
3293
+ * @param {object} extra
3290
3294
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3291
3295
  */
3292
3296
 
@@ -3313,6 +3317,7 @@
3313
3317
  * @function
3314
3318
  * @name GraphQLClient#sendClaimStakeTx
3315
3319
  * @param {GraphQLClient.ClaimStakeTxInput} params
3320
+ * @param {object} extra
3316
3321
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3317
3322
  */
3318
3323
 
@@ -3339,6 +3344,7 @@
3339
3344
  * @function
3340
3345
  * @name GraphQLClient#sendCreateAssetTx
3341
3346
  * @param {GraphQLClient.CreateAssetTxInput} params
3347
+ * @param {object} extra
3342
3348
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3343
3349
  */
3344
3350
 
@@ -3365,6 +3371,7 @@
3365
3371
  * @function
3366
3372
  * @name GraphQLClient#sendCreateFactoryTx
3367
3373
  * @param {GraphQLClient.CreateFactoryTxInput} params
3374
+ * @param {object} extra
3368
3375
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3369
3376
  */
3370
3377
 
@@ -3391,6 +3398,7 @@
3391
3398
  * @function
3392
3399
  * @name GraphQLClient#sendCreateRollupBlockTx
3393
3400
  * @param {GraphQLClient.CreateRollupBlockTxInput} params
3401
+ * @param {object} extra
3394
3402
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3395
3403
  */
3396
3404
 
@@ -3417,6 +3425,7 @@
3417
3425
  * @function
3418
3426
  * @name GraphQLClient#sendCreateRollupTx
3419
3427
  * @param {GraphQLClient.CreateRollupTxInput} params
3428
+ * @param {object} extra
3420
3429
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3421
3430
  */
3422
3431
 
@@ -3443,6 +3452,7 @@
3443
3452
  * @function
3444
3453
  * @name GraphQLClient#sendCreateTokenTx
3445
3454
  * @param {GraphQLClient.CreateTokenTxInput} params
3455
+ * @param {object} extra
3446
3456
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3447
3457
  */
3448
3458
 
@@ -3469,6 +3479,7 @@
3469
3479
  * @function
3470
3480
  * @name GraphQLClient#sendDeclareTx
3471
3481
  * @param {GraphQLClient.DeclareTxInput} params
3482
+ * @param {object} extra
3472
3483
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3473
3484
  */
3474
3485
 
@@ -3495,6 +3506,7 @@
3495
3506
  * @function
3496
3507
  * @name GraphQLClient#sendDelegateTx
3497
3508
  * @param {GraphQLClient.DelegateTxInput} params
3509
+ * @param {object} extra
3498
3510
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3499
3511
  */
3500
3512
 
@@ -3521,6 +3533,7 @@
3521
3533
  * @function
3522
3534
  * @name GraphQLClient#sendDepositTokenV2Tx
3523
3535
  * @param {GraphQLClient.DepositTokenV2TxInput} params
3536
+ * @param {object} extra
3524
3537
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3525
3538
  */
3526
3539
 
@@ -3547,6 +3560,7 @@
3547
3560
  * @function
3548
3561
  * @name GraphQLClient#sendExchangeTx
3549
3562
  * @param {GraphQLClient.ExchangeTxInput} params
3563
+ * @param {object} extra
3550
3564
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3551
3565
  */
3552
3566
 
@@ -3573,6 +3587,7 @@
3573
3587
  * @function
3574
3588
  * @name GraphQLClient#sendExchangeV2Tx
3575
3589
  * @param {GraphQLClient.ExchangeV2TxInput} params
3590
+ * @param {object} extra
3576
3591
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3577
3592
  */
3578
3593
 
@@ -3599,6 +3614,7 @@
3599
3614
  * @function
3600
3615
  * @name GraphQLClient#sendJoinRollupTx
3601
3616
  * @param {GraphQLClient.JoinRollupTxInput} params
3617
+ * @param {object} extra
3602
3618
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3603
3619
  */
3604
3620
 
@@ -3625,6 +3641,7 @@
3625
3641
  * @function
3626
3642
  * @name GraphQLClient#sendLeaveRollupTx
3627
3643
  * @param {GraphQLClient.LeaveRollupTxInput} params
3644
+ * @param {object} extra
3628
3645
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3629
3646
  */
3630
3647
 
@@ -3651,6 +3668,7 @@
3651
3668
  * @function
3652
3669
  * @name GraphQLClient#sendMigrateRollupContractTx
3653
3670
  * @param {GraphQLClient.MigrateRollupContractTxInput} params
3671
+ * @param {object} extra
3654
3672
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3655
3673
  */
3656
3674
 
@@ -3677,6 +3695,7 @@
3677
3695
  * @function
3678
3696
  * @name GraphQLClient#sendMigrateRollupTokenTx
3679
3697
  * @param {GraphQLClient.MigrateRollupTokenTxInput} params
3698
+ * @param {object} extra
3680
3699
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3681
3700
  */
3682
3701
 
@@ -3703,6 +3722,7 @@
3703
3722
  * @function
3704
3723
  * @name GraphQLClient#sendMintAssetTx
3705
3724
  * @param {GraphQLClient.MintAssetTxInput} params
3725
+ * @param {object} extra
3706
3726
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3707
3727
  */
3708
3728
 
@@ -3729,6 +3749,7 @@
3729
3749
  * @function
3730
3750
  * @name GraphQLClient#sendPauseRollupTx
3731
3751
  * @param {GraphQLClient.PauseRollupTxInput} params
3752
+ * @param {object} extra
3732
3753
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3733
3754
  */
3734
3755
 
@@ -3755,6 +3776,7 @@
3755
3776
  * @function
3756
3777
  * @name GraphQLClient#sendResumeRollupTx
3757
3778
  * @param {GraphQLClient.ResumeRollupTxInput} params
3779
+ * @param {object} extra
3758
3780
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3759
3781
  */
3760
3782
 
@@ -3781,6 +3803,7 @@
3781
3803
  * @function
3782
3804
  * @name GraphQLClient#sendRevokeDelegateTx
3783
3805
  * @param {GraphQLClient.RevokeDelegateTxInput} params
3806
+ * @param {object} extra
3784
3807
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3785
3808
  */
3786
3809
 
@@ -3807,6 +3830,7 @@
3807
3830
  * @function
3808
3831
  * @name GraphQLClient#sendRevokeStakeTx
3809
3832
  * @param {GraphQLClient.RevokeStakeTxInput} params
3833
+ * @param {object} extra
3810
3834
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3811
3835
  */
3812
3836
 
@@ -3833,6 +3857,7 @@
3833
3857
  * @function
3834
3858
  * @name GraphQLClient#sendStakeTx
3835
3859
  * @param {GraphQLClient.StakeTxInput} params
3860
+ * @param {object} extra
3836
3861
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3837
3862
  */
3838
3863
 
@@ -3859,6 +3884,7 @@
3859
3884
  * @function
3860
3885
  * @name GraphQLClient#sendTransferTx
3861
3886
  * @param {GraphQLClient.TransferTxInput} params
3887
+ * @param {object} extra
3862
3888
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3863
3889
  */
3864
3890
 
@@ -3885,6 +3911,7 @@
3885
3911
  * @function
3886
3912
  * @name GraphQLClient#sendTransferV2Tx
3887
3913
  * @param {GraphQLClient.TransferV2TxInput} params
3914
+ * @param {object} extra
3888
3915
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3889
3916
  */
3890
3917
 
@@ -3911,6 +3938,7 @@
3911
3938
  * @function
3912
3939
  * @name GraphQLClient#sendTransferV3Tx
3913
3940
  * @param {GraphQLClient.TransferV3TxInput} params
3941
+ * @param {object} extra
3914
3942
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3915
3943
  */
3916
3944
 
@@ -3937,6 +3965,7 @@
3937
3965
  * @function
3938
3966
  * @name GraphQLClient#sendUpdateAssetTx
3939
3967
  * @param {GraphQLClient.UpdateAssetTxInput} params
3968
+ * @param {object} extra
3940
3969
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3941
3970
  */
3942
3971
 
@@ -3963,6 +3992,7 @@
3963
3992
  * @function
3964
3993
  * @name GraphQLClient#sendUpdateRollupTx
3965
3994
  * @param {GraphQLClient.UpdateRollupTxInput} params
3995
+ * @param {object} extra
3966
3996
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3967
3997
  */
3968
3998
 
@@ -3989,6 +4019,7 @@
3989
4019
  * @function
3990
4020
  * @name GraphQLClient#sendUpgradeNodeTx
3991
4021
  * @param {GraphQLClient.UpgradeNodeTxInput} params
4022
+ * @param {object} extra
3992
4023
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
3993
4024
  */
3994
4025
 
@@ -4015,6 +4046,7 @@
4015
4046
  * @function
4016
4047
  * @name GraphQLClient#sendWithdrawTokenV2Tx
4017
4048
  * @param {GraphQLClient.WithdrawTokenV2TxInput} params
4049
+ * @param {object} extra
4018
4050
  * @returns {Promise<string>} returns transaction hash if success, otherwise error was thrown
4019
4051
  */
4020
4052