{"version":3,"sources":["../../account/src/eoa.ts","../../account/src/index.ts","../../account/src/accounts/simple.ts"],"names":["http","privateKeyToAccount","createWalletClient","encodeAbiParameters","keccak256","encodeFunctionData","SimpleAccountFactoryABI","concatHex"],"mappings":"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","file":"chunk-2MILUXXC.cjs","sourcesContent":["import { type WalletClient, type PublicClient, type Address, type Chain, type Transport, type Hash, type Hex, createWalletClient, http } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\n\nexport type EOAWalletClient = WalletClient & {\n    sendTransaction: (args: { to: Address, value?: bigint, data?: Hex }) => Promise<Hash>;\n    getAddress: () => Address;\n};\n\nexport const createEOAWalletClient = (\n    privateKey: Hex, \n    chain: Chain, \n    transport: Transport = http()\n): EOAWalletClient => {\n    const account = privateKeyToAccount(privateKey);\n    const client = createWalletClient({\n        account,\n        chain,\n        transport\n    });\n\n    return Object.assign(client, {\n        async sendTransaction(args: { to: Address, value?: bigint, data?: Hex }) {\n            return client.sendTransaction({\n                ...args,\n                account,\n                chain\n            });\n        },\n        getAddress: () => account.address\n    }) as EOAWalletClient;\n};\n","import { type Hex, type Address, encodeAbiParameters, keccak256 } from 'viem';\n\nexport * from './eoa.js';\nexport * from './accounts/simple.js';\n\n/**\n * Common Pack Logic for v0.7 UserOperations\n */\nexport function packUserOpLimits(high: bigint, low: bigint): Hex {\n    return `0x${((high << 128n) | low).toString(16).padStart(64, '0')}` as Hex;\n}\n\n/**\n * Local implementation of EntryPoint v0.7 getUserOpHash\n */\nexport function getUserOpHash(op: any, ep: Address, chainId: number): Hex {\n    const packed = encodeAbiParameters(\n        [\n            { type: 'address' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' },\n            { type: 'bytes32' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' }\n        ],\n        [\n            op.sender, BigInt(op.nonce), \n            keccak256(op.initCode && op.initCode !== \"0x\" ? op.initCode : '0x'), \n            keccak256(op.callData),\n            op.accountGasLimits, BigInt(op.preVerificationGas), op.gasFees,\n            keccak256(op.paymasterAndData)\n        ]\n    );\n    const enc = encodeAbiParameters(\n        [{ type: 'bytes32' }, { type: 'address' }, { type: 'uint256' }],\n        [keccak256(packed), ep, BigInt(chainId)]\n    );\n    return keccak256(enc);\n}\n\n/**\n * UserOperation Client for handling high-level flows\n */\nexport class UserOpClient {\n    static async estimateGas(bundler: any, op: any, entryPoint: Address) {\n        return bundler.request({\n            method: 'eth_estimateUserOperationGas',\n            params: [op, entryPoint]\n        });\n    }\n\n    static async sendUserOp(bundler: any, op: any, entryPoint: Address) {\n        return bundler.request({\n            method: 'eth_sendUserOperation',\n            params: [op, entryPoint]\n        });\n    }\n\n    static async getReceipt(bundler: any, hash: Hex) {\n        return bundler.request({\n            method: 'eth_getUserOperationReceipt',\n            params: [hash]\n        });\n    }\n}\n","import { \n    type Address, \n    type Hex, \n    type LocalAccount, \n    type SignableMessage, \n    type TypedDataDefinition,\n    type Hash,\n    concatHex, \n    encodeFunctionData, \n    keccak256,\n} from 'viem';\nimport { SimpleAccountFactoryABI, type PublicClient } from '@aastar/core';\nimport { getUserOpHash } from '../index.js';\n\nexport type SimpleSmartAccount = LocalAccount & {\n    signUserOperation: (userOp: any) => Promise<Hex>;\n    getInitCode: () => Promise<Hex>;\n    getDummySignature: () => Promise<Hex>;\n    entryPoint: Address;\n};\n\nexport async function toSimpleSmartAccount(parameters: {\n    client: any;\n    owner: LocalAccount;\n    factoryAddress: Address;\n    entryPoint: { address: Address; version: '0.6' | '0.7' };\n    salt?: bigint;\n    index?: bigint;\n}): Promise<SimpleSmartAccount> {\n    const { client, owner, factoryAddress, entryPoint, index = 0n, salt = 0n } = parameters;\n    \n    // Calculate initCode\n    const factoryData = encodeFunctionData({\n        abi: SimpleAccountFactoryABI,\n        functionName: 'createAccount',\n        args: [owner.address, salt]\n    });\n    const initCode = concatHex([factoryAddress, factoryData]);\n\n    // Calculate counterfactual address\n    const address = await client.readContract({\n         address: factoryAddress,\n         abi: SimpleAccountFactoryABI,\n         functionName: 'getAddress',\n         args: [owner.address, salt]\n    });\n\n    return {\n        address,\n        publicKey: owner.address,\n        source: 'custom', \n        type: 'local',\n        entryPoint: entryPoint.address,\n        \n        async signMessage({ message }: { message: SignableMessage }): Promise<Hex> {\n            // validating signature for smart account usually involves EIP-1271, \n            // but here we just sign with owner for SimpleAccount which validates owner sig\n            return owner.signMessage({ message });\n        },\n\n        async signTypedData(typedData: TypedDataDefinition): Promise<Hex> {\n            return owner.signTypedData(typedData);\n        },\n\n        async signTransaction(transaction: any): Promise<Hex> {\n            throw new Error('Smart Accounts cannot sign transactions directly. Use UserOperations.');\n        },\n        \n        async signUserOperation(userOp: any): Promise<Hex> {\n            const chainId = client.chain?.id || 31337; // Default to local anvil if not found\n            const hash = getUserOpHash(userOp, entryPoint.address, chainId);\n            return owner.signMessage({ message: { raw: hash } });\n        },\n        \n        async getInitCode() {\n            return initCode;\n        },\n\n        async getDummySignature() {\n            return '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';\n        }\n\n    } as any as SimpleSmartAccount;\n}\n"]}