import { encodeAbiParameters } from "../utils/abi/encodeAbiParameters.js"; import { concatHex } from "../utils/encoding/helpers/concat-hex.js"; import type { Hex } from "../utils/encoding/hex.js"; import { ERC_6492_MAGIC_VALUE } from "./constants.js"; import type { Erc6492Signature } from "./types.js"; /** * Serializes a signature for use with [ERC-6492](https://eips.ethereum.org/EIPS/eip-6492). The signature must be generated by a signer for an [ERC-4337](https://eips.ethereum.org/EIPS/eip-4337) Account Factory account with counterfactual deployment addresses. * * @param {@link Erc6492Signature} signature The signature object to serialize into Hex format * @param {string} signature.address The ERC-4337 Account Factory address * @param {Hex} signature.data Account deployment calldata (if not deployed) for counterfactual verification * @param {Hex} signature.signature The original signature * * @returns {Hex} The serialized signature * * @example * ```ts * import { serializeErc6492Signature } from 'thirdweb/auth'; * * const serializedSignature = serializeErc6492Signature({ * address: '0x...', * data: '0x...', * signature: '0x...', * }); * // 0x000000000000000000000000cafebabecafebabecafebabecafebabecafebabe000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000004deadbeef000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a461f509887bd19e312c0c58467ce8ff8e300d3c1a90b608a760c5b80318eaf15fe57c96f9175d6cd4daad4663763baa7e78836e067d0163e9a2ccf2ff753f5b1b000000000000000000000000000000000000000000000000000000000000006492649264926492649264926492649264926492649264926492649264926492 * ``` * @auth */ export function serializeErc6492Signature({ address, data, signature, }: Erc6492Signature): Hex { return concatHex([ encodeAbiParameters( [{ type: "address" }, { type: "bytes" }, { type: "bytes" }], [address, data, signature], ), ERC_6492_MAGIC_VALUE, ]); }