From 2460f8cd578ece3486a78e218dd8c031bbb22a6d Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:48:52 +0800 Subject: [PATCH 1/4] added callMethodWithCache --- packages/types/package.json | 2 +- packages/types/src/assets.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/types/package.json b/packages/types/package.json index 7851b3c..152e2ae 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@multiplechain/types", - "version": "0.1.66", + "version": "0.1.67", "type": "module", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/types/src/assets.ts b/packages/types/src/assets.ts index c188019..f1f638b 100644 --- a/packages/types/src/assets.ts +++ b/packages/types/src/assets.ts @@ -25,6 +25,14 @@ export interface ContractInterface { */ callMethod: (method: string, ...args: unknown[]) => Promise + /** + * Runs the contract methods dynamically + * @param {string} method Method name + * @param {unknown[]} args Method parameters + * @returns {Promise} Result of the method + */ + callMethodWithCache: (method: string, ...args: unknown[]) => Promise + /** * To get method data from called method * @param {string} method Method name From 9106b892a947d5801165282b7f72af8a59d0c956 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:52:34 +0800 Subject: [PATCH 2/4] added property type --- packages/types/package.json | 2 +- packages/types/src/assets.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/types/package.json b/packages/types/package.json index 152e2ae..8f6fa42 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@multiplechain/types", - "version": "0.1.67", + "version": "0.1.68", "type": "module", "main": "./src/index.ts", "types": "./src/index.ts", diff --git a/packages/types/src/assets.ts b/packages/types/src/assets.ts index f1f638b..9bfe383 100644 --- a/packages/types/src/assets.ts +++ b/packages/types/src/assets.ts @@ -12,6 +12,11 @@ export interface ContractInterface { */ address: ContractAddress + /** + * Contract ABI + */ + cachedMethods: Record + /** * @returns {ContractAddress} Given contract address */ From 4af26209ea2b6990894c256f4401bbdf7e4e0658 Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Tue, 4 Jun 2024 13:58:02 +0800 Subject: [PATCH 3/4] update --- packages/networks/boilerplate/package.json | 2 +- packages/networks/boilerplate/pnpm-lock.yaml | 8 ++++---- .../boilerplate/src/assets/Contract.ts | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/packages/networks/boilerplate/package.json b/packages/networks/boilerplate/package.json index a998856..70d0ed2 100644 --- a/packages/networks/boilerplate/package.json +++ b/packages/networks/boilerplate/package.json @@ -72,7 +72,7 @@ "url": "https://github.com/MultipleChain/js/issues" }, "dependencies": { - "@multiplechain/types": "^0.1.66", + "@multiplechain/types": "^0.1.67", "@multiplechain/utils": "^0.1.21" } } \ No newline at end of file diff --git a/packages/networks/boilerplate/pnpm-lock.yaml b/packages/networks/boilerplate/pnpm-lock.yaml index 4af44f6..42b32b5 100644 --- a/packages/networks/boilerplate/pnpm-lock.yaml +++ b/packages/networks/boilerplate/pnpm-lock.yaml @@ -6,16 +6,16 @@ settings: dependencies: '@multiplechain/types': - specifier: ^0.1.66 - version: 0.1.66 + specifier: ^0.1.67 + version: 0.1.67 '@multiplechain/utils': specifier: ^0.1.21 version: 0.1.21 packages: - /@multiplechain/types@0.1.66: - resolution: {integrity: sha512-ekv6EAQWZnya3hWX1WSvIWhAw3XbKvqp3JnlTeNw0BxzRnO6rYyHXD5iRse6R95mk11N3OUyDtbMCAvzYQUsxg==} + /@multiplechain/types@0.1.67: + resolution: {integrity: sha512-8TN5HhDC7lILh7wDKneJFS1Nyvxa+YGi0L56m6jnj0mBmTmwxNN42W5tP/3KYUlsfTHqb64iijjXMTLYZ0x+Dg==} dev: false /@multiplechain/utils@0.1.21: diff --git a/packages/networks/boilerplate/src/assets/Contract.ts b/packages/networks/boilerplate/src/assets/Contract.ts index eb25c2e..bb7ac41 100644 --- a/packages/networks/boilerplate/src/assets/Contract.ts +++ b/packages/networks/boilerplate/src/assets/Contract.ts @@ -7,6 +7,11 @@ export class Contract implements ContractInterface { */ address: ContractAddress + /** + * Cached static methods + */ + cachedMethods: Record = {} + /** * Blockchain network provider */ @@ -37,6 +42,19 @@ export class Contract implements ContractInterface { return {} } + /** + * @param {string} method Method name + * @param {unknown[]} args Method parameters + * @returns {Promise} Method result + */ + async callMethodWithCache(method: string, ...args: unknown[]): Promise { + if (this.cachedMethods[method] !== undefined) { + return this.cachedMethods[method] + } + + return (this.cachedMethods[method] = await this.callMethod(method, ...args)) + } + /** * @param {string} method Method name * @param {unknown[]} args Sender wallet address From 00fa7d675e0385d265c5314f64856bd6f86c784b Mon Sep 17 00:00:00 2001 From: Halil Beycan <50718965+BeycanDeveloper@users.noreply.github.com> Date: Tue, 4 Jun 2024 14:04:15 +0800 Subject: [PATCH 4/4] added callMethodWithCache for low api requests --- packages/networks/bitcoin/package.json | 2 +- packages/networks/bitcoin/pnpm-lock.yaml | 8 ++++---- packages/networks/evm-chains/package.json | 4 ++-- packages/networks/evm-chains/pnpm-lock.yaml | 8 ++++---- .../networks/evm-chains/src/assets/Contract.ts | 18 ++++++++++++++++++ packages/networks/evm-chains/src/assets/NFT.ts | 6 +++--- .../networks/evm-chains/src/assets/Token.ts | 6 +++--- packages/networks/solana/package.json | 2 +- packages/networks/solana/pnpm-lock.yaml | 8 ++++---- .../networks/solana/src/assets/Contract.ts | 18 ++++++++++++++++++ packages/networks/tron/package.json | 4 ++-- packages/networks/tron/pnpm-lock.yaml | 8 ++++---- packages/networks/tron/src/assets/Contract.ts | 18 ++++++++++++++++++ packages/networks/tron/src/assets/NFT.ts | 6 +++--- packages/networks/tron/src/assets/Token.ts | 6 +++--- packages/wrapper/package.json | 4 ++-- packages/wrapper/pnpm-lock.yaml | 12 ++++++------ 17 files changed, 96 insertions(+), 42 deletions(-) diff --git a/packages/networks/bitcoin/package.json b/packages/networks/bitcoin/package.json index d5888c1..8c6667c 100644 --- a/packages/networks/bitcoin/package.json +++ b/packages/networks/bitcoin/package.json @@ -72,7 +72,7 @@ "url": "https://github.com/MultipleChain/js/issues" }, "dependencies": { - "@multiplechain/types": "^0.1.66", + "@multiplechain/types": "^0.1.68", "@multiplechain/utils": "^0.1.21", "axios": "^1.6.8", "bitcore-lib": "^10.0.28", diff --git a/packages/networks/bitcoin/pnpm-lock.yaml b/packages/networks/bitcoin/pnpm-lock.yaml index 5e12d6d..e7d52d7 100644 --- a/packages/networks/bitcoin/pnpm-lock.yaml +++ b/packages/networks/bitcoin/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@multiplechain/types': - specifier: ^0.1.66 - version: 0.1.66 + specifier: ^0.1.68 + version: 0.1.68 '@multiplechain/utils': specifier: ^0.1.21 version: 0.1.21 @@ -34,8 +34,8 @@ devDependencies: packages: - /@multiplechain/types@0.1.66: - resolution: {integrity: sha512-ekv6EAQWZnya3hWX1WSvIWhAw3XbKvqp3JnlTeNw0BxzRnO6rYyHXD5iRse6R95mk11N3OUyDtbMCAvzYQUsxg==} + /@multiplechain/types@0.1.68: + resolution: {integrity: sha512-XQl06n5RazTCwTOEEXOJpdQCunAHKVh7zSJbasLtXd+XyHMQHiAgoZKcBZbUxB6Re752z4t+k4zpxlpzaXPzNA==} dev: false /@multiplechain/utils@0.1.21: diff --git a/packages/networks/evm-chains/package.json b/packages/networks/evm-chains/package.json index d6989e1..e777780 100644 --- a/packages/networks/evm-chains/package.json +++ b/packages/networks/evm-chains/package.json @@ -1,6 +1,6 @@ { "name": "@multiplechain/evm-chains", - "version": "0.4.4", + "version": "0.4.5", "type": "module", "main": "dist/index.cjs", "module": "dist/index.es.js", @@ -75,7 +75,7 @@ "url": "https://github.com/MultipleChain/js/issues" }, "dependencies": { - "@multiplechain/types": "^0.1.66", + "@multiplechain/types": "^0.1.68", "@multiplechain/utils": "^0.1.21", "@wagmi/chains": "^1.8.0", "@walletconnect/ethereum-provider": "^2.12.2", diff --git a/packages/networks/evm-chains/pnpm-lock.yaml b/packages/networks/evm-chains/pnpm-lock.yaml index 3afd1dc..39e2790 100644 --- a/packages/networks/evm-chains/pnpm-lock.yaml +++ b/packages/networks/evm-chains/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@multiplechain/types': - specifier: ^0.1.66 - version: 0.1.66 + specifier: ^0.1.68 + version: 0.1.68 '@multiplechain/utils': specifier: ^0.1.21 version: 0.1.21 @@ -239,8 +239,8 @@ packages: tslib: 2.4.0 dev: false - /@multiplechain/types@0.1.66: - resolution: {integrity: sha512-ekv6EAQWZnya3hWX1WSvIWhAw3XbKvqp3JnlTeNw0BxzRnO6rYyHXD5iRse6R95mk11N3OUyDtbMCAvzYQUsxg==} + /@multiplechain/types@0.1.68: + resolution: {integrity: sha512-XQl06n5RazTCwTOEEXOJpdQCunAHKVh7zSJbasLtXd+XyHMQHiAgoZKcBZbUxB6Re752z4t+k4zpxlpzaXPzNA==} dev: false /@multiplechain/utils@0.1.21: diff --git a/packages/networks/evm-chains/src/assets/Contract.ts b/packages/networks/evm-chains/src/assets/Contract.ts index e3813bd..109ec0d 100644 --- a/packages/networks/evm-chains/src/assets/Contract.ts +++ b/packages/networks/evm-chains/src/assets/Contract.ts @@ -10,6 +10,11 @@ export class Contract implements ContractInterface { */ address: ContractAddress + /** + * Cached static methods + */ + cachedMethods: Record = {} + /** * Contract ABI */ @@ -59,6 +64,19 @@ export class Contract implements ContractInterface { return this.ethersContract[method](...args) // eslint-disable-line } + /** + * @param {string} method Method name + * @param {unknown[]} args Method parameters + * @returns {Promise} Method result + */ + async callMethodWithCache(method: string, ...args: unknown[]): Promise { + if (this.cachedMethods[method] !== undefined) { + return this.cachedMethods[method] + } + + return (this.cachedMethods[method] = await this.callMethod(method, ...args)) + } + /** * @param {string} method Method name * @param {unknown[]} args Sender wallet address diff --git a/packages/networks/evm-chains/src/assets/NFT.ts b/packages/networks/evm-chains/src/assets/NFT.ts index eec552a..ea4cfa3 100644 --- a/packages/networks/evm-chains/src/assets/NFT.ts +++ b/packages/networks/evm-chains/src/assets/NFT.ts @@ -25,14 +25,14 @@ export class NFT extends Contract implements NftInterface { * @returns {Promise} NFT name */ async getName(): Promise { - return (await this.callMethod('name')) as string + return (await this.callMethodWithCache('name')) as string } /** * @returns {Promise} NFT symbol */ async getSymbol(): Promise { - return (await this.callMethod('symbol')) as string + return (await this.callMethodWithCache('symbol')) as string } /** @@ -56,7 +56,7 @@ export class NFT extends Contract implements NftInterface { * @returns {Promise} URI of the NFT */ async getTokenURI(nftId: NftId): Promise { - return (await this.callMethod('tokenURI', nftId)) as string + return (await this.callMethodWithCache('tokenURI', nftId)) as string } /** diff --git a/packages/networks/evm-chains/src/assets/Token.ts b/packages/networks/evm-chains/src/assets/Token.ts index c865b7e..36b5693 100644 --- a/packages/networks/evm-chains/src/assets/Token.ts +++ b/packages/networks/evm-chains/src/assets/Token.ts @@ -26,21 +26,21 @@ export class Token extends Contract implements TokenInterface * @returns {Promise} Token name */ async getName(): Promise { - return (await this.callMethod('name')) as string + return (await this.callMethodWithCache('name')) as string } /** * @returns {Promise} Token symbol */ async getSymbol(): Promise { - return (await this.callMethod('symbol')) as string + return (await this.callMethodWithCache('symbol')) as string } /** * @returns {Promise} Decimal value of the token */ async getDecimals(): Promise { - return Number(await this.callMethod('decimals')) + return Number(await this.callMethodWithCache('decimals')) } /** diff --git a/packages/networks/solana/package.json b/packages/networks/solana/package.json index fafb654..af8d997 100644 --- a/packages/networks/solana/package.json +++ b/packages/networks/solana/package.json @@ -74,7 +74,7 @@ "dependencies": { "@metaplex-foundation/js": "^0.20.1", "@multiplechain/solana-walletconnect": "^0.1.1", - "@multiplechain/types": "^0.1.66", + "@multiplechain/types": "^0.1.68", "@multiplechain/utils": "^0.1.21", "@solana/spl-token": "^0.4.6", "@solana/spl-token-metadata": "^0.1.4", diff --git a/packages/networks/solana/pnpm-lock.yaml b/packages/networks/solana/pnpm-lock.yaml index b290049..d0f003d 100644 --- a/packages/networks/solana/pnpm-lock.yaml +++ b/packages/networks/solana/pnpm-lock.yaml @@ -12,8 +12,8 @@ dependencies: specifier: ^0.1.1 version: 0.1.1(@solana/web3.js@1.91.8)(vite@5.2.11) '@multiplechain/types': - specifier: ^0.1.66 - version: 0.1.66 + specifier: ^0.1.68 + version: 0.1.68 '@multiplechain/utils': specifier: ^0.1.21 version: 0.1.21 @@ -935,8 +935,8 @@ packages: - vite dev: false - /@multiplechain/types@0.1.66: - resolution: {integrity: sha512-ekv6EAQWZnya3hWX1WSvIWhAw3XbKvqp3JnlTeNw0BxzRnO6rYyHXD5iRse6R95mk11N3OUyDtbMCAvzYQUsxg==} + /@multiplechain/types@0.1.68: + resolution: {integrity: sha512-XQl06n5RazTCwTOEEXOJpdQCunAHKVh7zSJbasLtXd+XyHMQHiAgoZKcBZbUxB6Re752z4t+k4zpxlpzaXPzNA==} dev: false /@multiplechain/utils@0.1.21: diff --git a/packages/networks/solana/src/assets/Contract.ts b/packages/networks/solana/src/assets/Contract.ts index 9c8e677..6074d62 100644 --- a/packages/networks/solana/src/assets/Contract.ts +++ b/packages/networks/solana/src/assets/Contract.ts @@ -8,6 +8,11 @@ export class Contract implements ContractInterface { */ address: ContractAddress + /** + * Cached static methods + */ + cachedMethods: Record = {} + /** * Contract public key */ @@ -44,6 +49,19 @@ export class Contract implements ContractInterface { throw new Error('Method not implemented.') } + /** + * @param {string} method Method name + * @param {unknown[]} args Method parameters + * @returns {Promise} Method result + */ + async callMethodWithCache(method: string, ...args: unknown[]): Promise { + if (this.cachedMethods[method] !== undefined) { + return this.cachedMethods[method] + } + + return (this.cachedMethods[method] = await this.callMethod(method, ...args)) + } + /** * @param {string} _method Method name * @param {unknown[]} _args Sender wallet address diff --git a/packages/networks/tron/package.json b/packages/networks/tron/package.json index 0684ce1..ee450c4 100644 --- a/packages/networks/tron/package.json +++ b/packages/networks/tron/package.json @@ -1,6 +1,6 @@ { "name": "@multiplechain/tron", - "version": "0.4.4", + "version": "0.4.5", "type": "module", "main": "dist/index.cjs", "module": "dist/index.es.js", @@ -74,7 +74,7 @@ "dependencies": { "@beycandeveloper/tron-tx-decoder": "^2.0.5", "@multiplechain/tron-walletconnect": "^0.1.0", - "@multiplechain/types": "^0.1.66", + "@multiplechain/types": "^0.1.68", "@multiplechain/utils": "^0.1.21", "@noble/secp256k1": "^1.7.1", "@tronweb3/tronwallet-adapter-bitkeep": "^1.1.1", diff --git a/packages/networks/tron/pnpm-lock.yaml b/packages/networks/tron/pnpm-lock.yaml index ace06f0..1085431 100644 --- a/packages/networks/tron/pnpm-lock.yaml +++ b/packages/networks/tron/pnpm-lock.yaml @@ -12,8 +12,8 @@ dependencies: specifier: ^0.1.0 version: 0.1.0(typescript@5.4.5) '@multiplechain/types': - specifier: ^0.1.66 - version: 0.1.66 + specifier: ^0.1.68 + version: 0.1.68 '@multiplechain/utils': specifier: ^0.1.21 version: 0.1.21 @@ -348,8 +348,8 @@ packages: - vite dev: false - /@multiplechain/types@0.1.66: - resolution: {integrity: sha512-ekv6EAQWZnya3hWX1WSvIWhAw3XbKvqp3JnlTeNw0BxzRnO6rYyHXD5iRse6R95mk11N3OUyDtbMCAvzYQUsxg==} + /@multiplechain/types@0.1.68: + resolution: {integrity: sha512-XQl06n5RazTCwTOEEXOJpdQCunAHKVh7zSJbasLtXd+XyHMQHiAgoZKcBZbUxB6Re752z4t+k4zpxlpzaXPzNA==} dev: false /@multiplechain/utils@0.1.21: diff --git a/packages/networks/tron/src/assets/Contract.ts b/packages/networks/tron/src/assets/Contract.ts index 949f6b9..ac9f6ab 100644 --- a/packages/networks/tron/src/assets/Contract.ts +++ b/packages/networks/tron/src/assets/Contract.ts @@ -50,6 +50,11 @@ export class Contract implements ContractInterface { */ address: ContractAddress + /** + * Cached static methods + */ + cachedMethods: Record = {} + /** * Blockchain network provider */ @@ -108,6 +113,19 @@ export class Contract implements ContractInterface { return this.tronContract[method](...args).call() // eslint-disable-line } + /** + * @param {string} method Method name + * @param {unknown[]} args Method parameters + * @returns {Promise} Method result + */ + async callMethodWithCache(method: string, ...args: unknown[]): Promise { + if (this.cachedMethods[method] !== undefined) { + return this.cachedMethods[method] + } + + return (this.cachedMethods[method] = await this.callMethod(method, ...args)) + } + /** * @param {string} _method Method name * @param {unknown[]} _args Sender wallet address diff --git a/packages/networks/tron/src/assets/NFT.ts b/packages/networks/tron/src/assets/NFT.ts index 5e95198..1e8f9e9 100644 --- a/packages/networks/tron/src/assets/NFT.ts +++ b/packages/networks/tron/src/assets/NFT.ts @@ -24,14 +24,14 @@ export class NFT extends Contract implements NftInterface { * @returns {Promise} NFT name */ async getName(): Promise { - return (await this.callMethod('name')) as string + return (await this.callMethodWithCache('name')) as string } /** * @returns {Promise} NFT symbol */ async getSymbol(): Promise { - return (await this.callMethod('symbol')) as string + return (await this.callMethodWithCache('symbol')) as string } /** @@ -55,7 +55,7 @@ export class NFT extends Contract implements NftInterface { * @returns {Promise} URI of the NFT */ async getTokenURI(nftId: NftId): Promise { - return (await this.callMethod('tokenURI', nftId)) as string + return (await this.callMethodWithCache('tokenURI', nftId)) as string } /** diff --git a/packages/networks/tron/src/assets/Token.ts b/packages/networks/tron/src/assets/Token.ts index 966fa21..f580de0 100644 --- a/packages/networks/tron/src/assets/Token.ts +++ b/packages/networks/tron/src/assets/Token.ts @@ -25,21 +25,21 @@ export class Token extends Contract implements TokenInterface * @returns {Promise} Token name */ async getName(): Promise { - return (await this.callMethod('name')) as string + return (await this.callMethodWithCache('name')) as string } /** * @returns {Promise} Token symbol */ async getSymbol(): Promise { - return (await this.callMethod('symbol')) as string + return (await this.callMethodWithCache('symbol')) as string } /** * @returns {Promise} Decimal value of the token */ async getDecimals(): Promise { - return (await this.callMethod('decimals')) as number + return (await this.callMethodWithCache('decimals')) as number } /** diff --git a/packages/wrapper/package.json b/packages/wrapper/package.json index e7e03ab..2c00e34 100644 --- a/packages/wrapper/package.json +++ b/packages/wrapper/package.json @@ -1,6 +1,6 @@ { "name": "@multiplechain/wrapper", - "version": "0.1.3", + "version": "0.1.4", "type": "module", "main": "dist/index.cjs", "module": "dist/index.es.js", @@ -71,7 +71,7 @@ "url": "https://github.com/MultipleChain/js/issues" }, "dependencies": { - "@multiplechain/types": "^0.1.66", + "@multiplechain/types": "^0.1.67", "@multiplechain/utils": "^0.1.21" }, "devDependencies": { diff --git a/packages/wrapper/pnpm-lock.yaml b/packages/wrapper/pnpm-lock.yaml index cca92ed..ee5dedb 100644 --- a/packages/wrapper/pnpm-lock.yaml +++ b/packages/wrapper/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@multiplechain/types': - specifier: ^0.1.66 - version: 0.1.66 + specifier: ^0.1.67 + version: 0.1.67 '@multiplechain/utils': specifier: ^0.1.21 version: 0.1.21 @@ -695,7 +695,7 @@ packages: /@multiplechain/evm-chains@0.4.1(react@18.3.1)(typescript@5.4.5): resolution: {integrity: sha512-z8bwNcmgLdZAm1OmA38EL9MORKHe3jATQGXdELrboAXb1GcTLhkjpiDQ3SPIIJ+u9I4p4gOFvlIELcNBaGhQbA==} dependencies: - '@multiplechain/types': 0.1.66 + '@multiplechain/types': 0.1.67 '@multiplechain/utils': 0.1.21 '@wagmi/chains': 1.8.0(typescript@5.4.5) '@walletconnect/ethereum-provider': 2.13.0(react@18.3.1) @@ -772,7 +772,7 @@ packages: dependencies: '@beycandeveloper/tron-tx-decoder': 2.0.7 '@multiplechain/tron-walletconnect': 0.1.2(typescript@5.4.5)(vite@5.2.11) - '@multiplechain/types': 0.1.66 + '@multiplechain/types': 0.1.67 '@multiplechain/utils': 0.1.21 '@noble/secp256k1': 1.7.1 '@tronweb3/tronwallet-adapter-bitkeep': 1.1.1 @@ -806,8 +806,8 @@ packages: - vite dev: true - /@multiplechain/types@0.1.66: - resolution: {integrity: sha512-ekv6EAQWZnya3hWX1WSvIWhAw3XbKvqp3JnlTeNw0BxzRnO6rYyHXD5iRse6R95mk11N3OUyDtbMCAvzYQUsxg==} + /@multiplechain/types@0.1.67: + resolution: {integrity: sha512-8TN5HhDC7lILh7wDKneJFS1Nyvxa+YGi0L56m6jnj0mBmTmwxNN42W5tP/3KYUlsfTHqb64iijjXMTLYZ0x+Dg==} /@multiplechain/utils@0.1.21: resolution: {integrity: sha512-4mRlnhvXcS+7Hb1By5s2eoCH02kqOSQzV8qj0DHqZK20FtxtduaoGCtcClrFgEjN/HAXnHgdDc1pxTpveIkvRQ==}