{"version":3,"sources":["../../enduser/src/UserClient.ts"],"names":["BaseClient","encodeFunctionData","entryPointActions","accountActions","sbtActions","tokenActions","stakingActions","registryActions","bundlerActions"],"mappings":"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","file":"chunk-E5YACPO6.cjs","sourcesContent":["import { type Address, type Hash, type Hex, concat, pad, toHex, encodeFunctionData } from 'viem';\nimport { BaseClient, type ClientConfig, type TransactionOptions } from '@aastar/core';\nimport { accountActions, sbtActions, tokenActions, entryPointActions, stakingActions, registryActions, paymasterActions, superPaymasterActions } from '@aastar/core';\nimport { bundlerActions, type UserOperation, getUserOperationHash } from 'viem/account-abstraction';\n\nexport interface UserClientConfig extends ClientConfig {\n    accountAddress: Address; // The AA account address\n    sbtAddress?: Address;\n    entryPointAddress?: Address;\n    superPaymasterAddress?: Address; // For sponsorship queries\n    gTokenStakingAddress?: Address; // For staking/investing\n    registryAddress?: Address; // For role management\n    gTokenAddress?: Address; // For fee payment approval\n    bundlerClient?: any;\n}\n\nexport class UserClient extends BaseClient {\n    public accountAddress: Address;\n    public sbtAddress?: Address;\n    public entryPointAddress?: Address;\n    public gTokenStakingAddress?: Address;\n    public registryAddress?: Address;\n    public gTokenAddress?: Address;\n    public bundlerClient?: any;\n\n    constructor(config: UserClientConfig) {\n        super(config);\n        this.bundlerClient = config.bundlerClient;\n        this.accountAddress = config.accountAddress;\n        this.sbtAddress = config.sbtAddress;\n        this.entryPointAddress = config.entryPointAddress;\n        this.gTokenStakingAddress = config.gTokenStakingAddress;\n        this.registryAddress = config.registryAddress;\n        this.gTokenAddress = config.gTokenAddress;\n    }\n\n    /**\n     * Deploy a new Smart Account (Supports multiple factory types)\n     * Static helper to facilitate onboarding before instantiating the UserClient.\n     * \n     * @param client - WalletClient to sign the deployment transaction\n     * @param params - Deployment parameters\n     * @returns Object containing the deployed account address and transaction hash\n     */\n    static async deployAccount(\n        client: any, \n        params: {\n            owner: Address;\n            salt?: bigint;\n            factoryAddress?: Address;\n            publicClient?: any;\n            accountType?: 'simple' | 'kernel' | 'safe' | string;\n            customAbi?: any;\n        }\n    ): Promise<{ accountAddress: Address; hash: Hash }> {\n        const { accountFactoryActions, SimpleAccountFactoryABI } = await import('@aastar/core');\n        \n        // 1. Determine Factory ABI (Ensure it's the raw ABI array)\n        let abi = params.customAbi || (SimpleAccountFactoryABI?.abi || SimpleAccountFactoryABI);\n        \n        // In the future, we can add more built-in ABIs here based on accountType\n        // if (params.accountType === 'kernel') abi = KernelFactoryABI;\n        \n        const factoryAddr = params.factoryAddress || '0x9406Cc6185a346906296840746125a0E44976454'; // Default v0.7 Factory\n        const salt = params.salt || 0n;\n        \n        // Use publicClient for reading if provided, otherwise fallback to client (which might be a Full Client)\n        const readClient = params.publicClient || client;\n        \n        // Use the generic actions with the selected ABI\n        const factoryRead = accountFactoryActions(factoryAddr, abi)(readClient);\n        const factoryWrite = accountFactoryActions(factoryAddr, abi)(client);\n        \n        // 1. Predict Address\n        const accountAddress = await factoryRead.getAddress({\n            owner: params.owner,\n            salt\n        });\n\n        // 2. Deploy\n        try {\n            const hash = await factoryWrite.createAccount({\n                owner: params.owner,\n                salt,\n                account: client.account\n            });\n            return { accountAddress, hash };\n        } catch (error: any) {\n            const messageParts = [\n                error?.shortMessage,\n                error?.message,\n                error?.details,\n                error?.cause?.shortMessage,\n                error?.cause?.message,\n                error?.cause?.details,\n                error?.cause?.cause?.shortMessage,\n                error?.cause?.cause?.message\n            ].filter(Boolean);\n            const message = messageParts.join(' ');\n            if (message.includes('gas required exceeds allowance') || message.includes('intrinsic gas too low')) {\n                const data = encodeFunctionData({\n                    abi,\n                    functionName: 'createAccount',\n                    args: [params.owner, salt]\n                });\n                const hash = await client.sendTransaction({\n                    to: factoryAddr,\n                    data,\n                    gas: 2_000_000n,\n                    account: client.account\n                });\n                return { accountAddress, hash };\n            }\n            throw error;\n        }\n    }\n\n    // ========================================\n    // 1. 账户基本操作 (基于 L1 simpleAccountActions)\n    // ========================================\n\n    /**\n     * Get the nonce of the account from EntryPoint (more reliable for 4337)\n     */\n    async getNonce(key: bigint = 0n): Promise<bigint> {\n        try {\n            if (!this.entryPointAddress) {\n                throw new Error('EntryPoint address required for this client');\n            }\n            const entryPoint = entryPointActions(this.entryPointAddress);\n            return await entryPoint(this.getStartPublicClient()).getNonce({\n                sender: this.accountAddress,\n                key\n            });\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    /**\n     * Get the owner of the AA account\n     */\n    async getOwner(): Promise<Address> {\n        try {\n            const account = accountActions(this.accountAddress);\n            return await account(this.getStartPublicClient()).owner();\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    /**\n     * Execute a transaction from the AA account\n     */\n    async execute(target: Address, value: bigint, data: Hex, options?: TransactionOptions): Promise<Hash> {\n        try {\n            const account = accountActions(this.accountAddress);\n            \n            // Use standard AA execute\n            return await account(this.client).execute({\n                dest: target,\n                value,\n                func: data,\n                account: options?.account\n            });\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    /**\n     * Execute a batch of transactions\n     */\n    async executeBatch(targets: Address[], values: bigint[], datas: Hex[], options?: TransactionOptions): Promise<Hash> {\n        try {\n            const account = accountActions(this.accountAddress);\n            \n            return await account(this.client).executeBatch({\n                dest: targets,\n                value: values,\n                func: datas,\n                account: options?.account\n            });\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    // ========================================\n    // identity 与 SBT (基于 L1 sbtActions)\n    // ========================================\n\n    /**\n     * Get user's SBT balance\n     */\n    async getSBTBalance(): Promise<bigint> {\n        try {\n            if (!this.sbtAddress) throw new Error('SBT address required for this client');\n            const sbt = sbtActions(this.sbtAddress);\n            \n            return await sbt(this.getStartPublicClient()).balanceOf({\n                owner: this.accountAddress\n            });\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    async mintSBT(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n        try {\n            if (!this.sbtAddress) throw new Error('SBT address required for this client');\n            const { encodeFunctionData } = await import('viem');\n            \n            const data = encodeFunctionData({\n                abi: [{ name: 'mintForRole', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }, { name: 'roleData', type: 'bytes' }], outputs: [{ type: 'uint256' }] }],\n                functionName: 'mintForRole',\n                args: [this.accountAddress, roleId, '0x']\n            });\n\n            return await this.execute(this.sbtAddress, 0n, data, options);\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    // ========================================\n    // 3. 资产管理 (基于 L1 tokenActions)\n    // ========================================\n\n    async transferToken(token: Address, to: Address, amount: bigint, options?: TransactionOptions): Promise<Hash> {\n        try {\n            const { encodeFunctionData } = await import('viem');\n            const data = encodeFunctionData({\n                abi: [{ name: 'transfer', type: 'function', inputs: [{ name: 'to', type: 'address' }, { name: 'amount', type: 'uint256' }], outputs: [{ type: 'bool' }] }],\n                functionName: 'transfer',\n                args: [to, amount]\n            });\n\n            return await this.execute(token, 0n, data, options);\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    /**\n     * Get Token Balance\n     */\n    async getTokenBalance(token: Address): Promise<bigint> {\n        try {\n            const tokens = tokenActions()(this.getStartPublicClient());\n            \n            return await tokens.balanceOf({\n                token,\n                account: this.accountAddress\n            });\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    // ========================================\n    // 4. 委托与质押 (Delegation & Staking)\n    // ========================================\n\n    async stakeForRole(roleId: Hex, amount: bigint, options?: TransactionOptions): Promise<Hash> {\n        try {\n            if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n            const { encodeFunctionData } = await import('viem');\n            \n            const data = encodeFunctionData({\n                abi: [{ name: 'lockStake', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }, { name: 'stakeAmount', type: 'uint256' }, { name: 'entryBurn', type: 'uint256' }, { name: 'payer', type: 'address' }], outputs: [] }],\n                functionName: 'lockStake',\n                args: [this.accountAddress, roleId, amount, 0n, this.accountAddress]\n            });\n\n            return await this.execute(this.gTokenStakingAddress, 0n, data, options);\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    async unstakeFromRole(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n        try {\n            if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n            const { encodeFunctionData } = await import('viem');\n            \n            const data = encodeFunctionData({\n                abi: [{ name: 'unlockAndTransfer', type: 'function', inputs: [{ name: 'user', type: 'address' }, { name: 'roleId', type: 'bytes32' }], outputs: [{ name: 'netAmount', type: 'uint256' }] }],\n                functionName: 'unlockAndTransfer',\n                args: [this.accountAddress, roleId]\n            });\n\n            return await this.execute(this.gTokenStakingAddress, 0n, data, options);\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    /**\n     * Get staked balance for a specific role\n     */\n    async getStakedBalance(roleId: Hex): Promise<bigint> {\n        try {\n            if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n            const staking = stakingActions(this.gTokenStakingAddress);\n            \n            return await staking(this.getStartPublicClient()).getLockedStake({\n                user: this.accountAddress,\n                roleId\n            });\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    // ========================================\n    // 5. 生命周期管理 (Lifecycle)\n    // ========================================\n\n    async exitRole(roleId: Hex, options?: TransactionOptions): Promise<Hash> {\n        try {\n            if (!this.registryAddress) throw new Error('Registry address required for this client');\n            const { encodeFunctionData } = await import('viem');\n            \n            const data = encodeFunctionData({\n                abi: [{ name: 'exitRole', type: 'function', inputs: [{ name: 'roleId', type: 'bytes32' }], outputs: [] }],\n                functionName: 'exitRole',\n                args: [roleId]\n            });\n\n            return await this.execute(this.registryAddress, 0n, data, options);\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    async leaveCommunity(community: Address, options?: TransactionOptions): Promise<Hash> {\n        try {\n            if (!this.sbtAddress) throw new Error('SBT address required for this client');\n            const { encodeFunctionData } = await import('viem');\n            \n            const data = encodeFunctionData({\n                abi: [{ name: 'leaveCommunity', type: 'function', inputs: [{ name: 'comm', type: 'address' }], outputs: [] }],\n                functionName: 'leaveCommunity',\n                args: [community]\n            });\n\n            return await this.execute(this.sbtAddress, 0n, data, options);\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    /**\n     * Register as EndUser (One-click: Approve + Register)\n     * Handles GToken approval to Staking contract and Role registration.\n     */\n    async registerAsEndUser(communityAddress: Address, stakeAmount: bigint, options?: TransactionOptions): Promise<Hash> {\n        try {\n            if (!this.registryAddress) throw new Error('Registry address required for this client');\n            if (!this.gTokenStakingAddress) throw new Error('GTokenStaking address required for this client');\n            if (!this.gTokenAddress) throw new Error('GToken address required for this client');\n\n            const { encodeAbiParameters, keccak256, toBytes, parseEther } = await import('viem');\n            const ROLE_ENDUSER = keccak256(toBytes(\"ENDUSER\"));\n            // Correct mapping for Registry Actions\n            const registry = registryActions(this.registryAddress);\n            const publicClient = this.getStartPublicClient();\n            const tokens = tokenActions()(publicClient);\n\n            // 1. Check Allowance\n            const allowance = await tokens.allowance({\n                token: this.gTokenAddress,\n                owner: this.accountAddress,\n                spender: this.gTokenStakingAddress\n            });\n            console.log(`   🔍 Debug Allowance: Account=${this.accountAddress}, Allowance=${allowance}, Needed=${stakeAmount}`);\n            \n            const txs: { target: Address, value: bigint, data: Hex }[] = [];\n\n            if (allowance < stakeAmount) {\n                 const approveData = encodeFunctionData({\n                     abi: [{name:'approve', type:'function', inputs:[{type:'address'},{type:'uint256'}], outputs:[{type:'bool'}], stateMutability:'nonpayable'}],\n                     functionName: 'approve',\n                     args: [this.gTokenStakingAddress, parseEther('1000')]\n                 });\n                 txs.push({ target: this.gTokenAddress, value: 0n, data: approveData });\n            }\n\n            // 2. Construct Register Call\n            // struct EndUserRoleData { address account; address community; string avatarURI; string ensName; uint256 stakeAmount; }\n            const roleData = encodeAbiParameters(\n                [\n                    { type: 'address', name: 'account' },\n                    { type: 'address', name: 'community' },\n                    { type: 'string', name: 'avatarURI' },\n                    { type: 'string', name: 'ensName' },\n                    { type: 'uint256', name: 'stakeAmount' }\n                ],\n                [\n                    this.accountAddress,\n                    communityAddress,\n                    '',\n                    '',\n                    stakeAmount\n                ]\n            );\n\n            const registerData = encodeFunctionData({\n                abi: [{ name: 'registerRoleSelf', type: 'function', inputs: [{type:'bytes32'}, {type:'bytes'}], outputs: [{type:'uint256'}], stateMutability: 'nonpayable' }],\n                functionName: 'registerRoleSelf',\n                args: [ROLE_ENDUSER, roleData]\n            });\n            \n            txs.push({ target: this.registryAddress, value: 0n, data: registerData });\n            \n            console.log(`   🔍 Debug Onboard: Community=${communityAddress}, AA=${this.accountAddress}, Stake=${stakeAmount}`);\n            console.log(`   🔍 Debug Batch: Txs=${txs.length}, Targets=${txs.map(t => t.target)}`);\n\n            // 3. Execute separately for stability (Batch execution has issues on current AA deployment)\n            const hashes: Hash[] = [];\n            for (const tx of txs) {\n                const h = await this.execute(tx.target, tx.value, tx.data, options);\n                hashes.push(h);\n                // Wait for each tx to ensure sequential state updates (approve -> register)\n                await (this.getStartPublicClient() as any).waitForTransactionReceipt({ hash: h });\n            }\n            return hashes[hashes.length - 1];\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    // ========================================\n    // 6. Gasless Execution (Advanced)\n    // ========================================\n\n    /**\n     * Execute a transaction with Gasless Sponsorship\n     */\n    async executeGasless(params: {\n        target: Address;\n        value: bigint;\n        data: Hex;\n        paymaster: Address;\n        paymasterType: 'V4' | 'Super';\n        /** ERC-20 used to pay gas under a V4 paymaster (e.g. the community's xPNTs/aPNTs). REQUIRED for V4. */\n        gasToken?: Address;\n        operator?: Address; // Added for SuperPaymaster\n        maxRate?: bigint;   // Added for SuperPaymaster\n    }, options?: TransactionOptions): Promise<Hash> {\n        try {\n            const client = this.bundlerClient ? this.bundlerClient.extend(bundlerActions) : (this.client as any).extend(bundlerActions);\n\n            const ep = this.requireEntryPoint();\n\n            // #169 lesson: don't silently pass the call target as the gas token. V4 needs the real\n            // ERC-20; Super doesn't use a per-tx token (zero address is fine there).\n            const ZERO = '0x0000000000000000000000000000000000000000' as Address;\n            if (params.paymasterType === 'V4' && !params.gasToken) {\n                throw new Error('executeGasless: gasToken is required for a V4 paymaster (the ERC-20 paid for gas) — not the call target.');\n            }\n            const gasToken: Address = params.gasToken ?? ZERO;\n            \n            // 1. Prepare Call Data\n            const callData = encodeFunctionData({\n                abi: [{ name: 'execute', type: 'function', inputs: [{ name: 'dest', type: 'address' }, { name: 'value', type: 'uint256' }, { name: 'func', type: 'bytes' }], outputs: [] }],\n                functionName: 'execute',\n                args: [params.target, params.value, params.data]\n            });\n\n            // 3. Delegate to PaymasterClient for v0.7 Gasless Submission\n            // This ensures we follow the exact same logic as successful demo scripts\n            // We dynamic import to avoid circular dependencies if any\n            const { PaymasterClient: SDKPaymasterClient } = await import('@aastar/paymaster');\n            \n            let verificationGasLimit: bigint | undefined;\n            let paymasterVerificationGasLimit: bigint | undefined;\n            let paymasterPostOpGasLimit: bigint | undefined;\n            let autoEstimate = true;\n\n            if (params.paymasterType === 'Super') {\n                // Apply Smart Buffer Strategy via PaymasterUtils (Same as SuperPaymasterClient)\n                const { tuneGasLimit } = await import('@aastar/paymaster');\n                \n                const est = await SDKPaymasterClient.estimateUserOperationGas(\n                    this.client,\n                    this.client, \n                    this.accountAddress,\n                    ep,\n                    params.paymaster,\n                    gasToken,\n                    this.bundlerClient?.transport?.url || (this.client.transport as any).url || '',\n                    callData,\n                    {\n                        operator: params.operator,\n                        factory: undefined,\n                        factoryData: undefined\n                    }\n                );\n                \n                // Matches SuperPaymasterClient Logic exactly:\n                const bundlerEstimate = est.paymasterVerificationGasLimit || 100000n;\n                // Nominal 60k, Efficiency 0.45\n                paymasterVerificationGasLimit = tuneGasLimit(bundlerEstimate, 60_000n, 0.45);\n                \n                // Safety Pad for VGL (Moderate, not 1M)\n                const SAFETY_PAD = 80000n;\n                verificationGasLimit = est.verificationGasLimit + SAFETY_PAD;\n                \n                // SuperPaymaster postOp calls burnFromWithOpHash (~40k gas) + storage writes.\n                // Add 100k buffer; floor at 200k to prevent OOG. Pure BigInt to avoid Number precision loss.\n                const _postOpBase = est.paymasterPostOpGasLimit + 100_000n;\n                paymasterPostOpGasLimit = _postOpBase > 200_000n ? _postOpBase : 200_000n;\n                \n                autoEstimate = false; // logic handled\n            }\n\n            const txHash = await SDKPaymasterClient.submitGaslessUserOperation(\n                this.client,\n                this.client, // WalletClient acts as signer\n                this.accountAddress,\n                ep,\n                params.paymaster,\n                gasToken,\n                this.bundlerClient?.transport?.url || (this.client.transport as any).url || '',\n                callData,\n                {\n                    operator: params.operator,\n                    autoEstimate, \n                    verificationGasLimit,\n                    paymasterVerificationGasLimit,\n                    paymasterPostOpGasLimit\n                }\n            );\n\n            return txHash;\n        } catch (error: any) {\n            console.error(\"   ❌ executeGasless Error:\", error.message);\n            throw error;\n        }\n    }\n}\n"]}