@aastar/sdk 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/UserClient-KYDCMAIU.js +6 -0
- package/dist/{UserClient-XTHQ2AP3.js.map → UserClient-KYDCMAIU.js.map} +1 -1
- package/dist/UserClient-S6LS3CB6.cjs +15 -0
- package/dist/{UserClient-J3JPDIG7.cjs.map → UserClient-S6LS3CB6.cjs.map} +1 -1
- package/dist/account.cjs +7 -7
- package/dist/account.js +2 -2
- package/dist/admin.cjs +3 -3
- package/dist/admin.js +2 -2
- package/dist/airaccount.cjs +102 -102
- package/dist/airaccount.js +2 -2
- package/dist/channel.cjs +6 -6
- package/dist/channel.js +2 -2
- package/dist/{chunk-CGKPULZX.cjs → chunk-5PH5CSM7.cjs} +16 -16
- package/dist/{chunk-CGKPULZX.cjs.map → chunk-5PH5CSM7.cjs.map} +1 -1
- package/dist/{chunk-EZC7Q3SG.js → chunk-654GQ7G7.js} +3 -3
- package/dist/{chunk-EZC7Q3SG.js.map → chunk-654GQ7G7.js.map} +1 -1
- package/dist/{chunk-W4ENVPZH.cjs → chunk-72JZKARR.cjs} +6 -6
- package/dist/{chunk-W4ENVPZH.cjs.map → chunk-72JZKARR.cjs.map} +1 -1
- package/dist/{chunk-H5EQBNC6.js → chunk-7RVONA2R.js} +8 -8
- package/dist/{chunk-H5EQBNC6.js.map → chunk-7RVONA2R.js.map} +1 -1
- package/dist/{chunk-2GZMRCQW.cjs → chunk-A4ICWCHR.cjs} +5 -5
- package/dist/{chunk-2GZMRCQW.cjs.map → chunk-A4ICWCHR.cjs.map} +1 -1
- package/dist/{chunk-6PJAHZZ2.cjs → chunk-BOVDJSMK.cjs} +26 -26
- package/dist/{chunk-6PJAHZZ2.cjs.map → chunk-BOVDJSMK.cjs.map} +1 -1
- package/dist/{chunk-5G5SB6CP.js → chunk-BYVG7MO7.js} +34 -3
- package/dist/chunk-BYVG7MO7.js.map +1 -0
- package/dist/{chunk-E37CPC2U.cjs → chunk-D667CUUS.cjs} +9 -9
- package/dist/{chunk-E37CPC2U.cjs.map → chunk-D667CUUS.cjs.map} +1 -1
- package/dist/{chunk-PFMCPSS4.js → chunk-DAMWXGKD.js} +3 -3
- package/dist/{chunk-PFMCPSS4.js.map → chunk-DAMWXGKD.js.map} +1 -1
- package/dist/{chunk-XFJSY5LG.cjs → chunk-GDH4DSVM.cjs} +12 -12
- package/dist/{chunk-XFJSY5LG.cjs.map → chunk-GDH4DSVM.cjs.map} +1 -1
- package/dist/{chunk-UULR2KA6.cjs → chunk-HNJBQR5U.cjs} +5 -5
- package/dist/{chunk-UULR2KA6.cjs.map → chunk-HNJBQR5U.cjs.map} +1 -1
- package/dist/{chunk-2DDWYKF2.js → chunk-JMW5AHLC.js} +9 -9
- package/dist/{chunk-2DDWYKF2.js.map → chunk-JMW5AHLC.js.map} +1 -1
- package/dist/{chunk-D23CZFOM.js → chunk-LDARLWS3.js} +3 -3
- package/dist/{chunk-D23CZFOM.js.map → chunk-LDARLWS3.js.map} +1 -1
- package/dist/{chunk-MFBTMF5U.cjs → chunk-MOJJ7QF6.cjs} +39 -2
- package/dist/{chunk-MFBTMF5U.cjs.map → chunk-MOJJ7QF6.cjs.map} +1 -1
- package/dist/{chunk-6I22EW6V.cjs → chunk-NVYVTCHJ.cjs} +11 -11
- package/dist/{chunk-6I22EW6V.cjs.map → chunk-NVYVTCHJ.cjs.map} +1 -1
- package/dist/{chunk-SXLWFZFX.js → chunk-PNBK2CLK.js} +3 -3
- package/dist/{chunk-SXLWFZFX.js.map → chunk-PNBK2CLK.js.map} +1 -1
- package/dist/{chunk-2UDF62XV.js → chunk-PXQDAFXD.js} +6 -6
- package/dist/{chunk-2UDF62XV.js.map → chunk-PXQDAFXD.js.map} +1 -1
- package/dist/{chunk-2WBSYPUY.js → chunk-RZ2M2RVP.js} +3 -3
- package/dist/{chunk-2WBSYPUY.js.map → chunk-RZ2M2RVP.js.map} +1 -1
- package/dist/{chunk-PKYWLTIJ.cjs → chunk-VHY6R2PI.cjs} +32 -32
- package/dist/{chunk-PKYWLTIJ.cjs.map → chunk-VHY6R2PI.cjs.map} +1 -1
- package/dist/{chunk-UMTCWOQV.js → chunk-WC25H5VG.js} +4 -4
- package/dist/{chunk-UMTCWOQV.js.map → chunk-WC25H5VG.js.map} +1 -1
- package/dist/{chunk-TM2LH4ZE.js → chunk-WVJ4LQVB.js} +3 -3
- package/dist/{chunk-TM2LH4ZE.js.map → chunk-WVJ4LQVB.js.map} +1 -1
- package/dist/{chunk-UQMMEDHO.cjs → chunk-WVOJV4Q5.cjs} +4 -4
- package/dist/{chunk-UQMMEDHO.cjs.map → chunk-WVOJV4Q5.cjs.map} +1 -1
- package/dist/{chunk-LAZA3JD7.cjs → chunk-Y5U7URNZ.cjs} +83 -5
- package/dist/chunk-Y5U7URNZ.cjs.map +1 -0
- package/dist/{chunk-V65JXHM6.js → chunk-YUFQIYLR.js} +83 -5
- package/dist/chunk-YUFQIYLR.js.map +1 -0
- package/dist/core.cjs +226 -202
- package/dist/core.d.cts +101 -1
- package/dist/core.d.ts +101 -1
- package/dist/core.js +1 -1
- package/dist/dapp.cjs +5 -5
- package/dist/dapp.js +2 -2
- package/dist/enduser.cjs +6 -6
- package/dist/enduser.js +3 -3
- package/dist/identity.cjs +5 -5
- package/dist/identity.js +2 -2
- package/dist/index.cjs +327 -303
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +15 -15
- package/dist/kms.cjs +102 -102
- package/dist/kms.d.cts +41 -1
- package/dist/kms.d.ts +41 -1
- package/dist/kms.js +2 -2
- package/dist/operator.cjs +6 -6
- package/dist/operator.js +2 -2
- package/dist/paymaster.cjs +15 -15
- package/dist/paymaster.js +2 -2
- package/dist/src-5URXSFKD.js +5 -0
- package/dist/src-5URXSFKD.js.map +1 -0
- package/dist/{src-HECKBVR2.cjs → src-72GWEAPA.cjs} +17 -17
- package/dist/src-72GWEAPA.cjs.map +1 -0
- package/dist/{src-4Q2WFLO2.cjs → src-N72HAQXS.cjs} +228 -204
- package/dist/src-N72HAQXS.cjs.map +1 -0
- package/dist/{src-KLP4Q2Y3.js → src-UNS5B7FX.js} +4 -4
- package/dist/src-UNS5B7FX.js.map +1 -0
- package/dist/tokens.cjs +3 -3
- package/dist/tokens.js +2 -2
- package/dist/x402.cjs +25 -25
- package/dist/x402.js +2 -2
- package/package.json +1 -1
- package/dist/UserClient-J3JPDIG7.cjs +0 -15
- package/dist/UserClient-XTHQ2AP3.js +0 -6
- package/dist/chunk-5G5SB6CP.js.map +0 -1
- package/dist/chunk-LAZA3JD7.cjs.map +0 -1
- package/dist/chunk-V65JXHM6.js.map +0 -1
- package/dist/src-2P72LYVT.js +0 -5
- package/dist/src-2P72LYVT.js.map +0 -1
- package/dist/src-4Q2WFLO2.cjs.map +0 -1
- package/dist/src-HECKBVR2.cjs.map +0 -1
- package/dist/src-KLP4Q2Y3.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../channel/src/voucher.ts","../../channel/src/ChannelClient.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../../channel/src/voucher.ts","../../channel/src/ChannelClient.ts"],"names":[],"mappings":"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","file":"chunk-PNBK2CLK.js","sourcesContent":["import { type Address, type Hex, type WalletClient } from 'viem';\n\nexport const VOUCHER_TYPES = {\n Voucher: [\n { name: 'channelId', type: 'bytes32' },\n { name: 'cumulativeAmount', type: 'uint128' },\n ],\n} as const;\n\nexport function getVoucherDomain(chainId: number, verifyingContract: Address) {\n return {\n name: 'MicroPaymentChannel',\n version: '1.0.0',\n chainId,\n verifyingContract,\n };\n}\n\nexport async function signVoucher(\n walletClient: WalletClient,\n params: {\n channelId: Hex;\n cumulativeAmount: bigint;\n chainId: number;\n verifyingContract: Address;\n }\n): Promise<Hex> {\n const domain = getVoucherDomain(params.chainId, params.verifyingContract);\n\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n\n return walletClient.signTypedData({\n account,\n domain,\n types: VOUCHER_TYPES,\n primaryType: 'Voucher',\n message: {\n channelId: params.channelId,\n cumulativeAmount: params.cumulativeAmount,\n },\n });\n}\n","import { type Address, type Hex, type Hash, type PublicClient, type WalletClient } from 'viem';\nimport { channelActions, type ChannelState } from '@aastar/core';\nimport type { SignedVoucher, ChannelConfig } from './types.js';\nimport { signVoucher } from './voucher.js';\n\nexport type ChannelClientConfig = {\n publicClient: PublicClient;\n walletClient: WalletClient;\n channelAddress: Address;\n chainId: number;\n};\n\nexport class ChannelClient {\n private readonly readActions;\n private readonly writeActions;\n private readonly config: ChannelClientConfig;\n\n constructor(config: ChannelClientConfig) {\n this.config = config;\n // Separate clients: publicClient for reads (no account required),\n // walletClient for writes. Unlike X402Client which is always write-first,\n // ChannelClient exposes read-heavy helpers (getChannel, verifyVoucher) that\n // callers may invoke without a wallet configured.\n this.readActions = channelActions(config.channelAddress)(config.publicClient);\n this.writeActions = channelActions(config.channelAddress)(config.walletClient);\n }\n\n async openChannel(channelConfig: ChannelConfig): Promise<Hash> {\n return this.writeActions.openChannel({\n payee: channelConfig.payee,\n token: channelConfig.token,\n deposit: channelConfig.deposit,\n salt: channelConfig.salt,\n authorizedSigner: channelConfig.authorizedSigner,\n account: this.config.walletClient.account!,\n });\n }\n\n async signVoucherOffline(channelId: Hex, cumulativeAmount: bigint): Promise<SignedVoucher> {\n const signature = await signVoucher(this.config.walletClient, {\n channelId,\n cumulativeAmount,\n chainId: this.config.chainId,\n verifyingContract: this.config.channelAddress,\n });\n\n return { channelId, cumulativeAmount, signature };\n }\n\n async settleChannel(voucher: SignedVoucher): Promise<Hash> {\n return this.writeActions.settleChannel({\n channelId: voucher.channelId,\n cumulativeAmount: voucher.cumulativeAmount,\n signature: voucher.signature,\n account: this.config.walletClient.account!,\n });\n }\n\n async closeChannel(voucher: SignedVoucher): Promise<Hash> {\n return this.writeActions.closeChannel({\n channelId: voucher.channelId,\n cumulativeAmount: voucher.cumulativeAmount,\n signature: voucher.signature,\n account: this.config.walletClient.account!,\n });\n }\n\n async topUpChannel(channelId: Hex, amount: bigint): Promise<Hash> {\n return this.writeActions.topUpChannel({\n channelId,\n amount,\n account: this.config.walletClient.account!,\n });\n }\n\n async requestClose(channelId: Hex): Promise<Hash> {\n return this.writeActions.requestCloseChannel({\n channelId,\n account: this.config.walletClient.account!,\n });\n }\n\n async withdraw(channelId: Hex): Promise<Hash> {\n return this.writeActions.withdrawChannel({\n channelId,\n account: this.config.walletClient.account!,\n });\n }\n\n async getChannelState(channelId: Hex): Promise<ChannelState> {\n return this.readActions.getChannel({ channelId });\n }\n\n async getCloseTimeout(): Promise<bigint> {\n return this.readActions.CLOSE_TIMEOUT();\n }\n\n async getVersion(): Promise<string> {\n return this.readActions.version();\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseClient, entryPointActions, accountActions, sbtActions, tokenActions, stakingActions, registryActions } from './chunk-
|
|
1
|
+
import { BaseClient, entryPointActions, accountActions, sbtActions, tokenActions, stakingActions, registryActions } from './chunk-BYVG7MO7.js';
|
|
2
2
|
import { encodeFunctionData } from 'viem';
|
|
3
3
|
import { bundlerActions } from 'viem/account-abstraction';
|
|
4
4
|
|
|
@@ -29,7 +29,7 @@ var UserClient = class extends BaseClient {
|
|
|
29
29
|
* @returns Object containing the deployed account address and transaction hash
|
|
30
30
|
*/
|
|
31
31
|
static async deployAccount(client, params) {
|
|
32
|
-
const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./src-
|
|
32
|
+
const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./src-5URXSFKD.js');
|
|
33
33
|
let abi = params.customAbi || (SimpleAccountFactoryABI?.abi || SimpleAccountFactoryABI);
|
|
34
34
|
const factoryAddr = params.factoryAddress || "0x9406Cc6185a346906296840746125a0E44976454";
|
|
35
35
|
const salt = params.salt || 0n;
|
|
@@ -356,13 +356,13 @@ var UserClient = class extends BaseClient {
|
|
|
356
356
|
functionName: "execute",
|
|
357
357
|
args: [params.target, params.value, params.data]
|
|
358
358
|
});
|
|
359
|
-
const { PaymasterClient: SDKPaymasterClient } = await import('./src-
|
|
359
|
+
const { PaymasterClient: SDKPaymasterClient } = await import('./src-UNS5B7FX.js');
|
|
360
360
|
let verificationGasLimit;
|
|
361
361
|
let paymasterVerificationGasLimit;
|
|
362
362
|
let paymasterPostOpGasLimit;
|
|
363
363
|
let autoEstimate = true;
|
|
364
364
|
if (params.paymasterType === "Super") {
|
|
365
|
-
const { tuneGasLimit } = await import('./src-
|
|
365
|
+
const { tuneGasLimit } = await import('./src-UNS5B7FX.js');
|
|
366
366
|
const est = await SDKPaymasterClient.estimateUserOperationGas(
|
|
367
367
|
this.client,
|
|
368
368
|
this.client,
|
|
@@ -415,5 +415,5 @@ var UserClient = class extends BaseClient {
|
|
|
415
415
|
};
|
|
416
416
|
|
|
417
417
|
export { UserClient };
|
|
418
|
-
//# sourceMappingURL=chunk-
|
|
419
|
-
//# sourceMappingURL=chunk-
|
|
418
|
+
//# sourceMappingURL=chunk-PXQDAFXD.js.map
|
|
419
|
+
//# sourceMappingURL=chunk-PXQDAFXD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../enduser/src/UserClient.ts"],"names":["encodeFunctionData"],"mappings":"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","file":"chunk-2UDF62XV.js","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 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 // 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 params.target, // placeholder\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 params.target, // placeholder for token if V4\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"]}
|
|
1
|
+
{"version":3,"sources":["../../enduser/src/UserClient.ts"],"names":["encodeFunctionData"],"mappings":"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","file":"chunk-PXQDAFXD.js","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 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 // 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 params.target, // placeholder\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 params.target, // placeholder for token if V4\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"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MySBTABI, ReputationSystemABI } from './chunk-
|
|
1
|
+
import { MySBTABI, ReputationSystemABI } from './chunk-BYVG7MO7.js';
|
|
2
2
|
import { parseAbi } from 'viem';
|
|
3
3
|
|
|
4
4
|
// ../identity/src/mysbt.ts
|
|
@@ -107,5 +107,5 @@ var ReputationClient = class {
|
|
|
107
107
|
};
|
|
108
108
|
|
|
109
109
|
export { ReputationClient, checkMySBT, getMySBTId };
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
110
|
+
//# sourceMappingURL=chunk-RZ2M2RVP.js.map
|
|
111
|
+
//# sourceMappingURL=chunk-RZ2M2RVP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../identity/src/mysbt.ts","../../identity/src/index.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../../identity/src/mysbt.ts","../../identity/src/index.ts"],"names":[],"mappings":"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","file":"chunk-RZ2M2RVP.js","sourcesContent":["\nimport { type Address, type PublicClient } from 'viem';\nimport { MySBTABI } from '@aastar/core';\n\n/**\n * Check if user holds MySBT token (identity verification).\n *\n * Does NOT swallow read errors: `balanceOf` returns 0 for a non-holder, so any\n * thrown error is an RPC/transport/contract failure — masking it as\n * `{ hasSBT: false }` would turn a transient RPC blip into a false \"no SBT\" and\n * wrongly fail eligibility checks. The error propagates so the caller can retry\n * or surface \"couldn't determine\" rather than \"no SBT\".\n */\nexport async function checkMySBT(\n client: any,\n sbtAddress: Address,\n user: Address\n): Promise<{ hasSBT: boolean; balance: bigint }> {\n const balance = await client.readContract({\n address: sbtAddress,\n abi: MySBTABI,\n functionName: 'balanceOf',\n args: [user]\n }) as bigint;\n\n return { hasSBT: balance > 0n, balance };\n}\n\n/**\n * Fetch MySBT token ID for a specific user.\n * MySBT exposes `getUserSBT(address) -> uint256` (alias of the `userToSBT`\n * mapping), which returns the user's tokenId or 0 when they hold no SBT.\n *\n * Returns the tokenId, or `null` ONLY for the genuine \"no SBT\" sentinel (id == 0).\n * Read errors are NOT swallowed (see {@link checkMySBT}): a transient RPC failure\n * must not be reported as \"no SBT\" (a false negative for eligibility). The error\n * propagates to the caller.\n */\nexport async function getMySBTId(\n client: any,\n sbtAddress: Address,\n user: Address\n): Promise<bigint | null> {\n const tokenId = await client.readContract({\n address: sbtAddress,\n abi: MySBTABI,\n functionName: 'getUserSBT',\n args: [user]\n }) as bigint;\n\n // tokenId 0 is the contract's sentinel for \"no SBT\" (ids start at 1).\n return tokenId > 0n ? tokenId : null;\n}\n","\nexport * from './mysbt.js';\n\nimport { createAAStarPublicClient, ReputationSystemABI, type PublicClient, type WalletClient } from '@aastar/core';\nimport { type Address, type Hash, parseAbi } from 'viem';\n\nexport class ReputationClient {\n /** @internal */\n private walletClient?: WalletClient;\n\n /**\n * Initialize ReputationClient\n * @param client The public client for queries\n * @param reputationAddress The address of the reputation system contract\n * @param walletClient Optional wallet client for write operations\n */\n constructor(\n private client: PublicClient, \n private reputationAddress: Address,\n walletClient?: WalletClient\n ) {\n this.walletClient = walletClient;\n }\n\n /**\n * Compute reputation score for a user\n */\n async computeScore(user: Address, communities: Address[], ruleIds: `0x${string}`[][], activities: bigint[][]): Promise<bigint> {\n return this.client.readContract({\n address: this.reputationAddress,\n abi: ReputationSystemABI as any,\n functionName: 'computeScore',\n args: [user, communities, ruleIds, activities]\n }) as Promise<bigint>;\n }\n\n /**\n * Get global reputation score for a user\n * @param user User address\n * @returns Reputation score\n */\n async getGlobalReputation(user: Address): Promise<number> {\n // Try to read score, if fails (e.g. invalid contract), return 0\n try {\n const score = await this.computeScore(user, [], [], []);\n return Number(score);\n } catch (e) {\n console.warn('Failed to read reputation from contract, defaulting to 0');\n return 0;\n }\n }\n\n /**\n * Get credit limit based on reputation\n * @param user User address\n * @returns Credit limit in wei (Mock logic closely tied to Reputation)\n */\n async getCreditLimit(user: Address): Promise<bigint> {\n const reputation = await this.getGlobalReputation(user);\n \n // Dynamic Credit Limit Logic:\n // Base: 0\n // Score > 50: +0.01 ETH\n // Score > 100: +0.05 ETH\n let limit = 0n;\n if (reputation > 50) limit += 10000000000000000n; // 0.01 ETH\n if (reputation > 100) limit += 40000000000000000n; // +0.04 -> 0.05 ETH\n\n return limit;\n }\n\n /**\n * Get reputation score breakdown\n * @param user User address\n * @returns Detailed reputation breakdown (Mock implementation awaiting contract V4)\n */\n async getReputationBreakdown(user: Address): Promise<{\n baseScore: number;\n stakingBonus: number;\n activityBonus: number;\n penaltyDeduction: number;\n total: number;\n }> {\n const total = await this.getGlobalReputation(user);\n \n // Heuristic breakdown\n return {\n baseScore: Math.floor(total * 0.5),\n stakingBonus: Math.floor(total * 0.3),\n activityBonus: Math.floor(total * 0.2),\n penaltyDeduction: 0,\n total\n };\n }\n\n /**\n * Submit reputation proof (off-chain data to on-chain)\n * @param params Proof parameters\n * @returns Transaction hash\n */\n async submitReputationProof(params: {\n proofType: 'github' | 'twitter' | 'on-chain-activity';\n proofData: string;\n signature: Hash;\n }): Promise<Hash> {\n if (!this.walletClient || !this.walletClient.account) {\n throw new Error(\"Wallet client required to submit proofs\");\n }\n\n // Using a generic 'submitProof' signature for now\n // In reality this would target the ReputationOracle or similar\n return this.walletClient.writeContract({\n address: this.reputationAddress,\n abi: parseAbi(['function submitProof(string,bytes32)']),\n functionName: 'submitProof',\n args: [params.proofData, params.signature],\n chain: this.walletClient.chain,\n account: this.walletClient.account\n });\n }\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkMOJJ7QF6_cjs = require('./chunk-MOJJ7QF6.cjs');
|
|
4
4
|
var viem = require('viem');
|
|
5
5
|
|
|
6
|
-
var PaymasterOperatorClient = class extends
|
|
6
|
+
var PaymasterOperatorClient = class extends chunkMOJJ7QF6_cjs.BaseClient {
|
|
7
7
|
superPaymasterAddress;
|
|
8
8
|
tokenAddress;
|
|
9
9
|
ethUsdPriceFeed;
|
|
@@ -35,8 +35,8 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
35
35
|
const registryAddr = this.requireRegistry();
|
|
36
36
|
const gTokenAddr = this.requireGToken();
|
|
37
37
|
const gTokenStakingAddr = this.requireGTokenStaking();
|
|
38
|
-
const registry =
|
|
39
|
-
const gToken =
|
|
38
|
+
const registry = chunkMOJJ7QF6_cjs.registryActions(registryAddr);
|
|
39
|
+
const gToken = chunkMOJJ7QF6_cjs.tokenActions();
|
|
40
40
|
const publicClient = this.getStartPublicClient();
|
|
41
41
|
const ROLE_COMMUNITY = await registry(publicClient).ROLE_COMMUNITY();
|
|
42
42
|
const hasCommunity = await registry(publicClient).hasRole({
|
|
@@ -106,9 +106,9 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
106
106
|
const gTokenAddr = this.requireGToken();
|
|
107
107
|
const gTokenStakingAddr = this.requireGTokenStaking();
|
|
108
108
|
const factoryAddr = this.requirePaymasterFactory();
|
|
109
|
-
const registry =
|
|
110
|
-
const gToken =
|
|
111
|
-
const factory =
|
|
109
|
+
const registry = chunkMOJJ7QF6_cjs.registryActions(registryAddr);
|
|
110
|
+
const gToken = chunkMOJJ7QF6_cjs.tokenActions();
|
|
111
|
+
const factory = chunkMOJJ7QF6_cjs.paymasterFactoryActions(factoryAddr);
|
|
112
112
|
const publicClient = this.getStartPublicClient();
|
|
113
113
|
const account = options?.account || this.client.account || this.getAddress();
|
|
114
114
|
const accountAddr = typeof account === "string" ? account : account.address;
|
|
@@ -135,7 +135,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
135
135
|
});
|
|
136
136
|
const { encodeFunctionData } = await import('viem');
|
|
137
137
|
const initData = encodeFunctionData({
|
|
138
|
-
abi:
|
|
138
|
+
abi: chunkMOJJ7QF6_cjs.PaymasterABI,
|
|
139
139
|
functionName: "initialize",
|
|
140
140
|
args: [
|
|
141
141
|
this.requireEntryPoint(),
|
|
@@ -215,10 +215,10 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
215
215
|
*/
|
|
216
216
|
async depositCollateral(amount, options) {
|
|
217
217
|
try {
|
|
218
|
-
const pm =
|
|
218
|
+
const pm = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
219
219
|
const publicClient = this.getStartPublicClient();
|
|
220
220
|
const depositToken = await pm(publicClient).APNTS_TOKEN();
|
|
221
|
-
const token =
|
|
221
|
+
const token = chunkMOJJ7QF6_cjs.tokenActions();
|
|
222
222
|
const allowance = await token(publicClient).allowance({
|
|
223
223
|
token: depositToken,
|
|
224
224
|
owner: this.getAddress(),
|
|
@@ -248,7 +248,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
248
248
|
*/
|
|
249
249
|
async configureOperator(xPNTsToken, treasury, options) {
|
|
250
250
|
try {
|
|
251
|
-
const sp =
|
|
251
|
+
const sp = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
252
252
|
const publicClient = this.getStartPublicClient();
|
|
253
253
|
const currentConfig = await sp(publicClient).operators({ operator: this.getAddress() });
|
|
254
254
|
const currentToken = currentConfig.xPNTsToken;
|
|
@@ -264,7 +264,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
264
264
|
}
|
|
265
265
|
async withdrawCollateral(to, amount, options) {
|
|
266
266
|
try {
|
|
267
|
-
const sp =
|
|
267
|
+
const sp = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
268
268
|
return await sp(this.client).withdrawTo({
|
|
269
269
|
to,
|
|
270
270
|
amount,
|
|
@@ -276,7 +276,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
276
276
|
}
|
|
277
277
|
async isOperator(operator) {
|
|
278
278
|
try {
|
|
279
|
-
const sp =
|
|
279
|
+
const sp = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
280
280
|
const config = await sp(this.getStartPublicClient()).operators({ operator });
|
|
281
281
|
return config.isConfigured;
|
|
282
282
|
} catch (error) {
|
|
@@ -286,7 +286,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
286
286
|
async getOperatorDetails(operator) {
|
|
287
287
|
try {
|
|
288
288
|
const target = operator || this.getAddress();
|
|
289
|
-
const sp =
|
|
289
|
+
const sp = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
290
290
|
return await sp(this.getStartPublicClient()).operators({ operator: target });
|
|
291
291
|
} catch (error) {
|
|
292
292
|
throw error;
|
|
@@ -294,7 +294,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
294
294
|
}
|
|
295
295
|
async initiateExit(options) {
|
|
296
296
|
try {
|
|
297
|
-
const sp =
|
|
297
|
+
const sp = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
298
298
|
return await sp(this.client).unlockStake({
|
|
299
299
|
account: options?.account
|
|
300
300
|
});
|
|
@@ -304,7 +304,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
304
304
|
}
|
|
305
305
|
async withdrawStake(to, options) {
|
|
306
306
|
try {
|
|
307
|
-
const sp =
|
|
307
|
+
const sp = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
308
308
|
return await sp(this.client).withdrawStake({
|
|
309
309
|
to,
|
|
310
310
|
account: options?.account
|
|
@@ -318,7 +318,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
318
318
|
// ========================================
|
|
319
319
|
async addGasToken(token, price, options) {
|
|
320
320
|
try {
|
|
321
|
-
const pm =
|
|
321
|
+
const pm = chunkMOJJ7QF6_cjs.paymasterActions(this.superPaymasterAddress);
|
|
322
322
|
return await pm(this.client).setTokenPrice({
|
|
323
323
|
token,
|
|
324
324
|
price,
|
|
@@ -330,7 +330,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
330
330
|
}
|
|
331
331
|
async getTokenPrice(token) {
|
|
332
332
|
try {
|
|
333
|
-
const pm =
|
|
333
|
+
const pm = chunkMOJJ7QF6_cjs.paymasterActions(this.superPaymasterAddress);
|
|
334
334
|
return await pm(this.getStartPublicClient()).tokenPrices({ token });
|
|
335
335
|
} catch (error) {
|
|
336
336
|
throw error;
|
|
@@ -338,7 +338,7 @@ var PaymasterOperatorClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
338
338
|
}
|
|
339
339
|
async setupPaymasterDeposit(params, options) {
|
|
340
340
|
try {
|
|
341
|
-
const pm =
|
|
341
|
+
const pm = chunkMOJJ7QF6_cjs.paymasterActions(params.paymaster);
|
|
342
342
|
return await pm(this.client).depositFor({
|
|
343
343
|
user: params.user,
|
|
344
344
|
token: params.token,
|
|
@@ -363,7 +363,7 @@ var ProposalState = /* @__PURE__ */ ((ProposalState2) => {
|
|
|
363
363
|
ProposalState2[ProposalState2["Executed"] = 7] = "Executed";
|
|
364
364
|
return ProposalState2;
|
|
365
365
|
})(ProposalState || {});
|
|
366
|
-
var ProtocolClient = class extends
|
|
366
|
+
var ProtocolClient = class extends chunkMOJJ7QF6_cjs.BaseClient {
|
|
367
367
|
dvtValidatorAddress;
|
|
368
368
|
blsAggregatorAddress;
|
|
369
369
|
superPaymasterAddress;
|
|
@@ -381,7 +381,7 @@ var ProtocolClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
381
381
|
*/
|
|
382
382
|
async createProposal(target, calldata, description, options) {
|
|
383
383
|
try {
|
|
384
|
-
const dvt =
|
|
384
|
+
const dvt = chunkMOJJ7QF6_cjs.dvtActions(this.dvtValidatorAddress)(this.client);
|
|
385
385
|
return await dvt.createSlashProposal({
|
|
386
386
|
operator: target,
|
|
387
387
|
level: 1,
|
|
@@ -395,7 +395,7 @@ var ProtocolClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
395
395
|
}
|
|
396
396
|
async signProposal(proposalId, signature = "0x", options) {
|
|
397
397
|
try {
|
|
398
|
-
const dvt =
|
|
398
|
+
const dvt = chunkMOJJ7QF6_cjs.dvtActions(this.dvtValidatorAddress)(this.client);
|
|
399
399
|
return await dvt.signSlashProposal({
|
|
400
400
|
proposalId,
|
|
401
401
|
signature,
|
|
@@ -411,7 +411,7 @@ var ProtocolClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
411
411
|
async executeWithProof(proposalId, signatures, options) {
|
|
412
412
|
try {
|
|
413
413
|
const proof = "0x";
|
|
414
|
-
const dvt =
|
|
414
|
+
const dvt = chunkMOJJ7QF6_cjs.dvtActions(this.dvtValidatorAddress)(this.client);
|
|
415
415
|
return await dvt.executeSlashWithProof({
|
|
416
416
|
proposalId,
|
|
417
417
|
repUsers: [],
|
|
@@ -433,7 +433,7 @@ var ProtocolClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
433
433
|
if (!this.blsAggregatorAddress) {
|
|
434
434
|
throw new Error("BLS Aggregator address required for this client");
|
|
435
435
|
}
|
|
436
|
-
const agg =
|
|
436
|
+
const agg = chunkMOJJ7QF6_cjs.aggregatorActions(this.blsAggregatorAddress)(this.client);
|
|
437
437
|
return await agg.registerBLSPublicKey({
|
|
438
438
|
validator: this.getAddress(),
|
|
439
439
|
publicKey,
|
|
@@ -451,7 +451,7 @@ var ProtocolClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
451
451
|
if (!this.superPaymasterAddress) {
|
|
452
452
|
throw new Error("SuperPaymaster address required for this client");
|
|
453
453
|
}
|
|
454
|
-
const sp =
|
|
454
|
+
const sp = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
455
455
|
return await sp(this.client).setProtocolFee({
|
|
456
456
|
newFeeBPS: bps,
|
|
457
457
|
account: options?.account
|
|
@@ -465,7 +465,7 @@ var ProtocolClient = class extends chunkMFBTMF5U_cjs.BaseClient {
|
|
|
465
465
|
if (!this.superPaymasterAddress) {
|
|
466
466
|
throw new Error("SuperPaymaster address required for this client");
|
|
467
467
|
}
|
|
468
|
-
const sp =
|
|
468
|
+
const sp = chunkMOJJ7QF6_cjs.superPaymasterActions(this.superPaymasterAddress);
|
|
469
469
|
return await sp(this.client).setTreasury({
|
|
470
470
|
treasury,
|
|
471
471
|
account: options?.account
|
|
@@ -511,7 +511,7 @@ var OperatorLifecycle = class extends PaymasterOperatorClient {
|
|
|
511
511
|
depositAmount: params.depositAmount
|
|
512
512
|
}, options);
|
|
513
513
|
hashes.push(h);
|
|
514
|
-
const factory = await import('./src-
|
|
514
|
+
const factory = await import('./src-N72HAQXS.cjs').then((m) => m.xPNTsFactoryActions(this.xpntsFactory)(this.getStartPublicClient()));
|
|
515
515
|
const token = await factory.getTokenAddress({ community: this.getAddress() });
|
|
516
516
|
if (token && token !== "0x0000000000000000000000000000000000000000") {
|
|
517
517
|
const hConfig = await this.configureOperator(
|
|
@@ -559,8 +559,8 @@ var OperatorLifecycle = class extends PaymasterOperatorClient {
|
|
|
559
559
|
hashes.push(hCol);
|
|
560
560
|
}
|
|
561
561
|
const client = this.getStartPublicClient();
|
|
562
|
-
const registry =
|
|
563
|
-
const registryWriter =
|
|
562
|
+
const registry = chunkMOJJ7QF6_cjs.registryActions(this.registryAddress);
|
|
563
|
+
const registryWriter = chunkMOJJ7QF6_cjs.registryActions(this.registryAddress)(this.client);
|
|
564
564
|
const ROLE_PAYMASTER_SUPER = await registry(client).ROLE_PAYMASTER_SUPER();
|
|
565
565
|
const hasRole = await registry(client).hasRole({ user: this.getAddress(), roleId: ROLE_PAYMASTER_SUPER });
|
|
566
566
|
if (hasRole) {
|
|
@@ -572,7 +572,7 @@ var OperatorLifecycle = class extends PaymasterOperatorClient {
|
|
|
572
572
|
// Helper: Get GToken Balance
|
|
573
573
|
async getTokenBalance() {
|
|
574
574
|
if (!this.tokenAddress) return 0n;
|
|
575
|
-
const token =
|
|
575
|
+
const token = chunkMOJJ7QF6_cjs.tokenActions()(this.getStartPublicClient());
|
|
576
576
|
return await token.balanceOf({ token: this.tokenAddress, account: this.getAddress() });
|
|
577
577
|
}
|
|
578
578
|
};
|
|
@@ -581,5 +581,5 @@ exports.OperatorLifecycle = OperatorLifecycle;
|
|
|
581
581
|
exports.PaymasterOperatorClient = PaymasterOperatorClient;
|
|
582
582
|
exports.ProposalState = ProposalState;
|
|
583
583
|
exports.ProtocolClient = ProtocolClient;
|
|
584
|
-
//# sourceMappingURL=chunk-
|
|
585
|
-
//# sourceMappingURL=chunk-
|
|
584
|
+
//# sourceMappingURL=chunk-VHY6R2PI.cjs.map
|
|
585
|
+
//# sourceMappingURL=chunk-VHY6R2PI.cjs.map
|