From 2973404dd759ede3da60a02c82743ada6abef71f Mon Sep 17 00:00:00 2001 From: OxideDall Date: Wed, 30 Oct 2024 00:43:37 +0300 Subject: [PATCH 1/4] Hinkal SDK integration --- packages/advanced-logic/src/advanced-logic.ts | 5 + .../payment-network/erc20/hinkal-wallet.ts | 18 + .../payment-network/hinkal-wallet-to-any.ts | 88 +++ packages/payment-processor/package.json | 2 + .../src/payment/erc20-hinkal-wallet.ts | 57 ++ .../payment-processor/src/payment/index.ts | 4 + .../payment-processor/src/payment/utils.ts | 3 + packages/types/package.json | 1 + packages/types/src/currency-types.ts | 3 + packages/types/src/extension-types.ts | 3 + .../pn-any-hinkal-wallet-based-types.ts | 12 + yarn.lock | 687 +++++++++++++++--- 12 files changed, 774 insertions(+), 109 deletions(-) create mode 100644 packages/advanced-logic/src/extensions/payment-network/erc20/hinkal-wallet.ts create mode 100644 packages/advanced-logic/src/extensions/payment-network/hinkal-wallet-to-any.ts create mode 100644 packages/payment-processor/src/payment/erc20-hinkal-wallet.ts create mode 100644 packages/types/src/extensions/pn-any-hinkal-wallet-based-types.ts diff --git a/packages/advanced-logic/src/advanced-logic.ts b/packages/advanced-logic/src/advanced-logic.ts index fd3438da8..4170afb89 100644 --- a/packages/advanced-logic/src/advanced-logic.ts +++ b/packages/advanced-logic/src/advanced-logic.ts @@ -27,6 +27,7 @@ import NativeToken from './extensions/payment-network/native-token'; import AnyToNative from './extensions/payment-network/any-to-native'; import Erc20TransferableReceivablePaymentNetwork from './extensions/payment-network/erc20/transferable-receivable'; import MetaPaymentNetwork from './extensions/payment-network/meta'; +import HinkalWalletToAnyERC20 from './extensions/payment-network/hinkal-wallet-to-any'; /** * Module to manage Advanced logic extensions @@ -51,6 +52,7 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic anyToNativeToken: AnyToNative[]; erc20TransferableReceivable: Erc20TransferableReceivablePaymentNetwork; metaPn: MetaPaymentNetwork; + hinkalWalletErc20: HinkalWalletToAnyERC20; }; private currencyManager: CurrencyTypes.ICurrencyManager; @@ -74,6 +76,8 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic anyToNativeToken: [new AnyToNear(currencyManager), new AnyToNearTestnet(currencyManager)], erc20TransferableReceivable: new Erc20TransferableReceivablePaymentNetwork(currencyManager), metaPn: new MetaPaymentNetwork(currencyManager), + // TODO: Add optimistic-like differentiation + hinkalWalletErc20: new HinkalWalletToAnyERC20(currencyManager), }; } @@ -135,6 +139,7 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic [ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_TRANSFERABLE_RECEIVABLE]: this.extensions.erc20TransferableReceivable, [ExtensionTypes.PAYMENT_NETWORK_ID.META]: this.extensions.metaPn, + [ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_HINKAL_WALLET]: this.extensions.hinkalWalletErc20, }[id]; if (!extension) { diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/hinkal-wallet.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/hinkal-wallet.ts new file mode 100644 index 000000000..9df4752a7 --- /dev/null +++ b/packages/advanced-logic/src/extensions/payment-network/erc20/hinkal-wallet.ts @@ -0,0 +1,18 @@ +import { ExtensionTypes, CurrencyTypes, RequestLogicTypes } from '@requestnetwork/types'; +import ReferenceBasedPaymentNetwork from '../reference-based'; + +const CURRENT_VERSION = '0.0.1'; + +export default class HinkalWalletPaymentNetwork< + TCreationParameters extends + ExtensionTypes.PnAnyHinkalWallet.ICreationParameters = ExtensionTypes.PnAnyHinkalWallet.ICreationParameters, +> extends ReferenceBasedPaymentNetwork { + public constructor( + currencyManager: CurrencyTypes.ICurrencyManager, + extensionId: ExtensionTypes.PAYMENT_NETWORK_ID = ExtensionTypes.PAYMENT_NETWORK_ID + .ERC20_HINKAL_WALLET, + currentVersion: string = CURRENT_VERSION, + ) { + super(currencyManager, extensionId, currentVersion, RequestLogicTypes.CURRENCY.ERC20); + } +} diff --git a/packages/advanced-logic/src/extensions/payment-network/hinkal-wallet-to-any.ts b/packages/advanced-logic/src/extensions/payment-network/hinkal-wallet-to-any.ts new file mode 100644 index 000000000..49b0e8815 --- /dev/null +++ b/packages/advanced-logic/src/extensions/payment-network/hinkal-wallet-to-any.ts @@ -0,0 +1,88 @@ +import { ExtensionTypes, CurrencyTypes } from '@requestnetwork/types'; +import { UnsupportedCurrencyError } from '@requestnetwork/currency'; +import HinkalWalletPaymentNetwork from './erc20/hinkal-wallet'; + +const CURRENT_VERSION = '0.0.1'; + +/** + * Core of the reference based payment networks + * This module is called by the reference based payment networks to avoid code redundancy + */ +export default class HinkalWalletToAnyERC20< + TCreationParameters extends ExtensionTypes.PnAnyHinkalWallet.ICreationParameters, +> extends HinkalWalletPaymentNetwork { + public constructor( + currencyManager: CurrencyTypes.ICurrencyManager, + extensionId: ExtensionTypes.PAYMENT_NETWORK_ID = ExtensionTypes.PAYMENT_NETWORK_ID + .ERC20_HINKAL_WALLET, + currentVersion: string = CURRENT_VERSION, + ) { + super(currencyManager, extensionId, currentVersion); + } + + /** + * Creates the extensionsData to create the payment detection extension + * + * @param creationParameters extensions parameters to create + * + * @returns IExtensionCreationAction the extensionsData to be stored in the request + */ + public createCreationAction(creationParameters: TCreationParameters): ExtensionTypes.IAction { + if (!creationParameters.acceptedTokens) { + throw Error('acceptedTokens is required'); + } + if (creationParameters.acceptedTokens.length === 0) { + throw Error('acceptedTokens cannot be empty'); + } + if (creationParameters.acceptedTokens.some((address) => !this.isValidAddress(address))) { + throw Error('acceptedTokens must contains only valid ethereum addresses'); + } + const network = creationParameters.network; + this.throwIfInvalidNetwork(network); + + for (const address of creationParameters.acceptedTokens) { + const acceptedCurrency = this.currencyManager.fromAddress(address, network); + if (!acceptedCurrency) { + throw new UnsupportedCurrencyError({ + value: address, + network, + }); + } + //TODO: add resticted tokens check like TORN + } + + //TODO: fix reference-based creationParameters type + + return super.createCreationAction(creationParameters); + } + /** + * Applies a creation extension action + * + * @param extensionAction action to apply + * @param timestamp ? + * + * @returns state of the extension created + */ + protected applyCreation( + extensionAction: ExtensionTypes.IAction, + timestamp: number, + ): ExtensionTypes.IState { + const basicCreationAction = super.applyCreation(extensionAction, timestamp); + + return { + ...basicCreationAction, + events: [ + { + name: 'create', + parameters: { + network: extensionAction.parameters.paymentAddress, + }, + timestamp, + }, + ], + values: { + ...basicCreationAction.values, + }, + }; + } +} diff --git a/packages/payment-processor/package.json b/packages/payment-processor/package.json index b0795d298..d06b44ce9 100644 --- a/packages/payment-processor/package.json +++ b/packages/payment-processor/package.json @@ -39,6 +39,8 @@ "test:watch": "yarn test --watch" }, "dependencies": { + "@hinkal/client": "^0.1.7", + "@hinkal/crypto": "^0.1.3", "@openzeppelin/contracts": "4.9.6", "@requestnetwork/currency": "0.18.0", "@requestnetwork/payment-detection": "0.45.0", diff --git a/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts b/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts new file mode 100644 index 000000000..b30abc25c --- /dev/null +++ b/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts @@ -0,0 +1,57 @@ +import { providers } from 'ethers'; +import { BigNumberish } from 'ethers'; +import { Signer } from 'ethers'; +import { ClientTypes, ExtensionTypes } from '@requestnetwork/types'; +import { getProvider, getRequestPaymentValues, getSigner, validateRequest } from './utils'; +import { EthersProviderAdapter, Hinkal } from '@hinkal/client'; +import { emporiumOp, MultiThreadedUtxoUtils } from '@hinkal/crypto'; +import { ERC20__factory } from 'smart-contracts/types'; +import { RelayerTransaction } from '@hinkal/client/dist/types/relay'; + +export async function payErc20RequestHinkalWallet( + request: ClientTypes.IRequestData, + signerOrProvider: providers.Provider | Signer = getProvider(), + amount: BigNumberish, +): Promise { + const signer = getSigner(signerOrProvider); + + const { transactionHash } = await constructAndSendTransferOp(request, signer, amount); + + return await signer.provider!.getTransaction(transactionHash); +} + +export async function constructAndSendTransferOp( + request: ClientTypes.IRequestData, + signer: Signer, + amount: BigNumberish, +): Promise { + validateRequest(request, ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_HINKAL_WALLET); + const hinkalProviderAdapter = new EthersProviderAdapter(signer, await signer.getChainId()); + const utxoUtils = new MultiThreadedUtxoUtils(); + + const tokenAddress = request.currencyInfo.value; + // FIX: MultichainUtxoUtils generic incompatibility + const hinkal = new Hinkal(utxoUtils as unknown as ConstructorParameters[0]); + + await hinkal.initProviderAdapter(undefined, hinkalProviderAdapter); + + await hinkal.initUserKeys(); + + await hinkal.resetMerkle(); + + const erc20Instance = hinkal.getContract(ERC20__factory, tokenAddress); + + // Should we use paymentReference here? + const { paymentReference } = getRequestPaymentValues(request); + + const transferOp = emporiumOp(erc20Instance, 'transfer', [`0x${paymentReference}`, amount]); + + return (await hinkal.actionPrivateWallet( + [tokenAddress], + [BigInt(amount.toString())], + [false], + [transferOp], + undefined, + false, + )) as RelayerTransaction; +} diff --git a/packages/payment-processor/src/payment/index.ts b/packages/payment-processor/src/payment/index.ts index 4bd6b57e2..347258d1f 100644 --- a/packages/payment-processor/src/payment/index.ts +++ b/packages/payment-processor/src/payment/index.ts @@ -21,6 +21,7 @@ import { encodeRequestErc20Approval } from './encoder-approval'; import { encodeRequestPayment } from './encoder-payment'; import { IPreparedTransaction } from './prepared-transaction'; import { IRequestPaymentOptions } from '../types'; +import { payErc20RequestHinkalWallet } from './erc20-hinkal-wallet'; export { INearTransactionCallback } from './utils-near'; export const noConversionNetworks = [ @@ -71,6 +72,7 @@ export class UnsupportedPaymentChain extends Error { * Processes a transaction to pay a Request. * Supported networks: * - ERC20_PROXY_CONTRACT + * - ERC20_HINKAL_WALLET * - ETH_INPUT_DATA * - ERC20_FEE_PROXY_CONTRACT * - ANY_TO_ERC20_PROXY @@ -99,6 +101,8 @@ export async function payRequest( case ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_FEE_PROXY_CONTRACT: case ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_TRANSFERABLE_RECEIVABLE: return payErc20Request(request, signer, amount, undefined, overrides); + case ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_HINKAL_WALLET: + return payErc20RequestHinkalWallet(request, signer, amount!); case ExtensionTypes.PAYMENT_NETWORK_ID.ERC777_STREAM: return payErc777StreamRequest(request, signer); case ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_ERC20_PROXY: { diff --git a/packages/payment-processor/src/payment/utils.ts b/packages/payment-processor/src/payment/utils.ts index 661d15ab0..927e03e03 100644 --- a/packages/payment-processor/src/payment/utils.ts +++ b/packages/payment-processor/src/payment/utils.ts @@ -167,6 +167,7 @@ const { ANY_TO_ERC20_PROXY, NATIVE_TOKEN, ERC20_TRANSFERABLE_RECEIVABLE, + ERC20_HINKAL_WALLET, } = ExtensionTypes.PAYMENT_NETWORK_ID; const currenciesMap: any = { [ERC777_STREAM]: RequestLogicTypes.CURRENCY.ERC777, @@ -200,6 +201,7 @@ export function validateRequest( ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_ERC20_PROXY, ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_NATIVE_TOKEN, ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_ETH_PROXY, + ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_HINKAL_WALLET, ].includes(paymentNetworkId) ? // Any currency type is valid with Any to ERC20 / ETH / Native conversion true @@ -214,6 +216,7 @@ export function validateRequest( ERC20_FEE_PROXY_CONTRACT, ERC777_STREAM, ERC20_TRANSFERABLE_RECEIVABLE, + ERC20_HINKAL_WALLET, ].includes(paymentNetworkId) || request.currencyInfo.value; // Payment network with fees should have both or none of fee address and fee amount diff --git a/packages/types/package.json b/packages/types/package.json index dd01ddcc9..7aa32fb7e 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -38,6 +38,7 @@ "prepare": "yarn run build" }, "dependencies": { + "@hinkal/data": "^0.1.3", "ethers": "5.5.1" }, "devDependencies": { diff --git a/packages/types/src/currency-types.ts b/packages/types/src/currency-types.ts index 0282c3908..f938b30af 100644 --- a/packages/types/src/currency-types.ts +++ b/packages/types/src/currency-types.ts @@ -207,3 +207,6 @@ export type CurrencyPairs = Record>; * Network => currencyFrom => currencyTo => cost */ export type AggregatorsMap = Partial>; + +//For now only optimism is supported to work with Hinkal Wallet +export type HinkalSupportedNetworks = 'optimism'; diff --git a/packages/types/src/extension-types.ts b/packages/types/src/extension-types.ts index 71fb8fa2e..41101d669 100644 --- a/packages/types/src/extension-types.ts +++ b/packages/types/src/extension-types.ts @@ -10,6 +10,7 @@ import * as PnMeta from './extensions/pn-meta'; import * as PnAnyToAnyConversion from './extensions/pn-any-to-any-conversion-types'; import * as Identity from './identity-types'; import * as RequestLogic from './request-logic-types'; +import * as PnAnyHinkalWallet from './extensions/pn-any-hinkal-wallet-based-types'; export { ContentData, @@ -22,6 +23,7 @@ export { PnAnyToEth, PnAnyToAnyConversion, PnMeta, + PnAnyHinkalWallet, }; /** Extension interface is extended by the extensions implementation */ @@ -89,6 +91,7 @@ export enum PAYMENT_NETWORK_ID { BITCOIN_ADDRESS_BASED = 'pn-bitcoin-address-based', TESTNET_BITCOIN_ADDRESS_BASED = 'pn-testnet-bitcoin-address-based', ERC20_ADDRESS_BASED = 'pn-erc20-address-based', + ERC20_HINKAL_WALLET = 'pn-erc20-hinkal-wallet', ERC20_PROXY_CONTRACT = 'pn-erc20-proxy-contract', ERC20_FEE_PROXY_CONTRACT = 'pn-erc20-fee-proxy-contract', ERC777_STREAM = 'pn-erc777-stream', diff --git a/packages/types/src/extensions/pn-any-hinkal-wallet-based-types.ts b/packages/types/src/extensions/pn-any-hinkal-wallet-based-types.ts new file mode 100644 index 000000000..840d0d3d0 --- /dev/null +++ b/packages/types/src/extensions/pn-any-hinkal-wallet-based-types.ts @@ -0,0 +1,12 @@ +import * as PnAnyToAnyConversion from './pn-any-to-any-conversion-types'; +import { HinkalSupportedNetworks } from '../currency-types'; + +/** Any to Hinkal Wallet reference-based payment network extension interface */ +export type IAnyToHinkalWallet = + PnAnyToAnyConversion.IConversionReferenceBased; + +/** Parameters for the creation action */ +export interface ICreationParameters extends PnAnyToAnyConversion.ICreationParameters { + network: HinkalSupportedNetworks; + acceptedTokens: string[]; +} diff --git a/yarn.lock b/yarn.lock index 4c6bf438f..bcc4f1093 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1182,7 +1182,7 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" -"@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.6.3", "@ethersproject/abi@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== @@ -1236,7 +1236,7 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/web" "^5.6.0" -"@ethersproject/abstract-provider@^5.7.0": +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== @@ -1282,7 +1282,7 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" -"@ethersproject/abstract-signer@^5.7.0": +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== @@ -1326,6 +1326,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/rlp" "^5.6.0" +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/address@^5.0.9": version "5.0.11" resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.11.tgz" @@ -1337,17 +1348,6 @@ "@ethersproject/logger" "^5.0.8" "@ethersproject/rlp" "^5.0.7" -"@ethersproject/address@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" - integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/base64@5.4.0", "@ethersproject/base64@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz" @@ -1369,7 +1369,7 @@ dependencies: "@ethersproject/bytes" "^5.6.0" -"@ethersproject/base64@^5.7.0": +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== @@ -1400,6 +1400,14 @@ "@ethersproject/bytes" "^5.6.0" "@ethersproject/properties" "^5.6.0" +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/bignumber@5.4.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.0.tgz" @@ -1427,6 +1435,15 @@ "@ethersproject/logger" "^5.6.0" bn.js "^4.11.9" +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + "@ethersproject/bignumber@^5.0.13": version "5.0.15" resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.15.tgz" @@ -1436,15 +1453,6 @@ "@ethersproject/logger" "^5.0.8" bn.js "^4.4.0" -"@ethersproject/bignumber@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" - integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - bn.js "^5.2.1" - "@ethersproject/bytes@5.4.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz" @@ -1466,6 +1474,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/bytes@^5.0.9": version "5.0.11" resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.11.tgz" @@ -1473,13 +1488,6 @@ dependencies: "@ethersproject/logger" "^5.0.8" -"@ethersproject/bytes@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" - integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== - dependencies: - "@ethersproject/logger" "^5.7.0" - "@ethersproject/constants@5.4.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz" @@ -1501,6 +1509,13 @@ dependencies: "@ethersproject/bignumber" "^5.6.0" +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants@^5.0.8": version "5.0.10" resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.10.tgz" @@ -1508,13 +1523,6 @@ dependencies: "@ethersproject/bignumber" "^5.0.13" -"@ethersproject/constants@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" - integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== - dependencies: - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/contracts@5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.0.tgz" @@ -1563,7 +1571,7 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/transactions" "^5.6.0" -"@ethersproject/contracts@^5.7.0": +"@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== @@ -1630,7 +1638,7 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" -"@ethersproject/hash@^5.7.0": +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== @@ -1699,6 +1707,24 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/wordlists" "^5.6.0" +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/json-wallets@5.4.0", "@ethersproject/json-wallets@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz" @@ -1756,6 +1782,25 @@ aes-js "3.0.0" scrypt-js "3.0.1" +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + "@ethersproject/keccak256@5.4.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.3", "@ethersproject/keccak256@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz" @@ -1780,6 +1825,14 @@ "@ethersproject/bytes" "^5.6.0" js-sha3 "0.8.0" +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + "@ethersproject/keccak256@^5.0.7": version "5.0.9" resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.9.tgz" @@ -1788,14 +1841,6 @@ "@ethersproject/bytes" "^5.0.9" js-sha3 "0.5.7" -"@ethersproject/keccak256@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" - integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== - dependencies: - "@ethersproject/bytes" "^5.7.0" - js-sha3 "0.8.0" - "@ethersproject/logger@5.4.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz" @@ -1811,16 +1856,16 @@ resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz" integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + "@ethersproject/logger@^5.0.8": version "5.0.10" resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.10.tgz" integrity sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw== -"@ethersproject/logger@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" - integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== - "@ethersproject/networks@5.4.1": version "5.4.1" resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.1.tgz" @@ -1856,6 +1901,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.0.tgz" @@ -1863,13 +1915,6 @@ dependencies: "@ethersproject/logger" "^5.4.0" -"@ethersproject/networks@^5.7.0": - version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" - integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== - dependencies: - "@ethersproject/logger" "^5.7.0" - "@ethersproject/pbkdf2@5.4.0", "@ethersproject/pbkdf2@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz" @@ -1894,6 +1939,14 @@ "@ethersproject/bytes" "^5.6.0" "@ethersproject/sha2" "^5.6.0" +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/properties@5.4.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz" @@ -1915,6 +1968,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties@^5.0.7": version "5.0.9" resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.9.tgz" @@ -1922,13 +1982,6 @@ dependencies: "@ethersproject/logger" "^5.0.8" -"@ethersproject/properties@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" - integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== - dependencies: - "@ethersproject/logger" "^5.7.0" - "@ethersproject/providers@5.4.1": version "5.4.1" resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.1.tgz" @@ -2054,6 +2107,32 @@ bech32 "1.1.4" ws "7.4.6" +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + "@ethersproject/random@5.4.0", "@ethersproject/random@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz" @@ -2086,6 +2165,14 @@ "@ethersproject/bytes" "^5.6.0" "@ethersproject/logger" "^5.6.0" +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp@5.4.0", "@ethersproject/rlp@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz" @@ -2110,6 +2197,14 @@ "@ethersproject/bytes" "^5.6.0" "@ethersproject/logger" "^5.6.0" +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp@^5.0.7": version "5.0.9" resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.9.tgz" @@ -2118,14 +2213,6 @@ "@ethersproject/bytes" "^5.0.9" "@ethersproject/logger" "^5.0.8" -"@ethersproject/rlp@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" - integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== - dependencies: - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/sha2@5.4.0", "@ethersproject/sha2@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz" @@ -2153,7 +2240,7 @@ "@ethersproject/logger" "^5.6.0" hash.js "1.1.7" -"@ethersproject/sha2@^5.7.0": +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== @@ -2198,17 +2285,7 @@ elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/signing-key@^5.0.8": - version "5.0.11" - resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.11.tgz" - integrity sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ== - dependencies: - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/logger" "^5.0.8" - "@ethersproject/properties" "^5.0.7" - elliptic "6.5.4" - -"@ethersproject/signing-key@^5.7.0": +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== @@ -2220,6 +2297,16 @@ elliptic "6.5.4" hash.js "1.1.7" +"@ethersproject/signing-key@^5.0.8": + version "5.0.11" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.11.tgz" + integrity sha512-Jfcru/BGwdkXhLxT+8WCZtFy7LL0TPFZw05FAb5asxB/MyVsEfNdNxGDtjVE9zXfmRSPe/EusXYY4K7wcygOyQ== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + elliptic "6.5.4" + "@ethersproject/solidity@5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz" @@ -2255,7 +2342,7 @@ "@ethersproject/sha2" "^5.6.0" "@ethersproject/strings" "^5.6.0" -"@ethersproject/solidity@^5.7.0": +"@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== @@ -2294,7 +2381,7 @@ "@ethersproject/constants" "^5.6.0" "@ethersproject/logger" "^5.6.0" -"@ethersproject/strings@^5.7.0": +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== @@ -2348,6 +2435,21 @@ "@ethersproject/rlp" "^5.6.0" "@ethersproject/signing-key" "^5.6.0" +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions@^5.0.0-beta.135": version "5.0.11" resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.11.tgz" @@ -2363,21 +2465,6 @@ "@ethersproject/rlp" "^5.0.7" "@ethersproject/signing-key" "^5.0.8" -"@ethersproject/transactions@^5.6.2", "@ethersproject/transactions@^5.7.0": - version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" - integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== - dependencies: - "@ethersproject/address" "^5.7.0" - "@ethersproject/bignumber" "^5.7.0" - "@ethersproject/bytes" "^5.7.0" - "@ethersproject/constants" "^5.7.0" - "@ethersproject/keccak256" "^5.7.0" - "@ethersproject/logger" "^5.7.0" - "@ethersproject/properties" "^5.7.0" - "@ethersproject/rlp" "^5.7.0" - "@ethersproject/signing-key" "^5.7.0" - "@ethersproject/units@5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz" @@ -2405,6 +2492,15 @@ "@ethersproject/constants" "^5.6.0" "@ethersproject/logger" "^5.6.0" +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/wallet@5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz" @@ -2468,6 +2564,27 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/wordlists" "^5.6.0" +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + "@ethersproject/web@5.4.0", "@ethersproject/web@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz" @@ -2512,7 +2629,7 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" -"@ethersproject/web@^5.7.0": +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": version "5.7.1" resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== @@ -2556,6 +2673,17 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@fastify/busboy@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" @@ -3050,11 +3178,88 @@ resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.2.0.tgz#5f3d96ec6b2354ad6d8a28bf216a1d97b5426861" integrity sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ== +"@hinkal/api@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@hinkal/api/-/api-0.1.1.tgz#683e59ce4b5453abc1e92b0881284353b987b4d7" + integrity sha512-7AX418DkoHUqsY55pMtN+QhEyV4KO9Q5bnkpilBY01D1sRw69K7GowAaoIPR8OJCZehgFB6bCfftSEFkyxZTEg== + dependencies: + "@hinkal/crypto" "^0.1.1" + "@hinkal/data" "^0.1.3" + +"@hinkal/client@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@hinkal/client/-/client-0.1.7.tgz#7f0cde79ec89a05b2d02d9ad966dca849109c1f1" + integrity sha512-I/JsdLDt6ibM/QLuItI9c5Sa0Ut0xIgWV7eHDyBLkLp6+xSjIQ7A9tBKyQ5KsCZ8z7ynrOogEdnVA9sVGfA+jg== + dependencies: + "@hinkal/api" "^0.1.1" + "@hinkal/crypto" "^0.1.1" + "@hinkal/data" "^0.1.3" + "@hinkal/utils" "^0.1.4" + "@types/uuid" "^10.0.0" + "@zkmelabs/widget" "^0.3.2" + async-mutex "^0.5.0" + ua-parser-js "^1.0.37" + +"@hinkal/crypto@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@hinkal/crypto/-/crypto-0.1.1.tgz#3e2713f86178b0f5b4a5b9594498b0f402682c6f" + integrity sha512-csPs9lq7cZtkIUtwRD5tgwbz5fZqu+3qFL32htlLD9jjEv9MBqXrXX6cQlV2JrD6qVJCFgmPyC779gDCEMSTZg== + dependencies: + "@hinkal/data" "^0.1.3" + buffer "^6.0.3" + circomlibjs "^0.1.7" + libsodium-wrappers "^0.7.10" + process "^0.11.10" + snarkjs "0.7.5" + uuid "^11.0.1" + +"@hinkal/crypto@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@hinkal/crypto/-/crypto-0.1.3.tgz#bb27c7674a1837105f4eda17c47209e14a81973b" + integrity sha512-CYRTXFuJYgWG9YQShr0gUzJaAtnCywI0shPB8BXAdeRqvxfnI68E7uiANzyXW9m6i41C00x6FIdD914h7LZtLQ== + dependencies: + "@hinkal/data" "^0.1.3" + buffer "^6.0.3" + circomlibjs "^0.1.7" + libsodium-wrappers "^0.7.10" + process "^0.11.10" + snarkjs "0.7.5" + uuid "^11.0.1" + +"@hinkal/data@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@hinkal/data/-/data-0.1.3.tgz#380508330eb5f320abfe7dd5bc285e11e41c7f09" + integrity sha512-gOG+9aEKi7d0keB+5oX0f7jmDSfHJM8FGS0iTxpMcn0JA3cO9SjqENfU8wOqPsctZZlzLD6BzVtkH91hSzG+MQ== + dependencies: + dotenv "^16.4.5" + +"@hinkal/utils@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@hinkal/utils/-/utils-0.1.4.tgz#b0ebbed4abf708f9dea3dfec91722af1c0fe00cb" + integrity sha512-pMPtxunqgj7MOCqVSkmrmu9lk7kjaujU7scNkZWo0C/AfVmxdYDyYr9lpV70vyMxIdG5+dBG6Fc3mYHihTKd0A== + dependencies: + "@hinkal/api" "^0.1.1" + "@hinkal/crypto" "^0.1.1" + "@hinkal/data" "^0.1.3" + "@hutson/parse-repository-url@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz#98c23c950a3d9b6c8f0daed06da6c3af06981340" integrity sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q== +"@iden3/bigarray@0.0.2": + version "0.0.2" + resolved "https://registry.yarnpkg.com/@iden3/bigarray/-/bigarray-0.0.2.tgz#6fc4ba5be18daf8a26ee393f2fb62b80d98c05e9" + integrity sha512-Xzdyxqm1bOFF6pdIsiHLLl3HkSLjbhqJHVyqaTxXt3RqXBEnmsUmEW47H7VOi/ak7TdkRpNkxjyK5Zbkm+y52g== + +"@iden3/binfileutils@0.0.12": + version "0.0.12" + resolved "https://registry.yarnpkg.com/@iden3/binfileutils/-/binfileutils-0.0.12.tgz#3772552f57551814ff606fa68ea1e0ef52795ce3" + integrity sha512-naAmzuDufRIcoNfQ1d99d7hGHufLA3wZSibtr4dMe6ZeiOPV1KwOZWTJ1YVz4HbaWlpDuzVU72dS4ATQS4PXBQ== + dependencies: + fastfile "0.0.20" + ffjavascript "^0.3.0" + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -5487,6 +5692,11 @@ resolved "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.3.tgz" integrity sha512-Fl1TX1dapfXyDqFg2ic9M+vlXRktcPJrc4PR7sRc7sdVrjavg/JHlbUXBt8qWWqhJrmSqg3RNAkAPRiOYw6Ahw== +"@types/uuid@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-10.0.0.tgz#e9c07fe50da0f53dc24970cca94d619ff03f6f6d" + integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== + "@types/web3@1.0.19": version "1.0.19" resolved "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz" @@ -5786,6 +5996,11 @@ js-yaml "^3.10.0" tslib "^2.4.0" +"@zkmelabs/widget@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@zkmelabs/widget/-/widget-0.3.2.tgz#a44a4919444bde05a11366076910e83b5348eb5b" + integrity sha512-YHjrsKHBbksZzSQu4kQnAapUtRE7Rba5Adrydw/kKfWV6/6HYPl+/cWYSL8I5Wcf2NqLjWpwZk6/6hzqrmPxoQ== + "@zkochan/js-yaml@0.0.6": version "0.0.6" resolved "https://registry.yarnpkg.com/@zkochan/js-yaml/-/js-yaml-0.0.6.tgz#975f0b306e705e28b8068a07737fa46d3fc04826" @@ -6487,6 +6702,13 @@ async-limiter@~1.0.0: resolved "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-mutex@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.5.0.tgz#353c69a0b9e75250971a64ac203b0ebfddd75482" + integrity sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA== + dependencies: + tslib "^2.4.0" + async@2.6.2: version "2.6.2" resolved "https://registry.npmjs.org/async/-/async-2.6.2.tgz" @@ -6562,6 +6784,11 @@ axios@^1.0.0, axios@^1.4.0: form-data "^4.0.0" proxy-from-env "^1.1.0" +b4a@^1.0.1: + version "1.6.7" + resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.7.tgz#a99587d4ebbfbd5a6e3b21bdb5d5fa385767abe4" + integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg== + babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz" @@ -7276,6 +7503,17 @@ before-after-hook@^2.2.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.3.tgz#c51e809c81a4e354084422b9b26bad88249c517c" integrity sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ== +bfj@^7.0.2: + version "7.1.0" + resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.1.0.tgz#c5177d522103f9040e1b12980fe8c38cf41d3f8b" + integrity sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw== + dependencies: + bluebird "^3.7.2" + check-types "^11.2.3" + hoopy "^0.1.4" + jsonpath "^1.1.1" + tryer "^1.0.1" + big-integer@1.6.36: version "1.6.36" resolved "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz" @@ -7378,12 +7616,37 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +blake-hash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/blake-hash/-/blake-hash-2.0.0.tgz#af184dce641951126d05b7d1c3de3224f538d66e" + integrity sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + readable-stream "^3.6.0" + +blake2b-wasm@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/blake2b-wasm/-/blake2b-wasm-2.4.0.tgz#9115649111edbbd87eb24ce7c04b427e4e2be5be" + integrity sha512-S1kwmW2ZhZFFFOghcx73+ZajEfKBqhP82JMssxtLVMxlaPea1p9uoLiUZ5WYyHn0KddwbLc+0vh4wR0KBNoT5w== + dependencies: + b4a "^1.0.1" + nanoassert "^2.0.0" + +blake2b@^2.1.3: + version "2.1.4" + resolved "https://registry.yarnpkg.com/blake2b/-/blake2b-2.1.4.tgz#817d278526ddb4cd673bfb1af16d1ad61e393ba3" + integrity sha512-AyBuuJNI64gIvwx13qiICz6H6hpmjvYS5DGkG6jbXMOT8Z3WUJ3V1X0FlhIoT1b/5JtHE3ki+xjtMvu1nn+t9A== + dependencies: + blake2b-wasm "^2.4.0" + nanoassert "^2.0.0" + blakejs@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz" integrity sha1-ad+S75U6qIylGjLfarHFShVfx6U= -bluebird@^3.5.0, bluebird@^3.5.2: +bluebird@^3.5.0, bluebird@^3.5.2, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -8310,6 +8573,11 @@ check-error@^1.0.2: resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz" integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= +check-types@^11.2.3: + version "11.2.3" + resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" + integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== + checkpoint-store@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz" @@ -8476,6 +8744,23 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +circom_runtime@0.1.28: + version "0.1.28" + resolved "https://registry.yarnpkg.com/circom_runtime/-/circom_runtime-0.1.28.tgz#4ea4606956eeac4499f71f65354f45b54faa93fe" + integrity sha512-ACagpQ7zBRLKDl5xRZ4KpmYIcZDUjOiNRuxvXLqhnnlLSVY1Dbvh73TI853nqoR0oEbihtWmMSjgc5f+pXf/jQ== + dependencies: + ffjavascript "0.3.1" + +circomlibjs@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/circomlibjs/-/circomlibjs-0.1.7.tgz#9f5a7d9a23323744b11ee456b05b0cd81f48b554" + integrity sha512-GRAUoAlKAsiiTa+PA725G9RmEmJJRc8tRFxw/zKktUxlQISGznT4hH4ESvW8FNTsrGg/nNd06sGP/Wlx0LUHVg== + dependencies: + blake-hash "^2.0.0" + blake2b "^2.1.3" + ethers "^5.5.1" + ffjavascript "^0.2.45" + cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" @@ -9960,6 +10245,11 @@ dotenv@^16.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== +dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + dotignore@~0.1.2: version "0.1.2" resolved "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz" @@ -10024,7 +10314,7 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -ejs@^3.1.7: +ejs@^3.1.6, ejs@^3.1.7: version "3.1.10" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== @@ -10402,7 +10692,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.11.1: +escodegen@^1.11.1, escodegen@^1.8.1: version "1.14.3" resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -10649,6 +10939,11 @@ espree@^7.3.0, espree@^7.3.1: acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" +esprima@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-1.2.2.tgz#76a0fd66fcfe154fd292667dc264019750b1657b" + integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A== + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" @@ -11349,6 +11644,42 @@ ethers@^5.5.0: "@ethersproject/web" "5.5.1" "@ethersproject/wordlists" "5.5.0" +ethers@^5.5.1: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" @@ -11783,6 +12114,11 @@ fast-url-parser@^1.1.3: dependencies: punycode "^1.3.2" +fastfile@0.0.20: + version "0.0.20" + resolved "https://registry.yarnpkg.com/fastfile/-/fastfile-0.0.20.tgz#794a143d58cfda2e24c298e5ef619c748c8a1879" + integrity sha512-r5ZDbgImvVWCP0lA/cGNgQcZqR+aYdFx3u+CtJqUE510pBUVGMn4ulL/iRTI4tACTYsNJ736uzFxEBXesPAktA== + fastq@^1.6.0: version "1.11.0" resolved "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz" @@ -11829,6 +12165,33 @@ fetch-ponyfill@^4.0.0: dependencies: node-fetch "~1.7.1" +ffjavascript@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.3.0.tgz#442cd8fbb1ee4cbb1be9d26fd7b2951a1ea45d6a" + integrity sha512-l7sR5kmU3gRwDy8g0Z2tYBXy5ttmafRPFOqY7S6af5cq51JqJWt5eQ/lSR/rs2wQNbDYaYlQr5O+OSUf/oMLoQ== + dependencies: + wasmbuilder "0.0.16" + wasmcurves "0.2.2" + web-worker "1.2.0" + +ffjavascript@0.3.1, ffjavascript@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.3.1.tgz#3761bbb3f4a67b58a94a463080272bf6b5877b03" + integrity sha512-4PbK1WYodQtuF47D4pRI5KUg3Q392vuP5WjE1THSnceHdXwU3ijaoS0OqxTzLknCtz4Z2TtABzkBdBdMn3B/Aw== + dependencies: + wasmbuilder "0.0.16" + wasmcurves "0.2.2" + web-worker "1.2.0" + +ffjavascript@^0.2.45: + version "0.2.63" + resolved "https://registry.yarnpkg.com/ffjavascript/-/ffjavascript-0.2.63.tgz#0c1216a1f123dc9181df69e144473704d2f115eb" + integrity sha512-dBgdsfGks58b66JnUZeZpGxdMIDQ4QsD3VYlRJyFVrKQHb2kJy4R2gufx5oetrTxXPT+aEjg0dOvOLg1N0on4A== + dependencies: + wasmbuilder "0.0.16" + wasmcurves "0.2.2" + web-worker "1.2.0" + figures@3.2.0, figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" @@ -13345,6 +13708,11 @@ homedir-polyfill@^1.0.1: dependencies: parse-passwd "^1.0.0" +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ== + hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: version "2.8.9" resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" @@ -15284,6 +15652,15 @@ jsonparse@^1.2.0, jsonparse@^1.3.1: resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== +jsonpath@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" + integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== + dependencies: + esprima "1.2.2" + static-eval "2.0.2" + underscore "1.12.1" + jsonpointer@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" @@ -15698,6 +16075,18 @@ libnpmpublish@7.1.4: sigstore "^1.4.0" ssri "^10.0.1" +libsodium-wrappers@^0.7.10: + version "0.7.15" + resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.15.tgz#53f13e483820272a3d55b23be2e34402ac988055" + integrity sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ== + dependencies: + libsodium "^0.7.15" + +libsodium@^0.7.15: + version "0.7.15" + resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.15.tgz#ac284e3dcb1c29ae9526c5581cdada6a072f6d20" + integrity sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw== + linebreak@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/linebreak/-/linebreak-1.0.2.tgz" @@ -15958,6 +16347,11 @@ loglevel@^1.6.4: resolved "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz" integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== +logplease@^1.2.15: + version "1.2.15" + resolved "https://registry.yarnpkg.com/logplease/-/logplease-1.2.15.tgz#3da442e93751a5992cc19010a826b08d0293c48a" + integrity sha512-jLlHnlsPSJjpwUfcNyUxXCl33AYg2cHhIf9QhGL2T4iPT0XPB+xP1LRKFPgIg1M/sg9kAJvy94w9CzBNrfnstA== + looper@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz" @@ -17058,6 +17452,11 @@ nano-json-stream-parser@^0.1.2: resolved "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz" integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= +nanoassert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nanoassert/-/nanoassert-2.0.0.tgz#a05f86de6c7a51618038a620f88878ed1e490c09" + integrity sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA== + nanoid@3.3.3: version "3.3.3" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" @@ -17160,7 +17559,7 @@ node-addon-api@^2.0.0: resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== -node-addon-api@^3.2.1: +node-addon-api@^3.0.0, node-addon-api@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== @@ -17202,6 +17601,11 @@ node-gyp-build@^4.2.0: resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz" integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== +node-gyp-build@^4.2.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" + integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw== + node-gyp-build@^4.3.0: version "4.6.0" resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" @@ -19009,6 +19413,16 @@ quote-stream@^1.0.1: minimist "^1.1.3" through2 "^2.0.0" +r1csfile@0.0.48: + version "0.0.48" + resolved "https://registry.yarnpkg.com/r1csfile/-/r1csfile-0.0.48.tgz#a317fc75407a9da92631666c75bdfc13f0a7835a" + integrity sha512-kHRkKUJNaor31l05f2+RFzvcH5XSa7OfEfd/l4hzjte6NL6fjRkSMfZ4BjySW9wmfdwPOtq3mXurzPvPGEf5Tw== + dependencies: + "@iden3/bigarray" "0.0.2" + "@iden3/binfileutils" "0.0.12" + fastfile "0.0.20" + ffjavascript "0.3.0" + randomatic@^3.0.0: version "3.1.1" resolved "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz" @@ -20311,6 +20725,22 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +snarkjs@0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/snarkjs/-/snarkjs-0.7.5.tgz#334d83b61468bdffbbf922b20734ca47be50b8ab" + integrity sha512-h+3c4rXZKLhLuHk4LHydZCk/h5GcNvk5GjVKRRkHmfb6Ntf8gHOA9zea3g656iclRuhqQ3iKDWFgiD9ypLrKiA== + dependencies: + "@iden3/binfileutils" "0.0.12" + bfj "^7.0.2" + blake2b-wasm "^2.4.0" + circom_runtime "0.1.28" + ejs "^3.1.6" + fastfile "0.0.20" + ffjavascript "0.3.1" + js-sha3 "^0.8.0" + logplease "^1.2.15" + r1csfile "0.0.48" + socks-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" @@ -20664,6 +21094,13 @@ stacktrace-parser@^0.1.10: dependencies: type-fest "^0.7.1" +static-eval@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.2.tgz#2d1759306b1befa688938454c546b7871f806a42" + integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg== + dependencies: + escodegen "^1.8.1" + static-eval@^2.0.5: version "2.1.0" resolved "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz" @@ -21643,6 +22080,11 @@ try-to-catch@^3.0.0: resolved "https://registry.npmjs.org/try-to-catch/-/try-to-catch-3.0.0.tgz" integrity sha512-eIm6ZXwR35jVF8By/HdbbkcaCDTBI5PpCPkejRKrYp0jyf/DbCCcRhHD7/O9jtFI3ewsqo9WctFEiJTS6i+CQA== +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== + ts-essentials@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz" @@ -22144,6 +22586,11 @@ ua-parser-js@^0.7.18: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.34.tgz#afb439e2e3e394bdc90080acb661a39c685b67d7" integrity sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ== +ua-parser-js@^1.0.37: + version "1.0.39" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.39.tgz#bfc07f361549bf249bd8f4589a4cccec18fd2018" + integrity sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw== + uglify-js@^3.1.4: version "3.13.2" resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.2.tgz" @@ -22536,6 +22983,11 @@ uuid@8.3.2, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^11.0.1: + version "11.0.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.0.2.tgz#a8d68ba7347d051e7ea716cc8dcbbab634d66875" + integrity sha512-14FfcOJmqdjbBPdDjFQyk/SdT4NySW4eM0zcG+HqbHP5jzuH56xO3J1DGhgs/cEMCfwYi3HQI1gnTO62iaG+tQ== + uuid@^3.0.0, uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" @@ -22635,6 +23087,18 @@ walker@^1.0.8: dependencies: makeerror "1.0.12" +wasmbuilder@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/wasmbuilder/-/wasmbuilder-0.0.16.tgz#f34c1f2c047d2f6e1065cbfec5603988f16d8549" + integrity sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA== + +wasmcurves@0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/wasmcurves/-/wasmcurves-0.2.2.tgz#ca444f6a6f6e2a5cbe6629d98ff478a62b4ccb2b" + integrity sha512-JRY908NkmKjFl4ytnTu5ED6AwPD+8VJ9oc94kdq7h5bIwbj0L4TDJ69mG+2aLs2SoCmGfqIesMWTEJjtYsoQXQ== + dependencies: + wasmbuilder "0.0.16" + watchpack@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" @@ -22655,6 +23119,11 @@ web-streams-polyfill@^3.2.1: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== +web-worker@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da" + integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA== + web3-bzz@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.10.3.tgz#13942b37757eb850f3500a8e08bf605448b67566" From dca2d5445297e8584180bdeeb517f603ff03ee01 Mon Sep 17 00:00:00 2001 From: OxideDall Date: Thu, 31 Oct 2024 19:52:27 +0300 Subject: [PATCH 2/4] CircleCI trigger From 02d7af66a2d209612b8c0244294ae84a3246d69d Mon Sep 17 00:00:00 2001 From: OxideDall Date: Thu, 31 Oct 2024 21:19:27 +0300 Subject: [PATCH 3/4] Refactor hinkal payment network types, extend payment function, testing --- packages/advanced-logic/src/advanced-logic.ts | 10 +- .../any-to-hinkal-wallet-erc20-proxy.ts | 151 ++++++++++++++++++ .../payment-network/erc20/hinkal-wallet.ts | 18 --- .../payment-network/hinkal-wallet-to-any.ts | 88 ---------- packages/payment-processor/package.json | 4 +- .../src/payment/erc20-hinkal-wallet.ts | 53 ++++-- .../payment-processor/src/payment/index.ts | 4 +- packages/types/src/extension-types.ts | 4 +- .../pn-any-hinkal-wallet-based-types.ts | 2 +- yarn.lock | 23 +-- 10 files changed, 217 insertions(+), 140 deletions(-) create mode 100644 packages/advanced-logic/src/extensions/payment-network/any-to-hinkal-wallet-erc20-proxy.ts delete mode 100644 packages/advanced-logic/src/extensions/payment-network/erc20/hinkal-wallet.ts delete mode 100644 packages/advanced-logic/src/extensions/payment-network/hinkal-wallet-to-any.ts diff --git a/packages/advanced-logic/src/advanced-logic.ts b/packages/advanced-logic/src/advanced-logic.ts index 4170afb89..aa258fe98 100644 --- a/packages/advanced-logic/src/advanced-logic.ts +++ b/packages/advanced-logic/src/advanced-logic.ts @@ -27,7 +27,7 @@ import NativeToken from './extensions/payment-network/native-token'; import AnyToNative from './extensions/payment-network/any-to-native'; import Erc20TransferableReceivablePaymentNetwork from './extensions/payment-network/erc20/transferable-receivable'; import MetaPaymentNetwork from './extensions/payment-network/meta'; -import HinkalWalletToAnyERC20 from './extensions/payment-network/hinkal-wallet-to-any'; +import AnyToHinkalWalletErc20ProxyPaymentNetwork from './extensions/payment-network/any-to-hinkal-wallet-erc20-proxy'; /** * Module to manage Advanced logic extensions @@ -52,7 +52,7 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic anyToNativeToken: AnyToNative[]; erc20TransferableReceivable: Erc20TransferableReceivablePaymentNetwork; metaPn: MetaPaymentNetwork; - hinkalWalletErc20: HinkalWalletToAnyERC20; + anyToHinkalWalletErc20Proxy: AnyToHinkalWalletErc20ProxyPaymentNetwork; }; private currencyManager: CurrencyTypes.ICurrencyManager; @@ -76,8 +76,7 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic anyToNativeToken: [new AnyToNear(currencyManager), new AnyToNearTestnet(currencyManager)], erc20TransferableReceivable: new Erc20TransferableReceivablePaymentNetwork(currencyManager), metaPn: new MetaPaymentNetwork(currencyManager), - // TODO: Add optimistic-like differentiation - hinkalWalletErc20: new HinkalWalletToAnyERC20(currencyManager), + anyToHinkalWalletErc20Proxy: new AnyToHinkalWalletErc20ProxyPaymentNetwork(currencyManager), }; } @@ -139,7 +138,8 @@ export default class AdvancedLogic implements AdvancedLogicTypes.IAdvancedLogic [ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_TRANSFERABLE_RECEIVABLE]: this.extensions.erc20TransferableReceivable, [ExtensionTypes.PAYMENT_NETWORK_ID.META]: this.extensions.metaPn, - [ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_HINKAL_WALLET]: this.extensions.hinkalWalletErc20, + [ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_HINKAL_WALLET]: + this.extensions.anyToHinkalWalletErc20Proxy, }[id]; if (!extension) { diff --git a/packages/advanced-logic/src/extensions/payment-network/any-to-hinkal-wallet-erc20-proxy.ts b/packages/advanced-logic/src/extensions/payment-network/any-to-hinkal-wallet-erc20-proxy.ts new file mode 100644 index 000000000..cb91788fb --- /dev/null +++ b/packages/advanced-logic/src/extensions/payment-network/any-to-hinkal-wallet-erc20-proxy.ts @@ -0,0 +1,151 @@ +import { ExtensionTypes, CurrencyTypes, RequestLogicTypes } from '@requestnetwork/types'; +import { conversionSupportedNetworks, UnsupportedCurrencyError } from '@requestnetwork/currency'; +import Erc20FeeProxyPaymentNetwork from './erc20/fee-proxy-contract'; + +const CURRENT_VERSION = '0.0.1'; + +export default class AnyToHinkalWalletErc20ProxyPaymentNetwork extends Erc20FeeProxyPaymentNetwork { + public constructor( + currencyManager: CurrencyTypes.ICurrencyManager, + extensionId: ExtensionTypes.PAYMENT_NETWORK_ID = ExtensionTypes.PAYMENT_NETWORK_ID + .ERC20_HINKAL_WALLET, + currentVersion: string = CURRENT_VERSION, + ) { + super(currencyManager, extensionId, currentVersion); + } + /** + * Creates the extensionsData to create the extension ERC20 fee proxy contract payment detection + * + * @param creationParameters extensions parameters to create + * + * @returns IExtensionCreationAction the extensionsData to be stored in the request + */ + public createCreationAction( + creationParameters: ExtensionTypes.PnAnyToHinkalWalletErc20.ICreationParameters, + ): ExtensionTypes.IAction { + if (!creationParameters.acceptedTokens) { + throw Error('acceptedTokens is required'); + } + if (creationParameters.acceptedTokens.length === 0) { + throw Error('acceptedTokens cannot be empty'); + } + if (creationParameters.acceptedTokens.some((address) => !this.isValidAddress(address))) { + throw Error('acceptedTokens must contains only valid ethereum addresses'); + } + const network = creationParameters.network; + this.throwIfInvalidNetwork(network); + + for (const address of creationParameters.acceptedTokens) { + const acceptedCurrency = this.currencyManager.fromAddress(address, network); + if (!acceptedCurrency) { + throw new UnsupportedCurrencyError({ + value: address, + network, + }); + } + if (!this.currencyManager.supportsConversion(acceptedCurrency, network)) { + throw Error( + `acceptedTokens must contain only supported token addresses (ERC20 only). ${address} is not supported for ${network}.`, + ); + } + } + + return super.createCreationAction(creationParameters); + } + + /** + * Applies a creation extension action + * + * @param extensionAction action to apply + * @param timestamp action timestamp + * + * @returns state of the extension created + */ + protected applyCreation( + extensionAction: ExtensionTypes.IAction, + timestamp: number, + ): ExtensionTypes.IState { + if (!extensionAction.parameters.network || extensionAction.parameters.network.length === 0) { + throw Error('network is required'); + } + + if ( + !extensionAction.parameters.acceptedTokens || + extensionAction.parameters.acceptedTokens.length === 0 + ) { + throw Error('acceptedTokens is required and cannot be empty'); + } + if ( + extensionAction.parameters.acceptedTokens.some( + (address: string) => !this.isValidAddress(address), + ) + ) { + throw Error('acceptedTokens must contains only valid ethereum addresses'); + } + + const feePNCreationAction = super.applyCreation(extensionAction, timestamp); + + return { + ...feePNCreationAction, + events: [ + { + name: 'create', + parameters: { + feeAddress: extensionAction.parameters.feeAddress, + feeAmount: extensionAction.parameters.feeAmount, + paymentAddress: extensionAction.parameters.paymentAddress, + refundAddress: extensionAction.parameters.refundAddress, + salt: extensionAction.parameters.salt, + network: extensionAction.parameters.network, + acceptedTokens: extensionAction.parameters.acceptedTokens, + maxRateTimespan: extensionAction.parameters.maxRateTimespan, + }, + timestamp, + }, + ], + values: { + ...feePNCreationAction.values, + network: extensionAction.parameters.network, + acceptedTokens: extensionAction.parameters.acceptedTokens, + maxRateTimespan: extensionAction.parameters.maxRateTimespan, + }, + }; + } + + /** + * Validate the extension action regarding the currency and network + * It must throw in case of error + */ + protected validate( + request: RequestLogicTypes.IRequest, + extensionAction: ExtensionTypes.IAction, + ): void { + //TODO: add hinkal network validataion + const network = + extensionAction.action === ExtensionTypes.PnFeeReferenceBased.ACTION.CREATE + ? extensionAction.parameters.network + : request.extensions[this.extensionId]?.values.network; + if (!network) { + return; + } + + // Nothing can be validated if the network has not been given yet + if (!network) { + return; + } + + if (!conversionSupportedNetworks.includes(network)) { + throw new Error(`The network (${network}) is not supported for this payment network.`); + } + + const currency = this.currencyManager.fromStorageCurrency(request.currency); + if (!currency) { + throw new UnsupportedCurrencyError(request.currency); + } + if (!this.currencyManager.supportsConversion(currency, network)) { + throw new Error( + `The currency (${currency.id}, ${currency.hash}) of the request is not supported for this payment network.`, + ); + } + } +} diff --git a/packages/advanced-logic/src/extensions/payment-network/erc20/hinkal-wallet.ts b/packages/advanced-logic/src/extensions/payment-network/erc20/hinkal-wallet.ts deleted file mode 100644 index 9df4752a7..000000000 --- a/packages/advanced-logic/src/extensions/payment-network/erc20/hinkal-wallet.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { ExtensionTypes, CurrencyTypes, RequestLogicTypes } from '@requestnetwork/types'; -import ReferenceBasedPaymentNetwork from '../reference-based'; - -const CURRENT_VERSION = '0.0.1'; - -export default class HinkalWalletPaymentNetwork< - TCreationParameters extends - ExtensionTypes.PnAnyHinkalWallet.ICreationParameters = ExtensionTypes.PnAnyHinkalWallet.ICreationParameters, -> extends ReferenceBasedPaymentNetwork { - public constructor( - currencyManager: CurrencyTypes.ICurrencyManager, - extensionId: ExtensionTypes.PAYMENT_NETWORK_ID = ExtensionTypes.PAYMENT_NETWORK_ID - .ERC20_HINKAL_WALLET, - currentVersion: string = CURRENT_VERSION, - ) { - super(currencyManager, extensionId, currentVersion, RequestLogicTypes.CURRENCY.ERC20); - } -} diff --git a/packages/advanced-logic/src/extensions/payment-network/hinkal-wallet-to-any.ts b/packages/advanced-logic/src/extensions/payment-network/hinkal-wallet-to-any.ts deleted file mode 100644 index 49b0e8815..000000000 --- a/packages/advanced-logic/src/extensions/payment-network/hinkal-wallet-to-any.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { ExtensionTypes, CurrencyTypes } from '@requestnetwork/types'; -import { UnsupportedCurrencyError } from '@requestnetwork/currency'; -import HinkalWalletPaymentNetwork from './erc20/hinkal-wallet'; - -const CURRENT_VERSION = '0.0.1'; - -/** - * Core of the reference based payment networks - * This module is called by the reference based payment networks to avoid code redundancy - */ -export default class HinkalWalletToAnyERC20< - TCreationParameters extends ExtensionTypes.PnAnyHinkalWallet.ICreationParameters, -> extends HinkalWalletPaymentNetwork { - public constructor( - currencyManager: CurrencyTypes.ICurrencyManager, - extensionId: ExtensionTypes.PAYMENT_NETWORK_ID = ExtensionTypes.PAYMENT_NETWORK_ID - .ERC20_HINKAL_WALLET, - currentVersion: string = CURRENT_VERSION, - ) { - super(currencyManager, extensionId, currentVersion); - } - - /** - * Creates the extensionsData to create the payment detection extension - * - * @param creationParameters extensions parameters to create - * - * @returns IExtensionCreationAction the extensionsData to be stored in the request - */ - public createCreationAction(creationParameters: TCreationParameters): ExtensionTypes.IAction { - if (!creationParameters.acceptedTokens) { - throw Error('acceptedTokens is required'); - } - if (creationParameters.acceptedTokens.length === 0) { - throw Error('acceptedTokens cannot be empty'); - } - if (creationParameters.acceptedTokens.some((address) => !this.isValidAddress(address))) { - throw Error('acceptedTokens must contains only valid ethereum addresses'); - } - const network = creationParameters.network; - this.throwIfInvalidNetwork(network); - - for (const address of creationParameters.acceptedTokens) { - const acceptedCurrency = this.currencyManager.fromAddress(address, network); - if (!acceptedCurrency) { - throw new UnsupportedCurrencyError({ - value: address, - network, - }); - } - //TODO: add resticted tokens check like TORN - } - - //TODO: fix reference-based creationParameters type - - return super.createCreationAction(creationParameters); - } - /** - * Applies a creation extension action - * - * @param extensionAction action to apply - * @param timestamp ? - * - * @returns state of the extension created - */ - protected applyCreation( - extensionAction: ExtensionTypes.IAction, - timestamp: number, - ): ExtensionTypes.IState { - const basicCreationAction = super.applyCreation(extensionAction, timestamp); - - return { - ...basicCreationAction, - events: [ - { - name: 'create', - parameters: { - network: extensionAction.parameters.paymentAddress, - }, - timestamp, - }, - ], - values: { - ...basicCreationAction.values, - }, - }; - } -} diff --git a/packages/payment-processor/package.json b/packages/payment-processor/package.json index d06b44ce9..6621af6e5 100644 --- a/packages/payment-processor/package.json +++ b/packages/payment-processor/package.json @@ -39,8 +39,8 @@ "test:watch": "yarn test --watch" }, "dependencies": { - "@hinkal/client": "^0.1.7", - "@hinkal/crypto": "^0.1.3", + "@hinkal/client": "^0.1.8", + "@hinkal/crypto": "^0.1.6", "@openzeppelin/contracts": "4.9.6", "@requestnetwork/currency": "0.18.0", "@requestnetwork/payment-detection": "0.45.0", diff --git a/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts b/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts index b30abc25c..db0199bad 100644 --- a/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts +++ b/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts @@ -2,13 +2,22 @@ import { providers } from 'ethers'; import { BigNumberish } from 'ethers'; import { Signer } from 'ethers'; import { ClientTypes, ExtensionTypes } from '@requestnetwork/types'; -import { getProvider, getRequestPaymentValues, getSigner, validateRequest } from './utils'; +import { + getAmountToPay, + getProvider, + getRequestPaymentValues, + getSigner, + validateRequest, +} from './utils'; import { EthersProviderAdapter, Hinkal } from '@hinkal/client'; -import { emporiumOp, MultiThreadedUtxoUtils } from '@hinkal/crypto'; -import { ERC20__factory } from 'smart-contracts/types'; +import { ERC20__factory, ERC20Proxy__factory } from '@requestnetwork/smart-contracts/types'; import { RelayerTransaction } from '@hinkal/client/dist/types/relay'; +import { emporiumOp } from '@hinkal/crypto'; +import { erc20ProxyArtifact } from '@requestnetwork/smart-contracts'; +import { getPaymentNetworkExtension } from '@requestnetwork/payment-detection'; +import { EvmChains } from 'currency/dist/chains'; -export async function payErc20RequestHinkalWallet( +export async function payErc20HinkalWalletProxyRequest( request: ClientTypes.IRequestData, signerOrProvider: providers.Provider | Signer = getProvider(), amount: BigNumberish, @@ -27,11 +36,27 @@ export async function constructAndSendTransferOp( ): Promise { validateRequest(request, ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_HINKAL_WALLET); const hinkalProviderAdapter = new EthersProviderAdapter(signer, await signer.getChainId()); - const utxoUtils = new MultiThreadedUtxoUtils(); const tokenAddress = request.currencyInfo.value; - // FIX: MultichainUtxoUtils generic incompatibility - const hinkal = new Hinkal(utxoUtils as unknown as ConstructorParameters[0]); + const { network } = request.currencyInfo; + + const tokenInstance = ERC20__factory.connect(tokenAddress, signer.provider!); + + const { paymentReference, paymentAddress } = getRequestPaymentValues(request); + + const amountToPay = getAmountToPay(request, amount); + + // TODO: calculate/get Hinkal fee + + const pn = getPaymentNetworkExtension(request); + // TODO: add hinkal instance support check also + EvmChains.assertChainSupported(network!); + + const proxyAddress = erc20ProxyArtifact.getAddress(network, pn?.version); + + const proxyContract = ERC20Proxy__factory.connect(proxyAddress, signer.provider!); + + const hinkal = new Hinkal(); await hinkal.initProviderAdapter(undefined, hinkalProviderAdapter); @@ -39,18 +64,20 @@ export async function constructAndSendTransferOp( await hinkal.resetMerkle(); - const erc20Instance = hinkal.getContract(ERC20__factory, tokenAddress); - - // Should we use paymentReference here? - const { paymentReference } = getRequestPaymentValues(request); + const approveOp = emporiumOp(tokenInstance, 'approve', [proxyAddress, amountToPay]); - const transferOp = emporiumOp(erc20Instance, 'transfer', [`0x${paymentReference}`, amount]); + const transferOp = emporiumOp(proxyContract, 'transferFromWithReference', [ + tokenAddress, + paymentAddress, + amountToPay, + `0x${paymentReference}`, + ]); return (await hinkal.actionPrivateWallet( [tokenAddress], [BigInt(amount.toString())], [false], - [transferOp], + [approveOp, transferOp], undefined, false, )) as RelayerTransaction; diff --git a/packages/payment-processor/src/payment/index.ts b/packages/payment-processor/src/payment/index.ts index 347258d1f..6bd3a61be 100644 --- a/packages/payment-processor/src/payment/index.ts +++ b/packages/payment-processor/src/payment/index.ts @@ -21,7 +21,7 @@ import { encodeRequestErc20Approval } from './encoder-approval'; import { encodeRequestPayment } from './encoder-payment'; import { IPreparedTransaction } from './prepared-transaction'; import { IRequestPaymentOptions } from '../types'; -import { payErc20RequestHinkalWallet } from './erc20-hinkal-wallet'; +import { payErc20HinkalWalletProxyRequest } from './erc20-hinkal-wallet'; export { INearTransactionCallback } from './utils-near'; export const noConversionNetworks = [ @@ -102,7 +102,7 @@ export async function payRequest( case ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_TRANSFERABLE_RECEIVABLE: return payErc20Request(request, signer, amount, undefined, overrides); case ExtensionTypes.PAYMENT_NETWORK_ID.ERC20_HINKAL_WALLET: - return payErc20RequestHinkalWallet(request, signer, amount!); + return payErc20HinkalWalletProxyRequest(request, signer, amount!); case ExtensionTypes.PAYMENT_NETWORK_ID.ERC777_STREAM: return payErc777StreamRequest(request, signer); case ExtensionTypes.PAYMENT_NETWORK_ID.ANY_TO_ERC20_PROXY: { diff --git a/packages/types/src/extension-types.ts b/packages/types/src/extension-types.ts index 41101d669..b2a223289 100644 --- a/packages/types/src/extension-types.ts +++ b/packages/types/src/extension-types.ts @@ -10,7 +10,7 @@ import * as PnMeta from './extensions/pn-meta'; import * as PnAnyToAnyConversion from './extensions/pn-any-to-any-conversion-types'; import * as Identity from './identity-types'; import * as RequestLogic from './request-logic-types'; -import * as PnAnyHinkalWallet from './extensions/pn-any-hinkal-wallet-based-types'; +import * as PnAnyToHinkalWalletErc20 from './extensions/pn-any-hinkal-wallet-based-types'; export { ContentData, @@ -23,7 +23,7 @@ export { PnAnyToEth, PnAnyToAnyConversion, PnMeta, - PnAnyHinkalWallet, + PnAnyToHinkalWalletErc20, }; /** Extension interface is extended by the extensions implementation */ diff --git a/packages/types/src/extensions/pn-any-hinkal-wallet-based-types.ts b/packages/types/src/extensions/pn-any-hinkal-wallet-based-types.ts index 840d0d3d0..9d2b3cd48 100644 --- a/packages/types/src/extensions/pn-any-hinkal-wallet-based-types.ts +++ b/packages/types/src/extensions/pn-any-hinkal-wallet-based-types.ts @@ -2,7 +2,7 @@ import * as PnAnyToAnyConversion from './pn-any-to-any-conversion-types'; import { HinkalSupportedNetworks } from '../currency-types'; /** Any to Hinkal Wallet reference-based payment network extension interface */ -export type IAnyToHinkalWallet = +export type IAnyToHinkalWalletErc20 = PnAnyToAnyConversion.IConversionReferenceBased; /** Parameters for the creation action */ diff --git a/yarn.lock b/yarn.lock index 8aa7dca2e..60c1d8be7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3186,13 +3186,13 @@ "@hinkal/crypto" "^0.1.1" "@hinkal/data" "^0.1.3" -"@hinkal/client@^0.1.7": - version "0.1.7" - resolved "https://registry.yarnpkg.com/@hinkal/client/-/client-0.1.7.tgz#7f0cde79ec89a05b2d02d9ad966dca849109c1f1" - integrity sha512-I/JsdLDt6ibM/QLuItI9c5Sa0Ut0xIgWV7eHDyBLkLp6+xSjIQ7A9tBKyQ5KsCZ8z7ynrOogEdnVA9sVGfA+jg== +"@hinkal/client@^0.1.8": + version "0.1.8" + resolved "https://registry.yarnpkg.com/@hinkal/client/-/client-0.1.8.tgz#a0a6c53f3e06c1a54c3e85647337aa7fc957e1d5" + integrity sha512-8aVr5rHf5+u2yMSuKEAkQr6vTWZ9zTCrFlEA0d0pxf8+ghWX3UTdm/P05SsTfOyHlo4mmYyO+PIkwfcg716Xww== dependencies: "@hinkal/api" "^0.1.1" - "@hinkal/crypto" "^0.1.1" + "@hinkal/crypto" "^0.1.6" "@hinkal/data" "^0.1.3" "@hinkal/utils" "^0.1.4" "@types/uuid" "^10.0.0" @@ -3213,10 +3213,10 @@ snarkjs "0.7.5" uuid "^11.0.1" -"@hinkal/crypto@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@hinkal/crypto/-/crypto-0.1.3.tgz#bb27c7674a1837105f4eda17c47209e14a81973b" - integrity sha512-CYRTXFuJYgWG9YQShr0gUzJaAtnCywI0shPB8BXAdeRqvxfnI68E7uiANzyXW9m6i41C00x6FIdD914h7LZtLQ== +"@hinkal/crypto@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@hinkal/crypto/-/crypto-0.1.6.tgz#459ef9bef7320b214257e7f58669b548165c5dd0" + integrity sha512-/sRlocVvIqjM5Nz/hefcj+DnUALHAPsx3mwASlmwiQt8Sm9Pt3n1qOhJu3COsC5WQO6gij0jUNdf/QjJijL+eg== dependencies: "@hinkal/data" "^0.1.3" buffer "^6.0.3" @@ -17619,6 +17619,11 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== +node-gyp-build@^4.2.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" + integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw== + node-gyp@^9.0.0: version "9.4.1" resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" From 7ce9bbeb8bd2c237d14884072ad9713f32904486 Mon Sep 17 00:00:00 2001 From: OxideDall Date: Thu, 31 Oct 2024 21:22:02 +0300 Subject: [PATCH 4/4] Fix imports --- packages/payment-processor/src/payment/erc20-hinkal-wallet.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts b/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts index db0199bad..de0095837 100644 --- a/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts +++ b/packages/payment-processor/src/payment/erc20-hinkal-wallet.ts @@ -15,7 +15,7 @@ import { RelayerTransaction } from '@hinkal/client/dist/types/relay'; import { emporiumOp } from '@hinkal/crypto'; import { erc20ProxyArtifact } from '@requestnetwork/smart-contracts'; import { getPaymentNetworkExtension } from '@requestnetwork/payment-detection'; -import { EvmChains } from 'currency/dist/chains'; +import { EvmChains } from '@requestnetwork/currency'; export async function payErc20HinkalWalletProxyRequest( request: ClientTypes.IRequestData,