From 077debb02511824e9bf0e7f4b3fe282d8d73109d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Fri, 14 Oct 2022 15:10:47 +0200 Subject: [PATCH 1/6] Code formatting --- .../safe-core-sdk/tests/guardManager.test.ts | 25 +++++++++++-------- .../tests/utils/setupContracts.ts | 4 ++- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/packages/safe-core-sdk/tests/guardManager.test.ts b/packages/safe-core-sdk/tests/guardManager.test.ts index 8d374aac6..70f926b64 100644 --- a/packages/safe-core-sdk/tests/guardManager.test.ts +++ b/packages/safe-core-sdk/tests/guardManager.test.ts @@ -48,17 +48,20 @@ describe('Safe guards manager', () => { } ) - itif(safeVersionDeployed >= '1.3.0')('should return 0x address when no Safe guard is enabled', async () => { - const { safe, accounts, contractNetworks } = await setupTests() - const [account1] = accounts - const ethAdapter = await getEthAdapter(account1.signer) - const safeSdk = await Safe.create({ - ethAdapter, - safeAddress: safe.address, - contractNetworks - }) - chai.expect(await safeSdk.getGuard()).to.be.eq(ZERO_ADDRESS) - }) + itif(safeVersionDeployed >= '1.3.0')( + 'should return 0x address when no Safe guard is enabled', + async () => { + const { safe, accounts, contractNetworks } = await setupTests() + const [account1] = accounts + const ethAdapter = await getEthAdapter(account1.signer) + const safeSdk = await Safe.create({ + ethAdapter, + safeAddress: safe.address, + contractNetworks + }) + chai.expect(await safeSdk.getGuard()).to.be.eq(ZERO_ADDRESS) + } + ) itif(safeVersionDeployed >= '1.3.0')('should return the enabled Safe guard', async () => { const { safe, accounts, contractNetworks, debugTransactionGuard } = await setupTests() diff --git a/packages/safe-core-sdk/tests/utils/setupContracts.ts b/packages/safe-core-sdk/tests/utils/setupContracts.ts index e5b4ecfd5..2e7a30d8c 100644 --- a/packages/safe-core-sdk/tests/utils/setupContracts.ts +++ b/packages/safe-core-sdk/tests/utils/setupContracts.ts @@ -131,5 +131,7 @@ export const getERC20Mintable = async (): Promise => { export const getDebugTransactionGuard = async (): Promise => { const DebugTransactionGuardDeployment = await deployments.get('DebugTransactionGuard') const DebugTransactionGuard = await ethers.getContractFactory('DebugTransactionGuard') - return DebugTransactionGuard.attach(DebugTransactionGuardDeployment.address) as DebugTransactionGuard + return DebugTransactionGuard.attach( + DebugTransactionGuardDeployment.address + ) as DebugTransactionGuard } From a8a41ac80b4e268d197b937a2c458428fb9848f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Fri, 14 Oct 2022 15:16:03 +0200 Subject: [PATCH 2/6] Generate SignMessageLib types --- packages/safe-ethers-lib/contracts/Deps_V1_3_0.sol | 2 ++ .../safe-ethers-lib/scripts/generateTypechainFiles.ts | 11 +++++++---- packages/safe-web3-lib/contracts/Deps_V1_3_0.sol | 2 ++ .../safe-web3-lib/scripts/generateTypechainFiles.ts | 11 +++++++---- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/packages/safe-ethers-lib/contracts/Deps_V1_3_0.sol b/packages/safe-ethers-lib/contracts/Deps_V1_3_0.sol index 91ccfbece..6ab7d1886 100644 --- a/packages/safe-ethers-lib/contracts/Deps_V1_3_0.sol +++ b/packages/safe-ethers-lib/contracts/Deps_V1_3_0.sol @@ -5,9 +5,11 @@ import { GnosisSafeProxyFactory } from "@gnosis.pm/safe-contracts-v1.3.0/contrac import { GnosisSafe } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/GnosisSafe.sol"; import { MultiSend } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/libraries/MultiSend.sol"; import { MultiSendCallOnly } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/libraries/MultiSendCallOnly.sol"; +import { SignMessageLib } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/examples/libraries/SignMessage.sol"; import { DebugTransactionGuard } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/examples/guards/DebugTransactionGuard.sol"; contract ProxyFactory_SV1_3_0 is GnosisSafeProxyFactory {} contract GnosisSafe_SV1_3_0 is GnosisSafe {} contract MultiSend_SV1_3_0 is MultiSend {} contract MultiSendCallOnly_SV1_3_0 is MultiSendCallOnly {} +contract SignMessageLib_SV1_3_0 is SignMessageLib {} diff --git a/packages/safe-ethers-lib/scripts/generateTypechainFiles.ts b/packages/safe-ethers-lib/scripts/generateTypechainFiles.ts index 50b56b5f8..ac5d5bad4 100644 --- a/packages/safe-ethers-lib/scripts/generateTypechainFiles.ts +++ b/packages/safe-ethers-lib/scripts/generateTypechainFiles.ts @@ -19,7 +19,8 @@ const safeContracts_V1_3_0 = [ `${safeContractsPath}/v1.3.0/gnosis_safe.json`, `${safeContractsPath}/v1.3.0/proxy_factory.json`, `${safeContractsPath}/v1.3.0/multi_send.json`, - `${safeContractsPath}/v1.3.0/multi_send_call_only.json` + `${safeContractsPath}/v1.3.0/multi_send_call_only.json`, + `${safeContractsPath}/v1.3.0/sign_message_lib.json` ].join(' ') const safeContracts_V1_2_0 = [`${safeContractsPath}/v1.2.0/gnosis_safe.json`].join(' ') const safeContracts_V1_1_1 = [ @@ -29,16 +30,18 @@ const safeContracts_V1_1_1 = [ ].join(' ') // Won't be included in dist/ folder -const safeContractsTestV1_2_0Path = '../../node_modules/@gnosis.pm/safe-contracts-v1.2.0/build/contracts' +const safeContractsTestV1_2_0Path = + '../../node_modules/@gnosis.pm/safe-contracts-v1.2.0/build/contracts' const openZeppelinContractsPath = '../../node_modules/openzeppelin-solidity/build/contracts' const testContracts_V1_2_0 = [ `${safeContractsTestV1_2_0Path}/DailyLimitModule.json`, `${safeContractsTestV1_2_0Path}/SocialRecoveryModule.json`, `${openZeppelinContractsPath}/ERC20Mintable.json` ].join(' ') -const safeContractsTestV1_3_0Path = '../../node_modules/@gnosis.pm/safe-contracts-v1.3.0/build/artifacts/contracts' +const safeContractsTestV1_3_0Path = + '../../node_modules/@gnosis.pm/safe-contracts-v1.3.0/build/artifacts/contracts' const testContracts_V1_3_0 = [ - `${safeContractsTestV1_3_0Path}/examples/guards/DebugTransactionGuard.sol/DebugTransactionGuard.json`, + `${safeContractsTestV1_3_0Path}/examples/guards/DebugTransactionGuard.sol/DebugTransactionGuard.json` ].join(' ') // Remove existing Typechain files diff --git a/packages/safe-web3-lib/contracts/Deps_V1_3_0.sol b/packages/safe-web3-lib/contracts/Deps_V1_3_0.sol index 91ccfbece..6ab7d1886 100644 --- a/packages/safe-web3-lib/contracts/Deps_V1_3_0.sol +++ b/packages/safe-web3-lib/contracts/Deps_V1_3_0.sol @@ -5,9 +5,11 @@ import { GnosisSafeProxyFactory } from "@gnosis.pm/safe-contracts-v1.3.0/contrac import { GnosisSafe } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/GnosisSafe.sol"; import { MultiSend } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/libraries/MultiSend.sol"; import { MultiSendCallOnly } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/libraries/MultiSendCallOnly.sol"; +import { SignMessageLib } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/examples/libraries/SignMessage.sol"; import { DebugTransactionGuard } from "@gnosis.pm/safe-contracts-v1.3.0/contracts/examples/guards/DebugTransactionGuard.sol"; contract ProxyFactory_SV1_3_0 is GnosisSafeProxyFactory {} contract GnosisSafe_SV1_3_0 is GnosisSafe {} contract MultiSend_SV1_3_0 is MultiSend {} contract MultiSendCallOnly_SV1_3_0 is MultiSendCallOnly {} +contract SignMessageLib_SV1_3_0 is SignMessageLib {} diff --git a/packages/safe-web3-lib/scripts/generateTypechainFiles.ts b/packages/safe-web3-lib/scripts/generateTypechainFiles.ts index 5cdc84fcd..20ac0e5ea 100644 --- a/packages/safe-web3-lib/scripts/generateTypechainFiles.ts +++ b/packages/safe-web3-lib/scripts/generateTypechainFiles.ts @@ -19,7 +19,8 @@ const safeContracts_V1_3_0 = [ `${safeContractsPath}/v1.3.0/gnosis_safe.json`, `${safeContractsPath}/v1.3.0/proxy_factory.json`, `${safeContractsPath}/v1.3.0/multi_send.json`, - `${safeContractsPath}/v1.3.0/multi_send_call_only.json` + `${safeContractsPath}/v1.3.0/multi_send_call_only.json`, + `${safeContractsPath}/v1.3.0/sign_message_lib.json` ].join(' ') const safeContracts_V1_2_0 = [`${safeContractsPath}/v1.2.0/gnosis_safe.json`].join(' ') const safeContracts_V1_1_1 = [ @@ -29,16 +30,18 @@ const safeContracts_V1_1_1 = [ ].join(' ') // Won't be included in dist/ folder -const safeContractsTestV1_2_0Path = '../../node_modules/@gnosis.pm/safe-contracts-v1.2.0/build/contracts' +const safeContractsTestV1_2_0Path = + '../../node_modules/@gnosis.pm/safe-contracts-v1.2.0/build/contracts' const openZeppelinContractsPath = '../../node_modules/openzeppelin-solidity/build/contracts' const testContracts_V1_2_0 = [ `${safeContractsTestV1_2_0Path}/DailyLimitModule.json`, `${safeContractsTestV1_2_0Path}/SocialRecoveryModule.json`, `${openZeppelinContractsPath}/ERC20Mintable.json` ].join(' ') -const safeContractsTestV1_3_0Path = '../../node_modules/@gnosis.pm/safe-contracts-v1.3.0/build/artifacts/contracts' +const safeContractsTestV1_3_0Path = + '../../node_modules/@gnosis.pm/safe-contracts-v1.3.0/build/artifacts/contracts' const testContracts_V1_3_0 = [ - `${safeContractsTestV1_3_0Path}/examples/guards/DebugTransactionGuard.sol/DebugTransactionGuard.json`, + `${safeContractsTestV1_3_0Path}/examples/guards/DebugTransactionGuard.sol/DebugTransactionGuard.json` ].join(' ') // Remove existing Typechain files From a299578ec9a5f8623cca47475ca5e76891e04a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Fri, 14 Oct 2022 17:01:58 +0200 Subject: [PATCH 3/6] Add SignTMessageLibContract interface --- .../src/contracts/SignMessageLibContract.ts | 9 +++++++++ packages/safe-core-sdk-types/src/index.ts | 1 + 2 files changed, 10 insertions(+) create mode 100644 packages/safe-core-sdk-types/src/contracts/SignMessageLibContract.ts diff --git a/packages/safe-core-sdk-types/src/contracts/SignMessageLibContract.ts b/packages/safe-core-sdk-types/src/contracts/SignMessageLibContract.ts new file mode 100644 index 000000000..28b871e7d --- /dev/null +++ b/packages/safe-core-sdk-types/src/contracts/SignMessageLibContract.ts @@ -0,0 +1,9 @@ +import { TransactionOptions, TransactionResult } from '../types' + +export interface SignMessageLibContract { + getAddress(): string + signMessage(data: string, options?: TransactionOptions): Promise + getMessageHash(message: string): Promise + encode(methodName: any, params: any): string + estimateGas(methodName: string, params: any[], options: TransactionOptions): Promise +} diff --git a/packages/safe-core-sdk-types/src/index.ts b/packages/safe-core-sdk-types/src/index.ts index 165590c90..81aa8e11d 100644 --- a/packages/safe-core-sdk-types/src/index.ts +++ b/packages/safe-core-sdk-types/src/index.ts @@ -2,5 +2,6 @@ export * from './contracts/GnosisSafeContract' export * from './contracts/GnosisSafeProxyFactoryContract' export * from './contracts/MultiSendCallOnlyContract' export * from './contracts/MultiSendContract' +export * from './contracts/SignMessageLibContract' export * from './ethereumLibs/EthAdapter' export * from './types' From 56a1846b9e17dd4d08bc065b455d4ab4eb9c9728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Fri, 14 Oct 2022 17:26:26 +0200 Subject: [PATCH 4/6] Add SignMessageLib Web3 instance --- .../SignMessageLibWeb3Contract.ts | 47 +++++++++++++++++++ .../SignMessageLibContract_V1_3_0_Web3.ts | 10 ++++ .../src/contracts/contractInstancesWeb3.ts | 14 ++++++ 3 files changed, 71 insertions(+) create mode 100644 packages/safe-web3-lib/src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts create mode 100644 packages/safe-web3-lib/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Web3.ts diff --git a/packages/safe-web3-lib/src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts b/packages/safe-web3-lib/src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts new file mode 100644 index 000000000..7dffbb507 --- /dev/null +++ b/packages/safe-web3-lib/src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts @@ -0,0 +1,47 @@ +import { SignMessageLibContract } from '@gnosis.pm/safe-core-sdk-types' +import { Sign_message_lib as SignMessageLib_V1_3_0 } from '../../../typechain/src/web3-v1/v1.3.0/Sign_message_lib' +import { Web3TransactionOptions, Web3TransactionResult } from '../../types' +import { toTxResult } from '../../utils' + +abstract class SignMessageLibWeb3Contract implements SignMessageLibContract { + constructor(public contract: SignMessageLib_V1_3_0) {} + + getAddress(): string { + return this.contract.options.address + } + + async signMessage( + data: string, + options?: Web3TransactionOptions + ): Promise { + if (options && !options.gas) { + options.gas = await this.estimateGas('signMessage', [data], { ...options }) + } + const txResponse = this.contract.methods.signMessage(data).send(options) + return toTxResult(txResponse, options) + } + + async getMessageHash(message: string): Promise { + return this.contract.methods.getMessageHash(message).call() + } + + encode(methodName: string, params: any[]): string { + return (this.contract as any).methods[methodName](...params).encodeABI() + } + + async estimateGas( + methodName: string, + params: any[], + options: Web3TransactionOptions + ): Promise { + try { + return Number( + await (this.contract.methods as any)[methodName](...params).estimateGas(options) + ) + } catch (error) { + return Promise.reject(error) + } + } +} + +export default SignMessageLibWebContract diff --git a/packages/safe-web3-lib/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Web3.ts b/packages/safe-web3-lib/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Web3.ts new file mode 100644 index 000000000..df9762424 --- /dev/null +++ b/packages/safe-web3-lib/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Web3.ts @@ -0,0 +1,10 @@ +import { Sign_message_lib as SignMessageLib } from '../../../../typechain/src/web3-v1/v1.3.0/Sign_message_lib' +import SignMessageLibWeb3Contract from '../SignMessageLibWeb3Contract' + +class SignMessageLibContract_V1_3_0_Web3 extends SignMessageLibWeb3Contract { + constructor(public contract: SignMessageLib) { + super(contract) + } +} + +export default SignMessageLibContract_V1_3_0_Web3 diff --git a/packages/safe-web3-lib/src/contracts/contractInstancesWeb3.ts b/packages/safe-web3-lib/src/contracts/contractInstancesWeb3.ts index 87002fb16..150449ff6 100644 --- a/packages/safe-web3-lib/src/contracts/contractInstancesWeb3.ts +++ b/packages/safe-web3-lib/src/contracts/contractInstancesWeb3.ts @@ -7,6 +7,7 @@ import { Gnosis_safe as SafeMasterCopy_V1_3_0 } from '../../typechain/src/web3-v import { Multi_send as MultiSend_V1_3_0 } from '../../typechain/src/web3-v1/v1.3.0/Multi_send' import { Multi_send_call_only as MultiSendCallOnly_V1_3_0 } from '../../typechain/src/web3-v1/v1.3.0/Multi_send_call_only' import { Proxy_factory as GnosisSafeProxyFactory_V1_3_0 } from '../../typechain/src/web3-v1/v1.3.0/Proxy_factory' +import { Sign_message_lib as SignMessageLib_V1_3_0 } from '../../typechain/src/web3-v1/v1.3.0/Sign_message_lib' import GnosisSafeContract_V1_1_1_Web3 from './GnosisSafe/v1.1.1/GnosisSafeContract_V1_1_1_Web3' import GnosisSafeContract_V1_2_0_Web3 from './GnosisSafe/v1.2.0/GnosisSafeContract_V1_2_0_Web3' import GnosisSafeContract_V1_3_0_Web3 from './GnosisSafe/v1.3.0/GnosisSafeContract_V1_3_0_Web3' @@ -15,6 +16,7 @@ import GnosisSafeProxyFactoryContract_V1_3_0_Web3 from './GnosisSafeProxyFactory import MultiSendContract_V1_1_1_Web3 from './MultiSend/v1.1.1/MultiSendContract_V1_1_1_Web3' import MultiSendContract_V1_3_0_Web3 from './MultiSend/v1.3.0/MultiSendContract_V1_3_0_Web3' import MultiSendCallOnlyContract_V1_3_0_Web3 from './MultiSendCallOnly/v1.3.0/MultiSendCallOnlyContract_V1_3_0_Web3' +import SignMessageLibContract_V1_3_0_Web3 from './SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Web3' export function getSafeContractInstance( safeVersion: SafeVersion, @@ -84,3 +86,15 @@ export function getGnosisSafeProxyFactoryContractInstance( throw new Error('Invalid Safe version') } } + +export function getSignMessageLibContractInstance( + safeVersion: SafeVersion, + signMessageLibContract: SignMessageLib_V1_3_0 +): SignMessageLibContract_V1_3_0_Web3 { + switch (safeVersion) { + case '1.3.0': + return new SignMessageLibContract_V1_3_0_Web3(signMessageLibContract as SignMessageLib_V1_3_0) + default: + throw new Error('Invalid Safe version') + } +} From 0d85f4318ef9016de0c0843e87e78b8c5100064a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Fri, 14 Oct 2022 17:34:19 +0200 Subject: [PATCH 5/6] Add SignMessageLib Ethers instance --- .../SignMessageLibEthersContract.ts | 47 +++++++++++++++++++ .../SignMessageLibContract_V1_3_0_Ethers.ts | 10 ++++ .../src/contracts/contractInstancesEthers.ts | 17 +++++++ 3 files changed, 74 insertions(+) create mode 100644 packages/safe-ethers-lib/src/contracts/SignMessageLib/SignMessageLibEthersContract.ts create mode 100644 packages/safe-ethers-lib/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Ethers.ts diff --git a/packages/safe-ethers-lib/src/contracts/SignMessageLib/SignMessageLibEthersContract.ts b/packages/safe-ethers-lib/src/contracts/SignMessageLib/SignMessageLibEthersContract.ts new file mode 100644 index 000000000..4fa31be0d --- /dev/null +++ b/packages/safe-ethers-lib/src/contracts/SignMessageLib/SignMessageLibEthersContract.ts @@ -0,0 +1,47 @@ +import { SignMessageLibContract } from '@gnosis.pm/safe-core-sdk-types' +import { + Sign_message_lib as SignMessageLib_V1_3_0, + Sign_message_libInterface as SignMessageLibContractInterface +} from '../../../typechain/src/ethers-v5/v1.3.0/Sign_message_lib' +import { EthersTransactionOptions, EthersTransactionResult } from '../../types' +import { toTxResult } from '../../utils' + +abstract class SignMessageLibEthersContract implements SignMessageLibContract { + constructor(public contract: SignMessageLib_V1_3_0) {} + + getAddress(): string { + return this.contract.address + } + + async signMessage( + data: string, + options?: EthersTransactionOptions + ): Promise { + if (options && !options.gasLimit) { + options.gasLimit = await this.estimateGas('signMessage', [data], { ...options }) + } + const txResponse = await this.contract.signMessage(data, options) + return toTxResult(txResponse, options) + } + + async getMessageHash(message: string): Promise { + return this.contract.getMessageHash(message) + } + + encode: SignMessageLibContractInterface['encodeFunctionData'] = ( + methodName: any, + params: any + ): string => { + return this.contract.interface.encodeFunctionData(methodName, params) + } + + async estimateGas( + methodName: string, + params: any[], + options: EthersTransactionOptions + ): Promise { + return (await (this.contract.estimateGas as any)[methodName](...params, options)).toNumber() + } +} + +export default SignMessageLibEthersContract diff --git a/packages/safe-ethers-lib/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Ethers.ts b/packages/safe-ethers-lib/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Ethers.ts new file mode 100644 index 000000000..d17820bd9 --- /dev/null +++ b/packages/safe-ethers-lib/src/contracts/SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Ethers.ts @@ -0,0 +1,10 @@ +import { Sign_message_lib as SignMessageLib } from '../../../../typechain/src/ethers-v5/v1.3.0/Sign_message_lib' +import SignMessageLibEthersContract from '../SignMessageLibEthersContract' + +class SignMessageLibContract_V1_3_0_Ethers extends SignMessageLibEthersContract { + constructor(public contract: SignMessageLib) { + super(contract) + } +} + +export default SignMessageLibContract_V1_3_0_Ethers diff --git a/packages/safe-ethers-lib/src/contracts/contractInstancesEthers.ts b/packages/safe-ethers-lib/src/contracts/contractInstancesEthers.ts index cc3977117..880eebded 100644 --- a/packages/safe-ethers-lib/src/contracts/contractInstancesEthers.ts +++ b/packages/safe-ethers-lib/src/contracts/contractInstancesEthers.ts @@ -8,6 +8,7 @@ import { Gnosis_safe__factory as SafeMasterCopy_V1_3_0 } from '../../typechain/s import { Multi_send_call_only__factory as MultiSendCallOnly_V1_3_0 } from '../../typechain/src/ethers-v5/v1.3.0/factories/Multi_send_call_only__factory' import { Multi_send__factory as MultiSend_V1_3_0 } from '../../typechain/src/ethers-v5/v1.3.0/factories/Multi_send__factory' import { Proxy_factory__factory as SafeProxyFactory_V1_3_0 } from '../../typechain/src/ethers-v5/v1.3.0/factories/Proxy_factory__factory' +import { Sign_message_lib__factory as SignMessageLib_V1_3_0 } from '../../typechain/src/ethers-v5/v1.3.0/factories/Sign_message_lib__factory' import GnosisSafeContract_V1_1_1_Ethers from './GnosisSafe/v1.1.1/GnosisSafeContract_V1_1_1_Ethers' import GnosisSafeContract_V1_2_0_Ethers from './GnosisSafe/v1.2.0/GnosisSafeContract_V1_2_0_Ethers' import GnosisSafeContract_V1_3_0_Ethers from './GnosisSafe/v1.3.0/GnosisSafeContract_V1_3_0_Ethers' @@ -16,6 +17,7 @@ import GnosisSafeProxyFactoryContract_V1_3_0_Ethers from './GnosisSafeProxyFacto import MultiSendContract_V1_1_1_Ethers from './MultiSend/v1.1.1/MultiSendContract_V1_1_1_Ethers' import MultiSendContract_V1_3_0_Ethers from './MultiSend/v1.3.0/MultiSendContract_V1_3_0_Ethers' import MultiSendCallOnlyContract_V1_3_0_Ethers from './MultiSendCallOnly/v1.3.0/MultiSendCallOnlyContract_V1_3_0_Ethers' +import SignMessageLibContract_V1_3_0_Ethers from './SignMessageLib/v1.3.0/SignMessageLibContract_V1_3_0_Ethers' export function getSafeContractInstance( safeVersion: SafeVersion, @@ -95,3 +97,18 @@ export function getSafeProxyFactoryContractInstance( throw new Error('Invalid Safe version') } } + +export function getSignMessageLibContractInstance( + safeVersion: SafeVersion, + contractAddress: string, + signer: Signer +): SignMessageLibContract_V1_3_0_Ethers { + let signMessageLibContract + switch (safeVersion) { + case '1.3.0': + signMessageLibContract = SignMessageLib_V1_3_0.connect(contractAddress, signer) + return new SignMessageLibContract_V1_3_0_Ethers(signMessageLibContract) + default: + throw new Error('Invalid Safe version') + } +} From 83ee22516fff4ce103a5932d5660f48a4b0dde08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Mart=C3=ADnez?= Date: Fri, 14 Oct 2022 17:36:40 +0200 Subject: [PATCH 6/6] Fix typo --- .../src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/safe-web3-lib/src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts b/packages/safe-web3-lib/src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts index 7dffbb507..595d365c1 100644 --- a/packages/safe-web3-lib/src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts +++ b/packages/safe-web3-lib/src/contracts/SignMessageLib/SignMessageLibWeb3Contract.ts @@ -44,4 +44,4 @@ abstract class SignMessageLibWeb3Contract implements SignMessageLibContract { } } -export default SignMessageLibWebContract +export default SignMessageLibWeb3Contract