UNPKG

@alchemy/aa-core

Version:

viem based SDK that enables interactions with ERC-4337 Smart Accounts. ABIs are based off the definitions generated in @account-abstraction/contracts

52 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serializeStateOverride = void 0; const viem_1 = require("viem"); function serializeStateMapping(stateMapping) { if (!stateMapping || stateMapping.length === 0) return undefined; return stateMapping.reduce((acc, { slot, value }) => { validateBytes32HexLength(slot); validateBytes32HexLength(value); acc[slot] = value; return acc; }, {}); } function validateBytes32HexLength(value) { if (value.length !== 66) { throw new Error(`Hex is expected to be 66 hex long, but is ${value.length} hex long.`); } } function serializeAccountStateOverride(parameters) { const { balance, nonce, state, stateDiff, code } = parameters; const rpcAccountStateOverride = {}; if (code !== undefined) rpcAccountStateOverride.code = code; if (balance !== undefined) rpcAccountStateOverride.balance = (0, viem_1.numberToHex)(balance); if (nonce !== undefined) rpcAccountStateOverride.nonce = (0, viem_1.numberToHex)(nonce); if (state !== undefined) rpcAccountStateOverride.state = serializeStateMapping(state); if (stateDiff !== undefined) { if (rpcAccountStateOverride.state) throw new viem_1.StateAssignmentConflictError(); rpcAccountStateOverride.stateDiff = serializeStateMapping(stateDiff); } return rpcAccountStateOverride; } function serializeStateOverride(parameters) { if (!parameters) return undefined; const rpcStateOverride = {}; for (const { address, ...accountState } of parameters) { if (!(0, viem_1.isAddress)(address, { strict: false })) throw new viem_1.InvalidAddressError({ address }); if (rpcStateOverride[address]) throw new viem_1.AccountStateConflictError({ address: address }); rpcStateOverride[address] = serializeAccountStateOverride(accountState); } return rpcStateOverride; } exports.serializeStateOverride = serializeStateOverride; //# sourceMappingURL=stateOverride.js.map