UNPKG

startale-aa-sdk

Version:

SDK for startale account integration with support for account abstraction, ERC-7579, ERC-4337.

61 lines 2.51 kB
import { sanitizeSignature } from "./Helpers.js"; /** * Creates a Module object from the given parameters parameters. * * This function takes the module parameters details and constructs a standardized * Module object with methods for signing and generating stub signatures. * * @param parameters - The parameters defining the module parameters. * @returns A Module object with standardized methods and properties. * * @example * ```typescript * const myModule = toModule({ * accountAddress: '0x1234...', * address: '0x5678...', * signer: mySigner, * initData: '0xabcd...', * // ... other parameters * }); * ``` * * @remarks * - The returned Module object includes methods for getting stub signatures, signing user operation hashes, and signing messages. * - The `getStubSignature` method generates a dummy signature for testing or placeholder purposes. * - The `signUserOpHash` and `signMessage` methods use the provided signer to create actual signatures. */ export function toModule(parameters) { const { account, extend, initArgs = {}, deInitData = "0x", initData = "0x", moduleInitArgs = "0x", accountAddress = account?.address ?? "0x", moduleInitData = { address: "0x", type: "validator" }, ...rest } = parameters; let data_ = parameters.data ?? {}; const setData = (d) => { data_ = d; }; const getData = () => data_; return { ...parameters, initData, moduleInitData, moduleInitArgs, deInitData, accountAddress, initArgs, setData, getData, module: parameters.address, type: "validator", getStubSignature: async () => { const dynamicPart = parameters.address.substring(2).padEnd(40, "0"); return `0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000${dynamicPart}000000000000000000000000000000000000000000000000000000000000004181d4b4981670cb18f99f0b4a66446df1bf5b204d24cfcb659bf38ba27a4359b5711649ec2423c5e1247245eba2964679b6a1dbb85c992ae40b9b00c6935b02ff1b00000000000000000000000000000000000000000000000000000000000000`; }, signUserOpHash: async (userOpHash) => await parameters.signer.signMessage({ message: { raw: userOpHash } }), signMessage: async (message) => sanitizeSignature(await parameters.signer.signMessage({ message })), ...extend, ...rest }; } //# sourceMappingURL=toModule.js.map