From 97492e8e8984b4dddb20b4a8c62b18109d5de1e9 Mon Sep 17 00:00:00 2001 From: Marcos Date: Wed, 28 Feb 2024 21:50:40 -0300 Subject: [PATCH 1/9] add approval process create API + example --- examples/create-approval-process/index.js | 27 ++++ examples/create-approval-process/package.json | 15 ++ packages/approval-process/README.md | 5 + packages/approval-process/jest.config.js | 1 + packages/approval-process/package.json | 30 ++++ packages/approval-process/src/api/index.ts | 24 ++++ packages/approval-process/src/index.ts | 5 + .../src/models/approval-process.ts | 65 +++++++++ packages/approval-process/tsconfig.json | 11 ++ packages/defender-sdk/package.json | 3 +- packages/defender-sdk/src/index.ts | 5 + pnpm-lock.yaml | 135 ++++-------------- 12 files changed, 217 insertions(+), 109 deletions(-) create mode 100644 examples/create-approval-process/index.js create mode 100644 examples/create-approval-process/package.json create mode 100644 packages/approval-process/README.md create mode 100644 packages/approval-process/jest.config.js create mode 100644 packages/approval-process/package.json create mode 100644 packages/approval-process/src/api/index.ts create mode 100644 packages/approval-process/src/index.ts create mode 100644 packages/approval-process/src/models/approval-process.ts create mode 100644 packages/approval-process/tsconfig.json diff --git a/examples/create-approval-process/index.js b/examples/create-approval-process/index.js new file mode 100644 index 00000000..47ac7325 --- /dev/null +++ b/examples/create-approval-process/index.js @@ -0,0 +1,27 @@ +require('dotenv').config(); + +const { Defender } = require('@openzeppelin/defender-sdk'); + +async function main() { + const creds = { apiKey: process.env.API_KEY, apiSecret: process.env.API_SECRET }; + const client = new Defender(creds); + + const relayers = await client.relay.list(); + let relayer = relayers.items.find((relayer) => relayer.network === 'sepolia'); + if (!relayer) { + console.log('Relayer not found, creating one'); + relayer = await client.relay.create({ name: 'My Testnet Relayer', network: 'sepolia', minBalance: 0 }); + } + + const approvalProcess = await client.approvalProcess.create({ + name: 'My Approval Process', + network: 'sepolia', + relayerId: relayer.relayerId, + }); + + console.log(approvalProcess); +} + +if (require.main === module) { + main().catch(console.error); +} diff --git a/examples/create-approval-process/package.json b/examples/create-approval-process/package.json new file mode 100644 index 00000000..e867e748 --- /dev/null +++ b/examples/create-approval-process/package.json @@ -0,0 +1,15 @@ +{ + "name": "@openzeppelin/defender-sdk-example-create-approval-process", + "version": "1.10.0", + "private": true, + "main": "index.js", + "author": "Marcos Carlomagno ", + "license": "MIT", + "scripts": { + "start": "node index.js" + }, + "dependencies": { + "@openzeppelin/defender-sdk": "1.10.0", + "dotenv": "^16.3.1" + } +} diff --git a/packages/approval-process/README.md b/packages/approval-process/README.md new file mode 100644 index 00000000..f97a0f7a --- /dev/null +++ b/packages/approval-process/README.md @@ -0,0 +1,5 @@ +# Defender SDK Approval Process client + +The OpenZeppelin Defender provides a security operations (SecOps) platform for Ethereum with built-in best practices. Development teams implement Defender to ship faster and minimize security risks. + +This library provides methods related to Approval Processes. See Examples for usage. diff --git a/packages/approval-process/jest.config.js b/packages/approval-process/jest.config.js new file mode 100644 index 00000000..990bd442 --- /dev/null +++ b/packages/approval-process/jest.config.js @@ -0,0 +1 @@ +module.exports = require('../../jest.config'); diff --git a/packages/approval-process/package.json b/packages/approval-process/package.json new file mode 100644 index 00000000..2b210f9c --- /dev/null +++ b/packages/approval-process/package.json @@ -0,0 +1,30 @@ +{ + "name": "@openzeppelin/defender-sdk-approval-process-client", + "version": "1.10.0", + "description": "", + "main": "./lib/index.js", + "types": "./lib/index.d.ts", + "scripts": { + "build": "rm -rf lib && tsc", + "test": "npm run test:unit", + "test:unit": "jest --verbose --passWithNoTests --forceExit", + "watch": "tsc -w" + }, + "files": [ + "lib", + "!*.test.js", + "!*.test.js.map", + "!*.test.d.ts", + "!*__mocks__" + ], + "author": "OpenZeppelin Defender ", + "license": "MIT", + "dependencies": { + "@openzeppelin/defender-sdk-base-client": "^1.10.0", + "axios": "^1.6.7", + "lodash": "^4.17.21" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/packages/approval-process/src/api/index.ts b/packages/approval-process/src/api/index.ts new file mode 100644 index 00000000..e7e52ea2 --- /dev/null +++ b/packages/approval-process/src/api/index.ts @@ -0,0 +1,24 @@ +import { BaseApiClient } from '@openzeppelin/defender-sdk-base-client'; +import { CreateApprovalProcessRequest, CreateApprovalProcessResponse } from '../models/approval-process'; + +const PATH = '/approval-process'; + +export class ApprovalProcessClient extends BaseApiClient { + protected getPoolId(): string { + return process.env.DEFENDER_POOL_ID ?? 'us-west-2_94f3puJWv'; + } + + protected getPoolClientId(): string { + return process.env.DEFENDER_POOL_CLIENT_ID ?? '40e58hbc7pktmnp9i26hh5nsav'; + } + + protected getApiUrl(): string { + return process.env.DEFENDER_API_URL ?? 'https://defender-api.openzeppelin.com/v2/'; + } + + public async create(approvalProcess: CreateApprovalProcessRequest): Promise { + return this.apiCall(async (api) => { + return await api.post(PATH, approvalProcess); + }); + } +} diff --git a/packages/approval-process/src/index.ts b/packages/approval-process/src/index.ts new file mode 100644 index 00000000..2053a6b5 --- /dev/null +++ b/packages/approval-process/src/index.ts @@ -0,0 +1,5 @@ +export { ApprovalProcessClient } from './api'; +export { CreateApprovalProcessRequest } from './models/approval-process'; + +// eslint-disable-next-line @typescript-eslint/no-var-requires +export const VERSION = require('../package.json').version; diff --git a/packages/approval-process/src/models/approval-process.ts b/packages/approval-process/src/models/approval-process.ts new file mode 100644 index 00000000..ca5dcac5 --- /dev/null +++ b/packages/approval-process/src/models/approval-process.ts @@ -0,0 +1,65 @@ +import { Network } from '@openzeppelin/defender-sdk-base-client'; + +export type ComponentType = ('deploy' | 'upgrade')[]; + +export interface Timelock { + address: string; + delay: string; +} +export interface FireblocksProposalParams { + apiKeyId: string; + vaultId: string; + assetId: string; +} + +export interface CreateApprovalProcessRequest { + name: string; + component?: ComponentType; + network: Network; + via?: string; + viaType?: + | 'EOA' + | 'Contract' + | 'Multisig' + | 'Gnosis Safe' + | 'Safe' + | 'Gnosis Multisig' + | 'Relayer' + | 'Unknown' + | 'Timelock Controller' + | 'ERC20' + | 'Governor' + | 'Fireblocks'; + timelock?: Timelock; + multisigSender?: string; + fireblocks?: FireblocksProposalParams; + relayerId?: string; + stackResourceId?: string; +} + +export interface CreateApprovalProcessResponse { + approvalProcessId: string; + createdAt: string; + name: string; + component?: ComponentType; + network?: Network; + via?: string; + viaType?: + | 'EOA' + | 'Contract' + | 'Multisig' + | 'Gnosis Safe' + | 'Safe' + | 'Gnosis Multisig' + | 'Relayer' + | 'Unknown' + | 'Timelock Controller' + | 'ERC20' + | 'Governor' + | 'Fireblocks'; + timelock?: Timelock; + multisigSender?: string; + fireblocks?: FireblocksProposalParams; + relayerId?: string; + stackResourceId?: string; +} diff --git a/packages/approval-process/tsconfig.json b/packages/approval-process/tsconfig.json new file mode 100644 index 00000000..09f1bb8c --- /dev/null +++ b/packages/approval-process/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "code-style/tsconfig.json", + "compilerOptions": { + "declaration": true, + "outDir": "./lib", + "skipLibCheck": true, + "sourceMap": false + }, + "include": ["./src"], + "exclude": ["**/*.test.ts", "**/__mocks__/*"] +} diff --git a/packages/defender-sdk/package.json b/packages/defender-sdk/package.json index 63b40f9c..b64645cb 100644 --- a/packages/defender-sdk/package.json +++ b/packages/defender-sdk/package.json @@ -29,7 +29,8 @@ "@openzeppelin/defender-sdk-notification-channel-client": "^1.10.0", "@openzeppelin/defender-sdk-relay-signer-client": "^1.10.0", "@openzeppelin/defender-sdk-network-client": "^1.10.0", - "@openzeppelin/defender-sdk-account-client": "^1.10.0" + "@openzeppelin/defender-sdk-account-client": "^1.10.0", + "@openzeppelin/defender-sdk-approval-process-client": "^1.10.0" }, "publishConfig": { "access": "public" diff --git a/packages/defender-sdk/src/index.ts b/packages/defender-sdk/src/index.ts index 24df577b..1128dc8e 100644 --- a/packages/defender-sdk/src/index.ts +++ b/packages/defender-sdk/src/index.ts @@ -6,6 +6,7 @@ import { DeployClient } from '@openzeppelin/defender-sdk-deploy-client'; import { NotificationChannelClient } from '@openzeppelin/defender-sdk-notification-channel-client'; import { NetworkClient } from '@openzeppelin/defender-sdk-network-client'; import { AccountClient } from '@openzeppelin/defender-sdk-account-client'; +import { ApprovalProcessClient } from '@openzeppelin/defender-sdk-approval-process-client'; import { Newable, ClientParams } from './types'; import { ActionRelayerParams, Relayer as RelaySignerClient } from '@openzeppelin/defender-sdk-relay-signer-client'; @@ -62,6 +63,10 @@ export class Defender { return getClient(AccountClient, { apiKey: this.apiKey, apiSecret: this.apiSecret }); } + get approvalProcess() { + return getClient(ApprovalProcessClient, { apiKey: this.apiKey, apiSecret: this.apiSecret }); + } + get monitor() { return getClient(MonitorClient, { apiKey: this.apiKey, apiSecret: this.apiSecret }); } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 71523bb3..9ae45fb2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -85,6 +85,15 @@ importers: specifier: ^16.3.1 version: 16.3.1 + examples/create-approval-process: + dependencies: + '@openzeppelin/defender-sdk': + specifier: 1.10.0 + version: link:../../packages/defender-sdk + dotenv: + specifier: ^16.3.1 + version: 16.3.1 + examples/create-batch-proposal: dependencies: '@openzeppelin/defender-sdk': @@ -328,6 +337,18 @@ importers: specifier: ^4.17.21 version: 4.17.21 + packages/approval-process: + dependencies: + '@openzeppelin/defender-sdk-base-client': + specifier: ^1.10.0 + version: link:../base + axios: + specifier: ^1.6.7 + version: 1.6.7 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + packages/base: dependencies: amazon-cognito-identity-js: @@ -352,6 +373,9 @@ importers: '@openzeppelin/defender-sdk-action-client': specifier: ^1.10.0 version: link:../action + '@openzeppelin/defender-sdk-approval-process-client': + specifier: ^1.10.0 + version: link:../approval-process '@openzeppelin/defender-sdk-base-client': specifier: ^1.10.0 version: link:../base @@ -526,7 +550,7 @@ importers: version: 5.7.0 jest-mock-extended: specifier: ^3.0.5 - version: 3.0.5(jest@29.6.1)(typescript@4.9.5) + version: 3.0.5(jest@29.6.4)(typescript@4.9.5) web3-core: specifier: ^1.10.3 version: 1.10.3 @@ -1488,49 +1512,6 @@ packages: slash: 3.0.0 dev: true - /@jest/core@29.6.1: - resolution: {integrity: sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/console': 29.6.4 - '@jest/reporters': 29.6.4 - '@jest/test-result': 29.6.4 - '@jest/transform': 29.6.4 - '@jest/types': 29.6.1 - '@types/node': 16.18.38 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.8.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.6.3 - jest-config: 29.6.4(@types/node@16.18.38) - jest-haste-map: 29.6.4 - jest-message-util: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.6.4 - jest-resolve-dependencies: 29.6.4 - jest-runner: 29.6.4 - jest-runtime: 29.6.4 - jest-snapshot: 29.6.4 - jest-util: 29.6.3 - jest-validate: 29.6.3 - jest-watcher: 29.6.4 - micromatch: 4.0.5 - pretty-format: 29.6.3 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - dev: true - /@jest/core@29.6.4: resolution: {integrity: sha512-U/vq5ccNTSVgYH7mHnodHmCffGWHJnz/E1BEWlLuK5pM4FZmGfBn/nrJGLjUsSmyx3otCeqc1T31F4y08AMDLg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1728,18 +1709,6 @@ packages: - supports-color dev: true - /@jest/types@29.6.1: - resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/schemas': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.4 - '@types/istanbul-reports': 3.0.1 - '@types/node': 16.18.38 - '@types/yargs': 17.0.24 - chalk: 4.1.2 - dev: true - /@jest/types@29.6.3: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -4868,35 +4837,6 @@ packages: - supports-color dev: true - /jest-cli@29.6.1(@types/node@16.3.0): - resolution: {integrity: sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.6.1 - '@jest/test-result': 29.6.4 - '@jest/types': 29.6.1 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 29.6.4(@types/node@16.3.0) - jest-util: 29.6.3 - jest-validate: 29.6.3 - prompts: 2.4.2 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - /jest-cli@29.6.4(@types/node@16.3.0): resolution: {integrity: sha512-+uMCQ7oizMmh8ZwRfZzKIEszFY9ksjjEQnTEMTaL7fYiL3Kw4XhqT9bYh+A4DQKUb67hZn2KbtEnDuHvcgK4pQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -5143,13 +5083,13 @@ packages: stack-utils: 2.0.6 dev: true - /jest-mock-extended@3.0.5(jest@29.6.1)(typescript@4.9.5): + /jest-mock-extended@3.0.5(jest@29.6.4)(typescript@4.9.5): resolution: {integrity: sha512-/eHdaNPUAXe7f65gHH5urc8SbRVWjYxBqmCgax2uqOBJy8UUcCBMN1upj1eZ8y/i+IqpyEm4Kq0VKss/GCCTdw==} peerDependencies: jest: ^24.0.0 || ^25.0.0 || ^26.0.0 || ^27.0.0 || ^28.0.0 || ^29.0.0 typescript: ^3.0.0 || ^4.0.0 || ^5.0.0 dependencies: - jest: 29.6.1(@types/node@16.3.0) + jest: 29.6.4(@types/node@16.3.0) ts-essentials: 7.0.3(typescript@4.9.5) typescript: 4.9.5 dev: true @@ -5340,27 +5280,6 @@ packages: supports-color: 8.1.1 dev: true - /jest@29.6.1(@types/node@16.3.0): - resolution: {integrity: sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - dependencies: - '@jest/core': 29.6.1 - '@jest/types': 29.6.1 - import-local: 3.1.0 - jest-cli: 29.6.1(@types/node@16.3.0) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - dev: true - /jest@29.6.4(@types/node@16.3.0): resolution: {integrity: sha512-tEFhVQFF/bzoYV1YuGyzLPZ6vlPrdfvDmmAxudA1dLEuiztqg2Rkx20vkKY32xiDROcD2KXlgZ7Cu8RPeEHRKw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} From 817f654c657f570f93d394d6134b57b59fbd728c Mon Sep 17 00:00:00 2001 From: Marcos Date: Wed, 28 Feb 2024 21:52:38 -0300 Subject: [PATCH 2/9] expose approval process response --- packages/approval-process/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/approval-process/src/index.ts b/packages/approval-process/src/index.ts index 2053a6b5..7b760bc3 100644 --- a/packages/approval-process/src/index.ts +++ b/packages/approval-process/src/index.ts @@ -1,5 +1,5 @@ export { ApprovalProcessClient } from './api'; -export { CreateApprovalProcessRequest } from './models/approval-process'; +export { CreateApprovalProcessRequest, CreateApprovalProcessResponse } from './models/approval-process'; // eslint-disable-next-line @typescript-eslint/no-var-requires export const VERSION = require('../package.json').version; From a38e6abd9979dd11a89b839054b5ec0cc7a9c661 Mon Sep 17 00:00:00 2001 From: Marcos Date: Fri, 4 Oct 2024 18:56:18 -0300 Subject: [PATCH 3/9] feat: add relayer group support --- packages/approval-process/src/models/approval-process.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/approval-process/src/models/approval-process.ts b/packages/approval-process/src/models/approval-process.ts index ca5dcac5..571f5062 100644 --- a/packages/approval-process/src/models/approval-process.ts +++ b/packages/approval-process/src/models/approval-process.ts @@ -52,6 +52,7 @@ export interface CreateApprovalProcessResponse { | 'Safe' | 'Gnosis Multisig' | 'Relayer' + | 'Relayer Group' | 'Unknown' | 'Timelock Controller' | 'ERC20' @@ -61,5 +62,6 @@ export interface CreateApprovalProcessResponse { multisigSender?: string; fireblocks?: FireblocksProposalParams; relayerId?: string; + relayerGroupId?: string; stackResourceId?: string; } From 8cac5a70df49341f19c545cff35b16c84ce4d3b1 Mon Sep 17 00:00:00 2001 From: Marcos Date: Fri, 4 Oct 2024 19:09:18 -0300 Subject: [PATCH 4/9] fix: build --- packages/approval-process/package.json | 4 +- packages/defender-sdk/package.json | 3 +- pnpm-lock.yaml | 348 ++++++++++++++++++++++++- 3 files changed, 341 insertions(+), 14 deletions(-) diff --git a/packages/approval-process/package.json b/packages/approval-process/package.json index 2b210f9c..eba7d5bf 100644 --- a/packages/approval-process/package.json +++ b/packages/approval-process/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/defender-sdk-approval-process-client", - "version": "1.10.0", + "version": "1.14.4", "description": "", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -20,7 +20,7 @@ "author": "OpenZeppelin Defender ", "license": "MIT", "dependencies": { - "@openzeppelin/defender-sdk-base-client": "^1.10.0", + "@openzeppelin/defender-sdk-base-client": "^1.14.4", "axios": "^1.6.7", "lodash": "^4.17.21" }, diff --git a/packages/defender-sdk/package.json b/packages/defender-sdk/package.json index f9b966a8..f17cc2c1 100644 --- a/packages/defender-sdk/package.json +++ b/packages/defender-sdk/package.json @@ -31,7 +31,8 @@ "@openzeppelin/defender-sdk-network-client": "^1.14.4", "@openzeppelin/defender-sdk-account-client": "^1.14.4", "@openzeppelin/defender-sdk-key-value-store-client": "^1.14.4", - "@openzeppelin/defender-sdk-relay-group-client": "^1.14.4" + "@openzeppelin/defender-sdk-relay-group-client": "^1.14.4", + "@openzeppelin/defender-sdk-approval-process-client": "^1.14.4" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 359055d8..9f0d7312 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -117,7 +117,7 @@ importers: dependencies: '@openzeppelin/defender-sdk': specifier: 1.10.0 - version: 1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4)(web3-utils@1.10.4)(web3@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4)) dotenv: specifier: ^16.3.1 version: 16.4.5 @@ -171,7 +171,7 @@ importers: dependencies: '@openzeppelin/defender-sdk': specifier: 1.13.4 - version: 1.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4)(web3-utils@1.10.4)(web3@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 1.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4)) dotenv: specifier: ^16.3.1 version: 16.3.1 @@ -477,7 +477,7 @@ importers: packages/approval-process: dependencies: '@openzeppelin/defender-sdk-base-client': - specifier: ^1.10.0 + specifier: ^1.14.4 version: link:../base axios: specifier: ^1.6.7 @@ -513,6 +513,9 @@ importers: '@openzeppelin/defender-sdk-action-client': specifier: ^1.14.4 version: link:../action + '@openzeppelin/defender-sdk-approval-process-client': + specifier: ^1.14.4 + version: link:../approval-process '@openzeppelin/defender-sdk-base-client': specifier: ^1.14.4 version: link:../base @@ -1926,6 +1929,9 @@ packages: '@types/stack-utils@2.0.1': resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + '@types/ws@8.5.3': + resolution: {integrity: sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==} + '@types/yargs-parser@21.0.0': resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} @@ -2004,6 +2010,15 @@ packages: resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} hasBin: true + abitype@0.7.1: + resolution: {integrity: sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==} + peerDependencies: + typescript: '>=4.9.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + abortcontroller-polyfill@1.7.5: resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} @@ -2754,6 +2769,9 @@ packages: eventemitter3@4.0.4: resolution: {integrity: sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==} + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + events@1.1.1: resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} engines: {node: '>=0.4.x'} @@ -3247,6 +3265,11 @@ packages: isomorphic-unfetch@3.1.0: resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + isomorphic-ws@5.0.0: + resolution: {integrity: sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==} + peerDependencies: + ws: ^8.17.0 + isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -4618,22 +4641,46 @@ packages: resolution: {integrity: sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==} engines: {node: '>=8.0.0'} + web3-core@4.3.2: + resolution: {integrity: sha512-uIMVd/j4BgOnwfpY8ZT+QKubOyM4xohEhFZXz9xB8wimXWMMlYVlIK/TbfHqFolS9uOerdSGhsMbcK9lETae8g==} + engines: {node: '>=14', npm: '>=6.12.0'} + + web3-errors@1.1.4: + resolution: {integrity: sha512-WahtszSqILez+83AxGecVroyZsMuuRT+KmQp4Si5P4Rnqbczno1k748PCrZTS1J4UCPmXMG2/Vt+0Bz2zwXkwQ==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-eth-abi@1.10.0: resolution: {integrity: sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==} engines: {node: '>=8.0.0'} + web3-eth-abi@4.2.0: + resolution: {integrity: sha512-x7dUCmk6th+5N63s5kUusoNtsDJKUUQgl9+jECvGTBOTiyHe/V6aOY0120FUjaAGaapOnR7BImQdhqHv6yT2YQ==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-eth-accounts@1.10.0: resolution: {integrity: sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==} engines: {node: '>=8.0.0'} + web3-eth-accounts@4.1.1: + resolution: {integrity: sha512-9JqhRi1YhO1hQOEmmBHgEGsME/B1FHMxpA/AK3vhpvQ8QeP6KbJW+cForTLfPpUbkmPxnRunG4PNNaETNlZfrA==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-eth-contract@1.10.0: resolution: {integrity: sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==} engines: {node: '>=8.0.0'} + web3-eth-contract@4.3.0: + resolution: {integrity: sha512-4fzSklA65zUn6SthU3T3tbVJacfP8/wkJmCuvmPaf2ZTFdnhsF96G5IQtCRf0+wASb4yk0A6IBvXZfk1B4R4HA==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-eth-ens@1.10.0: resolution: {integrity: sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==} engines: {node: '>=8.0.0'} + web3-eth-ens@4.2.0: + resolution: {integrity: sha512-qYj34te2UctoObt8rlEIY/t2MuTMiMiiHhO2JAHRGqSLCQ7b8DM3RpvkiiSB0N0ZyEn+CetZqJCTYb8DNKBS/g==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-eth-iban@1.10.0: resolution: {integrity: sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==} engines: {node: '>=8.0.0'} @@ -4646,18 +4693,34 @@ packages: resolution: {integrity: sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==} engines: {node: '>=8.0.0'} + web3-eth-iban@4.0.7: + resolution: {integrity: sha512-8weKLa9KuKRzibC87vNLdkinpUE30gn0IGY027F8doeJdcPUfsa4IlBgNC4k4HLBembBB2CTU0Kr/HAOqMeYVQ==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-eth-personal@1.10.0: resolution: {integrity: sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==} engines: {node: '>=8.0.0'} + web3-eth-personal@4.0.8: + resolution: {integrity: sha512-sXeyLKJ7ddQdMxz1BZkAwImjqh7OmKxhXoBNF3isDmD4QDpMIwv/t237S3q4Z0sZQamPa/pHebJRWVuvP8jZdw==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-eth@1.10.0: resolution: {integrity: sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==} engines: {node: '>=8.0.0'} + web3-eth@4.5.0: + resolution: {integrity: sha512-crisE46o/SHMVm+XHAXEaR8k76NCImq+hi0QQEJ+VaLZbDobI/Gvog1HwTukDUDRgnYSAFGqD0cTRyAwDurwpA==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-net@1.10.0: resolution: {integrity: sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==} engines: {node: '>=8.0.0'} + web3-net@4.0.7: + resolution: {integrity: sha512-SzEaXFrBjY25iQGk5myaOfO9ZyfTwQEa4l4Ps4HDNVMibgZji3WPzpjq8zomVHMwi8bRp6VV7YS71eEsX7zLow==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-providers-http@1.10.0: resolution: {integrity: sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==} engines: {node: '>=8.0.0'} @@ -4666,6 +4729,10 @@ packages: resolution: {integrity: sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==} engines: {node: '>=8.0.0'} + web3-providers-http@4.1.0: + resolution: {integrity: sha512-6qRUGAhJfVQM41E5t+re5IHYmb5hSaLc02BE2MaRQsz2xKA6RjmHpOA5h/+ojJxEpI9NI2CrfDKOAgtJfoUJQg==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-providers-ipc@1.10.0: resolution: {integrity: sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==} engines: {node: '>=8.0.0'} @@ -4674,6 +4741,10 @@ packages: resolution: {integrity: sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==} engines: {node: '>=8.0.0'} + web3-providers-ipc@4.0.7: + resolution: {integrity: sha512-YbNqY4zUvIaK2MHr1lQFE53/8t/ejHtJchrWn9zVbFMGXlTsOAbNoIoZWROrg1v+hCBvT2c9z8xt7e/+uz5p1g==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-providers-ws@1.10.0: resolution: {integrity: sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==} engines: {node: '>=8.0.0'} @@ -4682,10 +4753,22 @@ packages: resolution: {integrity: sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==} engines: {node: '>=8.0.0'} + web3-providers-ws@4.0.7: + resolution: {integrity: sha512-n4Dal9/rQWjS7d6LjyEPM2R458V8blRm0eLJupDEJOOIBhGYlxw5/4FthZZ/cqB7y/sLVi7K09DdYx2MeRtU5w==} + engines: {node: '>=14', npm: '>=6.12.0'} + + web3-rpc-methods@1.2.0: + resolution: {integrity: sha512-CWJ/g4I4WyYvLkf21wCZAehdhU/VjX/OAPHnqF5/FPDJlogOsOnGXHqi1Z5AP+ocdt395PNubd8jyMMJoYGSBA==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-shh@1.10.0: resolution: {integrity: sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==} engines: {node: '>=8.0.0'} + web3-types@1.5.0: + resolution: {integrity: sha512-geWuMIeegQ8AedKAO6wO4G4j1gyQ1F/AyKLMw2vud4bsfZayyzWJgCMDZtjYMm5uo2a7i8j1W3/4QFmzlSy5cw==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3-utils@1.10.0: resolution: {integrity: sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==} engines: {node: '>=8.0.0'} @@ -4698,10 +4781,22 @@ packages: resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} engines: {node: '>=8.0.0'} + web3-utils@4.2.2: + resolution: {integrity: sha512-z+4owWcnoB4EH8yWIL1FBeyqe+sXwaGxUDtVTNPTMf2oB5C+paCToZUdCV5Bi+M543zZEzlzNTabOD+OWNc7NA==} + engines: {node: '>=14', npm: '>=6.12.0'} + + web3-validator@2.0.5: + resolution: {integrity: sha512-2gLOSW8XqEN5pw5jVUm20EB7A8SbQiekpAtiI0JBmCIV0a2rp97v8FgWY5E3UEqnw5WFfEqvcDVW92EyynDTyQ==} + engines: {node: '>=14', npm: '>=6.12.0'} + web3@1.10.0: resolution: {integrity: sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==} engines: {node: '>=8.0.0'} + web3@4.7.0: + resolution: {integrity: sha512-3g+1e7B/IW0Nw9WP1dotrZKWD9o5IBfl27dxEnE1LxBZBax6ZkviiAwf18utIhlNBD07RgI+PPfKDXxfDBlHWA==} + engines: {node: '>=14.0.0', npm: '>=6.12.0'} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -4806,6 +4901,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zod@3.22.4: + resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==} + snapshots: '@aashutoshrathi/word-wrap@1.2.6': {} @@ -6304,7 +6402,7 @@ snapshots: - debug - encoding - '@openzeppelin/defender-sdk-relay-signer-client@1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4)(web3-utils@1.10.4)(web3@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@openzeppelin/defender-sdk-relay-signer-client@1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4))': dependencies: '@ethersproject/bignumber': 5.7.0 '@ethersproject/bytes': 5.7.0 @@ -6318,17 +6416,17 @@ snapshots: axios: 1.7.2 ethers: 6.9.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) lodash: 4.17.21 - web3: 1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - web3-core: 1.10.4 + web3: 4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-core: 4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) web3-core-helpers: 1.10.4 - web3-utils: 1.10.4 + web3-utils: 4.2.2 transitivePeerDependencies: - bufferutil - debug - encoding - utf-8-validate - '@openzeppelin/defender-sdk@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4)(web3-utils@1.10.4)(web3@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@openzeppelin/defender-sdk@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4))': dependencies: '@openzeppelin/defender-sdk-account-client': 1.14.4 '@openzeppelin/defender-sdk-action-client': 1.14.4 @@ -6339,7 +6437,7 @@ snapshots: '@openzeppelin/defender-sdk-notification-channel-client': 1.14.4 '@openzeppelin/defender-sdk-proposal-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@openzeppelin/defender-sdk-relay-client': 1.14.4 - '@openzeppelin/defender-sdk-relay-signer-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4)(web3-utils@1.10.4)(web3@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@openzeppelin/defender-sdk-relay-signer-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4)) transitivePeerDependencies: - bufferutil - debug @@ -6350,7 +6448,7 @@ snapshots: - web3-core-helpers - web3-utils - '@openzeppelin/defender-sdk@1.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4)(web3-utils@1.10.4)(web3@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@openzeppelin/defender-sdk@1.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4))': dependencies: '@openzeppelin/defender-sdk-account-client': 1.14.4 '@openzeppelin/defender-sdk-action-client': 1.14.4 @@ -6361,7 +6459,7 @@ snapshots: '@openzeppelin/defender-sdk-notification-channel-client': 1.14.4 '@openzeppelin/defender-sdk-proposal-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@openzeppelin/defender-sdk-relay-client': 1.14.4 - '@openzeppelin/defender-sdk-relay-signer-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@1.10.4)(web3-utils@1.10.4)(web3@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@openzeppelin/defender-sdk-relay-signer-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4)) transitivePeerDependencies: - bufferutil - debug @@ -6902,6 +7000,10 @@ snapshots: '@types/stack-utils@2.0.1': {} + '@types/ws@8.5.3': + dependencies: + '@types/node': 20.12.13 + '@types/yargs-parser@21.0.0': {} '@types/yargs@17.0.24': @@ -7005,6 +7107,12 @@ snapshots: dependencies: argparse: 2.0.1 + abitype@0.7.1(typescript@5.4.5)(zod@3.22.4): + dependencies: + typescript: 5.4.5 + optionalDependencies: + zod: 3.22.4 + abortcontroller-polyfill@1.7.5: {} accepts@1.3.8: @@ -7879,6 +7987,8 @@ snapshots: eventemitter3@4.0.4: {} + eventemitter3@5.0.1: {} + events@1.1.1: {} evp_bytestokey@1.0.3: @@ -8429,6 +8539,10 @@ snapshots: transitivePeerDependencies: - encoding + isomorphic-ws@5.0.0(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + dependencies: + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + isstream@0.1.2: {} istanbul-lib-coverage@3.2.0: {} @@ -10079,11 +10193,43 @@ snapshots: - encoding - supports-color + web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + web3-errors: 1.1.4 + web3-eth-accounts: 4.1.1 + web3-eth-iban: 4.0.7 + web3-providers-http: 4.1.0 + web3-providers-ws: 4.0.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + optionalDependencies: + web3-providers-ipc: 4.0.7 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + web3-errors@1.1.4: + dependencies: + web3-types: 1.5.0 + web3-eth-abi@1.10.0: dependencies: '@ethersproject/abi': 5.7.0 web3-utils: 1.10.0 + web3-eth-abi@4.2.0(typescript@5.4.5)(zod@3.22.4): + dependencies: + abitype: 0.7.1(typescript@5.4.5)(zod@3.22.4) + web3-errors: 1.1.4 + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + transitivePeerDependencies: + - typescript + - zod + web3-eth-accounts@1.10.0: dependencies: '@ethereumjs/common': 2.5.0 @@ -10100,6 +10246,16 @@ snapshots: - encoding - supports-color + web3-eth-accounts@4.1.1: + dependencies: + '@ethereumjs/rlp': 4.0.1 + crc-32: 1.2.2 + ethereum-cryptography: 2.1.2 + web3-errors: 1.1.4 + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + web3-eth-contract@1.10.0: dependencies: '@types/bn.js': 5.1.5 @@ -10114,6 +10270,22 @@ snapshots: - encoding - supports-color + web3-eth-contract@4.3.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4): + dependencies: + web3-core: 4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-errors: 1.1.4 + web3-eth: 4.5.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-eth-abi: 4.2.0(typescript@5.4.5)(zod@3.22.4) + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + - zod + web3-eth-ens@1.10.0: dependencies: content-hash: 2.5.2 @@ -10128,6 +10300,24 @@ snapshots: - encoding - supports-color + web3-eth-ens@4.2.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + web3-core: 4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-errors: 1.1.4 + web3-eth: 4.5.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-eth-contract: 4.3.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-net: 4.0.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + - zod + web3-eth-iban@1.10.0: dependencies: bn.js: 5.2.1 @@ -10143,6 +10333,13 @@ snapshots: bn.js: 5.2.1 web3-utils: 1.10.4 + web3-eth-iban@4.0.7: + dependencies: + web3-errors: 1.1.4 + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + web3-eth-personal@1.10.0: dependencies: '@types/node': 12.20.55 @@ -10155,6 +10352,21 @@ snapshots: - encoding - supports-color + web3-eth-personal@4.0.8(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4): + dependencies: + web3-core: 4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-eth: 4.5.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-rpc-methods: 1.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + - zod + web3-eth@1.10.0: dependencies: web3-core: 1.10.0 @@ -10173,6 +10385,26 @@ snapshots: - encoding - supports-color + web3-eth@4.5.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4): + dependencies: + setimmediate: 1.0.5 + web3-core: 4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-errors: 1.1.4 + web3-eth-abi: 4.2.0(typescript@5.4.5)(zod@3.22.4) + web3-eth-accounts: 4.1.1 + web3-net: 4.0.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-providers-ws: 4.0.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-rpc-methods: 1.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + - zod + web3-net@1.10.0: dependencies: web3-core: 1.10.0 @@ -10182,6 +10414,17 @@ snapshots: - encoding - supports-color + web3-net@4.0.7(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + web3-core: 4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-rpc-methods: 1.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-types: 1.5.0 + web3-utils: 4.2.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + web3-providers-http@1.10.0: dependencies: abortcontroller-polyfill: 1.7.5 @@ -10200,6 +10443,15 @@ snapshots: transitivePeerDependencies: - encoding + web3-providers-http@4.1.0: + dependencies: + cross-fetch: 4.0.0 + web3-errors: 1.1.4 + web3-types: 1.5.0 + web3-utils: 4.2.2 + transitivePeerDependencies: + - encoding + web3-providers-ipc@1.10.0: dependencies: oboe: 2.1.5 @@ -10210,6 +10462,13 @@ snapshots: oboe: 2.1.5 web3-core-helpers: 1.10.4 + web3-providers-ipc@4.0.7: + dependencies: + web3-errors: 1.1.4 + web3-types: 1.5.0 + web3-utils: 4.2.2 + optional: true + web3-providers-ws@1.10.0: dependencies: eventemitter3: 4.0.4 @@ -10226,6 +10485,28 @@ snapshots: transitivePeerDependencies: - supports-color + web3-providers-ws@4.0.7(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + '@types/ws': 8.5.3 + isomorphic-ws: 5.0.0(ws@8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + web3-errors: 1.1.4 + web3-types: 1.5.0 + web3-utils: 4.2.2 + ws: 8.18.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + web3-rpc-methods@1.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): + dependencies: + web3-core: 4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-types: 1.5.0 + web3-validator: 2.0.5 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + web3-shh@1.10.0: dependencies: web3-core: 1.10.0 @@ -10236,6 +10517,8 @@ snapshots: - encoding - supports-color + web3-types@1.5.0: {} + web3-utils@1.10.0: dependencies: bn.js: 5.2.1 @@ -10268,6 +10551,22 @@ snapshots: randombytes: 2.1.0 utf8: 3.0.0 + web3-utils@4.2.2: + dependencies: + ethereum-cryptography: 2.1.2 + eventemitter3: 5.0.1 + web3-errors: 1.1.4 + web3-types: 1.5.0 + web3-validator: 2.0.5 + + web3-validator@2.0.5: + dependencies: + ethereum-cryptography: 2.1.2 + util: 0.12.5 + web3-errors: 1.1.4 + web3-types: 1.5.0 + zod: 3.22.4 + web3@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: web3-bzz: 1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -10283,6 +10582,31 @@ snapshots: - supports-color - utf-8-validate + web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4): + dependencies: + web3-core: 4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-errors: 1.1.4 + web3-eth: 4.5.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-eth-abi: 4.2.0(typescript@5.4.5)(zod@3.22.4) + web3-eth-accounts: 4.1.1 + web3-eth-contract: 4.3.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-eth-ens: 4.2.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-eth-iban: 4.0.7 + web3-eth-personal: 4.0.8(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4) + web3-net: 4.0.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-providers-http: 4.1.0 + web3-providers-ws: 4.0.7(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-rpc-methods: 1.2.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-types: 1.5.0 + web3-utils: 4.2.2 + web3-validator: 2.0.5 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + - zod + webidl-conversions@3.0.1: {} websocket@1.0.35: @@ -10400,3 +10724,5 @@ snapshots: yargs-parser: 21.1.1 yocto-queue@0.1.0: {} + + zod@3.22.4: {} From cf1e030e8e57b49073586faecf6e82bc4a4c9994 Mon Sep 17 00:00:00 2001 From: Marcos Date: Fri, 4 Oct 2024 19:23:15 -0300 Subject: [PATCH 5/9] fix: example --- examples/create-approval-process/index.js | 4 ++- examples/create-approval-process/package.json | 4 +-- pnpm-lock.yaml | 29 ++----------------- 3 files changed, 7 insertions(+), 30 deletions(-) diff --git a/examples/create-approval-process/index.js b/examples/create-approval-process/index.js index 47ac7325..dd3c17dd 100644 --- a/examples/create-approval-process/index.js +++ b/examples/create-approval-process/index.js @@ -14,8 +14,10 @@ async function main() { } const approvalProcess = await client.approvalProcess.create({ - name: 'My Approval Process', + name: 'My Approval Process 2', network: 'sepolia', + via: relayer.address, + viaType: 'Relayer', relayerId: relayer.relayerId, }); diff --git a/examples/create-approval-process/package.json b/examples/create-approval-process/package.json index e867e748..c640e885 100644 --- a/examples/create-approval-process/package.json +++ b/examples/create-approval-process/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/defender-sdk-example-create-approval-process", - "version": "1.10.0", + "version": "1.14.4", "private": true, "main": "index.js", "author": "Marcos Carlomagno ", @@ -9,7 +9,7 @@ "start": "node index.js" }, "dependencies": { - "@openzeppelin/defender-sdk": "1.10.0", + "@openzeppelin/defender-sdk": "1.14.4", "dotenv": "^16.3.1" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f0d7312..16062d4c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,8 +116,8 @@ importers: examples/create-approval-process: dependencies: '@openzeppelin/defender-sdk': - specifier: 1.10.0 - version: 1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4)) + specifier: 1.14.4 + version: link:../../packages/defender-sdk dotenv: specifier: ^16.3.1 version: 16.4.5 @@ -1489,9 +1489,6 @@ packages: web3-core-helpers: ^1.10.0 web3-utils: ^1.10.0 - '@openzeppelin/defender-sdk@1.10.0': - resolution: {integrity: sha512-pHkHedLb5bAIRSrEpNvJ+lnb4bRwzVi/psU8Q+wQW/K4Er4hYc5Ei/utuz1gATr5v9aMoR1etUqZXVDZT0Obcw==} - '@openzeppelin/defender-sdk@1.13.4': resolution: {integrity: sha512-HkJEL1xrcle/lmDgpdhp1zhjTTWxpEPHTCNfYOnSHyBc4gr/KrE6pOikFffwNzfe0FL5Rxt8vCDhOGxQJ7CtQw==} @@ -6426,28 +6423,6 @@ snapshots: - encoding - utf-8-validate - '@openzeppelin/defender-sdk@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4))': - dependencies: - '@openzeppelin/defender-sdk-account-client': 1.14.4 - '@openzeppelin/defender-sdk-action-client': 1.14.4 - '@openzeppelin/defender-sdk-base-client': 1.14.4 - '@openzeppelin/defender-sdk-deploy-client': 1.14.4 - '@openzeppelin/defender-sdk-monitor-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@openzeppelin/defender-sdk-network-client': 1.14.4 - '@openzeppelin/defender-sdk-notification-channel-client': 1.14.4 - '@openzeppelin/defender-sdk-proposal-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@openzeppelin/defender-sdk-relay-client': 1.14.4 - '@openzeppelin/defender-sdk-relay-signer-client': 1.14.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4)) - transitivePeerDependencies: - - bufferutil - - debug - - encoding - - utf-8-validate - - web3 - - web3-core - - web3-core-helpers - - web3-utils - '@openzeppelin/defender-sdk@1.13.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core@4.3.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3-utils@4.2.2)(web3@4.7.0(bufferutil@4.0.8)(typescript@5.4.5)(utf-8-validate@5.0.10)(zod@3.22.4))': dependencies: '@openzeppelin/defender-sdk-account-client': 1.14.4 From ec6ab907ee3ff2bc93d83c66d4a08d3a9abef184 Mon Sep 17 00:00:00 2001 From: Marcos Date: Thu, 10 Oct 2024 14:52:51 -0300 Subject: [PATCH 6/9] add relayer group type --- packages/approval-process/src/models/approval-process.ts | 2 ++ packages/deploy/src/models/approval-process.ts | 1 + 2 files changed, 3 insertions(+) diff --git a/packages/approval-process/src/models/approval-process.ts b/packages/approval-process/src/models/approval-process.ts index 571f5062..154200f5 100644 --- a/packages/approval-process/src/models/approval-process.ts +++ b/packages/approval-process/src/models/approval-process.ts @@ -26,6 +26,7 @@ export interface CreateApprovalProcessRequest { | 'Gnosis Multisig' | 'Relayer' | 'Unknown' + | 'Relayer Group' | 'Timelock Controller' | 'ERC20' | 'Governor' @@ -54,6 +55,7 @@ export interface CreateApprovalProcessResponse { | 'Relayer' | 'Relayer Group' | 'Unknown' + | 'Relayer Group' | 'Timelock Controller' | 'ERC20' | 'Governor' diff --git a/packages/deploy/src/models/approval-process.ts b/packages/deploy/src/models/approval-process.ts index 6895c320..87e901b7 100644 --- a/packages/deploy/src/models/approval-process.ts +++ b/packages/deploy/src/models/approval-process.ts @@ -17,6 +17,7 @@ export interface ApprovalProcessResponse { | 'Gnosis Multisig' | 'Relayer' | 'Unknown' + | 'Relayer Group' | 'Timelock Controller' | 'ERC20' | 'Governor' From b9b2d159ddb8e24e00972a8d66c7f797546ce4eb Mon Sep 17 00:00:00 2001 From: Marcos Date: Thu, 10 Oct 2024 15:42:14 -0300 Subject: [PATCH 7/9] refactor: improve type definitions for Approval Process creation --- .../src/models/approval-process.ts | 66 +++++++++++++------ 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/packages/approval-process/src/models/approval-process.ts b/packages/approval-process/src/models/approval-process.ts index 154200f5..a65bf1d4 100644 --- a/packages/approval-process/src/models/approval-process.ts +++ b/packages/approval-process/src/models/approval-process.ts @@ -12,32 +12,58 @@ export interface FireblocksProposalParams { assetId: string; } -export interface CreateApprovalProcessRequest { +export type CreateApprovalProcessRequest = + | GenericApprovalProcessRequest + | MultisigApprovalProcessRequest + | RelayerApprovalProcessRequest + | RelayerGroupApprovalProcessRequest + | TimelockControllerApprovalProcessRequest + | FireblocksApprovalProcessRequest; + +export interface BaseApprovalProcessRequest { name: string; + /** + * When the approval process meant to be used in deployment environments + * it requires a component property to indicate the type of operation: 'deploy' or 'upgrade' + */ component?: ComponentType; network: Network; - via?: string; - viaType?: - | 'EOA' - | 'Contract' - | 'Multisig' - | 'Gnosis Safe' - | 'Safe' - | 'Gnosis Multisig' - | 'Relayer' - | 'Unknown' - | 'Relayer Group' - | 'Timelock Controller' - | 'ERC20' - | 'Governor' - | 'Fireblocks'; - timelock?: Timelock; - multisigSender?: string; - fireblocks?: FireblocksProposalParams; - relayerId?: string; + /** + * Address of the approval process. It could be Contract, EOA, Relayer or any other kind of address. + */ + via: string; stackResourceId?: string; } +export interface GenericApprovalProcessRequest extends BaseApprovalProcessRequest { + viaType: 'EOA' | 'Contract' | 'Unknown' | 'ERC20' | 'Governor'; +} + +export interface MultisigApprovalProcessRequest extends BaseApprovalProcessRequest { + viaType: 'Multisig' | 'Gnosis Safe' | 'Safe' | 'Gnosis Multisig'; + multisigSender: string; +} + +export interface RelayerApprovalProcessRequest extends BaseApprovalProcessRequest { + viaType: 'Relayer'; + relayerId: string; +} + +export interface RelayerGroupApprovalProcessRequest extends BaseApprovalProcessRequest { + viaType: 'Relayer Group'; + relayerGroupId: string; +} + +export interface TimelockControllerApprovalProcessRequest extends BaseApprovalProcessRequest { + viaType: 'Timelock Controller'; + timelock: Timelock; +} + +export interface FireblocksApprovalProcessRequest extends BaseApprovalProcessRequest { + viaType: 'Fireblocks'; + fireblocks: FireblocksProposalParams; +} + export interface CreateApprovalProcessResponse { approvalProcessId: string; createdAt: string; From 628d9a25243fad5164212569de5d7167b075e729 Mon Sep 17 00:00:00 2001 From: Marcos Date: Thu, 10 Oct 2024 15:49:44 -0300 Subject: [PATCH 8/9] update package version --- examples/create-approval-process/package.json | 6 +++--- packages/approval-process/package.json | 4 ++-- pnpm-lock.yaml | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/create-approval-process/package.json b/examples/create-approval-process/package.json index c640e885..f0d545ec 100644 --- a/examples/create-approval-process/package.json +++ b/examples/create-approval-process/package.json @@ -1,15 +1,15 @@ { "name": "@openzeppelin/defender-sdk-example-create-approval-process", - "version": "1.14.4", + "version": "1.15.0", "private": true, "main": "index.js", - "author": "Marcos Carlomagno ", + "author": "OpenZeppelin Defender ", "license": "MIT", "scripts": { "start": "node index.js" }, "dependencies": { - "@openzeppelin/defender-sdk": "1.14.4", + "@openzeppelin/defender-sdk": "1.15.0", "dotenv": "^16.3.1" } } diff --git a/packages/approval-process/package.json b/packages/approval-process/package.json index eba7d5bf..c482fa9c 100644 --- a/packages/approval-process/package.json +++ b/packages/approval-process/package.json @@ -1,6 +1,6 @@ { "name": "@openzeppelin/defender-sdk-approval-process-client", - "version": "1.14.4", + "version": "1.15.0", "description": "", "main": "./lib/index.js", "types": "./lib/index.d.ts", @@ -20,7 +20,7 @@ "author": "OpenZeppelin Defender ", "license": "MIT", "dependencies": { - "@openzeppelin/defender-sdk-base-client": "^1.14.4", + "@openzeppelin/defender-sdk-base-client": "^1.15.0", "axios": "^1.6.7", "lodash": "^4.17.21" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 20c4c3da..0245c2e2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,7 +116,7 @@ importers: examples/create-approval-process: dependencies: '@openzeppelin/defender-sdk': - specifier: 1.14.4 + specifier: 1.15.0 version: link:../../packages/defender-sdk dotenv: specifier: ^16.3.1 @@ -477,7 +477,7 @@ importers: packages/approval-process: dependencies: '@openzeppelin/defender-sdk-base-client': - specifier: ^1.14.4 + specifier: ^1.15.0 version: link:../base axios: specifier: ^1.6.7 @@ -514,7 +514,7 @@ importers: specifier: ^1.15.0 version: link:../action '@openzeppelin/defender-sdk-approval-process-client': - specifier: ^1.14.4 + specifier: ^1.15.0 version: link:../approval-process '@openzeppelin/defender-sdk-base-client': specifier: ^1.15.0 From 56c120785cb1f472d26bfde549e77a7249e8846a Mon Sep 17 00:00:00 2001 From: Marcos Date: Mon, 14 Oct 2024 12:38:03 -0300 Subject: [PATCH 9/9] feat: add approval process list support --- e2e/src/approval-process.test.ts | 17 +++++++++++++++++ packages/approval-process/src/api/index.ts | 6 ++++++ 2 files changed, 23 insertions(+) create mode 100644 e2e/src/approval-process.test.ts diff --git a/e2e/src/approval-process.test.ts b/e2e/src/approval-process.test.ts new file mode 100644 index 00000000..b7b21324 --- /dev/null +++ b/e2e/src/approval-process.test.ts @@ -0,0 +1,17 @@ +require('dotenv').config(); +import { Defender } from '@openzeppelin/defender-sdk'; + +// Default timeout is not enough, using 15s timeout instead. +jest.setTimeout(15 * 1000); + +describe('Approval process', () => { + const approvalProcessClient = new Defender({ + apiKey: process.env.API_KEY, + apiSecret: process.env.API_SECRET, + }).approvalProcess; + + it('should list approval processes', async () => { + const result = await approvalProcessClient.list(); + expect(result).toBeDefined(); + }); +}); diff --git a/packages/approval-process/src/api/index.ts b/packages/approval-process/src/api/index.ts index e7e52ea2..4accadb2 100644 --- a/packages/approval-process/src/api/index.ts +++ b/packages/approval-process/src/api/index.ts @@ -21,4 +21,10 @@ export class ApprovalProcessClient extends BaseApiClient { return await api.post(PATH, approvalProcess); }); } + + public async list(): Promise { + return this.apiCall(async (api) => { + return await api.get(PATH); + }); + } }