From 7589741a3e61536b8f81f0aabe28b89108f79fca Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sat, 21 Oct 2023 16:20:07 -0700 Subject: [PATCH 01/34] feat(symbiosis): initialize plugin structure from template --- packages/symbiosis/CHANGELOG.md | 0 packages/symbiosis/README.md | 0 packages/symbiosis/package.json | 51 ++++++++++++++++++++++++ packages/symbiosis/src/Symbiosis.test.ts | 12 ++++++ packages/symbiosis/src/Symbiosis.ts | 35 ++++++++++++++++ packages/symbiosis/src/index.ts | 19 +++++++++ packages/symbiosis/tsconfig.build.json | 16 ++++++++ packages/symbiosis/tsconfig.json | 5 +++ 8 files changed, 138 insertions(+) create mode 100644 packages/symbiosis/CHANGELOG.md create mode 100644 packages/symbiosis/README.md create mode 100644 packages/symbiosis/package.json create mode 100644 packages/symbiosis/src/Symbiosis.test.ts create mode 100644 packages/symbiosis/src/Symbiosis.ts create mode 100644 packages/symbiosis/src/index.ts create mode 100644 packages/symbiosis/tsconfig.build.json create mode 100644 packages/symbiosis/tsconfig.json diff --git a/packages/symbiosis/CHANGELOG.md b/packages/symbiosis/CHANGELOG.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/symbiosis/README.md b/packages/symbiosis/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/packages/symbiosis/package.json b/packages/symbiosis/package.json new file mode 100644 index 000000000..0fa548973 --- /dev/null +++ b/packages/symbiosis/package.json @@ -0,0 +1,51 @@ +{ + "name": "@rabbitholegg/questdk-plugin-symbiosis", + "private": true, + "version": "1.0.0-alpha.4", + "type": "module", + "exports": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js", + "types": "./dist/types/index.d.ts" + }, + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "packageManager": "pnpm@8.3.1", + "description": "", + "scripts": { + "bench": "vitest bench", + "bench:ci": "CI=true vitest bench", + "build": "pnpm run clean && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types", + "build:cjs": "tsc --project tsconfig.build.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", + "build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir ./dist/esm && echo > ./dist/esm/package.json '{\"type\":\"module\",\"sideEffects\":false}'", + "build:types": "tsc --project tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap", + "clean": "rimraf dist", + "format": "rome format . --write", + "lint": "rome check .", + "lint:fix": "pnpm lint --apply", + "preinstall": "npx only-allow pnpm", + "test": "vitest dev", + "test:cov": "vitest dev --coverage", + "test:ci": "CI=true vitest --coverage", + "test:ui": "vitest dev --ui" + }, + "keywords": [], + "author": "", + "license": "ISC", + "types": "./dist/types/index.d.ts", + "typings": "./dist/types/index.d.ts", + "devDependencies": { + "@types/node": "^20.4.5", + "@vitest/coverage-v8": "^0.33.0", + "rimraf": "^5.0.1", + "rome": "^12.1.3", + "ts-node": "^10.9.1", + "tsconfig": "workspace:*", + "typescript": "^5.1.6", + "vitest": "^0.33.0" + }, + "dependencies": { + "@rabbitholegg/questdk": "2.0.0-alpha.22", + "viem": "^1.2.15" + } +} diff --git a/packages/symbiosis/src/Symbiosis.test.ts b/packages/symbiosis/src/Symbiosis.test.ts new file mode 100644 index 000000000..f10d1e926 --- /dev/null +++ b/packages/symbiosis/src/Symbiosis.test.ts @@ -0,0 +1,12 @@ +import { GreaterThanOrEqual, apply } from '@rabbitholegg/questdk/filter' +import { describe, expect, test } from 'vitest' + +describe('Given the symbiosis plugin', () => { + describe('When handling the bridge', () => { + test('should return a valid action filter', () => {}) + + test('should pass filter with valid transactions', () => {}) + + test('should not pass filter with invalid transactions', () => {}) + }) +}) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts new file mode 100644 index 000000000..bb35884b5 --- /dev/null +++ b/packages/symbiosis/src/Symbiosis.ts @@ -0,0 +1,35 @@ +import { + type TransactionFilter, + type BridgeActionParams, + compressJson, +} from '@rabbitholegg/questdk' +import { type Address } from 'viem' + +export const bridge = async ( + bridge: BridgeActionParams, +): Promise => { + const { + sourceChainId, + destinationChainId, + contractAddress, + tokenAddress, + amount, + recipient, + } = bridge + + return compressJson({ + chainId: 0, // The chainId of the source chain + to: 0x0, // The contract address of the bridge + input: {}, // The input object is where we'll put the ABI and the parameters + }) +} + +export const getSupportedTokenAddresses = async ( + _chainId: number, +): Promise => { + // Given a specific chain we would expect this function to return a list of supported token addresses +} + +export const getSupportedChainIds = async (): Promise => { + // This should return all of the ChainIds that are supported by the Project we're integrating +} diff --git a/packages/symbiosis/src/index.ts b/packages/symbiosis/src/index.ts new file mode 100644 index 000000000..4e331e78d --- /dev/null +++ b/packages/symbiosis/src/index.ts @@ -0,0 +1,19 @@ +import { + type IActionPlugin, + PluginActionNotImplementedError, +} from '@rabbitholegg/questdk' + +import { + bridge, + getSupportedChainIds, + getSupportedTokenAddresses, +} from './Symbiosis.js' + +export const Symbiosis: IActionPlugin = { + pluginId: 'symbiosis', + getSupportedTokenAddresses, + getSupportedChainIds, + bridge, + swap: async () => new PluginActionNotImplementedError(), + mint: async () => new PluginActionNotImplementedError(), +} diff --git a/packages/symbiosis/tsconfig.build.json b/packages/symbiosis/tsconfig.build.json new file mode 100644 index 000000000..2e27369d5 --- /dev/null +++ b/packages/symbiosis/tsconfig.build.json @@ -0,0 +1,16 @@ +{ + "extends": "tsconfig/base.json", + "include": ["src"], + "exclude": [ + "src/**/*.test.ts", + "src/**/*.test-d.ts", + "src/**/*.bench.ts", + "src/_test", + "scripts/**/*" + ], + "compilerOptions": { + "resolveJsonModule": true, + "sourceMap": true, + "rootDir": "./src" + } +} diff --git a/packages/symbiosis/tsconfig.json b/packages/symbiosis/tsconfig.json new file mode 100644 index 000000000..c76405177 --- /dev/null +++ b/packages/symbiosis/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "tsconfig/base.json", + "include": ["src/**/*", "src/chain-data.ts"], + "exclude": ["dist", "build", "node_modules"] +} From ce28c39ccc7ac2241dead4c21e2aff0405d2a241 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 08:16:00 -0700 Subject: [PATCH 02/34] feat(symbiosis): add ABI needed to decode calldata --- packages/symbiosis/src/abi.ts | 197 ++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 packages/symbiosis/src/abi.ts diff --git a/packages/symbiosis/src/abi.ts b/packages/symbiosis/src/abi.ts new file mode 100644 index 000000000..ea5ca9da3 --- /dev/null +++ b/packages/symbiosis/src/abi.ts @@ -0,0 +1,197 @@ +export const metaSynthesizeABI = [ + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'stableBridgingFee', + type: 'uint256', + }, + { internalType: 'uint256', name: 'amount', type: 'uint256' }, + { internalType: 'address', name: 'rtoken', type: 'address' }, + { internalType: 'address', name: 'chain2address', type: 'address' }, + { internalType: 'address', name: 'receiveSide', type: 'address' }, + { + internalType: 'address', + name: 'oppositeBridge', + type: 'address', + }, + { internalType: 'address', name: 'syntCaller', type: 'address' }, + { internalType: 'uint256', name: 'chainID', type: 'uint256' }, + { + internalType: 'address[]', + name: 'swapTokens', + type: 'address[]', + }, + { + internalType: 'address', + name: 'secondDexRouter', + type: 'address', + }, + { + internalType: 'bytes', + name: 'secondSwapCalldata', + type: 'bytes', + }, + { + internalType: 'address', + name: 'finalReceiveSide', + type: 'address', + }, + { internalType: 'bytes', name: 'finalCalldata', type: 'bytes' }, + { internalType: 'uint256', name: 'finalOffset', type: 'uint256' }, + { + internalType: 'address', + name: 'revertableAddress', + type: 'address', + }, + { internalType: 'bytes32', name: 'clientID', type: 'bytes32' }, + ], + internalType: 'struct MetaRouteStructs.MetaSynthesizeTransaction', + name: '_metaSynthesizeTransaction', + type: 'tuple', + }, + ], + name: 'metaSynthesize', + outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], + stateMutability: 'nonpayable', + type: 'function', + }, +] + +export const metaRouteABI = [ + { + inputs: [ + { + components: [ + { internalType: 'bytes', name: 'firstSwapCalldata', type: 'bytes' }, + { + internalType: 'bytes', + name: 'secondSwapCalldata', + type: 'bytes', + }, + { + internalType: 'address[]', + name: 'approvedTokens', + type: 'address[]', + }, + { + internalType: 'address', + name: 'firstDexRouter', + type: 'address', + }, + { + internalType: 'address', + name: 'secondDexRouter', + type: 'address', + }, + { internalType: 'uint256', name: 'amount', type: 'uint256' }, + { internalType: 'bool', name: 'nativeIn', type: 'bool' }, + { + internalType: 'address', + name: 'relayRecipient', + type: 'address', + }, + { internalType: 'bytes', name: 'otherSideCalldata', type: 'bytes' }, + ], + internalType: 'struct MetaRouteStructs.MetaRouteTransaction', + name: '_metarouteTransaction', + type: 'tuple', + }, + ], + name: 'metaRoute', + outputs: [], + stateMutability: 'payable', + type: 'function', + }, +] + +export const metaBurnABI = [ + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'stableBridgingFee', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'address', + name: 'syntCaller', + type: 'address', + }, + { + internalType: 'address', + name: 'finalReceiveSide', + type: 'address', + }, + { + internalType: 'address', + name: 'sToken', + type: 'address', + }, + { + internalType: 'bytes', + name: 'finalCallData', + type: 'bytes', + }, + { + internalType: 'uint256', + name: 'finalOffset', + type: 'uint256', + }, + { + internalType: 'address', + name: 'chain2address', + type: 'address', + }, + { + internalType: 'address', + name: 'receiveSide', + type: 'address', + }, + { + internalType: 'address', + name: 'oppositeBridge', + type: 'address', + }, + { + internalType: 'address', + name: 'revertableAddress', + type: 'address', + }, + { + internalType: 'uint256', + name: 'chainID', + type: 'uint256', + }, + { + internalType: 'bytes32', + name: 'clientID', + type: 'bytes32', + }, + ], + internalType: 'struct MetaRouteStructs.MetaBurnTransaction', + name: '_metaBurnTransaction', + type: 'tuple', + }, + ], + name: 'metaBurnSyntheticToken', + outputs: [ + { + internalType: 'bytes32', + name: 'internalID', + type: 'bytes32', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, +] From 605d54856140765d67e2bdad1ecf0a2502f2e474 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 13:39:25 -0700 Subject: [PATCH 03/34] feat(symbiosis): add chain id constants --- packages/symbiosis/src/chain-ids.ts | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 packages/symbiosis/src/chain-ids.ts diff --git a/packages/symbiosis/src/chain-ids.ts b/packages/symbiosis/src/chain-ids.ts new file mode 100644 index 000000000..5c41ce28b --- /dev/null +++ b/packages/symbiosis/src/chain-ids.ts @@ -0,0 +1,32 @@ +export const ETH_CHAIN_ID = 1 +export const OPTIMISM_CHAIN_ID = 10 +export const POLYGON_CHAIN_ID = 137 +export const ZK_ERA_CHAIN_ID = 324 +export const MANTLE_CHAIN_ID = 5000 +export const BASE_CHAIN_ID = 8453 +export const ARBITRUM_CHAIN_ID = 42161 +export const LINEA_CHAIN_ID = 59144 +export const SCROLL_CHAIN_ID = 534352 + +export const CHAIN_ID_ARRAY = [ + ETH_CHAIN_ID, + OPTIMISM_CHAIN_ID, + POLYGON_CHAIN_ID, + ZK_ERA_CHAIN_ID, + MANTLE_CHAIN_ID, + BASE_CHAIN_ID, + ARBITRUM_CHAIN_ID, + LINEA_CHAIN_ID, + SCROLL_CHAIN_ID, +] + +export type ChainIds = + | typeof ETH_CHAIN_ID + | typeof OPTIMISM_CHAIN_ID + | typeof POLYGON_CHAIN_ID + | typeof ZK_ERA_CHAIN_ID + | typeof MANTLE_CHAIN_ID + | typeof BASE_CHAIN_ID + | typeof ARBITRUM_CHAIN_ID + | typeof LINEA_CHAIN_ID + | typeof SCROLL_CHAIN_ID From 49e8daae489dfb9f9946784d6efec800e8eb0ecc Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 14:59:03 -0700 Subject: [PATCH 04/34] chore(symbiosis): add symbiosis sdk and ethers --- packages/symbiosis/package.json | 104 ++++++++++++++++---------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/packages/symbiosis/package.json b/packages/symbiosis/package.json index 0fa548973..d9fafa246 100644 --- a/packages/symbiosis/package.json +++ b/packages/symbiosis/package.json @@ -1,51 +1,53 @@ -{ - "name": "@rabbitholegg/questdk-plugin-symbiosis", - "private": true, - "version": "1.0.0-alpha.4", - "type": "module", - "exports": { - "require": "./dist/cjs/index.js", - "import": "./dist/esm/index.js", - "types": "./dist/types/index.d.ts" - }, - "main": "./dist/cjs/index.js", - "module": "./dist/esm/index.js", - "packageManager": "pnpm@8.3.1", - "description": "", - "scripts": { - "bench": "vitest bench", - "bench:ci": "CI=true vitest bench", - "build": "pnpm run clean && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types", - "build:cjs": "tsc --project tsconfig.build.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", - "build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir ./dist/esm && echo > ./dist/esm/package.json '{\"type\":\"module\",\"sideEffects\":false}'", - "build:types": "tsc --project tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap", - "clean": "rimraf dist", - "format": "rome format . --write", - "lint": "rome check .", - "lint:fix": "pnpm lint --apply", - "preinstall": "npx only-allow pnpm", - "test": "vitest dev", - "test:cov": "vitest dev --coverage", - "test:ci": "CI=true vitest --coverage", - "test:ui": "vitest dev --ui" - }, - "keywords": [], - "author": "", - "license": "ISC", - "types": "./dist/types/index.d.ts", - "typings": "./dist/types/index.d.ts", - "devDependencies": { - "@types/node": "^20.4.5", - "@vitest/coverage-v8": "^0.33.0", - "rimraf": "^5.0.1", - "rome": "^12.1.3", - "ts-node": "^10.9.1", - "tsconfig": "workspace:*", - "typescript": "^5.1.6", - "vitest": "^0.33.0" - }, - "dependencies": { - "@rabbitholegg/questdk": "2.0.0-alpha.22", - "viem": "^1.2.15" - } -} +{ + "name": "@rabbitholegg/questdk-plugin-symbiosis", + "private": true, + "version": "1.0.0-alpha.4", + "type": "module", + "exports": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js", + "types": "./dist/types/index.d.ts" + }, + "main": "./dist/cjs/index.js", + "module": "./dist/esm/index.js", + "packageManager": "pnpm@8.3.1", + "description": "", + "scripts": { + "bench": "vitest bench", + "bench:ci": "CI=true vitest bench", + "build": "pnpm run clean && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types", + "build:cjs": "tsc --project tsconfig.build.json --module commonjs --outDir ./dist/cjs --removeComments --verbatimModuleSyntax false && echo > ./dist/cjs/package.json '{\"type\":\"commonjs\"}'", + "build:esm": "tsc --project tsconfig.build.json --module es2015 --outDir ./dist/esm && echo > ./dist/esm/package.json '{\"type\":\"module\",\"sideEffects\":false}'", + "build:types": "tsc --project tsconfig.build.json --module esnext --declarationDir ./dist/types --emitDeclarationOnly --declaration --declarationMap", + "clean": "rimraf dist", + "format": "rome format . --write", + "lint": "rome check .", + "lint:fix": "pnpm lint --apply", + "preinstall": "npx only-allow pnpm", + "test": "vitest dev", + "test:cov": "vitest dev --coverage", + "test:ci": "CI=true vitest --coverage", + "test:ui": "vitest dev --ui" + }, + "keywords": [], + "author": "", + "license": "ISC", + "types": "./dist/types/index.d.ts", + "typings": "./dist/types/index.d.ts", + "devDependencies": { + "@types/node": "^20.4.5", + "@vitest/coverage-v8": "^0.33.0", + "rimraf": "^5.0.1", + "rome": "^12.1.3", + "ts-node": "^10.9.1", + "tsconfig": "workspace:*", + "typescript": "^5.1.6", + "vitest": "^0.33.0" + }, + "dependencies": { + "@rabbitholegg/questdk": "2.0.0-alpha.22", + "ethers": "^5.2.0", + "symbiosis-js-sdk": "^3.0.9", + "viem": "^1.2.15" + } +} From eaf9e396f1f4cd67f552e98e48ce0c84d0ffc80b Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 15:05:03 -0700 Subject: [PATCH 05/34] feat(symbiosis): set up transaction filter structure --- packages/symbiosis/src/Symbiosis.ts | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index bb35884b5..d4050f392 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -4,6 +4,7 @@ import { compressJson, } from '@rabbitholegg/questdk' import { type Address } from 'viem' +import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' export const bridge = async ( bridge: BridgeActionParams, @@ -18,9 +19,27 @@ export const bridge = async ( } = bridge return compressJson({ - chainId: 0, // The chainId of the source chain - to: 0x0, // The contract address of the bridge - input: {}, // The input object is where we'll put the ABI and the parameters + chainId: sourceChainId, + to: contractAddress, + input: { + $abi: metaRouteABI, + _metarouteTransaction: { + amount: amount, + otherSideCalldata: { + $abi: metaSynthesizeABI, + _metaSynthesizeTransaction: { + rtoken: tokenAddress, + chain2address: recipient, + finalCalldata: { + $abi: metaBurnABI, + _metaBurnTransaction: { + chainID: destinationChainId, + }, + }, + }, + }, + }, + }, }) } From c5e1f92a4f853465991f21c78b9390ee0feedd83 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 15:27:27 -0700 Subject: [PATCH 06/34] feat(symbiosis): use sdk to determine current bridge contract --- packages/symbiosis/src/Symbiosis.ts | 3 +++ packages/symbiosis/src/symbiosis-sdk.ts | 4 ++++ 2 files changed, 7 insertions(+) create mode 100644 packages/symbiosis/src/symbiosis-sdk.ts diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index d4050f392..3fe92f341 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -5,6 +5,7 @@ import { } from '@rabbitholegg/questdk' import { type Address } from 'viem' import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' +import { symbiosis } from './symbiosis-sdk' export const bridge = async ( bridge: BridgeActionParams, @@ -18,6 +19,8 @@ export const bridge = async ( recipient, } = bridge + const bridgeContract = contractAddress ?? symbiosis.metaRouter(sourceChainId).address + return compressJson({ chainId: sourceChainId, to: contractAddress, diff --git a/packages/symbiosis/src/symbiosis-sdk.ts b/packages/symbiosis/src/symbiosis-sdk.ts new file mode 100644 index 000000000..c804211c0 --- /dev/null +++ b/packages/symbiosis/src/symbiosis-sdk.ts @@ -0,0 +1,4 @@ +import { Symbiosis } from 'symbiosis-js-sdk' + +// initialize and export symbiosis sdk instance +export const symbiosis = new Symbiosis('mainnet', []) From 34301c0dd1295c78331ec39018066c90a85d0adf Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 16:28:28 -0700 Subject: [PATCH 07/34] refactor(symbiosis): move check for recipient to destination chain --- packages/symbiosis/src/Symbiosis.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index 3fe92f341..cbc4698c6 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -31,12 +31,11 @@ export const bridge = async ( otherSideCalldata: { $abi: metaSynthesizeABI, _metaSynthesizeTransaction: { - rtoken: tokenAddress, - chain2address: recipient, finalCalldata: { $abi: metaBurnABI, _metaBurnTransaction: { chainID: destinationChainId, + chain2address: recipient, }, }, }, From bb38d2fd991e42bb7c91844a72d2c87fe8061180 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 16:31:34 -0700 Subject: [PATCH 08/34] feat(symbiosis): check tokenAddress against approvedTokens --- packages/symbiosis/src/Symbiosis.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index cbc4698c6..de4d290f5 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -27,6 +27,7 @@ export const bridge = async ( input: { $abi: metaRouteABI, _metarouteTransaction: { + approvedTokens: tokenAddress ? [tokenAddress] : undefined, // if tokenAddress is undefined, any input token will pass filter amount: amount, otherSideCalldata: { $abi: metaSynthesizeABI, From 797aff8a8681daff5b13e6455b01bee42ef0c515 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 16:32:26 -0700 Subject: [PATCH 09/34] feat(symbiosis): get bridge contract from sdk if not provided --- packages/symbiosis/src/Symbiosis.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index de4d290f5..f0fd1c50b 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -19,11 +19,12 @@ export const bridge = async ( recipient, } = bridge - const bridgeContract = contractAddress ?? symbiosis.metaRouter(sourceChainId).address + const bridgeContract = + contractAddress ?? symbiosis.metaRouter(sourceChainId).address return compressJson({ chainId: sourceChainId, - to: contractAddress, + to: bridgeContract, input: { $abi: metaRouteABI, _metarouteTransaction: { From 76bfb38f7196441f732bc7a0796dd76d89c0c44f Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 17:17:04 -0700 Subject: [PATCH 10/34] feat(symbiosis): add type assertion for bridgeContract address --- packages/symbiosis/src/Symbiosis.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index f0fd1c50b..d71d94a93 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -19,8 +19,8 @@ export const bridge = async ( recipient, } = bridge - const bridgeContract = - contractAddress ?? symbiosis.metaRouter(sourceChainId).address + const bridgeContract: Address = + contractAddress ?? symbiosis.metaRouter(sourceChainId).address as Address return compressJson({ chainId: sourceChainId, From e2a69454832402d89def1157807722207567ffc1 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 17:22:59 -0700 Subject: [PATCH 11/34] refactor(symbiosis): remove unused types --- packages/symbiosis/src/chain-ids.ts | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/packages/symbiosis/src/chain-ids.ts b/packages/symbiosis/src/chain-ids.ts index 5c41ce28b..b9bc6b9b9 100644 --- a/packages/symbiosis/src/chain-ids.ts +++ b/packages/symbiosis/src/chain-ids.ts @@ -19,14 +19,3 @@ export const CHAIN_ID_ARRAY = [ LINEA_CHAIN_ID, SCROLL_CHAIN_ID, ] - -export type ChainIds = - | typeof ETH_CHAIN_ID - | typeof OPTIMISM_CHAIN_ID - | typeof POLYGON_CHAIN_ID - | typeof ZK_ERA_CHAIN_ID - | typeof MANTLE_CHAIN_ID - | typeof BASE_CHAIN_ID - | typeof ARBITRUM_CHAIN_ID - | typeof LINEA_CHAIN_ID - | typeof SCROLL_CHAIN_ID From 044d3665041b1215eca637f9f9796de871370b9a Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 17:24:28 -0700 Subject: [PATCH 12/34] feat(symbiosis): implement getSupportedChainIds function --- packages/symbiosis/src/Symbiosis.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index d71d94a93..fff2b710e 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -4,6 +4,7 @@ import { compressJson, } from '@rabbitholegg/questdk' import { type Address } from 'viem' +import { CHAIN_ID_ARRAY } from './chain-ids' import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' import { symbiosis } from './symbiosis-sdk' @@ -20,7 +21,7 @@ export const bridge = async ( } = bridge const bridgeContract: Address = - contractAddress ?? symbiosis.metaRouter(sourceChainId).address as Address + contractAddress ?? (symbiosis.metaRouter(sourceChainId).address as Address) return compressJson({ chainId: sourceChainId, @@ -54,5 +55,5 @@ export const getSupportedTokenAddresses = async ( } export const getSupportedChainIds = async (): Promise => { - // This should return all of the ChainIds that are supported by the Project we're integrating + return CHAIN_ID_ARRAY } From 4e01bbcab25a51ffc644298d7ff0118489135f15 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 19:40:13 -0700 Subject: [PATCH 13/34] feat(symbiosis): map chainId to tokens --- packages/symbiosis/src/chain-ids.ts | 54 ++++++++++++++++++++++++++--- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/packages/symbiosis/src/chain-ids.ts b/packages/symbiosis/src/chain-ids.ts index b9bc6b9b9..49ce5573d 100644 --- a/packages/symbiosis/src/chain-ids.ts +++ b/packages/symbiosis/src/chain-ids.ts @@ -1,3 +1,5 @@ +import type { Address } from 'viem' + export const ETH_CHAIN_ID = 1 export const OPTIMISM_CHAIN_ID = 10 export const POLYGON_CHAIN_ID = 137 @@ -5,8 +7,6 @@ export const ZK_ERA_CHAIN_ID = 324 export const MANTLE_CHAIN_ID = 5000 export const BASE_CHAIN_ID = 8453 export const ARBITRUM_CHAIN_ID = 42161 -export const LINEA_CHAIN_ID = 59144 -export const SCROLL_CHAIN_ID = 534352 export const CHAIN_ID_ARRAY = [ ETH_CHAIN_ID, @@ -16,6 +16,52 @@ export const CHAIN_ID_ARRAY = [ MANTLE_CHAIN_ID, BASE_CHAIN_ID, ARBITRUM_CHAIN_ID, - LINEA_CHAIN_ID, - SCROLL_CHAIN_ID, ] + +export const CHAIN_TO_TOKENS: { + [chainId: number]: [tokens: Address[]] +} = { + [ETH_CHAIN_ID]: [ + '0x0000000000000000000000000000000000000000', // ETH + '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC + '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT + '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI + '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', // WBTC + ], + [OPTIMISM_CHAIN_ID]: [ + '0x0000000000000000000000000000000000000000', // ETH + '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', // USDC.e + '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', // USDT + '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', // DAI + '0x4200000000000000000000000000000000000042', // OP + ], + [POLYGON_CHAIN_ID]: [ + '0x0000000000000000000000000000000000000000', // MATIC + '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', // USDC.e + '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', // USDT + '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', // DAI + '0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619', // WETH + ], + [ZK_ERA_CHAIN_ID]: [ + '0x0000000000000000000000000000000000000000', // ETH + '0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4', // USDC + '0x493257fD37EDB34451f62EDf8D2a0C418852bA4C', // USDT + ], + [MANTLE_CHAIN_ID]: [ + '0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111', // WETH + '0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9', // USDC + '0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE', // USDT + ], + [BASE_CHAIN_ID]: [ + '0x0000000000000000000000000000000000000000', // ETH + '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', // USDbC + '0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb', // DAI + ], + [ARBITRUM_CHAIN_ID]: [ + '0x0000000000000000000000000000000000000000', // ETH + '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', // USDC.e + '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // USDC + '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', // USDT + '0x912CE59144191C1204E64559FE8253a0e49E6548', // ARB + ], +} From bc954a3aa3b5df006387951ed41d4dbc01c97f1e Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 19:43:37 -0700 Subject: [PATCH 14/34] refactor(symbiosis): change file name --- packages/symbiosis/src/Symbiosis.ts | 2 +- packages/symbiosis/src/{chain-ids.ts => constants.ts} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/symbiosis/src/{chain-ids.ts => constants.ts} (100%) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index fff2b710e..47e5e2b0d 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -4,7 +4,7 @@ import { compressJson, } from '@rabbitholegg/questdk' import { type Address } from 'viem' -import { CHAIN_ID_ARRAY } from './chain-ids' +import { CHAIN_ID_ARRAY } from './constants' import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' import { symbiosis } from './symbiosis-sdk' diff --git a/packages/symbiosis/src/chain-ids.ts b/packages/symbiosis/src/constants.ts similarity index 100% rename from packages/symbiosis/src/chain-ids.ts rename to packages/symbiosis/src/constants.ts From 3995a838cc75eb64c1e9358bd4789a68c25f1a88 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 21:41:29 -0700 Subject: [PATCH 15/34] feat(symbiosis): structure and add test transactions --- packages/symbiosis/src/test-transactions.ts | 68 +++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 packages/symbiosis/src/test-transactions.ts diff --git a/packages/symbiosis/src/test-transactions.ts b/packages/symbiosis/src/test-transactions.ts new file mode 100644 index 000000000..9bc42e0db --- /dev/null +++ b/packages/symbiosis/src/test-transactions.ts @@ -0,0 +1,68 @@ +import type { Address, Hash } from "viem"; +import { parseEther } from "viem"; + +interface Transaction { + chainId: number; + from: Address; + hash: Hash; + input: string; + to: Address; + value: string; + } + +interface TestTransaction { + transaction: Transaction, + destinationChainId: number, + amount: bigint | number, + tokenAddress?: Address, + recipient?: Address, + description: string +} + +export const TEST_TRANSACTIONS: TestTransaction[] = [ + { + transaction: { + chainId: 1, + from: '0x27229c5c34c018e6a43d2a00f8f81e06f54a9a5d', + hash: '0xc97deae76c21cb57498d2873babd212fa589eae9e4d2e979f4a10a3428f376ee', + input: '0xa11b11980000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a800000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000004d0e30db000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000a04ce654c1700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000b5e620f480000000000000000000000000000000000000000000000000003782dace9d900000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e00000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000006400000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d73796d62696f7369732d6170700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000001ce4e75e2bd6bbbacde1e10d6813228138337e86000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000002e41e859a050000000000000000000000000000000000000000000000003782dace9d90000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa00000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000378224e87c9b8000000000000000000000000000000000000000000000000000377a9ae76526d3c2000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000000000000000000000000000000000000653b51d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bcc2637dfa64999f75abb53a7265b5b4932e40eb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000001ce4e75e2bd6bbbacde1e10d6813228138337e86000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000424e691a2aa0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000221b262dd800000000000000000000000000000000000000000000000000037915d9d196a94eb000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000006e2b76966cbd9cf4cc2fa0d76d24d5241e0abc2f000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000c400000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d00000000000000000000000039de19c9ff25693a2311aad1dc5c790194084a39000000000000000000000000b0d30ad9c1a7b303977db7ea073a4329d930d94c00000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000000000000000014473796d62696f7369732d61707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022812aa3caf000000000000000000000000a9305c3c14757bae2e73ef7f66fe241f5f6bf3470000000000000000000000005aea5775959fbc2557cc8789bc1bf90a239d9a91000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000a9305c3c14757bae2e73ef7f66fe241f5f6bf34700000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000378f3beab68d14eb0000000000000000000000000000000000000000000000003773ece9b06260530000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000006c00005600001a0020d6bdbf785aea5775959fbc2557cc8789bc1bf90a239d9a9141215aea5775959fbc2557cc8789bc1bf90a239d9a9100042e1a7d4d0000000000000000000000000000000000000000000000000000000000000000c0616e2b76966cbd9cf4cc2fa0d76d24d5241e0abc2f000000000000000000000000000000000000000000008b1ccac80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + to: '0x1dcfbc3fa01b2a86bc3a3f43479cce9e8d438adc', + value: '4000000000000000000' + }, + destinationChainId: 324, + amount: parseEther("3.5"), + tokenAddress: '0x0000000000000000000000000000000000000000', + description: 'when bridging >= 2 ETH from Mainnet to ZK Sync' + }, + { + transaction: { + chainId: 10, + from: '0x2108791df451e953a0e356be2f5dca3e7b8e2a76', + hash: '0xce06592607e69b1b20becfd1dba2b0ae1907b066f5fe15d8f960cf5c631d1cd3', + input: + '0xa11b119800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000005667db60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d6200000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000007f5c764cbc14f9669b88837ca1490cca17c316070000000000000000000000007f5c764cbc14f9669b88837ca1490cca17c3160700000000000000000000000000000000000000000000000000000000000008a4ce654c17000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000493e00000000000000000000000000000000000000000000000000000000005667db60000000000000000000000007f5c764cbc14f9669b88837ca1490cca17c31607000000000000000000000000e833d3ce2b1871fef88742e007254ff73b6d2866000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e0000000000000000000000002108791df451e953a0e356be2f5dca3e7b8e2a76000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a8000000000000000000000000000000000000000000000000000000000000058000000000000000000000000000000000000000000000000000000000000000640000000000000000000000002108791df451e953a0e356be2f5dca3e7b8e2a7673646b2d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f072f11bf151038bd8732cd1088b7c98762b839c000000000000000000000000eeae2132f2e21f68d862c535d7d9857803fbcf3f00000000000000000000000000000000000000000000000000000000000002e41e859a050000000000000000000000000000000000000000000000000000000005667db600000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000561e9d600000000000000000000000000000000000000000000000000000000055e750e000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000018b5788695d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006148fd6c649866596c3d8a971fc313e5ece848820000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f072f11bf151038bd8732cd1088b7c98762b839c000000000000000000000000eeae2132f2e21f68d862c535d7d9857803fbcf3f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c4e691a2aa000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000000000000000000000000000000000000561e6ea000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000001111111254eeb25477b68fb85ed929f73a960582000000000000000000000000eeae2132f2e21f68d862c535d7d9857803fbcf3f00000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000044000000000000000000000000e833d3ce2b1871fef88742e007254ff73b6d286600000000000000000000000001a3c8e513b758ebb011f7afaf6c37616c9c24d90000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e0000000000000000000000002108791df451e953a0e356be2f5dca3e7b8e2a76000000000000000000000000000000000000000000000000000000000000a4b173646b2d6170700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c8bc80f1a8000000000000000000000000e833d3ce2b1871fef88742e007254ff73b6d286600000000000000000000000000000000000000000000000000000000055d530a000000000000000000000000000000000000000000000000000000000559d425000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000008e295789c9465487074a65b1ae9ce0351172393fea698b470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + to: '0x1a039ce63ae35a67bf0e9f6dbfae969639d59ec8', + value: '0', + }, + destinationChainId: 42161, + amount: 90000000n, + tokenAddress: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', + recipient: '0xE833D3cE2B1871fef88742E007254fF73b6d2866', + description: 'when bridging >= 90 USDC.e from Optimism to Arbitrum' + }, + { + transaction: { + chainId: 10, + from: '0xa99f898530df1514a566f1a6562d62809e99557d', + hash: '0xa0d4809a4835d84d15467a9fddfde73d1e57fa5121e56fff2a0526c448011c21', + input: '0xa11b119800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004200000000000000000000000000000000000006000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d6200000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000004d0e30db00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000a44ce654c1700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000b5e620f480000000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000004200000000000000000000000000000000000006000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a800000000000000000000000000000000000000000000000000000000000005800000000000000000000000000000000000000000000000000000000000000064000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d73796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000983e6839e84004e78fbfe76431d879cf9cf2f084000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000002e41e859a050000000000000000000000000000000000000000000000000011c37937e0800000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa0000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000110d9316ec00000000000000000000000000000000000000000000000000000010f903280265cf000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000000000000000000000000000000000000653d989f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bcc2637dfa64999f75abb53a7265b5b4932e40eb0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000983e6839e84004e78fbfe76431d879cf9cf2f084000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000464e691a2aa000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000001b48eb57e00000000000000000000000000000000000000000000000000000110ed8b84a7330000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000025c030116feb2e7bba054b9de0915e5f51b03e31000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000128000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d620000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000138873796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000264ac9650d800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000012475ceafe6000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f38fccf2933000000000000000000000000000000000000000000000000114865d812ebb843c00000000000000000000000000000000000000000000000000000000653d98aa000000000000000000000000000000000000000000000000000000000000002bdeaddeaddeaddeaddeaddeaddeaddeaddead1111000bb878c1b0c915c4faa5fffa6cabf0219da63d7f4cb800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + to: '0x1a039ce63ae35a67bf0e9f6dbfae969639d59ec8', + value: '5000000000000000' + }, + destinationChainId: 5000, + amount: parseEther("0.005"), + tokenAddress: '0x0000000000000000000000000000000000000000', + recipient: '0xA99F898530dF1514A566f1a6562D62809e99557D', + description: 'when bridging ETH from Optimism to Mantle' + } +] From a1e32f5b1ac0ee3288ddb961888fd36e1136ee27 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 21:45:41 -0700 Subject: [PATCH 16/34] feat(symbiosis): implement getSupportedTokenAddresses function --- packages/symbiosis/src/Symbiosis.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index 47e5e2b0d..6e389c1ef 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -4,7 +4,7 @@ import { compressJson, } from '@rabbitholegg/questdk' import { type Address } from 'viem' -import { CHAIN_ID_ARRAY } from './constants' +import { CHAIN_ID_ARRAY, CHAIN_TO_TOKENS } from './constants' import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' import { symbiosis } from './symbiosis-sdk' @@ -51,7 +51,7 @@ export const bridge = async ( export const getSupportedTokenAddresses = async ( _chainId: number, ): Promise => { - // Given a specific chain we would expect this function to return a list of supported token addresses + return CHAIN_TO_TOKENS[_chainId] } export const getSupportedChainIds = async (): Promise => { From 62d4362e745ed0b4f2f0fc9a63d7eff8ad6f07f7 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Sun, 22 Oct 2023 21:46:25 -0700 Subject: [PATCH 17/34] chore(pnpm): format --- packages/symbiosis/src/test-transactions.ts | 74 +++++++++++---------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/packages/symbiosis/src/test-transactions.ts b/packages/symbiosis/src/test-transactions.ts index 9bc42e0db..5cfad8cf8 100644 --- a/packages/symbiosis/src/test-transactions.ts +++ b/packages/symbiosis/src/test-transactions.ts @@ -1,39 +1,40 @@ -import type { Address, Hash } from "viem"; -import { parseEther } from "viem"; +import type { Address, Hash } from 'viem' +import { parseEther } from 'viem' interface Transaction { - chainId: number; - from: Address; - hash: Hash; - input: string; - to: Address; - value: string; - } + chainId: number + from: Address + hash: Hash + input: string + to: Address + value: string +} interface TestTransaction { - transaction: Transaction, - destinationChainId: number, - amount: bigint | number, - tokenAddress?: Address, - recipient?: Address, - description: string + transaction: Transaction + destinationChainId: number + amount: bigint | number + tokenAddress?: Address + recipient?: Address + description: string } export const TEST_TRANSACTIONS: TestTransaction[] = [ - { - transaction: { - chainId: 1, - from: '0x27229c5c34c018e6a43d2a00f8f81e06f54a9a5d', - hash: '0xc97deae76c21cb57498d2873babd212fa589eae9e4d2e979f4a10a3428f376ee', - input: '0xa11b11980000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a800000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000004d0e30db000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000a04ce654c1700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000b5e620f480000000000000000000000000000000000000000000000000003782dace9d900000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e00000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000006400000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d73796d62696f7369732d6170700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000001ce4e75e2bd6bbbacde1e10d6813228138337e86000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000002e41e859a050000000000000000000000000000000000000000000000003782dace9d90000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa00000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000378224e87c9b8000000000000000000000000000000000000000000000000000377a9ae76526d3c2000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000000000000000000000000000000000000653b51d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bcc2637dfa64999f75abb53a7265b5b4932e40eb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000001ce4e75e2bd6bbbacde1e10d6813228138337e86000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000424e691a2aa0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000221b262dd800000000000000000000000000000000000000000000000000037915d9d196a94eb000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000006e2b76966cbd9cf4cc2fa0d76d24d5241e0abc2f000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000c400000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d00000000000000000000000039de19c9ff25693a2311aad1dc5c790194084a39000000000000000000000000b0d30ad9c1a7b303977db7ea073a4329d930d94c00000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000000000000000014473796d62696f7369732d61707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022812aa3caf000000000000000000000000a9305c3c14757bae2e73ef7f66fe241f5f6bf3470000000000000000000000005aea5775959fbc2557cc8789bc1bf90a239d9a91000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000a9305c3c14757bae2e73ef7f66fe241f5f6bf34700000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000378f3beab68d14eb0000000000000000000000000000000000000000000000003773ece9b06260530000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000006c00005600001a0020d6bdbf785aea5775959fbc2557cc8789bc1bf90a239d9a9141215aea5775959fbc2557cc8789bc1bf90a239d9a9100042e1a7d4d0000000000000000000000000000000000000000000000000000000000000000c0616e2b76966cbd9cf4cc2fa0d76d24d5241e0abc2f000000000000000000000000000000000000000000008b1ccac80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', - to: '0x1dcfbc3fa01b2a86bc3a3f43479cce9e8d438adc', - value: '4000000000000000000' - }, - destinationChainId: 324, - amount: parseEther("3.5"), - tokenAddress: '0x0000000000000000000000000000000000000000', - description: 'when bridging >= 2 ETH from Mainnet to ZK Sync' - }, + { + transaction: { + chainId: 1, + from: '0x27229c5c34c018e6a43d2a00f8f81e06f54a9a5d', + hash: '0xc97deae76c21cb57498d2873babd212fa589eae9e4d2e979f4a10a3428f376ee', + input: + '0xa11b11980000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000003782dace9d9000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a800000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000004d0e30db000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000000000000000000000000000000000000000000a04ce654c1700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000b5e620f480000000000000000000000000000000000000000000000000003782dace9d900000000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e00000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000000000000000000000000000000000000000000580000000000000000000000000000000000000000000000000000000000000006400000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d73796d62696f7369732d6170700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000001ce4e75e2bd6bbbacde1e10d6813228138337e86000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000002e41e859a050000000000000000000000000000000000000000000000003782dace9d90000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa00000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000378224e87c9b8000000000000000000000000000000000000000000000000000377a9ae76526d3c2000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000000000000000000000000000000000000653b51d1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bcc2637dfa64999f75abb53a7265b5b4932e40eb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000001ce4e75e2bd6bbbacde1e10d6813228138337e86000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000424e691a2aa0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000221b262dd800000000000000000000000000000000000000000000000000037915d9d196a94eb000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000006e2b76966cbd9cf4cc2fa0d76d24d5241e0abc2f000000000000000000000000e3db9ad5a3c6387bece39fafc26dbb2b594fb7ff00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000000c400000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d00000000000000000000000039de19c9ff25693a2311aad1dc5c790194084a39000000000000000000000000b0d30ad9c1a7b303977db7ea073a4329d930d94c00000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000000000000000014473796d62696f7369732d61707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022812aa3caf000000000000000000000000a9305c3c14757bae2e73ef7f66fe241f5f6bf3470000000000000000000000005aea5775959fbc2557cc8789bc1bf90a239d9a91000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000a9305c3c14757bae2e73ef7f66fe241f5f6bf34700000000000000000000000027229c5c34c018e6a43d2a00f8f81e06f54a9a5d000000000000000000000000000000000000000000000000378f3beab68d14eb0000000000000000000000000000000000000000000000003773ece9b06260530000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008a00000000000000000000000000000000000000000000006c00005600001a0020d6bdbf785aea5775959fbc2557cc8789bc1bf90a239d9a9141215aea5775959fbc2557cc8789bc1bf90a239d9a9100042e1a7d4d0000000000000000000000000000000000000000000000000000000000000000c0616e2b76966cbd9cf4cc2fa0d76d24d5241e0abc2f000000000000000000000000000000000000000000008b1ccac80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + to: '0x1dcfbc3fa01b2a86bc3a3f43479cce9e8d438adc', + value: '4000000000000000000', + }, + destinationChainId: 324, + amount: parseEther('3.5'), + tokenAddress: '0x0000000000000000000000000000000000000000', + description: 'when bridging >= 2 ETH from Mainnet to ZK Sync', + }, { transaction: { chainId: 10, @@ -48,21 +49,22 @@ export const TEST_TRANSACTIONS: TestTransaction[] = [ amount: 90000000n, tokenAddress: '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', recipient: '0xE833D3cE2B1871fef88742E007254fF73b6d2866', - description: 'when bridging >= 90 USDC.e from Optimism to Arbitrum' + description: 'when bridging >= 90 USDC.e from Optimism to Arbitrum', }, { - transaction: { + transaction: { chainId: 10, from: '0xa99f898530df1514a566f1a6562d62809e99557d', hash: '0xa0d4809a4835d84d15467a9fddfde73d1e57fa5121e56fff2a0526c448011c21', - input: '0xa11b119800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004200000000000000000000000000000000000006000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d6200000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000004d0e30db00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000a44ce654c1700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000b5e620f480000000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000004200000000000000000000000000000000000006000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a800000000000000000000000000000000000000000000000000000000000005800000000000000000000000000000000000000000000000000000000000000064000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d73796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000983e6839e84004e78fbfe76431d879cf9cf2f084000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000002e41e859a050000000000000000000000000000000000000000000000000011c37937e0800000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa0000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000110d9316ec00000000000000000000000000000000000000000000000000000010f903280265cf000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000000000000000000000000000000000000653d989f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bcc2637dfa64999f75abb53a7265b5b4932e40eb0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000983e6839e84004e78fbfe76431d879cf9cf2f084000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000464e691a2aa000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000001b48eb57e00000000000000000000000000000000000000000000000000000110ed8b84a7330000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000025c030116feb2e7bba054b9de0915e5f51b03e31000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000128000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d620000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000138873796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000264ac9650d800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000012475ceafe6000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f38fccf2933000000000000000000000000000000000000000000000000114865d812ebb843c00000000000000000000000000000000000000000000000000000000653d98aa000000000000000000000000000000000000000000000000000000000000002bdeaddeaddeaddeaddeaddeaddeaddeaddead1111000bb878c1b0c915c4faa5fffa6cabf0219da63d7f4cb800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + input: + '0xa11b119800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000004200000000000000000000000000000000000006000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d6200000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000004d0e30db00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000a44ce654c1700000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000b5e620f480000000000000000000000000000000000000000000000000000011c37937e080000000000000000000000000004200000000000000000000000000000000000006000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a800000000000000000000000000000000000000000000000000000000000005800000000000000000000000000000000000000000000000000000000000000064000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d73796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000983e6839e84004e78fbfe76431d879cf9cf2f084000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000002e41e859a050000000000000000000000000000000000000000000000000011c37937e0800000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa0000000000000000000000000000000000000000000000000000000000000007000000000000000000000000000000000000000000000000000000000000000b00000000000000000000000000000000000000000000000000110d9316ec00000000000000000000000000000000000000000000000000000010f903280265cf000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000000000000000000000000000000000000653d989f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bcc2637dfa64999f75abb53a7265b5b4932e40eb0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000983e6839e84004e78fbfe76431d879cf9cf2f084000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000464e691a2aa000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000001b48eb57e00000000000000000000000000000000000000000000000000000110ed8b84a7330000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000025c030116feb2e7bba054b9de0915e5f51b03e31000000000000000000000000a6e6c78746f873db8545b7571dd1c5d87cc9576300000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000128000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d620000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000138873796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000264ac9650d800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000000000000000000000000000000000000000012475ceafe6000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f38fccf2933000000000000000000000000000000000000000000000000114865d812ebb843c00000000000000000000000000000000000000000000000000000000653d98aa000000000000000000000000000000000000000000000000000000000000002bdeaddeaddeaddeaddeaddeaddeaddeaddead1111000bb878c1b0c915c4faa5fffa6cabf0219da63d7f4cb800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004449404b7c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', to: '0x1a039ce63ae35a67bf0e9f6dbfae969639d59ec8', - value: '5000000000000000' + value: '5000000000000000', }, destinationChainId: 5000, - amount: parseEther("0.005"), + amount: parseEther('0.005'), tokenAddress: '0x0000000000000000000000000000000000000000', recipient: '0xA99F898530dF1514A566f1a6562D62809e99557D', - description: 'when bridging ETH from Optimism to Mantle' - } + description: 'when bridging ETH from Optimism to Mantle', + }, ] From b162676ba3bfe09ff923cf9a4e2636a643f5bea2 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 17:16:05 -0700 Subject: [PATCH 18/34] test(symbiosis): add tests for verfiy filter functionality --- packages/symbiosis/src/Symbiosis.test.ts | 28 ++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.test.ts b/packages/symbiosis/src/Symbiosis.test.ts index f10d1e926..02880f1ae 100644 --- a/packages/symbiosis/src/Symbiosis.test.ts +++ b/packages/symbiosis/src/Symbiosis.test.ts @@ -1,12 +1,36 @@ import { GreaterThanOrEqual, apply } from '@rabbitholegg/questdk/filter' import { describe, expect, test } from 'vitest' +import { bridge } from './Symbiosis' + +import { TEST_TRANSACTIONS } from './test-transactions' describe('Given the symbiosis plugin', () => { describe('When handling the bridge', () => { test('should return a valid action filter', () => {}) + return true + + }) + }) - test('should pass filter with valid transactions', () => {}) + describe('should pass filter with valid transactions', () => { + TEST_TRANSACTIONS.forEach((testTransaction) => { + test(testTransaction.description, async () => { + const { + transaction, + destinationChainId, + tokenAddress, + amount, + recipient, + } = testTransaction - test('should not pass filter with invalid transactions', () => {}) + const filter = await bridge({ + sourceChainId: transaction.chainId, + destinationChainId, + tokenAddress, + amount: GreaterThanOrEqual(amount), + recipient, + }) + expect(apply(transaction, filter)).to.be.true + }) }) }) From 7a019216ce3198895081f3c961fde56ebc8863a4 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 19:09:38 -0700 Subject: [PATCH 19/34] fix(symbiosis): resolved typescript errors --- packages/symbiosis/src/Symbiosis.ts | 2 +- packages/symbiosis/src/constants.ts | 2 +- packages/symbiosis/src/symbiosis-sdk.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index 6e389c1ef..461d8c096 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -51,7 +51,7 @@ export const bridge = async ( export const getSupportedTokenAddresses = async ( _chainId: number, ): Promise => { - return CHAIN_TO_TOKENS[_chainId] + return CHAIN_TO_TOKENS[_chainId] ?? [] } export const getSupportedChainIds = async (): Promise => { diff --git a/packages/symbiosis/src/constants.ts b/packages/symbiosis/src/constants.ts index 49ce5573d..605478464 100644 --- a/packages/symbiosis/src/constants.ts +++ b/packages/symbiosis/src/constants.ts @@ -19,7 +19,7 @@ export const CHAIN_ID_ARRAY = [ ] export const CHAIN_TO_TOKENS: { - [chainId: number]: [tokens: Address[]] + [chainId: number]: Address[] } = { [ETH_CHAIN_ID]: [ '0x0000000000000000000000000000000000000000', // ETH diff --git a/packages/symbiosis/src/symbiosis-sdk.ts b/packages/symbiosis/src/symbiosis-sdk.ts index c804211c0..2b430a97d 100644 --- a/packages/symbiosis/src/symbiosis-sdk.ts +++ b/packages/symbiosis/src/symbiosis-sdk.ts @@ -1,4 +1,4 @@ import { Symbiosis } from 'symbiosis-js-sdk' // initialize and export symbiosis sdk instance -export const symbiosis = new Symbiosis('mainnet', []) +export const symbiosis = new Symbiosis('mainnet', 'bridge') From de1031b8f823998b73022f01cfa75ffe2a3b5492 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 21:06:39 -0700 Subject: [PATCH 20/34] test(symbiosis): add additional tests --- packages/symbiosis/src/Symbiosis.test.ts | 81 +++++++++++++++------ packages/symbiosis/src/test-transactions.ts | 19 ++++- 2 files changed, 76 insertions(+), 24 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.test.ts b/packages/symbiosis/src/Symbiosis.test.ts index 02880f1ae..69440f9f0 100644 --- a/packages/symbiosis/src/Symbiosis.test.ts +++ b/packages/symbiosis/src/Symbiosis.test.ts @@ -1,36 +1,73 @@ import { GreaterThanOrEqual, apply } from '@rabbitholegg/questdk/filter' import { describe, expect, test } from 'vitest' import { bridge } from './Symbiosis' +import { PASSING_TEST_TRANSACTIONS } from './test-transactions' +import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' +import { ETH_CHAIN_ID, OPTIMISM_CHAIN_ID } from './constants' +import { symbiosis } from './symbiosis-sdk' -import { TEST_TRANSACTIONS } from './test-transactions' +const TEST_USER = '0xB7e98B3F16CC915B9C7a321c1bd95fa406BDbabe' +const OPTIMISM_USDCe_ADDRESS = '0x7F5c764cBc14f9669B88837ca1490cCa17c31607' describe('Given the symbiosis plugin', () => { describe('When handling the bridge', () => { - test('should return a valid action filter', () => {}) - return true - + test('should return a valid action filter', async () => { + const filter = await bridge({ + sourceChainId: OPTIMISM_CHAIN_ID, + destinationChainId: ETH_CHAIN_ID, + tokenAddress: OPTIMISM_USDCe_ADDRESS, + amount: GreaterThanOrEqual(100000n), + recipient: TEST_USER, + }) + + expect(filter).to.deep.equal({ + chainId: 10, + to: symbiosis.metaRouter(10).address, + input: { + $abi: metaRouteABI, + _metarouteTransaction: { + approvedTokens: [OPTIMISM_USDCe_ADDRESS], + amount: { + $gte: '100000', + }, + otherSideCalldata: { + $abi: metaSynthesizeABI, + _metaSynthesizeTransaction: { + finalCalldata: { + $abi: metaBurnABI, + _metaBurnTransaction: { + chainID: 1, + chain2address: TEST_USER, + }, + }, + }, + }, + }, + }, + }) }) }) +}) - describe('should pass filter with valid transactions', () => { - TEST_TRANSACTIONS.forEach((testTransaction) => { - test(testTransaction.description, async () => { - const { - transaction, - destinationChainId, - tokenAddress, - amount, - recipient, - } = testTransaction +describe('should pass filter with valid transactions', () => { + PASSING_TEST_TRANSACTIONS.forEach((testTransaction) => { + test(testTransaction.description, async () => { + const { + transaction, + destinationChainId, + tokenAddress, + amount, + recipient, + } = testTransaction - const filter = await bridge({ - sourceChainId: transaction.chainId, - destinationChainId, - tokenAddress, - amount: GreaterThanOrEqual(amount), - recipient, - }) - expect(apply(transaction, filter)).to.be.true + const filter = await bridge({ + sourceChainId: transaction.chainId, + destinationChainId, + tokenAddress, + amount: GreaterThanOrEqual(amount), + recipient, }) + expect(apply(transaction, filter)).to.be.true + }) }) }) diff --git a/packages/symbiosis/src/test-transactions.ts b/packages/symbiosis/src/test-transactions.ts index 5cfad8cf8..4c3a51b0b 100644 --- a/packages/symbiosis/src/test-transactions.ts +++ b/packages/symbiosis/src/test-transactions.ts @@ -4,7 +4,7 @@ import { parseEther } from 'viem' interface Transaction { chainId: number from: Address - hash: Hash + hash?: Hash input: string to: Address value: string @@ -19,7 +19,7 @@ interface TestTransaction { description: string } -export const TEST_TRANSACTIONS: TestTransaction[] = [ +export const PASSING_TEST_TRANSACTIONS: TestTransaction[] = [ { transaction: { chainId: 1, @@ -67,4 +67,19 @@ export const TEST_TRANSACTIONS: TestTransaction[] = [ recipient: '0xA99F898530dF1514A566f1a6562D62809e99557D', description: 'when bridging ETH from Optimism to Mantle', }, + { + transaction: { + chainId: 8453, + from: '0xa99f898530df1514a566f1a6562d62809e99557d', + input: + '0xa11b11980000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000001111111254eeb25477b68fb85ed929f73a960582000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad4000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ee981b2459331ad268cc63ce6167b446af4161f80000000000000000000000000000000000000000000000000000000000000420000000000000000000000000000000000000000000000000000000000000024812aa3caf000000000000000000000000e37e799d5077682fa0a244d46e5649f71457bd09000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000d9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca000000000000000000000000e37e799d5077682fa0a244d46e5649f71457bd090000000000000000000000006f0f6393e45fe0e7215906b6f9cfeff53ea139cf000000000000000000000000000000000000000000000000016345785d8a0000000000000000000000000000000000000000000000000000000000000aca33af000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a100000000000000000000000000000000000000000000008300002000000600206b4be0b940414200000000000000000000000000000000000006d0e30db002a00000000000000000000000000000000000000000000000000000000000000001ee63c1e5814c36388be6f416a29c8d8eee81c771ce6be14b1842000000000000000000000000000000000000061111111254eeb25477b68fb85ed929f73a960582000000000000000000000000000000000000000000000000000000000000008b1ccac8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca0000000000000000000000000000000000000000000000000000000000001524ce654c17000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000000000000000000000000000000000000adaa6ca000000000000000000000000d9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a800000000000000000000000000000000000000000000000000000000000005800000000000000000000000000000000000000000000000000000000000000064000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d73796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000dd1a897f92c14cda3ab7023b094615a7068d01fa0000000000000000000000007d6ec42b5d9566931560411a8652cea00b90d98200000000000000000000000000000000000000000000000000000000000002e41e859a05000000000000000000000000000000000000000000000000000000000adaa6ca00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ad612ea000000000000000000000000000000000000000000000000000000000ab708e1000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e000000000000000000000000000000000000000000000000000000000654079820000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006148fd6c649866596c3d8a971fc313e5ece848820000000000000000000000000000000000000000000000000000000000000002000000000000000000000000dd1a897f92c14cda3ab7023b094615a7068d01fa0000000000000000000000007d6ec42b5d9566931560411a8652cea00b90d98200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f44e691a2aa00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000003981ae0000000000000000000000000000000000000000000000000000000000ad5352b000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000006352a56caadc4f1e25cd6c75970fa768a3304e640000000000000000000000007d6ec42b5d9566931560411a8652cea00b90d98200000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000104000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000000173796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d4490411a32000000000000000000000000c27d980b71d5978f8b6de9e1ba01ed001d8760d3000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000c27d980b71d5978f8b6de9e1ba01ed001d8760d3000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d00000000000000000000000000000000000000000000000000000000073d1a4b00000000000000000000000000000000000000000000000000f2047f855daef000000000000000000000000000000000000000000000000000f42a8e4a37abbd00000000000000000000000000000000000000000000000000000000000000020000000000000000000000003254ae00947e44b7fd03f50b93b9acfed59f96200000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000007e00000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000002449f865422000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000104e5b07cdb0000000000000000000000006c83b0feef04139eb5520b1ce0e78069c6e7e2c500000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000c27d980b71d5978f8b6de9e1ba01ed001d8760d300000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000002ea0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000bb8ae7ab96520de3a18e5e111b5eaab095312d7fe840000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000003a451a74316000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe8400000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000034000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064eb5625d9000000000000000000000000ae7ab96520de3a18e5e111b5eaab095312d7fe84000000000000000000000000dc24316b9ae028f1497c275eb9192a3ea0f67022000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000dc24316b9ae028f1497c275eb9192a3ea0f6702200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000843df0212400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000044000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000648a6a1e85000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000353c1f0bc78fbbc245b3c93ef77b1dcc5b77d2a000050000000000000000000000000000000000000000000000f449d321a885ea00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001a49f865422000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000001000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000064d1660f99000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + to: '0x6f0f6393e45fe0e7215906b6f9cfeff53ea139cf', + value: '100000000000000000', + }, + destinationChainId: 1, + amount: parseEther('0.1'), + tokenAddress: '0x0000000000000000000000000000000000000000', + recipient: '0xa99f898530df1514a566f1a6562d62809e99557d', + description: 'when bridging >= 0.1 ETH from Base to Mainnet', + }, ] From a0734bf19632e2f11b89f72db3c4ae1fea2b8a7a Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 21:09:02 -0700 Subject: [PATCH 21/34] feat(symbiosis): add plugin to registry --- packages/registry/package.json | 1 + packages/registry/src/index.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/packages/registry/package.json b/packages/registry/package.json index 3ad1c5c47..ce7cc7795 100644 --- a/packages/registry/package.json +++ b/packages/registry/package.json @@ -58,6 +58,7 @@ "@rabbitholegg/questdk-plugin-camelot": "workspace:*", "@rabbitholegg/questdk-plugin-basepaint": "workspace:*", "@rabbitholegg/questdk-plugin-paraswap": "workspace:*", + "@rabbitholegg/questdk-plugin-symbiosis": "workspace:*", "viem": "^1.2.15" } } diff --git a/packages/registry/src/index.ts b/packages/registry/src/index.ts index 864786525..7d4b5a3d1 100644 --- a/packages/registry/src/index.ts +++ b/packages/registry/src/index.ts @@ -23,6 +23,7 @@ import { Camelot } from '@rabbitholegg/questdk-plugin-camelot' import { Tally } from '@rabbitholegg/questdk-plugin-tally' import { BasePaint } from '@rabbitholegg/questdk-plugin-basepaint' import { Paraswap } from '@rabbitholegg/questdk-plugin-paraswap' +import { Symbiosis } from '@rabbitholegg/questdk-plugin-symbiosis' import { ENTRYPOINT } from './contract-addresses' export const plugins: Record = { @@ -39,6 +40,7 @@ export const plugins: Record = { [Camelot.pluginId]: Camelot, [BasePaint.pluginId]: BasePaint, [Paraswap.pluginId]: Paraswap, + [Symbiosis.pluginId]: Symbiosis, } export const getPlugin = (pluginId: string) => { From 108b6304b1281302d00f0da696bb69be6c1b4986 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 21:23:51 -0700 Subject: [PATCH 22/34] chore(pnpm): format --- packages/symbiosis/src/Symbiosis.test.ts | 37 ++++++++++++------------ 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.test.ts b/packages/symbiosis/src/Symbiosis.test.ts index 69440f9f0..579f0adb8 100644 --- a/packages/symbiosis/src/Symbiosis.test.ts +++ b/packages/symbiosis/src/Symbiosis.test.ts @@ -47,27 +47,26 @@ describe('Given the symbiosis plugin', () => { }) }) }) -}) - -describe('should pass filter with valid transactions', () => { - PASSING_TEST_TRANSACTIONS.forEach((testTransaction) => { - test(testTransaction.description, async () => { - const { - transaction, - destinationChainId, - tokenAddress, - amount, - recipient, - } = testTransaction + describe('should pass filter with valid transactions', () => { + PASSING_TEST_TRANSACTIONS.forEach((testTransaction) => { + test(testTransaction.description, async () => { + const { + transaction, + destinationChainId, + tokenAddress, + amount, + recipient, + } = testTransaction - const filter = await bridge({ - sourceChainId: transaction.chainId, - destinationChainId, - tokenAddress, - amount: GreaterThanOrEqual(amount), - recipient, + const filter = await bridge({ + sourceChainId: transaction.chainId, + destinationChainId, + tokenAddress, + amount: GreaterThanOrEqual(amount), + recipient, + }) + expect(apply(transaction, filter)).to.be.true }) - expect(apply(transaction, filter)).to.be.true }) }) }) From d30b44e52459bffe29b650e5b80a5da8f1aa864f Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 21:57:53 -0700 Subject: [PATCH 23/34] test(symbiosis): add tests for fail conditions --- packages/symbiosis/src/Symbiosis.test.ts | 40 ++++++++++++++++++- packages/symbiosis/src/test-transactions.ts | 44 +++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) diff --git a/packages/symbiosis/src/Symbiosis.test.ts b/packages/symbiosis/src/Symbiosis.test.ts index 579f0adb8..46558c4a4 100644 --- a/packages/symbiosis/src/Symbiosis.test.ts +++ b/packages/symbiosis/src/Symbiosis.test.ts @@ -1,7 +1,10 @@ import { GreaterThanOrEqual, apply } from '@rabbitholegg/questdk/filter' import { describe, expect, test } from 'vitest' import { bridge } from './Symbiosis' -import { PASSING_TEST_TRANSACTIONS } from './test-transactions' +import { + PASSING_TEST_TRANSACTIONS, + FAILING_TEST_TRANSACTIONS, +} from './test-transactions' import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' import { ETH_CHAIN_ID, OPTIMISM_CHAIN_ID } from './constants' import { symbiosis } from './symbiosis-sdk' @@ -69,4 +72,39 @@ describe('Given the symbiosis plugin', () => { }) }) }) + describe('should not pass filter with invalid parameters', () => { + test('when sourceChainId is incorrect', async () => { + const { transaction, tokenAddress, recipient } = + FAILING_TEST_TRANSACTIONS[0] + + const filter = await bridge({ + sourceChainId: 1, // 42161 + destinationChainId: 5000, + tokenAddress, + amount: GreaterThanOrEqual(10000n), + recipient, + }) + expect(apply(transaction, filter)).to.be.false + }) + FAILING_TEST_TRANSACTIONS.forEach((testTransaction) => { + test(testTransaction.description, async () => { + const { + transaction, + destinationChainId, + tokenAddress, + amount, + recipient, + } = testTransaction + + const filter = await bridge({ + sourceChainId: transaction.chainId, + destinationChainId, + tokenAddress, + amount: GreaterThanOrEqual(amount), + recipient, + }) + expect(apply(transaction, filter)).to.be.false + }) + }) + }) }) diff --git a/packages/symbiosis/src/test-transactions.ts b/packages/symbiosis/src/test-transactions.ts index 4c3a51b0b..c67e2e895 100644 --- a/packages/symbiosis/src/test-transactions.ts +++ b/packages/symbiosis/src/test-transactions.ts @@ -83,3 +83,47 @@ export const PASSING_TEST_TRANSACTIONS: TestTransaction[] = [ description: 'when bridging >= 0.1 ETH from Base to Mainnet', }, ] + +const failTransaction = { + chainId: 42161, + from: '0xa99f898530df1514a566f1a6562d62809e99557d', + input: + '0xa11b119800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002200000000000000000000000001111111254eeb25477b68fb85ed929f73a960582000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad4000000000000000000000000000000000000000000000000000000000115ac18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a3c8e513b758ebb011f7afaf6c37616c9c24d9000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000a8e449022e000000000000000000000000000000000000000000000000000000000115ac1800000000000000000000000000000000000000000000000000000000011176b6000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000018000000000000000000000008e295789c9465487074a65b1ae9ce0351172393f8b1ccac800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000ff970a61a04b1ca14834a43f5de4533ebddb5cc8000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e583100000000000000000000000000000000000000000000000000000000000007c4ce654c17000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000000000000000000000000000000000000115a0ce000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e5831000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a80000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000dbe00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000cb28fbe3e9c0fea62e0e63ff3f232cecfe555ad40000000000000000000000000000000000000000000000000000000000000260000000000000000000000000b8f275fbf7a959f4bce59999a2ef122a099e81a800000000000000000000000000000000000000000000000000000000000005800000000000000000000000000000000000000000000000000000000000000064000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d73796d62696f7369732d617070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000eeae2132f2e21f68d862c535d7d9857803fbcf3f00000000000000000000000085ec8da79bd2e54724ab8aa4a7a209b1f66d6ec000000000000000000000000000000000000000000000000000000000000002e41e859a05000000000000000000000000000000000000000000000000000000000115a0ce00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000024000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000c48f6bdeaa000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000001110cee00000000000000000000000000000000000000000000000000000000010b91a0000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e00000000000000000000000000000000000000000000000000000000065407e9b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006148fd6c649866596c3d8a971fc313e5ece848820000000000000000000000000000000000000000000000000000000000000002000000000000000000000000eeae2132f2e21f68d862c535d7d9857803fbcf3f00000000000000000000000085ec8da79bd2e54724ab8aa4a7a209b1f66d6ec0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001e4e691a2aa0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000c350000000000000000000000000000000000000000000000000000000000111140a000000000000000000000000b79a4f5828eb55c10d7abf4bfe9a9f5d11aa84e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085ec8da79bd2e54724ab8aa4a7a209b1f66d6ec000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000292fc50e4eb66c3f6514b9e402dbc25961824d620000000000000000000000005523985926aa12ba58dc5ad00ddca99678d7227e000000000000000000000000a99f898530df1514a566f1a6562d62809e99557d000000000000000000000000000000000000000000000000000000000000138873796d62696f7369732d6170700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + to: '0xca506793a420e901bbca8066be5661e3c52c84c2', + value: '0', +} + +export const FAILING_TEST_TRANSACTIONS: TestTransaction[] = [ + { + transaction: failTransaction, + destinationChainId: 10, // 5000 + amount: 10000000n, + tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + recipient: '0xa99f898530df1514a566f1a6562d62809e99557d', + description: 'when destination chain is incorrect', + }, + { + transaction: failTransaction, + destinationChainId: 5000, + amount: 20000000n, // 10000000n + tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + recipient: '0xa99f898530df1514a566f1a6562d62809e99557d', + description: 'when amount is insufficient', + }, + { + transaction: failTransaction, + destinationChainId: 5000, + amount: 10000000n, + tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // wrong USDC token + recipient: '0xa99f898530df1514a566f1a6562d62809e99557d', + description: 'when input token is incorrect', + }, + { + transaction: failTransaction, + destinationChainId: 5000, + amount: 10000000n, + tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', + recipient: '0xB7e98B3F16CC915B9C7a321c1bd95fa406BDbabe', + description: 'when recipient is incorrect', + }, +] From ca787a6f7ecb83f8696d210fa81d6959332745d4 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 22:00:35 -0700 Subject: [PATCH 24/34] fix(symbiosis): fix type error --- packages/symbiosis/src/test-transactions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/symbiosis/src/test-transactions.ts b/packages/symbiosis/src/test-transactions.ts index c67e2e895..1bcdec254 100644 --- a/packages/symbiosis/src/test-transactions.ts +++ b/packages/symbiosis/src/test-transactions.ts @@ -84,7 +84,7 @@ export const PASSING_TEST_TRANSACTIONS: TestTransaction[] = [ }, ] -const failTransaction = { +const failTransaction: Transaction = { chainId: 42161, from: '0xa99f898530df1514a566f1a6562d62809e99557d', input: From 473f96dfe8e3ae49bc14c7464323a02242756b56 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 22:02:36 -0700 Subject: [PATCH 25/34] chore(changeset): generate changes for symbiosis bridge --- .changeset/two-pandas-jump.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/two-pandas-jump.md diff --git a/.changeset/two-pandas-jump.md b/.changeset/two-pandas-jump.md new file mode 100644 index 000000000..934305031 --- /dev/null +++ b/.changeset/two-pandas-jump.md @@ -0,0 +1,6 @@ +--- +"@rabbitholegg/questdk-plugin-symbiosis": minor +"@rabbitholegg/questdk-plugin-registry": minor +--- + +implement symbiosis bridge plugin From bed7516d652e82ded050f5a660552045aa65e832 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Mon, 23 Oct 2023 22:03:04 -0700 Subject: [PATCH 26/34] chore(pnpm): update lockfile --- pnpm-lock.yaml | 1521 +++++++++++------------------------------------- 1 file changed, 337 insertions(+), 1184 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bdb19b19e..2358ec16e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,10 +13,10 @@ importers: devDependencies: '@changesets/changelog-github': 0.4.8 '@changesets/cli': 2.26.2 - '@turbo/gen': 1.10.15_wgftluouiaediqiazhryzwhram + '@turbo/gen': 1.10.15 eslint: 7.32.0 prettier: 2.8.8 - turbo: 1.10.15 + turbo: 1.10.16 packages/across: specifiers: @@ -134,9 +134,9 @@ importers: viem: ^1.2.15 vitest: ^0.33.0 dependencies: - '@connext/nxtp-txservice': 2.0.0_sinon@16.1.1 - '@connext/nxtp-utils': 2.0.4_sinon@16.1.1 - '@connext/smart-contracts': 2.0.0_ethers@5.7.2 + '@connext/nxtp-txservice': 2.0.0 + '@connext/nxtp-utils': 2.0.4 + '@connext/smart-contracts': 2.0.0 '@rabbitholegg/questdk': 2.0.0-alpha.22_typescript@5.2.2 viem: 1.16.6_typescript@5.2.2 devDependencies: @@ -302,6 +302,7 @@ importers: '@rabbitholegg/questdk-plugin-paraswap': workspace:* '@rabbitholegg/questdk-plugin-polygon': workspace:* '@rabbitholegg/questdk-plugin-stargate': workspace:* + '@rabbitholegg/questdk-plugin-symbiosis': workspace:* '@rabbitholegg/questdk-plugin-tally': workspace:* '@rabbitholegg/questdk-plugin-uniswap': workspace:* '@types/node': ^20.4.5 @@ -326,6 +327,7 @@ importers: '@rabbitholegg/questdk-plugin-paraswap': link:../paraswap '@rabbitholegg/questdk-plugin-polygon': link:../polygon '@rabbitholegg/questdk-plugin-stargate': link:../stargate + '@rabbitholegg/questdk-plugin-symbiosis': link:../symbiosis '@rabbitholegg/questdk-plugin-tally': link:../tally '@rabbitholegg/questdk-plugin-uniswap': link:../uniswap viem: 1.16.6_typescript@5.2.2 @@ -364,6 +366,35 @@ importers: typescript: 5.1.6 vitest: 0.33.0 + packages/symbiosis: + specifiers: + '@rabbitholegg/questdk': 2.0.0-alpha.22 + '@types/node': ^20.4.5 + '@vitest/coverage-v8': ^0.33.0 + ethers: ^5.2.0 + rimraf: ^5.0.1 + rome: ^12.1.3 + symbiosis-js-sdk: ^3.0.9 + ts-node: ^10.9.1 + tsconfig: workspace:* + typescript: ^5.1.6 + viem: ^1.2.15 + vitest: ^0.33.0 + dependencies: + '@rabbitholegg/questdk': 2.0.0-alpha.22_typescript@5.2.2 + ethers: 5.7.2 + symbiosis-js-sdk: 3.0.10_ethers@5.7.2 + viem: 1.16.6_typescript@5.2.2 + devDependencies: + '@types/node': 20.8.7 + '@vitest/coverage-v8': 0.33.0_vitest@0.33.0 + rimraf: 5.0.5 + rome: 12.1.3 + ts-node: 10.9.1_wgftluouiaediqiazhryzwhram + tsconfig: link:../tsconfig + typescript: 5.2.2 + vitest: 0.33.0 + packages/tally: specifiers: '@rabbitholegg/questdk': 2.0.0-alpha.22 @@ -432,7 +463,7 @@ importers: dependencies: '@rabbitholegg/questdk': 2.0.0-alpha.22_typescript@5.2.2 '@uniswap/universal-router': 1.5.1 - '@uniswap/universal-router-sdk': 1.5.8_hardhat@2.18.1 + '@uniswap/universal-router-sdk': 1.5.8 viem: 1.16.6_typescript@5.2.2 devDependencies: '@vitest/coverage-v8': 0.33.0_vitest@0.33.0 @@ -449,6 +480,10 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@adraffy/ens-normalize/1.10.0: + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + dev: false + /@adraffy/ens-normalize/1.9.0: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} dev: false @@ -508,37 +543,6 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@chainsafe/as-sha256/0.3.1: - resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} - dev: false - - /@chainsafe/persistent-merkle-tree/0.4.2: - resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==} - dependencies: - '@chainsafe/as-sha256': 0.3.1 - dev: false - - /@chainsafe/persistent-merkle-tree/0.5.0: - resolution: {integrity: sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==} - dependencies: - '@chainsafe/as-sha256': 0.3.1 - dev: false - - /@chainsafe/ssz/0.10.2: - resolution: {integrity: sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==} - dependencies: - '@chainsafe/as-sha256': 0.3.1 - '@chainsafe/persistent-merkle-tree': 0.5.0 - dev: false - - /@chainsafe/ssz/0.9.4: - resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==} - dependencies: - '@chainsafe/as-sha256': 0.3.1 - '@chainsafe/persistent-merkle-tree': 0.4.2 - case: 1.6.3 - dev: false - /@changesets/apply-release-plan/6.1.4: resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} dependencies: @@ -742,14 +746,14 @@ packages: prettier: 2.8.8 dev: true - /@connext/nxtp-txservice/2.0.0_sinon@16.1.1: + /@connext/nxtp-txservice/2.0.0: resolution: {integrity: sha512-x1seZ+VWa/iBeUnIsgCMjfSBKOXDsNapzombsRr3CQlmGR8glJxkNUEWWJzOfgCZKufb0eT0tZjg8maKL9bn7A==} dependencies: - '@connext/nxtp-utils': 2.0.4_sinon@16.1.1 + '@connext/nxtp-utils': 2.0.4 '@connext/smart-contracts': 2.0.0_ethers@5.7.2 '@sinclair/typebox': 0.25.21 ajv: 8.12.0 - ajv-formats: 2.1.1_ajv@8.12.0 + ajv-formats: 2.1.1 ethers: 5.7.2 evt: 2.4.13 interval-promise: 1.4.0 @@ -763,14 +767,14 @@ packages: - utf-8-validate dev: false - /@connext/nxtp-utils/2.0.4_sinon@16.1.1: + /@connext/nxtp-utils/2.0.4: resolution: {integrity: sha512-aZmpxRBMhRr06TiKwJAZgnpsKZJDF3Tyx/8R9z+yMqlhkVW5Q1VGHPqSkPXz2/w3XCmeu5p08Vignd+FKiLr+A==} dependencies: '@maticnetwork/maticjs': 3.6.0-beta.11 '@maticnetwork/maticjs-web3': 1.0.4_f4btvps7ejzwtjeitn4srsyrmm '@sinclair/typebox': 0.25.21 ajv: 8.12.0 - ajv-formats: 2.1.1_ajv@8.12.0 + ajv-formats: 2.1.1 axios: 1.3.3 chai: 4.3.7 chai-as-promised: 7.1.1_chai@4.3.7 @@ -781,7 +785,7 @@ packages: merkletreejs: 0.3.9 pino: 8.10.0 secp256k1: 4.0.3 - sinon-chai: 3.7.0_chai@4.3.7+sinon@16.1.1 + sinon-chai: 3.7.0_chai@4.3.7 transitivePeerDependencies: - bufferutil - debug @@ -791,6 +795,16 @@ packages: - utf-8-validate dev: false + /@connext/smart-contracts/2.0.0: + resolution: {integrity: sha512-Sb1gpwgiHt9NfuBBdpdQyxuPhGfmp3+m2GdMAia0DNOBNn7aXxp3P/Acl/f3kS46mdt3qWI/vugf7QxBGlgcKw==} + dependencies: + '@eth-optimism/sdk': 2.1.0 + transitivePeerDependencies: + - bufferutil + - ethers + - utf-8-validate + dev: false + /@connext/smart-contracts/2.0.0_ethers@5.7.2: resolution: {integrity: sha512-Sb1gpwgiHt9NfuBBdpdQyxuPhGfmp3+m2GdMAia0DNOBNn7aXxp3P/Acl/f3kS46mdt3qWI/vugf7QxBGlgcKw==} dependencies: @@ -1072,6 +1086,19 @@ packages: - utf-8-validate dev: false + /@eth-optimism/contracts/0.6.0: + resolution: {integrity: sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==} + peerDependencies: + ethers: ^5 + dependencies: + '@eth-optimism/core-utils': 0.12.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /@eth-optimism/contracts/0.6.0_ethers@5.7.2: resolution: {integrity: sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==} peerDependencies: @@ -1118,13 +1145,29 @@ packages: '@ethersproject/providers': 5.7.2 '@ethersproject/web': 5.7.1 chai: 4.3.10 - ethers: 5.7.1 + ethers: 5.7.2 lodash: 4.17.21 transitivePeerDependencies: - bufferutil - utf-8-validate dev: false + /@eth-optimism/sdk/2.1.0: + resolution: {integrity: sha512-XfRMsPNZRzdlNGARx3UIX88xaCBTJRzsZuKrRz2j8aqYkTpDOvdz87zYsmj+6Nl2tdOlgcxlhZPFCqdRtbiCaQ==} + peerDependencies: + ethers: ^5 + dependencies: + '@eth-optimism/contracts': 0.6.0 + '@eth-optimism/contracts-bedrock': 0.14.0 + '@eth-optimism/core-utils': 0.12.0 + lodash: 4.17.21 + merkletreejs: 0.2.32 + rlp: 2.2.7 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /@eth-optimism/sdk/2.1.0_ethers@5.7.2: resolution: {integrity: sha512-XfRMsPNZRzdlNGARx3UIX88xaCBTJRzsZuKrRz2j8aqYkTpDOvdz87zYsmj+6Nl2tdOlgcxlhZPFCqdRtbiCaQ==} peerDependencies: @@ -1280,7 +1323,7 @@ packages: '@ledgerhq/hw-app-eth': 5.27.2 '@ledgerhq/hw-transport': 5.26.0 '@ledgerhq/hw-transport-u2f': 5.26.0 - ethers: 5.7.1 + ethers: 5.7.2 optionalDependencies: '@ledgerhq/hw-transport-node-hid': 5.26.0 transitivePeerDependencies: @@ -1537,11 +1580,6 @@ packages: '@ethersproject/strings': 5.7.0 dev: false - /@fastify/busboy/2.0.0: - resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} - engines: {node: '>=14'} - dev: false - /@hop-protocol/core/0.0.1-beta.182: resolution: {integrity: sha512-akSOg2ZOdLrR4hDu179mDUsEDDBTknbp4gLbQ3uKc9m50gqumE5/XpQj6e/qTOyg2efn0hiLrwnVEx4u5V0Gfw==} engines: {node: '>=14', yarn: ^1.22.11} @@ -1801,17 +1839,6 @@ packages: ganache-cli: 6.12.2 dev: false - /@metamask/eth-sig-util/4.0.1: - resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} - engines: {node: '>=12.0.0'} - dependencies: - ethereumjs-abi: 0.6.8 - ethereumjs-util: 6.2.1 - ethjs-util: 0.1.6 - tweetnacl: 1.0.3 - tweetnacl-util: 0.15.1 - dev: false - /@noble/curves/1.0.0: resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: @@ -1830,10 +1857,6 @@ packages: '@noble/hashes': 1.3.2 dev: false - /@noble/hashes/1.2.0: - resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - dev: false - /@noble/hashes/1.3.0: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} dev: false @@ -1848,10 +1871,6 @@ packages: engines: {node: '>= 16'} dev: false - /@noble/secp256k1/1.7.1: - resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} - dev: false - /@nodelib/fs.scandir/2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1873,270 +1892,6 @@ packages: fastq: 1.15.0 dev: true - /@nomicfoundation/ethereumjs-block/5.0.2: - resolution: {integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-trie': 6.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - ethereum-cryptography: 0.1.3 - ethers: 5.7.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@nomicfoundation/ethereumjs-blockchain/7.0.2: - resolution: {integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.2 - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-ethash': 3.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-trie': 6.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - abstract-level: 1.0.3 - debug: 4.3.4 - ethereum-cryptography: 0.1.3 - level: 8.0.0 - lru-cache: 5.1.1 - memory-level: 1.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - - /@nomicfoundation/ethereumjs-common/4.0.2: - resolution: {integrity: sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==} - dependencies: - '@nomicfoundation/ethereumjs-util': 9.0.2 - crc-32: 1.2.2 - dev: false - - /@nomicfoundation/ethereumjs-ethash/3.0.2: - resolution: {integrity: sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - abstract-level: 1.0.3 - bigint-crypto-utils: 3.3.0 - ethereum-cryptography: 0.1.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@nomicfoundation/ethereumjs-evm/2.0.2: - resolution: {integrity: sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==} - engines: {node: '>=14'} - dependencies: - '@ethersproject/providers': 5.7.2 - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - debug: 4.3.4 - ethereum-cryptography: 0.1.3 - mcl-wasm: 0.7.9 - rustbn.js: 0.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - - /@nomicfoundation/ethereumjs-rlp/5.0.2: - resolution: {integrity: sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==} - engines: {node: '>=14'} - hasBin: true - dev: false - - /@nomicfoundation/ethereumjs-statemanager/2.0.2: - resolution: {integrity: sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==} - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - debug: 4.3.4 - ethereum-cryptography: 0.1.3 - ethers: 5.7.2 - js-sdsl: 4.4.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - - /@nomicfoundation/ethereumjs-trie/6.0.2: - resolution: {integrity: sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - '@types/readable-stream': 2.3.15 - ethereum-cryptography: 0.1.3 - readable-stream: 3.6.2 - dev: false - - /@nomicfoundation/ethereumjs-tx/5.0.2: - resolution: {integrity: sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==} - engines: {node: '>=14'} - dependencies: - '@chainsafe/ssz': 0.9.4 - '@ethersproject/providers': 5.7.2 - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - ethereum-cryptography: 0.1.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@nomicfoundation/ethereumjs-util/9.0.2: - resolution: {integrity: sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==} - engines: {node: '>=14'} - dependencies: - '@chainsafe/ssz': 0.10.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - ethereum-cryptography: 0.1.3 - dev: false - - /@nomicfoundation/ethereumjs-vm/7.0.2: - resolution: {integrity: sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==} - engines: {node: '>=14'} - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.2 - '@nomicfoundation/ethereumjs-blockchain': 7.0.2 - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-evm': 2.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-statemanager': 2.0.2 - '@nomicfoundation/ethereumjs-trie': 6.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - debug: 4.3.4 - ethereum-cryptography: 0.1.3 - mcl-wasm: 0.7.9 - rustbn.js: 0.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - - /@nomicfoundation/solidity-analyzer-darwin-arm64/0.1.1: - resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-darwin-x64/0.1.1: - resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-freebsd-x64/0.1.1: - resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-linux-arm64-gnu/0.1.1: - resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-linux-arm64-musl/0.1.1: - resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-linux-x64-gnu/0.1.1: - resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-linux-x64-musl/0.1.1: - resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-win32-arm64-msvc/0.1.1: - resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-win32-ia32-msvc/0.1.1: - resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer-win32-x64-msvc/0.1.1: - resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@nomicfoundation/solidity-analyzer/0.1.1: - resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} - engines: {node: '>= 12'} - optionalDependencies: - '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 - '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 - '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 - dev: false - /@openzeppelin/contracts-upgradeable/4.7.3: resolution: {integrity: sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==} dev: false @@ -2217,7 +1972,7 @@ packages: optional: true dependencies: abitype: 0.9.10_typescript@5.1.6 - rimraf: 5.0.1 + rimraf: 5.0.5 typescript: 5.1.6 viem: 1.16.6_typescript@5.1.6 transitivePeerDependencies: @@ -2235,7 +1990,7 @@ packages: optional: true dependencies: abitype: 0.9.10_typescript@5.2.2 - rimraf: 5.0.1 + rimraf: 5.0.5 typescript: 5.2.2 viem: 1.16.6_typescript@5.2.2 transitivePeerDependencies: @@ -2296,19 +2051,11 @@ packages: resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} dev: false - /@scure/bip32/1.1.5: - resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - dependencies: - '@noble/hashes': 1.2.0 - '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.3 - dev: false - /@scure/bip32/1.3.0: resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} dependencies: '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.3 dev: false @@ -2316,7 +2063,7 @@ packages: resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} dependencies: '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.3 dev: false @@ -2328,17 +2075,10 @@ packages: '@scure/base': 1.1.3 dev: false - /@scure/bip39/1.1.1: - resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} - dependencies: - '@noble/hashes': 1.2.0 - '@scure/base': 1.1.3 - dev: false - /@scure/bip39/1.2.0: resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} dependencies: - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.3 dev: false @@ -2349,76 +2089,6 @@ packages: '@scure/base': 1.1.3 dev: false - /@sentry/core/5.30.0: - resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} - engines: {node: '>=6'} - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/minimal': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - dev: false - - /@sentry/hub/5.30.0: - resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} - engines: {node: '>=6'} - dependencies: - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - dev: false - - /@sentry/minimal/5.30.0: - resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} - engines: {node: '>=6'} - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/types': 5.30.0 - tslib: 1.14.1 - dev: false - - /@sentry/node/5.30.0: - resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} - engines: {node: '>=6'} - dependencies: - '@sentry/core': 5.30.0 - '@sentry/hub': 5.30.0 - '@sentry/tracing': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - cookie: 0.4.2 - https-proxy-agent: 5.0.1 - lru_map: 0.3.3 - tslib: 1.14.1 - transitivePeerDependencies: - - supports-color - dev: false - - /@sentry/tracing/5.30.0: - resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} - engines: {node: '>=6'} - dependencies: - '@sentry/hub': 5.30.0 - '@sentry/minimal': 5.30.0 - '@sentry/types': 5.30.0 - '@sentry/utils': 5.30.0 - tslib: 1.14.1 - dev: false - - /@sentry/types/5.30.0: - resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} - engines: {node: '>=6'} - dev: false - - /@sentry/utils/5.30.0: - resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} - engines: {node: '>=6'} - dependencies: - '@sentry/types': 5.30.0 - tslib: 1.14.1 - dev: false - /@sinclair/typebox/0.25.21: resolution: {integrity: sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g==} dev: false @@ -2432,36 +2102,6 @@ packages: engines: {node: '>=10'} dev: false - /@sinonjs/commons/2.0.0: - resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} - dependencies: - type-detect: 4.0.8 - dev: false - - /@sinonjs/commons/3.0.0: - resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} - dependencies: - type-detect: 4.0.8 - dev: false - - /@sinonjs/fake-timers/10.3.0: - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - dependencies: - '@sinonjs/commons': 3.0.0 - dev: false - - /@sinonjs/samsam/8.0.0: - resolution: {integrity: sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==} - dependencies: - '@sinonjs/commons': 2.0.0 - lodash.get: 4.4.2 - type-detect: 4.0.8 - dev: false - - /@sinonjs/text-encoding/0.7.2: - resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} - dev: false - /@szmarczak/http-timer/4.0.6: resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} @@ -2508,6 +2148,10 @@ packages: resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} dev: true + /@tronweb3/google-protobuf/3.21.2: + resolution: {integrity: sha512-IVcT2GfWX3K6tHUVhs14NP5uzKhQt4KeDya1g9ACxuZsUzsaoGUIGzceK2Ltu7xp1YV94AaHOf4yxLAivlvEkQ==} + dev: false + /@tsconfig/node10/1.0.9: resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} dev: true @@ -2524,7 +2168,7 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true - /@turbo/gen/1.10.15_wgftluouiaediqiazhryzwhram: + /@turbo/gen/1.10.15: resolution: {integrity: sha512-nvCiw2Como/K1LfqBQBpp+IiFEWQtlhx5f6iXIpmioj2DtVTg+RmyQM+5nIqbi8iaXg3zaF5vQo29bTyuohUuw==} hasBin: true dependencies: @@ -2536,7 +2180,7 @@ packages: minimatch: 9.0.3 node-plop: 0.26.3 proxy-agent: 6.3.1 - ts-node: 10.9.1_wgftluouiaediqiazhryzwhram + ts-node: 10.9.1 update-check: 1.5.4 validate-npm-package-name: 5.0.0 transitivePeerDependencies: @@ -2573,12 +2217,6 @@ packages: resolution: {integrity: sha512-0Z6Tr7wjKJIk4OUEjVUQMtyunLDy339vcMaj38Kpj6jM2OE1p3S4kXExKZ7a3uXQAPCoy3sbrP1wibDKaf39oA==} dev: false - /@types/bn.js/4.11.6: - resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} - dependencies: - '@types/node': 20.8.7 - dev: false - /@types/bn.js/5.1.3: resolution: {integrity: sha512-wT1B4iIO82ecXkdN6waCK8Ou7E71WU+mP1osDA5Q8c6Ur+ozU2vIKUIhSpUr6uE5L2YHocKS1Z2jG2fBC1YVeg==} dependencies: @@ -2590,7 +2228,7 @@ packages: dependencies: '@types/http-cache-semantics': 4.0.3 '@types/keyv': 3.1.4 - '@types/node': 20.4.5 + '@types/node': 20.8.7 '@types/responselike': 1.0.2 dev: false @@ -2635,7 +2273,7 @@ packages: /@types/keyv/3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.4.5 + '@types/node': 20.8.7 dev: false /@types/level-errors/3.0.1: @@ -2647,11 +2285,7 @@ packages: dependencies: '@types/abstract-leveldown': 7.2.4 '@types/level-errors': 3.0.1 - '@types/node': 20.4.5 - dev: false - - /@types/lru-cache/5.1.1: - resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + '@types/node': 20.8.7 dev: false /@types/minimatch/5.1.2: @@ -2665,8 +2299,13 @@ packages: /@types/node/12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + /@types/node/18.15.13: + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + dev: false + /@types/node/20.4.5: resolution: {integrity: sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==} + dev: true /@types/node/20.8.7: resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} @@ -2680,7 +2319,7 @@ packages: /@types/pbkdf2/3.1.1: resolution: {integrity: sha512-4HCoGwR3221nOc7G0Z/6KgTNGgaaFGkbGrtUJsB+zlKX2LBVjFHHIUkieMBgHHXgBH5Gq6dZHJKdBYdtlhBQvw==} dependencies: - '@types/node': 20.4.5 + '@types/node': 20.8.7 dev: false /@types/prop-types/15.7.9: @@ -2701,17 +2340,10 @@ packages: csstype: 3.1.2 dev: false - /@types/readable-stream/2.3.15: - resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} - dependencies: - '@types/node': 20.8.7 - safe-buffer: 5.1.2 - dev: false - /@types/responselike/1.0.2: resolution: {integrity: sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA==} dependencies: - '@types/node': 20.4.5 + '@types/node': 20.8.7 dev: false /@types/scheduler/0.16.5: @@ -2721,7 +2353,7 @@ packages: /@types/secp256k1/4.0.5: resolution: {integrity: sha512-aIonTBMErtE3T9MxDvTZRzcrT/mCqpEZBw3CCY/i+oG9n57N/+7obBkhFgavUAIrX21bU0LHg1XRgtaLdelBhA==} dependencies: - '@types/node': 20.4.5 + '@types/node': 20.8.7 dev: false /@types/semver/7.5.4: @@ -2741,7 +2373,7 @@ packages: /@types/ws/8.5.8: resolution: {integrity: sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg==} dependencies: - '@types/node': 20.4.5 + '@types/node': 20.8.7 dev: false /@uniswap/lib/4.0.1-alpha: @@ -2759,14 +2391,14 @@ packages: - utf-8-validate dev: false - /@uniswap/router-sdk/1.7.1_hardhat@2.18.1: + /@uniswap/router-sdk/1.7.1: resolution: {integrity: sha512-uBN9QX3t5lPLkxlkPoQPZpd0eN+GA0Ab9nq1pcPk/XDFuRnRxxVF629Ecz2SfTVm0gooOPO3aU3ETgyB3vuhYA==} dependencies: '@ethersproject/abi': 5.7.0 '@uniswap/sdk-core': 4.0.9 - '@uniswap/swap-router-contracts': 1.3.1_hardhat@2.18.1 + '@uniswap/swap-router-contracts': 1.3.1 '@uniswap/v2-sdk': 3.2.3 - '@uniswap/v3-sdk': 3.10.0_hardhat@2.18.1 + '@uniswap/v3-sdk': 3.10.0 transitivePeerDependencies: - hardhat dev: false @@ -2783,7 +2415,7 @@ packages: toformat: 2.0.0 dev: false - /@uniswap/swap-router-contracts/1.3.1_hardhat@2.18.1: + /@uniswap/swap-router-contracts/1.3.1: resolution: {integrity: sha512-mh/YNbwKb7Mut96VuEtL+Z5bRe0xVIbjjiryn+iMMrK2sFKhR4duk/86mEz0UO5gSx4pQIw9G5276P5heY/7Rg==} engines: {node: '>=10'} dependencies: @@ -2792,21 +2424,21 @@ packages: '@uniswap/v3-core': 1.0.1 '@uniswap/v3-periphery': 1.4.4 dotenv: 14.3.2 - hardhat-watcher: 2.5.0_hardhat@2.18.1 + hardhat-watcher: 2.5.0 transitivePeerDependencies: - hardhat dev: false - /@uniswap/universal-router-sdk/1.5.8_hardhat@2.18.1: + /@uniswap/universal-router-sdk/1.5.8: resolution: {integrity: sha512-9tDDBTXarpdRfJStF5mDCNmsQrCfiIT6HCQN1EPq0tAm2b+JzjRkUzsLpbNpVef066FETc3YjPH6JDPB3CMyyA==} engines: {node: '>=14'} dependencies: '@uniswap/permit2-sdk': 1.2.0 - '@uniswap/router-sdk': 1.7.1_hardhat@2.18.1 + '@uniswap/router-sdk': 1.7.1 '@uniswap/sdk-core': 4.0.9 '@uniswap/universal-router': 1.4.3 '@uniswap/v2-sdk': 3.2.3 - '@uniswap/v3-sdk': 3.10.0_hardhat@2.18.1 + '@uniswap/v3-sdk': 3.10.0 bignumber.js: 9.1.2 ethers: 5.7.2 transitivePeerDependencies: @@ -2870,14 +2502,14 @@ packages: base64-sol: 1.0.1 dev: false - /@uniswap/v3-sdk/3.10.0_hardhat@2.18.1: + /@uniswap/v3-sdk/3.10.0: resolution: {integrity: sha512-sbmSA1O+Ct960r66Ie/c1rOmVadpwRu8nQ79pGICv0pZJdnFIQ/SReG3F+iC2C2UNNjNP6aC2WDUggXrjyrgnA==} engines: {node: '>=10'} dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/solidity': 5.7.0 '@uniswap/sdk-core': 4.0.9 - '@uniswap/swap-router-contracts': 1.3.1_hardhat@2.18.1 + '@uniswap/swap-router-contracts': 1.3.1 '@uniswap/v3-periphery': 1.4.4 '@uniswap/v3-staker': 1.0.0 tiny-invariant: 1.3.1 @@ -3089,21 +2721,8 @@ packages: event-target-shim: 5.0.1 dev: false - /abortcontroller-polyfill/1.7.5: - resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} - dev: false - - /abstract-level/1.0.3: - resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} - engines: {node: '>=12'} - dependencies: - buffer: 6.0.3 - catering: 2.1.1 - is-buffer: 2.0.5 - level-supports: 4.0.1 - level-transcoder: 1.0.1 - module-error: 1.0.2 - queue-microtask: 1.2.3 + /abortcontroller-polyfill/1.7.5: + resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} dev: false /abstract-leveldown/6.2.3: @@ -3161,22 +2780,12 @@ packages: hasBin: true dev: true - /adm-zip/0.4.16: - resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} - engines: {node: '>=0.3.0'} - dev: false - /aes-js/3.0.0: resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} dev: false - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.4 - transitivePeerDependencies: - - supports-color + /aes-js/4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} dev: false /agent-base/7.1.0: @@ -3194,11 +2803,10 @@ packages: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 + dev: true - /ajv-formats/2.1.1_ajv@8.12.0: + /ajv-formats/2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} - peerDependencies: - ajv: ^8.0.0 peerDependenciesMeta: ajv: optional: true @@ -3222,20 +2830,17 @@ packages: require-from-string: 2.0.2 uri-js: 4.4.1 - /ansi-colors/4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - dev: false - /ansi-colors/4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} + dev: true /ansi-escapes/4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} dependencies: type-fest: 0.21.3 + dev: true /ansi-regex/2.1.1: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} @@ -3304,6 +2909,7 @@ packages: /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true /aria-query/5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -3414,6 +3020,14 @@ packages: resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} dev: false + /axios/0.26.1: + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} + dependencies: + follow-redirects: 1.15.3 + transitivePeerDependencies: + - debug + dev: false + /axios/1.3.3: resolution: {integrity: sha512-eYq77dYIFS77AQlhzEL937yUBSepBfPIe8FcgEDN35vMNZKMrs81pgnyrQpwfy4NF4b4XWX1Zgx7yX+25w8QJA==} dependencies: @@ -3427,7 +3041,7 @@ packages: /axios/1.5.0: resolution: {integrity: sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==} dependencies: - follow-redirects: 1.15.3_debug@4.3.4 + follow-redirects: 1.15.3 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -3476,11 +3090,6 @@ packages: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: false - /bigint-crypto-utils/3.3.0: - resolution: {integrity: sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==} - engines: {node: '>=14.0.0'} - dev: false - /bignumber.js/9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} dev: false @@ -3569,6 +3178,7 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /brace-expansion/2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -3591,19 +3201,6 @@ packages: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} dev: false - /browser-level/1.0.1: - resolution: {integrity: sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==} - dependencies: - abstract-level: 1.0.3 - catering: 2.1.1 - module-error: 1.0.2 - run-parallel-limit: 1.1.0 - dev: false - - /browser-stdout/1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - dev: false - /browserify-aes/1.2.0: resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} dependencies: @@ -3667,10 +3264,6 @@ packages: safe-buffer: 5.2.1 dev: false - /buffer-from/1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: false - /buffer-reverse/1.0.1: resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} dev: false @@ -3780,25 +3373,10 @@ packages: engines: {node: '>=6'} dev: true - /camelcase/6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - dev: false - - /case/1.6.3: - resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} - engines: {node: '>= 0.8.0'} - dev: false - /caseless/0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: false - /catering/2.1.1: - resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} - engines: {node: '>=6'} - dev: false - /chai-as-promised/7.1.1_chai@4.3.7: resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} peerDependencies: @@ -3912,10 +3490,6 @@ packages: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} dev: false - /ci-info/2.0.0: - resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} - dev: false - /ci-info/3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} @@ -3944,21 +3518,10 @@ packages: resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} dev: false - /classic-level/1.3.0: - resolution: {integrity: sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==} - engines: {node: '>=12'} - requiresBuild: true - dependencies: - abstract-level: 1.0.3 - catering: 2.1.1 - module-error: 1.0.2 - napi-macros: 2.2.2 - node-gyp-build: 4.6.1 - dev: false - /clean-stack/2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + dev: true /cli-cursor/3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} @@ -3985,14 +3548,6 @@ packages: wrap-ansi: 6.2.0 dev: true - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - dev: false - /cliui/8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -4043,21 +3598,14 @@ packages: delayed-stream: 1.0.0 dev: false - /command-exists/1.2.9: - resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} - dev: false - /commander/10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} dev: true - /commander/3.0.2: - resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} - dev: false - /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true /console-control-strings/1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -4099,11 +3647,6 @@ packages: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: false - /cookie/0.4.2: - resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} - engines: {node: '>= 0.6'} - dev: false - /cookie/0.5.0: resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} engines: {node: '>= 0.6'} @@ -4291,19 +3834,7 @@ packages: optional: true dependencies: ms: 2.1.2 - - /debug/4.3.4_supports-color@8.1.1: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - supports-color: 8.1.1 - dev: false + dev: true /decamelize-keys/1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -4318,11 +3849,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /decamelize/4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - dev: false - /decimal.js-light/2.5.1: resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} dev: false @@ -4498,16 +4024,6 @@ packages: engines: {node: '>=0.3.1'} dev: true - /diff/5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - dev: false - - /diff/5.1.0: - resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} - engines: {node: '>=0.3.1'} - dev: false - /diffie-hellman/5.0.3: resolution: {integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==} dependencies: @@ -4612,11 +4128,7 @@ packages: dependencies: ansi-colors: 4.1.3 strip-ansi: 6.0.1 - - /env-paths/2.2.1: - resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} - engines: {node: '>=6'} - dev: false + dev: true /errno/0.1.8: resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} @@ -4776,6 +4288,7 @@ packages: /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + dev: true /escape-html/1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -4788,6 +4301,7 @@ packages: /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + dev: true /escodegen/2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} @@ -4986,15 +4500,6 @@ packages: setimmediate: 1.0.5 dev: false - /ethereum-cryptography/1.2.0: - resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - dependencies: - '@noble/hashes': 1.2.0 - '@noble/secp256k1': 1.7.1 - '@scure/bip32': 1.1.5 - '@scure/bip39': 1.1.1 - dev: false - /ethereum-cryptography/2.1.2: resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} dependencies: @@ -5004,25 +4509,6 @@ packages: '@scure/bip39': 1.2.1 dev: false - /ethereumjs-abi/0.6.8: - resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} - dependencies: - bn.js: 4.12.0 - ethereumjs-util: 6.2.1 - dev: false - - /ethereumjs-util/6.2.1: - resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} - dependencies: - '@types/bn.js': 4.11.6 - bn.js: 4.12.0 - create-hash: 1.2.0 - elliptic: 6.5.4 - ethereum-cryptography: 0.1.3 - ethjs-util: 0.1.6 - rlp: 2.2.7 - dev: false - /ethereumjs-util/7.1.5: resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} engines: {node: '>=10.0.0'} @@ -5110,6 +4596,22 @@ packages: - utf-8-validate dev: false + /ethers/6.8.0: + resolution: {integrity: sha512-zrFbmQRlraM+cU5mE4CZTLBurZTs2gdp2ld0nG/f3ecBK+x6lZ69KSxBqZ4NjclxwfTxl5LeNufcBbMsTdY53Q==} + engines: {node: '>=14.0.0'} + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /ethjs-unit/0.1.6: resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -5118,19 +4620,15 @@ packages: number-to-bn: 1.7.0 dev: false - /ethjs-util/0.1.6: - resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} - engines: {node: '>=6.5.0', npm: '>=3'} - dependencies: - is-hex-prefixed: 1.0.0 - strip-hex-prefix: 1.0.0 - dev: false - /event-target-shim/5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} dev: false + /eventemitter3/3.1.2: + resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==} + dev: false + /eventemitter3/4.0.4: resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} dev: false @@ -5323,13 +4821,6 @@ packages: - supports-color dev: false - /find-up/2.1.0: - resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} - engines: {node: '>=4'} - dependencies: - locate-path: 2.0.0 - dev: false - /find-up/4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -5344,6 +4835,7 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + dev: true /find-yarn-workspace-root2/1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} @@ -5361,11 +4853,6 @@ packages: rimraf: 3.0.2 dev: true - /flat/5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - dev: false - /flatted/3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true @@ -5380,18 +4867,6 @@ packages: optional: true dev: false - /follow-redirects/1.15.3_debug@4.3.4: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dependencies: - debug: 4.3.4 - dev: false - /for-each/0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -5435,10 +4910,6 @@ packages: engines: {node: '>= 0.6'} dev: false - /fp-ts/1.19.3: - resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} - dev: false - /fresh/0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -5449,16 +4920,6 @@ packages: dev: false optional: true - /fs-extra/0.30.0: - resolution: {integrity: sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 2.4.0 - klaw: 1.3.1 - path-is-absolute: 1.0.1 - rimraf: 2.7.1 - dev: false - /fs-extra/10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -5483,6 +4944,7 @@ packages: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + dev: true /fs-extra/8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} @@ -5501,6 +4963,7 @@ packages: /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents/2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -5555,6 +5018,7 @@ packages: /get-caller-file/2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + dev: true /get-func-name/2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -5626,17 +5090,6 @@ packages: minipass: 7.0.4 path-scurry: 1.10.1 - /glob/7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - /glob/7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: @@ -5783,80 +5236,12 @@ packages: engines: {node: '>=6'} dev: true - /hardhat-watcher/2.5.0_hardhat@2.18.1: + /hardhat-watcher/2.5.0: resolution: {integrity: sha512-Su2qcSMIo2YO2PrmJ0/tdkf+6pSt8zf9+4URR5edMVti6+ShI8T3xhPrwugdyTOFuyj8lKHrcTZNKUFYowYiyA==} peerDependencies: hardhat: ^2.0.0 dependencies: chokidar: 3.5.3 - hardhat: 2.18.1_typescript@5.2.2 - dev: false - - /hardhat/2.18.1_typescript@5.2.2: - resolution: {integrity: sha512-b55rW7Ka+fvJeg6oWuBTXoYQEUurevCCankjGNTwczwD3GnkhV9GEei7KUT+9IKmWx3lC+zyxlFxeDbg0gUoHw==} - hasBin: true - peerDependencies: - ts-node: '*' - typescript: '*' - peerDependenciesMeta: - ts-node: - optional: true - typescript: - optional: true - dependencies: - '@ethersproject/abi': 5.7.0 - '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/ethereumjs-block': 5.0.2 - '@nomicfoundation/ethereumjs-blockchain': 7.0.2 - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-evm': 2.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-statemanager': 2.0.2 - '@nomicfoundation/ethereumjs-trie': 6.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - '@nomicfoundation/ethereumjs-vm': 7.0.2 - '@nomicfoundation/solidity-analyzer': 0.1.1 - '@sentry/node': 5.30.0 - '@types/bn.js': 5.1.3 - '@types/lru-cache': 5.1.1 - adm-zip: 0.4.16 - aggregate-error: 3.1.0 - ansi-escapes: 4.3.2 - chalk: 2.4.2 - chokidar: 3.5.3 - ci-info: 2.0.0 - debug: 4.3.4 - enquirer: 2.4.1 - env-paths: 2.2.1 - ethereum-cryptography: 1.2.0 - ethereumjs-abi: 0.6.8 - find-up: 2.1.0 - fp-ts: 1.19.3 - fs-extra: 7.0.1 - glob: 7.2.0 - immutable: 4.3.4 - io-ts: 1.10.4 - keccak: 3.0.4 - lodash: 4.17.21 - mnemonist: 0.38.5 - mocha: 10.2.0 - p-map: 4.0.0 - raw-body: 2.5.2 - resolve: 1.17.0 - semver: 6.3.1 - solc: 0.7.3_debug@4.3.4 - source-map-support: 0.5.21 - stacktrace-parser: 0.1.10 - tsort: 0.0.1 - typescript: 5.2.2 - undici: 5.26.3 - uuid: 8.3.2 - ws: 7.5.9 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate dev: false /has-bigints/1.0.2: @@ -5914,11 +5299,6 @@ packages: minimalistic-assert: 1.0.1 dev: false - /he/1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - dev: false - /header-case/1.0.1: resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} dependencies: @@ -5996,16 +5376,6 @@ packages: resolve-alpn: 1.2.1 dev: false - /https-proxy-agent/5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: false - /https-proxy-agent/7.0.2: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} @@ -6066,10 +5436,6 @@ packages: resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} dev: false - /immutable/4.3.4: - resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} - dev: false - /import-fresh/3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} engines: {node: '>=6'} @@ -6086,12 +5452,14 @@ packages: /indent-string/4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + dev: true /inflight/1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -6099,6 +5467,10 @@ packages: /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + /injectpromise/1.0.0: + resolution: {integrity: sha512-qNq5wy4qX4uWHcVFOEU+RqZkoVG65FhvGkyDWbuBxILMjK6A1LFf5A1mgXZkD4nRx5FCorD81X/XvPKp/zVfPA==} + dev: false + /inquirer/7.3.3: resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} engines: {node: '>=8.0.0'} @@ -6157,12 +5529,6 @@ packages: loose-envify: 1.4.0 dev: false - /io-ts/1.10.4: - resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} - dependencies: - fp-ts: 1.19.3 - dev: false - /ip/1.1.8: resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} dev: true @@ -6214,11 +5580,6 @@ packages: call-bind: 1.0.2 has-tostringtag: 1.0.0 - /is-buffer/2.0.5: - resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} - engines: {node: '>=4'} - dev: false - /is-callable/1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -6325,11 +5686,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /is-plain-obj/2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - dev: false - /is-regex/1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -6383,6 +5739,7 @@ packages: /is-unicode-supported/0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + dev: true /is-upper-case/1.1.2: resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} @@ -6412,10 +5769,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /isarray/0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: false - /isarray/1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: false @@ -6441,6 +5794,15 @@ packages: - encoding dev: false + /isomorphic-unfetch/3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + dependencies: + node-fetch: 2.7.0 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + dev: false + /isomorphic-ws/5.0.0_ws@8.12.0: resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} peerDependencies: @@ -6502,10 +5864,6 @@ packages: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /js-sdsl/4.4.2: - resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} - dev: false - /js-sha3/0.5.7: resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==} dev: false @@ -6530,6 +5888,7 @@ packages: hasBin: true dependencies: argparse: 2.0.1 + dev: true /jsbi/3.2.5: resolution: {integrity: sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==} @@ -6568,12 +5927,6 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: true - /jsonfile/2.4.0: - resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -6597,10 +5950,6 @@ packages: verror: 1.10.0 dev: false - /just-extend/4.2.1: - resolution: {integrity: sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==} - dev: false - /keccak/3.0.4: resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} engines: {node: '>=10.0.0'} @@ -6621,12 +5970,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /klaw/1.3.1: - resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - /kleur/4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -6683,19 +6026,6 @@ packages: xtend: 4.0.2 dev: false - /level-supports/4.0.1: - resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} - engines: {node: '>=12'} - dev: false - - /level-transcoder/1.0.1: - resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} - engines: {node: '>=12'} - dependencies: - buffer: 6.0.3 - module-error: 1.0.2 - dev: false - /level-ws/2.0.0: resolution: {integrity: sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==} engines: {node: '>=6'} @@ -6705,14 +6035,6 @@ packages: xtend: 4.0.2 dev: false - /level/8.0.0: - resolution: {integrity: sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==} - engines: {node: '>=12'} - dependencies: - browser-level: 1.0.1 - classic-level: 1.3.0 - dev: false - /levelup/4.4.0: resolution: {integrity: sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==} engines: {node: '>=6'} @@ -6747,17 +6069,9 @@ packages: dev: true /local-pkg/0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - - /locate-path/2.0.0: - resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} - engines: {node: '>=4'} - dependencies: - p-locate: 2.0.0 - path-exists: 3.0.0 - dev: false + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true /locate-path/5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} @@ -6771,9 +6085,15 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 + dev: true + + /lodash.flatmap/4.5.0: + resolution: {integrity: sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg==} + dev: false /lodash.get/4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + dev: true /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -6803,6 +6123,7 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 + dev: true /loose-envify/1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} @@ -6847,12 +6168,6 @@ packages: yallist: 2.1.2 dev: true - /lru-cache/5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - dependencies: - yallist: 3.1.1 - dev: false - /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -6864,10 +6179,6 @@ packages: engines: {node: '>=12'} dev: true - /lru_map/0.3.3: - resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} - dev: false - /ltgt/2.2.1: resolution: {integrity: sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==} dev: false @@ -6910,11 +6221,6 @@ packages: engines: {node: '>=8'} dev: true - /mcl-wasm/0.7.9: - resolution: {integrity: sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==} - engines: {node: '>=8.9.0'} - dev: false - /md5.js/1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} dependencies: @@ -6940,20 +6246,6 @@ packages: safe-buffer: 5.2.1 dev: false - /memory-level/1.0.0: - resolution: {integrity: sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==} - engines: {node: '>=12'} - dependencies: - abstract-level: 1.0.3 - functional-red-black-tree: 1.0.1 - module-error: 1.0.2 - dev: false - - /memorystream/0.3.1: - resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} - engines: {node: '>= 0.10.0'} - dev: false - /meow/6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -7108,13 +6400,7 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - - /minimatch/5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} - engines: {node: '>=10'} - dependencies: - brace-expansion: 2.0.1 - dev: false + dev: true /minimatch/9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -7190,49 +6476,10 @@ packages: ufo: 1.3.1 dev: true - /mnemonist/0.38.5: - resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} - dependencies: - obliterator: 2.0.4 - dev: false - - /mocha/10.2.0: - resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} - engines: {node: '>= 14.0.0'} - hasBin: true - dependencies: - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4_supports-color@8.1.1 - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.2.0 - he: 1.2.0 - js-yaml: 4.1.0 - log-symbols: 4.1.0 - minimatch: 5.0.1 - ms: 2.1.3 - nanoid: 3.3.3 - serialize-javascript: 6.0.0 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - workerpool: 6.2.1 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 - dev: false - /mock-fs/4.14.0: resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} dev: false - /module-error/1.0.2: - resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} - engines: {node: '>=10'} - dev: false - /moment/2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: false @@ -7243,6 +6490,7 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -7300,12 +6548,6 @@ packages: resolution: {integrity: sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==} dev: false - /nanoid/3.3.3: - resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - dev: false - /nanoid/3.3.6: resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -7317,10 +6559,6 @@ packages: dev: false optional: true - /napi-macros/2.2.2: - resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} - dev: false - /natural-compare/1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true @@ -7343,16 +6581,6 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: false - /nise/5.1.4: - resolution: {integrity: sha512-8+Ib8rRJ4L0o3kfmyVCL7gzrohyDe0cMFTBa2d364yIrEGMEoetznKJx899YxjybU6bL9SQkYPSBBs1gyYs8Xg==} - dependencies: - '@sinonjs/commons': 2.0.0 - '@sinonjs/fake-timers': 10.3.0 - '@sinonjs/text-encoding': 0.7.2 - just-extend: 4.2.1 - path-to-regexp: 1.8.0 - dev: false - /no-case/2.3.2: resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} dependencies: @@ -7526,10 +6754,6 @@ packages: has-symbols: 1.0.3 object-keys: 1.1.1 - /obliterator/2.0.4: - resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} - dev: false - /oboe/2.1.5: resolution: {integrity: sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==} dependencies: @@ -7604,6 +6828,7 @@ packages: /os-tmpdir/1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} + dev: true /outdent/0.5.0: resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} @@ -7631,13 +6856,6 @@ packages: engines: {node: '>=4'} dev: false - /p-limit/1.3.0: - resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} - engines: {node: '>=4'} - dependencies: - p-try: 1.0.0 - dev: false - /p-limit/2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -7650,6 +6868,7 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 + dev: true /p-limit/4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} @@ -7658,13 +6877,6 @@ packages: yocto-queue: 1.0.0 dev: true - /p-locate/2.0.0: - resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} - engines: {node: '>=4'} - dependencies: - p-limit: 1.3.0 - dev: false - /p-locate/4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -7677,6 +6889,7 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 + dev: true /p-map/2.1.0: resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} @@ -7690,13 +6903,6 @@ packages: aggregate-error: 3.1.0 dev: true - /p-map/4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - dependencies: - aggregate-error: 3.1.0 - dev: false - /p-queue/6.6.2: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} @@ -7712,11 +6918,6 @@ packages: p-finally: 1.0.0 dev: false - /p-try/1.0.0: - resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} - engines: {node: '>=4'} - dev: false - /p-try/2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} @@ -7802,18 +7003,15 @@ packages: no-case: 2.3.2 dev: true - /path-exists/3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - dev: false - /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + dev: true /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -7821,6 +7019,7 @@ packages: /path-parse/1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true /path-scurry/1.10.1: resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} @@ -7833,12 +7032,6 @@ packages: resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} dev: false - /path-to-regexp/1.8.0: - resolution: {integrity: sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==} - dependencies: - isarray: 0.0.1 - dev: false - /path-type/4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -8120,8 +7313,14 @@ packages: strict-uri-encode: 1.1.0 dev: false + /querystring-es3/0.2.1: + resolution: {integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==} + engines: {node: '>=0.4.x'} + dev: false + /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true /quick-format-unescaped/4.0.4: resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} @@ -8350,6 +7549,7 @@ packages: /require-directory/2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} + dev: true /require-from-string/2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} @@ -8373,12 +7573,6 @@ packages: engines: {node: '>=8'} dev: true - /resolve/1.17.0: - resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} - dependencies: - path-parse: 1.0.7 - dev: false - /resolve/1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -8407,13 +7601,6 @@ packages: engines: {iojs: '>=1.0.0', node: '>=0.10.0'} dev: true - /rimraf/2.7.1: - resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} - hasBin: true - dependencies: - glob: 7.2.0 - dev: false - /rimraf/3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true @@ -8427,6 +7614,7 @@ packages: hasBin: true dependencies: glob: 10.3.10 + dev: true /rimraf/5.0.5: resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} @@ -8482,22 +7670,12 @@ packages: minimal-polyfills: 2.2.3 dev: false - /run-parallel-limit/1.1.0: - resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} - dependencies: - queue-microtask: 1.2.3 - dev: false - /run-parallel/1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 dev: true - /rustbn.js/0.2.0: - resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} - dev: false - /rxjs/6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} @@ -8572,11 +7750,6 @@ packages: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true - /semver/6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: false - /semver/7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -8612,12 +7785,6 @@ packages: upper-case-first: 1.1.2 dev: true - /serialize-javascript/6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} - dependencies: - randombytes: 2.1.0 - dev: false - /serve-static/1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} @@ -8731,26 +7898,13 @@ packages: dev: false optional: true - /sinon-chai/3.7.0_chai@4.3.7+sinon@16.1.1: + /sinon-chai/3.7.0_chai@4.3.7: resolution: {integrity: sha512-mf5NURdUaSdnatJx3uhoBOrY9dtL19fiOtAdT1Azxg3+lNJFiuN0uzaU3xX1LeAfL17kHQhTAJgpsfhbMJMY2g==} peerDependencies: chai: ^4.0.0 sinon: '>=4.0.0' dependencies: chai: 4.3.7 - sinon: 16.1.1 - dev: false - - /sinon/16.1.1: - resolution: {integrity: sha512-tu0DS1g4Rm2xHT9mWK5g5aTogTXWwGGz3fQK/L5fnECPkcAQ3YcbAbJ4XxOkpDDnV4EV5n+lee5neq5QyVxoSg==} - requiresBuild: true - dependencies: - '@sinonjs/commons': 3.0.0 - '@sinonjs/fake-timers': 10.3.0 - '@sinonjs/samsam': 8.0.0 - diff: 5.1.0 - nise: 5.1.4 - supports-color: 7.2.0 dev: false /slash/3.0.0: @@ -8810,24 +7964,6 @@ packages: smart-buffer: 4.2.0 dev: true - /solc/0.7.3_debug@4.3.4: - resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} - engines: {node: '>=8.0.0'} - hasBin: true - dependencies: - command-exists: 1.2.9 - commander: 3.0.2 - follow-redirects: 1.15.3_debug@4.3.4 - fs-extra: 0.30.0 - js-sha3: 0.8.0 - memorystream: 0.3.1 - require-from-string: 2.0.2 - semver: 5.7.2 - tmp: 0.0.33 - transitivePeerDependencies: - - debug - dev: false - /sonic-boom/3.7.0: resolution: {integrity: sha512-IudtNvSqA/ObjN97tfgNmOKyDOs4dNcg4cUUsHDebqsgb8wGBBwb31LIgShNO8fye0dFI52X1+tFoKKI6Rq1Gg==} dependencies: @@ -8839,16 +7975,10 @@ packages: engines: {node: '>=0.10.0'} dev: true - /source-map-support/0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: false - /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + dev: true /spawndamnit/2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} @@ -8908,13 +8038,6 @@ packages: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} dev: true - /stacktrace-parser/0.1.10: - resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} - engines: {node: '>=6'} - dependencies: - type-fest: 0.7.1 - dev: false - /statuses/2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -9056,6 +8179,7 @@ packages: /strip-json-comments/3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + dev: true /strip-literal/1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} @@ -9075,13 +8199,6 @@ packages: dependencies: has-flag: 4.0.0 - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - dev: false - /supports-preserve-symlinks-flag/1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -9114,6 +8231,30 @@ packages: - utf-8-validate dev: false + /symbiosis-js-sdk/3.0.10_ethers@5.7.2: + resolution: {integrity: sha512-HSibJuopOONZ68U7dSKZp28cNjamvWNklDITUcWnYEwQPAxWNdEBX9SwDWvyMtIW/xmfgekJAwA8Seq7a+u/tA==} + engines: {node: '>=10'} + peerDependencies: + ethers: ^5.2.0 + dependencies: + big.js: 5.2.2 + bignumber.js: 9.1.2 + decimal.js-light: 2.5.1 + ethers: 5.7.2 + isomorphic-unfetch: 3.1.0 + jsbi: 3.2.5 + lodash.flatmap: 4.5.0 + tiny-invariant: 1.3.1 + tiny-warning: 1.0.3 + toformat: 2.0.0 + tronweb: 5.3.1 + transitivePeerDependencies: + - bufferutil + - debug + - encoding + - utf-8-validate + dev: false + /table/6.8.1: resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} engines: {node: '>=10.0.0'} @@ -9238,6 +8379,7 @@ packages: engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 + dev: true /to-regex-range/5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -9275,6 +8417,28 @@ packages: engines: {node: '>=8'} dev: true + /tronweb/5.3.1: + resolution: {integrity: sha512-JF3HE0ab8KQWJWETCF7UqZHD4uMNNGlEPrquBoObu5bWc8A8eerBV9M2PJq+HcSYBivmEHeBqFgmpMAQP3ofpw==} + dependencies: + '@babel/runtime': 7.23.2 + '@ethersproject/abi': 5.7.0 + '@tronweb3/google-protobuf': 3.21.2 + axios: 0.26.1 + bignumber.js: 9.1.2 + ethereum-cryptography: 2.1.2 + ethers: 6.8.0 + eventemitter3: 3.1.2 + injectpromise: 1.0.0 + lodash: 4.17.21 + querystring-es3: 0.2.1 + semver: 5.7.2 + validator: 13.11.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + dev: false + /ts-essentials/9.4.1_typescript@5.2.2: resolution: {integrity: sha512-oke0rI2EN9pzHsesdmrOrnqv1eQODmJpd/noJjwj2ZPC3Z4N2wbjrOEqnsEgmvlO2+4fBb0a794DCna2elEVIQ==} peerDependencies: @@ -9286,6 +8450,35 @@ packages: typescript: 5.2.2 dev: false + /ts-node/10.9.1: + resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.9 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + acorn: 8.10.0 + acorn-walk: 8.2.0 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /ts-node/10.9.1_bir6x3g64ycygfv3l4v3letmxi: resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} hasBin: true @@ -9355,14 +8548,14 @@ packages: /tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + /tslib/2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: false + /tslib/2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} dev: true - /tsort/0.0.1: - resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} - dev: false - /tty-table/4.2.2: resolution: {integrity: sha512-2gvCArMZLxgvpZ2NvQKdnYWIFLe7I/z5JClMuhrDXunmKgSZcQKcZRjN9XjAFiToMz2pUo1dEIXyrm0AwgV5Tw==} engines: {node: '>=8.0.0'} @@ -9383,78 +8576,70 @@ packages: safe-buffer: 5.2.1 dev: false - /turbo-darwin-64/1.10.15: - resolution: {integrity: sha512-Sik5uogjkRTe1XVP9TC2GryEMOJCaKE2pM/O9uLn4koQDnWKGcLQv+mDU+H+9DXvKLnJnKCD18OVRkwK5tdpoA==} + /turbo-darwin-64/1.10.16: + resolution: {integrity: sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64/1.10.15: - resolution: {integrity: sha512-xwqyFDYUcl2xwXyGPmHkmgnNm4Cy0oNzMpMOBGRr5x64SErS7QQLR4VHb0ubiR+VAb8M+ECPklU6vD1Gm+wekg==} + /turbo-darwin-arm64/1.10.16: + resolution: {integrity: sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64/1.10.15: - resolution: {integrity: sha512-dM07SiO3RMAJ09Z+uB2LNUSkPp3I1IMF8goH5eLj+d8Kkwoxd/+qbUZOj9RvInyxU/IhlnO9w3PGd3Hp14m/nA==} + /turbo-linux-64/1.10.16: + resolution: {integrity: sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64/1.10.15: - resolution: {integrity: sha512-MkzKLkKYKyrz4lwfjNXH8aTny5+Hmiu4SFBZbx+5C0vOlyp6fV5jZANDBvLXWiDDL4DSEAuCEK/2cmN6FVH1ow==} + /turbo-linux-arm64/1.10.16: + resolution: {integrity: sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64/1.10.15: - resolution: {integrity: sha512-3TdVU+WEH9ThvQGwV3ieX/XHebtYNHv9HARHauPwmVj3kakoALkpGxLclkHFBLdLKkqDvmHmXtcsfs6cXXRHJg==} + /turbo-windows-64/1.10.16: + resolution: {integrity: sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64/1.10.15: - resolution: {integrity: sha512-l+7UOBCbfadvPMYsX08hyLD+UIoAkg6ojfH+E8aud3gcA1padpjCJTh9gMpm3QdMbKwZteT5uUM+wyi6Rbbyww==} + /turbo-windows-arm64/1.10.16: + resolution: {integrity: sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo/1.10.15: - resolution: {integrity: sha512-mKKkqsuDAQy1wCCIjCdG+jOCwUflhckDMSRoeBPcIL/CnCl7c5yRDFe7SyaXloUUkt4tUR0rvNIhVCcT7YeQpg==} + /turbo/1.10.16: + resolution: {integrity: sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg==} hasBin: true optionalDependencies: - turbo-darwin-64: 1.10.15 - turbo-darwin-arm64: 1.10.15 - turbo-linux-64: 1.10.15 - turbo-linux-arm64: 1.10.15 - turbo-windows-64: 1.10.15 - turbo-windows-arm64: 1.10.15 + turbo-darwin-64: 1.10.16 + turbo-darwin-arm64: 1.10.16 + turbo-linux-64: 1.10.16 + turbo-linux-arm64: 1.10.16 + turbo-windows-64: 1.10.16 + turbo-windows-arm64: 1.10.16 dev: true - /tweetnacl-util/0.15.1: - resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - dev: false - /tweetnacl/0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} dev: false - /tweetnacl/1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} - dev: false - /type-check/0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -9479,17 +8664,13 @@ packages: /type-fest/0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} + dev: true /type-fest/0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} dev: true - /type-fest/0.7.1: - resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} - engines: {node: '>=8'} - dev: false - /type-fest/0.8.1: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} @@ -9597,11 +8778,8 @@ packages: /undici-types/5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} - /undici/5.26.3: - resolution: {integrity: sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==} - engines: {node: '>=14.0'} - dependencies: - '@fastify/busboy': 2.0.0 + /unfetch/4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} dev: false /universalify/0.1.2: @@ -9741,6 +8919,11 @@ packages: builtins: 5.0.1 dev: true + /validator/13.11.0: + resolution: {integrity: sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==} + engines: {node: '>= 0.10'} + dev: false + /varint/5.0.2: resolution: {integrity: sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==} dev: false @@ -10652,7 +9835,7 @@ packages: /wide-align/1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} dependencies: - string-width: 1.0.2 + string-width: 4.2.3 dev: false optional: true @@ -10660,10 +9843,6 @@ packages: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} dev: true - /workerpool/6.2.1: - resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} - dev: false - /wrap-ansi/6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -10721,12 +9900,12 @@ packages: optional: true dev: false - /ws/7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} - engines: {node: '>=8.3.0'} + /ws/8.12.0: + resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 + utf-8-validate: '>=5.0.2' peerDependenciesMeta: bufferutil: optional: true @@ -10734,8 +9913,8 @@ packages: optional: true dev: false - /ws/8.12.0: - resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + /ws/8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -10747,12 +9926,12 @@ packages: optional: true dev: false - /ws/8.13.0: - resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} + /ws/8.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' + utf-8-validate: ^5.0.2 peerDependenciesMeta: bufferutil: optional: true @@ -10799,6 +9978,7 @@ packages: /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + dev: true /yaeti/0.0.6: resolution: {integrity: sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==} @@ -10824,26 +10004,11 @@ packages: decamelize: 1.2.0 dev: true - /yargs-parser/20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - dev: false - /yargs-parser/21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} dev: true - /yargs-unparser/2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 - dev: false - /yargs/15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} @@ -10861,19 +10026,6 @@ packages: yargs-parser: 18.1.3 dev: true - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - dev: false - /yargs/17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -10895,6 +10047,7 @@ packages: /yocto-queue/0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + dev: true /yocto-queue/1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} From d9e3d88a3a4684e47e530d88fd1b513a76215323 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Tue, 24 Oct 2023 17:43:38 -0700 Subject: [PATCH 27/34] fix(symbiosis): change token address for final fail tx --- packages/symbiosis/src/test-transactions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/symbiosis/src/test-transactions.ts b/packages/symbiosis/src/test-transactions.ts index 1bcdec254..b019df8c6 100644 --- a/packages/symbiosis/src/test-transactions.ts +++ b/packages/symbiosis/src/test-transactions.ts @@ -122,7 +122,7 @@ export const FAILING_TEST_TRANSACTIONS: TestTransaction[] = [ transaction: failTransaction, destinationChainId: 5000, amount: 10000000n, - tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', + tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', recipient: '0xB7e98B3F16CC915B9C7a321c1bd95fa406BDbabe', description: 'when recipient is incorrect', }, From 9c33334ccc45a97798b8c276e334e19420069ba3 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Wed, 25 Oct 2023 19:39:13 -0700 Subject: [PATCH 28/34] test(symbiosis): add additional test --- packages/symbiosis/src/Symbiosis.test.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/symbiosis/src/Symbiosis.test.ts b/packages/symbiosis/src/Symbiosis.test.ts index 46558c4a4..964eda5f7 100644 --- a/packages/symbiosis/src/Symbiosis.test.ts +++ b/packages/symbiosis/src/Symbiosis.test.ts @@ -86,6 +86,20 @@ describe('Given the symbiosis plugin', () => { }) expect(apply(transaction, filter)).to.be.false }) + test('when bridge contract address is incorrect', async () => { + const { transaction, tokenAddress, recipient } = + FAILING_TEST_TRANSACTIONS[0] + + const filter = await bridge({ + sourceChainId: 42161, + destinationChainId: 5000, + contractAddress: '0x1DCfbC3fA01b2a86bC3a3f43479cCe9E8D438Adc', + tokenAddress, + amount: GreaterThanOrEqual(10000n), + recipient, + }) + expect(apply(transaction, filter)).to.be.false + }) FAILING_TEST_TRANSACTIONS.forEach((testTransaction) => { test(testTransaction.description, async () => { const { From 9ebda598200a7e83a70da8c2cc5fed7eb58f8709 Mon Sep 17 00:00:00 2001 From: mmackz <62824345+mmackz@users.noreply.github.com> Date: Wed, 25 Oct 2023 20:47:49 -0700 Subject: [PATCH 29/34] docs(symbiosis): add README.md --- packages/symbiosis/README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/symbiosis/README.md b/packages/symbiosis/README.md index e69de29bb..938961c37 100644 --- a/packages/symbiosis/README.md +++ b/packages/symbiosis/README.md @@ -0,0 +1,20 @@ +# Symbiosis Bridge Plugin + +This plugin is designed to filter valid bridge transactions using the Symbiosis cross-chain bridge. + +## Overview + +The Symbiosis bridge plugin prioritizes the most popular assets on each chain, which include ETH, stablecoins, and certain chain-specific tokens like OP and ARB. By leaving the tokenAddress undefined, the filter should allow any asset to pass, as long as all the other criteria is met. This allows for additional flexibility for quest creators. The plugin utilizes the symbiosis SDK to get the latest contract addresses for their metaRouter contracts. An overview of how the bridge operates ban be [found here](https://docs.symbiosis.finance/main-concepts/cross-chain-swaps-with-symbiosis) + +## Filtering Criteria + +The plugin filters transactions based on certain predefined criteria to identify valid bridge transactions. The criteria can include the following aspects: + +- Source chain and Destination chain +- Involved assets (e.g., ETH, USDC, wETH, OP, ARB) +- Amount +- Contract Address + +## Sample Transaction +- https://etherscan.io/tx/0xc97deae76c21cb57498d2873babd212fa589eae9e4d2e979f4a10a3428f376ee + From 1233263781dcb27a5317b71a5d58a36d63e32ac1 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Wed, 25 Oct 2023 21:23:13 -0700 Subject: [PATCH 30/34] refactor(symbiosis): use abiAbstract method --- packages/symbiosis/src/Symbiosis.test.ts | 15 ++---- packages/symbiosis/src/Symbiosis.ts | 15 ++---- packages/symbiosis/src/abi.ts | 62 ------------------------ 3 files changed, 10 insertions(+), 82 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.test.ts b/packages/symbiosis/src/Symbiosis.test.ts index 964eda5f7..07375a515 100644 --- a/packages/symbiosis/src/Symbiosis.test.ts +++ b/packages/symbiosis/src/Symbiosis.test.ts @@ -5,7 +5,7 @@ import { PASSING_TEST_TRANSACTIONS, FAILING_TEST_TRANSACTIONS, } from './test-transactions' -import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' +import { metaBurnABI, metaRouteABI } from './abi' import { ETH_CHAIN_ID, OPTIMISM_CHAIN_ID } from './constants' import { symbiosis } from './symbiosis-sdk' @@ -34,15 +34,10 @@ describe('Given the symbiosis plugin', () => { $gte: '100000', }, otherSideCalldata: { - $abi: metaSynthesizeABI, - _metaSynthesizeTransaction: { - finalCalldata: { - $abi: metaBurnABI, - _metaBurnTransaction: { - chainID: 1, - chain2address: TEST_USER, - }, - }, + $abiAbstract: metaBurnABI, + _metaBurnTransaction: { + chainID: 1, + chain2address: TEST_USER, }, }, }, diff --git a/packages/symbiosis/src/Symbiosis.ts b/packages/symbiosis/src/Symbiosis.ts index 461d8c096..102a2fe91 100644 --- a/packages/symbiosis/src/Symbiosis.ts +++ b/packages/symbiosis/src/Symbiosis.ts @@ -5,7 +5,7 @@ import { } from '@rabbitholegg/questdk' import { type Address } from 'viem' import { CHAIN_ID_ARRAY, CHAIN_TO_TOKENS } from './constants' -import { metaBurnABI, metaRouteABI, metaSynthesizeABI } from './abi' +import { metaBurnABI, metaRouteABI } from './abi' import { symbiosis } from './symbiosis-sdk' export const bridge = async ( @@ -32,15 +32,10 @@ export const bridge = async ( approvedTokens: tokenAddress ? [tokenAddress] : undefined, // if tokenAddress is undefined, any input token will pass filter amount: amount, otherSideCalldata: { - $abi: metaSynthesizeABI, - _metaSynthesizeTransaction: { - finalCalldata: { - $abi: metaBurnABI, - _metaBurnTransaction: { - chainID: destinationChainId, - chain2address: recipient, - }, - }, + $abiAbstract: metaBurnABI, + _metaBurnTransaction: { + chainID: destinationChainId, + chain2address: recipient, }, }, }, diff --git a/packages/symbiosis/src/abi.ts b/packages/symbiosis/src/abi.ts index ea5ca9da3..ba0b77130 100644 --- a/packages/symbiosis/src/abi.ts +++ b/packages/symbiosis/src/abi.ts @@ -1,65 +1,3 @@ -export const metaSynthesizeABI = [ - { - inputs: [ - { - components: [ - { - internalType: 'uint256', - name: 'stableBridgingFee', - type: 'uint256', - }, - { internalType: 'uint256', name: 'amount', type: 'uint256' }, - { internalType: 'address', name: 'rtoken', type: 'address' }, - { internalType: 'address', name: 'chain2address', type: 'address' }, - { internalType: 'address', name: 'receiveSide', type: 'address' }, - { - internalType: 'address', - name: 'oppositeBridge', - type: 'address', - }, - { internalType: 'address', name: 'syntCaller', type: 'address' }, - { internalType: 'uint256', name: 'chainID', type: 'uint256' }, - { - internalType: 'address[]', - name: 'swapTokens', - type: 'address[]', - }, - { - internalType: 'address', - name: 'secondDexRouter', - type: 'address', - }, - { - internalType: 'bytes', - name: 'secondSwapCalldata', - type: 'bytes', - }, - { - internalType: 'address', - name: 'finalReceiveSide', - type: 'address', - }, - { internalType: 'bytes', name: 'finalCalldata', type: 'bytes' }, - { internalType: 'uint256', name: 'finalOffset', type: 'uint256' }, - { - internalType: 'address', - name: 'revertableAddress', - type: 'address', - }, - { internalType: 'bytes32', name: 'clientID', type: 'bytes32' }, - ], - internalType: 'struct MetaRouteStructs.MetaSynthesizeTransaction', - name: '_metaSynthesizeTransaction', - type: 'tuple', - }, - ], - name: 'metaSynthesize', - outputs: [{ internalType: 'bytes32', name: '', type: 'bytes32' }], - stateMutability: 'nonpayable', - type: 'function', - }, -] - export const metaRouteABI = [ { inputs: [ From 41348cab643f4c7d8b21779406dec62cd6b98f9a Mon Sep 17 00:00:00 2001 From: Mmackz Date: Wed, 25 Oct 2023 21:25:08 -0700 Subject: [PATCH 31/34] chore(symbiosis): remove private field from plugins package.json --- packages/symbiosis/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/symbiosis/package.json b/packages/symbiosis/package.json index d9fafa246..8b71ce3de 100644 --- a/packages/symbiosis/package.json +++ b/packages/symbiosis/package.json @@ -1,6 +1,5 @@ { "name": "@rabbitholegg/questdk-plugin-symbiosis", - "private": true, "version": "1.0.0-alpha.4", "type": "module", "exports": { From 3ab4f839b983d32631ef0bf43616961f3b23b690 Mon Sep 17 00:00:00 2001 From: mmackz <62824345+mmackz@users.noreply.github.com> Date: Wed, 25 Oct 2023 22:23:42 -0700 Subject: [PATCH 32/34] docs(symbiosis): update README.md --- packages/symbiosis/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/symbiosis/README.md b/packages/symbiosis/README.md index 938961c37..ce2229cff 100644 --- a/packages/symbiosis/README.md +++ b/packages/symbiosis/README.md @@ -4,7 +4,7 @@ This plugin is designed to filter valid bridge transactions using the Symbiosis ## Overview -The Symbiosis bridge plugin prioritizes the most popular assets on each chain, which include ETH, stablecoins, and certain chain-specific tokens like OP and ARB. By leaving the tokenAddress undefined, the filter should allow any asset to pass, as long as all the other criteria is met. This allows for additional flexibility for quest creators. The plugin utilizes the symbiosis SDK to get the latest contract addresses for their metaRouter contracts. An overview of how the bridge operates ban be [found here](https://docs.symbiosis.finance/main-concepts/cross-chain-swaps-with-symbiosis) +The Symbiosis bridge plugin prioritizes the most popular assets on each chain, which include ETH, stablecoins, and certain chain-specific tokens like OP and ARB. By leaving the tokenAddress undefined, the filter should allow any asset to pass, as long as all the other criteria is met. This allows for additional flexibility for quest creators. The plugin utilizes the symbiosis SDK to get the latest contract addresses for their metaRouter contracts. An overview of how the bridge operates can be [found here](https://docs.symbiosis.finance/main-concepts/cross-chain-swaps-with-symbiosis) ## Filtering Criteria @@ -14,6 +14,7 @@ The plugin filters transactions based on certain predefined criteria to identify - Involved assets (e.g., ETH, USDC, wETH, OP, ARB) - Amount - Contract Address +- Recipient ## Sample Transaction - https://etherscan.io/tx/0xc97deae76c21cb57498d2873babd212fa589eae9e4d2e979f4a10a3428f376ee From b054a10595056a0d5da264693c71415611ab6d64 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Thu, 26 Oct 2023 15:53:57 -0700 Subject: [PATCH 33/34] refactor(symbiosis): clean up and remove duplicate code --- packages/symbiosis/src/test-transactions.ts | 31 ++++++++++----------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/packages/symbiosis/src/test-transactions.ts b/packages/symbiosis/src/test-transactions.ts index b019df8c6..9952fa2de 100644 --- a/packages/symbiosis/src/test-transactions.ts +++ b/packages/symbiosis/src/test-transactions.ts @@ -84,7 +84,7 @@ export const PASSING_TEST_TRANSACTIONS: TestTransaction[] = [ }, ] -const failTransaction: Transaction = { +const bridgeTx: Transaction = { chainId: 42161, from: '0xa99f898530df1514a566f1a6562d62809e99557d', input: @@ -93,36 +93,33 @@ const failTransaction: Transaction = { value: '0', } +export const controlTransaction: TestTransaction = { + transaction: bridgeTx, + destinationChainId: 5000, + amount: 10000000n, + tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + recipient: '0xa99f898530df1514a566f1a6562d62809e99557d', + description: 'when all parameters are correctly set', +} + export const FAILING_TEST_TRANSACTIONS: TestTransaction[] = [ { - transaction: failTransaction, + ...controlTransaction, destinationChainId: 10, // 5000 - amount: 10000000n, - tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - recipient: '0xa99f898530df1514a566f1a6562d62809e99557d', description: 'when destination chain is incorrect', }, { - transaction: failTransaction, - destinationChainId: 5000, + ...controlTransaction, amount: 20000000n, // 10000000n - tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', - recipient: '0xa99f898530df1514a566f1a6562d62809e99557d', description: 'when amount is insufficient', }, { - transaction: failTransaction, - destinationChainId: 5000, - amount: 10000000n, + ...controlTransaction, tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', // wrong USDC token - recipient: '0xa99f898530df1514a566f1a6562d62809e99557d', description: 'when input token is incorrect', }, { - transaction: failTransaction, - destinationChainId: 5000, - amount: 10000000n, - tokenAddress: '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', + ...controlTransaction, recipient: '0xB7e98B3F16CC915B9C7a321c1bd95fa406BDbabe', description: 'when recipient is incorrect', }, From d41d31bcd48e83a73a3d65ad46b627db52a34211 Mon Sep 17 00:00:00 2001 From: Mmackz Date: Thu, 26 Oct 2023 15:54:24 -0700 Subject: [PATCH 34/34] test(symbiosis): add additional test --- packages/symbiosis/src/Symbiosis.test.ts | 27 ++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/packages/symbiosis/src/Symbiosis.test.ts b/packages/symbiosis/src/Symbiosis.test.ts index 07375a515..fa28ceaad 100644 --- a/packages/symbiosis/src/Symbiosis.test.ts +++ b/packages/symbiosis/src/Symbiosis.test.ts @@ -4,6 +4,7 @@ import { bridge } from './Symbiosis' import { PASSING_TEST_TRANSACTIONS, FAILING_TEST_TRANSACTIONS, + controlTransaction, } from './test-transactions' import { metaBurnABI, metaRouteABI } from './abi' import { ETH_CHAIN_ID, OPTIMISM_CHAIN_ID } from './constants' @@ -69,8 +70,7 @@ describe('Given the symbiosis plugin', () => { }) describe('should not pass filter with invalid parameters', () => { test('when sourceChainId is incorrect', async () => { - const { transaction, tokenAddress, recipient } = - FAILING_TEST_TRANSACTIONS[0] + const { transaction, tokenAddress, recipient } = controlTransaction const filter = await bridge({ sourceChainId: 1, // 42161 @@ -82,8 +82,7 @@ describe('Given the symbiosis plugin', () => { expect(apply(transaction, filter)).to.be.false }) test('when bridge contract address is incorrect', async () => { - const { transaction, tokenAddress, recipient } = - FAILING_TEST_TRANSACTIONS[0] + const { transaction, tokenAddress, recipient } = controlTransaction const filter = await bridge({ sourceChainId: 42161, @@ -116,4 +115,24 @@ describe('Given the symbiosis plugin', () => { }) }) }) + describe('control transaction should pass filter', () => { + test(controlTransaction.description, async () => { + const { + transaction, + destinationChainId, + tokenAddress, + amount, + recipient, + } = controlTransaction + + const filter = await bridge({ + sourceChainId: transaction.chainId, + destinationChainId, + tokenAddress, + amount: GreaterThanOrEqual(amount), + recipient, + }) + expect(apply(transaction, filter)).to.be.true + }) + }) })