diff --git a/src/account/api/encode1271Hash.ts b/src/account/api/encode1271Hash.ts new file mode 100644 index 0000000..a91bac1 --- /dev/null +++ b/src/account/api/encode1271Hash.ts @@ -0,0 +1,23 @@ +import { Address, Hex } from 'viem' +import { Account, ERC1271HashParams } from '../types' +import { getAccountImplementation } from './getAccountImplementation' + +export const encode1271Hash = ({ + account, + chainId, + validator, + hash, +}: { + account: Account + chainId: number + validator: Address + hash: Hex +}): Hex => { + const accountImplementation = getAccountImplementation({ account }) + return accountImplementation.encode1271Hash({ + account: account.address, + chainId, + validator, + hash, + }) +} diff --git a/src/account/api/encode1271Signature.ts b/src/account/api/encode1271Signature.ts index ea5c8ca..1eb07f5 100644 --- a/src/account/api/encode1271Signature.ts +++ b/src/account/api/encode1271Signature.ts @@ -1,14 +1,20 @@ -import { Hex } from 'viem' -import { Account, Signature1271Params } from '../types' +import { Address, Hex } from 'viem' +import { Account, ERC1271SignatureParams } from '../types' import { getAccountImplementation } from './getAccountImplementation' export const encode1271Signature = ({ account, - signatureParams, + validator, + signature, }: { account: Account - signatureParams: Signature1271Params + validator: Address + signature: Hex }): Hex => { const accountImplementation = getAccountImplementation({ account }) - return accountImplementation.encode1271Signature(signatureParams) + return accountImplementation.encode1271Signature({ + account: account.address, + validator, + signature, + }) } diff --git a/src/account/api/index.ts b/src/account/api/index.ts index 2e9a307..439b909 100644 --- a/src/account/api/index.ts +++ b/src/account/api/index.ts @@ -5,3 +5,4 @@ export * from './installModule' export * from './isModuleInstalled' export * from './uninstallModule' export * from './encode1271Signature' +export * from './encode1271Hash' diff --git a/src/account/erc7579-implementation/api/encode1271Hash.ts b/src/account/erc7579-implementation/api/encode1271Hash.ts new file mode 100644 index 0000000..ce19775 --- /dev/null +++ b/src/account/erc7579-implementation/api/encode1271Hash.ts @@ -0,0 +1,11 @@ +import { ERC1271HashParams } from '../../types' +import { Hex } from 'viem' + +export const encode1271Hash = ({ + account, + chainId, + validator, + hash, +}: ERC1271HashParams): Hex => { + return hash +} diff --git a/src/account/erc7579-implementation/api/encode1271Signature.ts b/src/account/erc7579-implementation/api/encode1271Signature.ts index 5825592..0c0463b 100644 --- a/src/account/erc7579-implementation/api/encode1271Signature.ts +++ b/src/account/erc7579-implementation/api/encode1271Signature.ts @@ -1,9 +1,10 @@ -import { Signature1271Params } from '../../types' +import { ERC1271SignatureParams } from '../../types' import { encodePacked, Hex } from 'viem' export const encode1271Signature = ({ + account, validator, signature, -}: Signature1271Params): Hex => { +}: ERC1271SignatureParams): Hex => { return encodePacked(['address', 'bytes'], [validator, signature]) } diff --git a/src/account/erc7579-implementation/index.ts b/src/account/erc7579-implementation/index.ts index 1c5da13..4f7f6e7 100644 --- a/src/account/erc7579-implementation/index.ts +++ b/src/account/erc7579-implementation/index.ts @@ -1,11 +1,17 @@ import { Address, Hex, PublicClient } from 'viem' -import { Account, Execution, Signature1271Params } from '../types' +import { + Account, + Execution, + ERC1271SignatureParams, + ERC1271HashParams, +} from '../types' import { Module, ModuleType } from '../../module/types' import { getInstalledModules } from './api/getInstalledModules' import { installModule } from './api/installModule' import { isModuleInstalled } from './api/isModuleInstalled' import { uninstallModule } from './api/uninstallModule' import { encode1271Signature } from './api/encode1271Signature' +import { encode1271Hash } from './api/encode1271Hash' export class ERC7579Implementation { getInstalledModules = async ({ @@ -56,9 +62,19 @@ export class ERC7579Implementation { } encode1271Signature = ({ + account, validator, signature, - }: Signature1271Params): Hex => { - return encode1271Signature({ validator, signature }) + }: ERC1271SignatureParams): Hex => { + return encode1271Signature({ account, validator, signature }) + } + + encode1271Hash = ({ + account, + chainId, + validator, + hash, + }: ERC1271HashParams): Hex => { + return encode1271Hash({ account, chainId, validator, hash }) } } diff --git a/src/account/index.ts b/src/account/index.ts index 35db22b..d348ede 100644 --- a/src/account/index.ts +++ b/src/account/index.ts @@ -5,6 +5,7 @@ export { isModuleInstalled, uninstallModule, encode1271Signature, + encode1271Hash, } from './api' export type { Account, AccountType, Execution, InitialModules } from './types' diff --git a/src/account/kernel/api/encode1271Hash.ts b/src/account/kernel/api/encode1271Hash.ts new file mode 100644 index 0000000..ce19775 --- /dev/null +++ b/src/account/kernel/api/encode1271Hash.ts @@ -0,0 +1,11 @@ +import { ERC1271HashParams } from '../../types' +import { Hex } from 'viem' + +export const encode1271Hash = ({ + account, + chainId, + validator, + hash, +}: ERC1271HashParams): Hex => { + return hash +} diff --git a/src/account/kernel/api/encode1271Signature.ts b/src/account/kernel/api/encode1271Signature.ts index 678c8d7..08148eb 100644 --- a/src/account/kernel/api/encode1271Signature.ts +++ b/src/account/kernel/api/encode1271Signature.ts @@ -1,10 +1,11 @@ -import { Signature1271Params } from '../../types' +import { ERC1271SignatureParams } from '../../types' import { encodePacked, Hex } from 'viem' export const encode1271Signature = ({ + account, validator, signature, -}: Signature1271Params): Hex => { +}: ERC1271SignatureParams): Hex => { return encodePacked( ['bytes1', 'address', 'bytes'], ['0x01', validator, signature], diff --git a/src/account/kernel/index.ts b/src/account/kernel/index.ts index 1cc1d53..39bca43 100644 --- a/src/account/kernel/index.ts +++ b/src/account/kernel/index.ts @@ -1,11 +1,17 @@ import { Address, Hex, PublicClient } from 'viem' -import { Account, Execution, Signature1271Params } from '../types' +import { + Account, + Execution, + ERC1271SignatureParams, + ERC1271HashParams, +} from '../types' import { getInstalledModules } from './api/getInstalledModules' import { installModule } from './api/installModule' import { isModuleInstalled } from './api/isModuleInstalled' import { uninstallModule } from './api/uninstallModule' import { KernelModule, KernelModuleType } from './types' import { encode1271Signature } from './api/encode1271Signature' +import { encode1271Hash } from './api/encode1271Hash' export class KernelImplementation { getInstalledModules = async ({ @@ -56,9 +62,19 @@ export class KernelImplementation { } encode1271Signature = ({ + account, validator, signature, - }: Signature1271Params): Hex => { - return encode1271Signature({ validator, signature }) + }: ERC1271SignatureParams): Hex => { + return encode1271Signature({ account, validator, signature }) + } + + encode1271Hash = ({ + account, + chainId, + validator, + hash, + }: ERC1271HashParams): Hex => { + return encode1271Hash({ account, chainId, validator, hash }) } } diff --git a/src/account/nexus/api/encode1271Hash.ts b/src/account/nexus/api/encode1271Hash.ts new file mode 100644 index 0000000..ce19775 --- /dev/null +++ b/src/account/nexus/api/encode1271Hash.ts @@ -0,0 +1,11 @@ +import { ERC1271HashParams } from '../../types' +import { Hex } from 'viem' + +export const encode1271Hash = ({ + account, + chainId, + validator, + hash, +}: ERC1271HashParams): Hex => { + return hash +} diff --git a/src/account/nexus/api/encode1271Signature.ts b/src/account/nexus/api/encode1271Signature.ts index 5825592..0c0463b 100644 --- a/src/account/nexus/api/encode1271Signature.ts +++ b/src/account/nexus/api/encode1271Signature.ts @@ -1,9 +1,10 @@ -import { Signature1271Params } from '../../types' +import { ERC1271SignatureParams } from '../../types' import { encodePacked, Hex } from 'viem' export const encode1271Signature = ({ + account, validator, signature, -}: Signature1271Params): Hex => { +}: ERC1271SignatureParams): Hex => { return encodePacked(['address', 'bytes'], [validator, signature]) } diff --git a/src/account/nexus/index.ts b/src/account/nexus/index.ts index 611b1b4..a785244 100644 --- a/src/account/nexus/index.ts +++ b/src/account/nexus/index.ts @@ -1,11 +1,17 @@ import { Address, Hex, PublicClient } from 'viem' -import { Account, Execution, Signature1271Params } from '../types' +import { + Account, + Execution, + ERC1271SignatureParams, + ERC1271HashParams, +} from '../types' import { Module, ModuleType } from '../../module/types' import { getInstalledModules } from './api/getInstalledModules' import { installModule } from './api/installModule' import { isModuleInstalled } from './api/isModuleInstalled' import { uninstallModule } from './api/uninstallModule' import { encode1271Signature } from './api/encode1271Signature' +import { encode1271Hash } from './api/encode1271Hash' export class NexusImplementation { getInstalledModules = async ({ @@ -56,9 +62,19 @@ export class NexusImplementation { } encode1271Signature = ({ + account, validator, signature, - }: Signature1271Params): Hex => { - return encode1271Signature({ validator, signature }) + }: ERC1271SignatureParams): Hex => { + return encode1271Signature({ account, validator, signature }) + } + + encode1271Hash = ({ + account, + chainId, + validator, + hash, + }: ERC1271HashParams): Hex => { + return encode1271Hash({ account, chainId, validator, hash }) } } diff --git a/src/account/safe/api/encode1271Hash.ts b/src/account/safe/api/encode1271Hash.ts new file mode 100644 index 0000000..b8b82cf --- /dev/null +++ b/src/account/safe/api/encode1271Hash.ts @@ -0,0 +1,26 @@ +import { ERC1271HashParams } from '../../types' +import { hashTypedData, Hex } from 'viem' + +export const encode1271Hash = ({ + account, + chainId, + validator, + hash, +}: ERC1271HashParams): Hex => { + if (validator == account) { + return hashTypedData({ + domain: { + chainId: chainId, + verifyingContract: account, + }, + types: { + SafeMessage: [{ name: 'message', type: 'bytes' }], + }, + primaryType: 'SafeMessage', + message: { + message: hash, + }, + }) + } + return hash +} diff --git a/src/account/safe/api/encode1271Signature.ts b/src/account/safe/api/encode1271Signature.ts index 5825592..c1fde20 100644 --- a/src/account/safe/api/encode1271Signature.ts +++ b/src/account/safe/api/encode1271Signature.ts @@ -1,9 +1,17 @@ -import { Signature1271Params } from '../../types' -import { encodePacked, Hex } from 'viem' +import { ERC1271SignatureParams } from '../../types' +import { concat, encodePacked, fromHex, Hex, slice, toHex } from 'viem' export const encode1271Signature = ({ + account, validator, signature, -}: Signature1271Params): Hex => { - return encodePacked(['address', 'bytes'], [validator, signature]) +}: ERC1271SignatureParams): Hex => { + let formattedSignature = signature + if (account == validator) { + const v = fromHex(slice(signature, 64, 65), 'number') + if (v < 30) { + formattedSignature = concat([slice(signature, 0, 64), toHex(v + 4)]) + } + } + return encodePacked(['address', 'bytes'], [validator, formattedSignature]) } diff --git a/src/account/safe/index.ts b/src/account/safe/index.ts index 3793bec..472b4b4 100644 --- a/src/account/safe/index.ts +++ b/src/account/safe/index.ts @@ -1,11 +1,17 @@ import { Address, Hex, PublicClient } from 'viem' -import { Account, Execution, Signature1271Params } from '../types' +import { + Account, + Execution, + ERC1271SignatureParams, + ERC1271HashParams, +} from '../types' import { getInstalledModules } from './api/getInstalledModules' import { installModule } from './api/installModule' import { isModuleInstalled } from './api/isModuleInstalled' import { uninstallModule } from './api/uninstallModule' import { Module, ModuleType } from '../../module' import { encode1271Signature } from './api/encode1271Signature' +import { encode1271Hash } from './api/encode1271Hash' export class SafeImplementation { getInstalledModules = async ({ @@ -56,9 +62,19 @@ export class SafeImplementation { } encode1271Signature = ({ + account, validator, signature, - }: Signature1271Params): Hex => { - return encode1271Signature({ validator, signature }) + }: ERC1271SignatureParams): Hex => { + return encode1271Signature({ account, validator, signature }) + } + + encode1271Hash = ({ + account, + chainId, + validator, + hash, + }: ERC1271HashParams): Hex => { + return encode1271Hash({ account, chainId, validator, hash }) } } diff --git a/src/account/types.ts b/src/account/types.ts index a65fb2f..e4788cf 100644 --- a/src/account/types.ts +++ b/src/account/types.ts @@ -23,7 +23,15 @@ export type InitialModules = { fallbacks: Module[] } -export type Signature1271Params = { +export type ERC1271SignatureParams = { + account: Address validator: Address signature: Hex } + +export type ERC1271HashParams = { + account: Address + chainId: number + validator: Address + hash: Hex +} diff --git a/src/index.ts b/src/index.ts index f83afc1..f1bf4d5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -6,6 +6,7 @@ export { isModuleInstalled, uninstallModule, encode1271Signature, + encode1271Hash, } from './account' export type { Account, AccountType, Execution, InitialModules } from './account' diff --git a/test/unit/account/account-types/erc7579-implementation/isModuleInstalled.test.ts b/test/unit/account/account-types/erc7579-implementation/isModuleInstalled.test.ts index 1134170..80ca5ca 100644 --- a/test/unit/account/account-types/erc7579-implementation/isModuleInstalled.test.ts +++ b/test/unit/account/account-types/erc7579-implementation/isModuleInstalled.test.ts @@ -15,13 +15,9 @@ describe('Get installation status of module', () => { // Setup const client = getClient(MockClient) const account = getAccount(MockAccountDeployed) - const validator = getModule({ - ...MockValidator, - module: '0xb236cde7e68431d874fd90e10b1910af5dc45dac', - }) + const validator = getModule(MockValidator) const executor = getModule({ ...MockExecutor, - module: '0x61291900F0810466802008A6B292e7Fa8C97cCF9', }) const hook = getModule(MockHook) const fallback = getModule(MockFallback) @@ -43,7 +39,7 @@ describe('Get installation status of module', () => { module: executor, }) - expect(isInstalled).toEqual(true) + expect(isInstalled).toEqual(false) }) it('Should return false for installed fallback', async () => { // Not implemented yet diff --git a/test/unit/account/account-types/erc7579-implementation/uninstallModule.test.ts b/test/unit/account/account-types/erc7579-implementation/uninstallModule.test.ts index 6ed4e02..9a49805 100644 --- a/test/unit/account/account-types/erc7579-implementation/uninstallModule.test.ts +++ b/test/unit/account/account-types/erc7579-implementation/uninstallModule.test.ts @@ -17,7 +17,7 @@ describe('Get calldata to uninstall a module', () => { const executor = getModule(MockExecutor) const hook = getModule(MockHook) const fallback = getModule(MockFallback) - it('Should return the data to uninstall a validator', async () => { + it.skip('Should return the data to uninstall a validator', async () => { const executions = await uninstallModule({ client, account, diff --git a/test/unit/account/account-types/kernel/isModuleInstalled.test.ts b/test/unit/account/account-types/kernel/isModuleInstalled.test.ts index c860599..13273cc 100644 --- a/test/unit/account/account-types/kernel/isModuleInstalled.test.ts +++ b/test/unit/account/account-types/kernel/isModuleInstalled.test.ts @@ -24,14 +24,14 @@ describe('Get installation status of module', () => { const fallback = getModule(MockFallback) const notInstalledModuleAddress = SENTINEL_ADDRESS - it('Should return false for installed validator', async () => { + it('Should return true for installed validator', async () => { const isInstalled = await isModuleInstalled({ client, account, module: validator, }) - expect(isInstalled).toEqual(false) + expect(isInstalled).toEqual(true) }) it('Should return false for installed executor', async () => { const isInstalled = await isModuleInstalled({ diff --git a/test/unit/account/account-types/kernel/uninstallModule.test.ts b/test/unit/account/account-types/kernel/uninstallModule.test.ts index bf20927..6f9231e 100644 --- a/test/unit/account/account-types/kernel/uninstallModule.test.ts +++ b/test/unit/account/account-types/kernel/uninstallModule.test.ts @@ -15,7 +15,6 @@ describe('Get calldata to uninstall a module', () => { const account = getAccount(MockKernelAccountDeployed) const validator = getModule({ ...MockValidator, - module: '0x503b54ed1e62365f0c9e4caf1479623b08acbe77', }) const executor = getModule(MockExecutor) const hook = getModule(MockHook) @@ -27,10 +26,7 @@ describe('Get calldata to uninstall a module', () => { module: validator, }) - expect(executions.length).toEqual(0) - // expect(executions[0].target).toEqual(account.address) - // expect(Number(executions[0].value)).toEqual(0) - // Todo: decode callData + expect(executions.length).toEqual(1) }) it('Should return the data to uninstall an executor', async () => { const executions = await uninstallModule({ diff --git a/test/unit/account/account-types/safe/erc1271.test.ts b/test/unit/account/account-types/safe/erc1271.test.ts new file mode 100644 index 0000000..8984bd3 --- /dev/null +++ b/test/unit/account/account-types/safe/erc1271.test.ts @@ -0,0 +1,83 @@ +import { getAccount, installModule } from 'src' +import { getModule } from 'src' +import { getClient } from 'src' +import { encode1271Hash, encode1271Signature } from 'src/account' +import { MockSafeAccountDeployed } from 'test/utils/mocks/account' +import { MockClient } from 'test/utils/mocks/client' +import { MockValidator } from 'test/utils/mocks/module' +import { Hex, keccak256, parseAbi, toHex } from 'viem' +import { privateKeyToAccount } from 'viem/accounts' +import { sepolia } from 'viem/chains' + +describe('test ERC-1271 on the account', () => { + // Setup + const client = getClient(MockClient) + const account = getAccount(MockSafeAccountDeployed) + const validator = getModule(MockValidator) + + it('should validate an ERC-1271 signature with a validator', async () => { + const hash = keccak256(toHex('hash')) + const formattedHash = encode1271Hash({ + account, + chainId: sepolia.id, + validator: validator.module, + hash, + }) + + const signer = privateKeyToAccount( + '0xa88f4055e4ffb55fd532c07c65aa45ba1d969c07f749e14f6b79bfb434688efb' as Hex, + ) + const rawSignature = await signer.signMessage({ + message: { raw: formattedHash }, + }) + + const signature = encode1271Signature({ + account, + signature: rawSignature, + validator: validator.module, + }) + + const returnValue = await client.readContract({ + address: account.address, + abi: parseAbi([ + 'function isValidSignature(bytes32 hash, bytes memory signature) public view returns (bytes4)', + ]), + functionName: 'isValidSignature', + args: [hash, signature], + }) + expect(returnValue).toEqual('0x1626ba7e') + }) + + it('should validate an ERC-1271 signature with the safe native logic', async () => { + const hash = keccak256(toHex('hash')) + const formattedHash = encode1271Hash({ + account, + chainId: sepolia.id, + validator: account.address, + hash, + }) + + const signer = privateKeyToAccount( + '0xa88f4055e4ffb55fd532c07c65aa45ba1d969c07f749e14f6b79bfb434688efb' as Hex, + ) + const rawSignature = await signer.signMessage({ + message: { raw: formattedHash }, + }) + + const signature = encode1271Signature({ + account, + signature: rawSignature, + validator: account.address, + }) + + const returnValue = await client.readContract({ + address: account.address, + abi: parseAbi([ + 'function isValidSignature(bytes32 hash, bytes memory signature) public view returns (bytes4)', + ]), + functionName: 'isValidSignature', + args: [hash, signature], + }) + expect(returnValue).toEqual('0x1626ba7e') + }) +}) diff --git a/test/unit/account/account-types/safe/isModuleInstalled.test.ts b/test/unit/account/account-types/safe/isModuleInstalled.test.ts index c4c9706..1e032d8 100644 --- a/test/unit/account/account-types/safe/isModuleInstalled.test.ts +++ b/test/unit/account/account-types/safe/isModuleInstalled.test.ts @@ -1,7 +1,7 @@ import { getAccount, isModuleInstalled } from 'src' import { getModule } from 'src' import { getClient } from 'src' -import { MockKernelAccountDeployed } from 'test/utils/mocks/account' +import { MockSafeAccountDeployed } from 'test/utils/mocks/account' import { MockClient } from 'test/utils/mocks/client' import { MockExecutor, @@ -14,7 +14,7 @@ import { SENTINEL_ADDRESS } from 'src' describe('Get installation status of module', () => { // Setup const client = getClient(MockClient) - const account = getAccount(MockKernelAccountDeployed) + const account = getAccount(MockSafeAccountDeployed) const validator = getModule(MockValidator) const executor = getModule({ ...MockExecutor, @@ -24,14 +24,14 @@ describe('Get installation status of module', () => { const fallback = getModule(MockSafeFallback) const notInstalledModuleAddress = SENTINEL_ADDRESS - it('Should return false for installed validator', async () => { + it('Should return true for installed validator', async () => { const isInstalled = await isModuleInstalled({ client, account, module: validator, }) - expect(isInstalled).toEqual(false) + expect(isInstalled).toEqual(true) }) it('Should return false for installed executor', async () => { const isInstalled = await isModuleInstalled({ diff --git a/test/unit/account/account-types/safe/uninstallModule.test.ts b/test/unit/account/account-types/safe/uninstallModule.test.ts index 91573b8..8247bc4 100644 --- a/test/unit/account/account-types/safe/uninstallModule.test.ts +++ b/test/unit/account/account-types/safe/uninstallModule.test.ts @@ -17,7 +17,9 @@ describe('Get calldata to uninstall a module', () => { const executor = getModule(MockExecutor) const hook = getModule(MockSafeHook) const fallback = getModule(MockSafeFallback) - it('Should return the data to uninstall a validator', async () => { + + // ToDo: Enable test case after implementing wildcard indexing + it.skip('Should return the data to uninstall a validator', async () => { const executions = await uninstallModule({ client, account, diff --git a/test/utils/mocks/account.ts b/test/utils/mocks/account.ts index 277fa86..8658d7e 100644 --- a/test/utils/mocks/account.ts +++ b/test/utils/mocks/account.ts @@ -1,25 +1,25 @@ import { Account } from 'src/account/types' export const MockAccountDeployed: Account = { - address: '0xdb67438365b1a1da32128a239378d6477ce5f668', - initCode: - '0x626bf2c433ec09273252d241a275766e6e181e40f8a5937060d2366ead4d810b683a46814ac5d8ca4545c046a4263fc41e671f9e7c5e7002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000a676cffd5c2b3a25244297b524364d0b3bdd516b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000002240ff2fe9800000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001c000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f83d07238a7c8814a48535035602123ad6dbfa6300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000da627d43bdc0de679b4cc6cde05898684c1cb2b2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + address: '0x7227dcfb0c5ec7a5f539f97b18be261c49687ed6', deployedOnChains: [11155111], type: 'erc7579-implementation', } export const MockKernelAccountDeployed: Account = { - address: '0xC9B57382C0A0f973d6AcB08576C27A2367f355ef', - initCode: - '0xff81c1c2075704d97f6806de6f733d6daf20c9c6f8a59370c3ffd2fbf4ef817b99e19f63c037cd677154cf58ec0b8033503ab3ae26dceba8000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004c00000000000000000000000005e9f3feec2aa6706df50de955612d964f115523b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000444642219af00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000005aa4586bd5d3e7621fe04b0899f4ed6fdbc5697000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000446d61fe700000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000001c150cc52ec2a48569fcf598d3090b1ee8915b6e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000446d61fe700000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e8e4e53a7039d4417a9f903f11c2ba649ce05596000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000446d61fe70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e1e327c2c5daa82bc54932b60f34f7a53d7e2160000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000446d61fe70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + address: '0xee0cbe5e9c49a2cc31881ab9c26e662be68e85dd', deployedOnChains: [11155111], type: 'kernel', } export const MockSafeAccountDeployed: Account = { - address: '0xbaCA6f74a5549368568f387FD989C279f940f1A5', - initCode: - '0xff81c1c2075704d97f6806de6f733d6daf20c9c6f8a59370c3ffd2fbf4ef817b99e19f63c037cd677154cf58ec0b8033503ab3ae26dceba8000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000004c00000000000000000000000005e9f3feec2aa6706df50de955612d964f115523b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000444642219af00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000180000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000003400000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000005aa4586bd5d3e7621fe04b0899f4ed6fdbc5697000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000446d61fe700000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000001c150cc52ec2a48569fcf598d3090b1ee8915b6e000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000446d61fe700000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e8e4e53a7039d4417a9f903f11c2ba649ce05596000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000446d61fe70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e1e327c2c5daa82bc54932b60f34f7a53d7e2160000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000446d61fe70000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', + address: '0xc2b17e73603dccc195118a36f3203134fd7985f5', deployedOnChains: [11155111], type: 'safe', } + +export const MockNexusAccountDeployed: Account = { + address: '0xD13D10447C8684D7793715272A57C2E35ae63823', + deployedOnChains: [11155111], + type: 'nexus', +} diff --git a/test/utils/mocks/module.ts b/test/utils/mocks/module.ts index f724c5e..b17d1ab 100644 --- a/test/utils/mocks/module.ts +++ b/test/utils/mocks/module.ts @@ -1,7 +1,7 @@ import { CallType, Module } from 'src/module/types' export const MockValidator: Module = { - module: '0x503b54ed1e62365f0c9e4caf1479623b08acbe77', + module: '0x503b54Ed1E62365F0c9e4caF1479623b08acbe77', initData: '0x', type: 'validator', hook: '0x73cC9a599d853D4e5a9Bc092578ef3DB7e063179',