@aastar/sdk 0.20.3 → 0.20.5
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/README.md +33 -25
- package/dist/UserClient-UYIHF6UJ.js +6 -0
- package/dist/{UserClient-JMNNZT4P.js.map → UserClient-UYIHF6UJ.js.map} +1 -1
- package/dist/account.js +3 -3
- package/dist/admin.js +3 -3
- package/dist/airaccount.js +1 -4497
- package/dist/airaccount.js.map +1 -1
- package/dist/channel.js +3 -3
- package/dist/{chunk-R2RATIK2.js → chunk-42KVVOOU.js} +9 -9
- package/dist/{chunk-R2RATIK2.js.map → chunk-42KVVOOU.js.map} +1 -1
- package/dist/{chunk-QNYP7RPI.js → chunk-6UHVUGDT.js} +3 -3
- package/dist/{chunk-QNYP7RPI.js.map → chunk-6UHVUGDT.js.map} +1 -1
- package/dist/{chunk-YSDWB6DO.js → chunk-FBDMID2J.js} +3 -3
- package/dist/{chunk-YSDWB6DO.js.map → chunk-FBDMID2J.js.map} +1 -1
- package/dist/{chunk-LNICTATJ.js → chunk-FIS3RUGL.js} +6 -6
- package/dist/{chunk-LNICTATJ.js.map → chunk-FIS3RUGL.js.map} +1 -1
- package/dist/{chunk-O454V5ML.js → chunk-HNTLDUL7.js} +3 -3
- package/dist/{chunk-O454V5ML.js.map → chunk-HNTLDUL7.js.map} +1 -1
- package/dist/{chunk-NAPMVAVJ.js → chunk-I3VRFZA4.js} +3 -3
- package/dist/{chunk-NAPMVAVJ.js.map → chunk-I3VRFZA4.js.map} +1 -1
- package/dist/{chunk-ZJLIKMCA.js → chunk-NRH56SAJ.js} +13 -3
- package/dist/chunk-NRH56SAJ.js.map +1 -0
- package/dist/{chunk-M5ORP2PM.js → chunk-QJT4IOIS.js} +8 -8
- package/dist/{chunk-M5ORP2PM.js.map → chunk-QJT4IOIS.js.map} +1 -1
- package/dist/{chunk-TBDMSJVL.js → chunk-TIH7D4FQ.js} +12 -12
- package/dist/{chunk-TBDMSJVL.js.map → chunk-TIH7D4FQ.js.map} +1 -1
- package/dist/{chunk-KL6SCEIU.js → chunk-VYU6P7HB.js} +4 -4
- package/dist/{chunk-KL6SCEIU.js.map → chunk-VYU6P7HB.js.map} +1 -1
- package/dist/chunk-WPSWFZKF.js +4499 -0
- package/dist/chunk-WPSWFZKF.js.map +1 -0
- package/dist/{chunk-5TDDS3T5.js → chunk-ZFIKBDBT.js} +3 -3
- package/dist/{chunk-5TDDS3T5.js.map → chunk-ZFIKBDBT.js.map} +1 -1
- package/dist/{chunk-Y3KP7R2Y.js → chunk-ZGOEADCO.js} +3 -3
- package/dist/{chunk-Y3KP7R2Y.js.map → chunk-ZGOEADCO.js.map} +1 -1
- package/dist/{contract-addresses-VLAHHXOO.js → contract-addresses-ADEWLDHE.js} +3 -3
- package/dist/{contract-addresses-VLAHHXOO.js.map → contract-addresses-ADEWLDHE.js.map} +1 -1
- package/dist/core.js +2 -2
- package/dist/dapp.js +3 -3
- package/dist/{dist-WMYQOYRO.js → dist-GVWCRI4F.js} +5 -5
- package/dist/{dist-WMYQOYRO.js.map → dist-GVWCRI4F.js.map} +1 -1
- package/dist/enduser.js +4 -4
- package/dist/identity.js +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +22 -22
- package/dist/index.js.map +1 -1
- package/dist/{index.node-GNYPFVZQ.js → index.node-KIKM4EG6.js} +4 -4
- package/dist/{index.node-GNYPFVZQ.js.map → index.node-KIKM4EG6.js.map} +1 -1
- package/dist/kms.d.ts +2 -0
- package/dist/kms.js +5 -0
- package/dist/kms.js.map +1 -0
- package/dist/operator.js +3 -3
- package/dist/paymaster.js +3 -3
- package/dist/tokens.js +3 -3
- package/dist/x402.js +3 -3
- package/package.json +20 -16
- package/LICENSE +0 -180
- package/dist/UserClient-JMNNZT4P.js +0 -6
- package/dist/chunk-ZJLIKMCA.js.map +0 -1
package/dist/channel.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { ChannelClient, VOUCHER_TYPES, getVoucherDomain, signVoucher } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
1
|
+
export { ChannelClient, VOUCHER_TYPES, getVoucherDomain, signVoucher } from './chunk-ZGOEADCO.js';
|
|
2
|
+
import './chunk-TIH7D4FQ.js';
|
|
3
|
+
import './chunk-NRH56SAJ.js';
|
|
4
4
|
import './chunk-PZ5AY32C.js';
|
|
5
5
|
//# sourceMappingURL=channel.js.map
|
|
6
6
|
//# sourceMappingURL=channel.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseClient, xPNTsFactoryActions, registryActions, tokenActions, sbtActions, reputationActions } from './chunk-
|
|
1
|
+
import { BaseClient, xPNTsFactoryActions, registryActions, tokenActions, sbtActions, reputationActions } from './chunk-TIH7D4FQ.js';
|
|
2
2
|
import { parseEther, encodeAbiParameters, parseAbiParameters } from 'viem';
|
|
3
3
|
|
|
4
4
|
var CommunityClient = class extends BaseClient {
|
|
@@ -306,7 +306,7 @@ var UserLifecycle = class extends BaseClient {
|
|
|
306
306
|
async onboard(community, stakeAmount = parseEther("0.4")) {
|
|
307
307
|
try {
|
|
308
308
|
const registry = registryActions(this.registryAddress)(this.getStartPublicClient());
|
|
309
|
-
const userClient = await import('./UserClient-
|
|
309
|
+
const userClient = await import('./UserClient-UYIHF6UJ.js').then((m) => new m.UserClient({
|
|
310
310
|
...this.config,
|
|
311
311
|
accountAddress: this.accountAddress,
|
|
312
312
|
registryAddress: this.registryAddress,
|
|
@@ -350,7 +350,7 @@ var UserLifecycle = class extends BaseClient {
|
|
|
350
350
|
if (!this.gaslessConfig) {
|
|
351
351
|
throw new Error("Gasless configuration not enabled. Call enableGasless() first.");
|
|
352
352
|
}
|
|
353
|
-
const userClient = await import('./UserClient-
|
|
353
|
+
const userClient = await import('./UserClient-UYIHF6UJ.js').then((m) => new m.UserClient({
|
|
354
354
|
...this.config,
|
|
355
355
|
accountAddress: this.accountAddress,
|
|
356
356
|
// Pass minimal config needed for execution
|
|
@@ -370,7 +370,7 @@ var UserLifecycle = class extends BaseClient {
|
|
|
370
370
|
});
|
|
371
371
|
}
|
|
372
372
|
async claimSBT(roleId, options) {
|
|
373
|
-
const userClient = await import('./UserClient-
|
|
373
|
+
const userClient = await import('./UserClient-UYIHF6UJ.js').then((m) => new m.UserClient({
|
|
374
374
|
...this.config,
|
|
375
375
|
accountAddress: this.accountAddress,
|
|
376
376
|
sbtAddress: this.sbtAddress
|
|
@@ -402,7 +402,7 @@ var UserLifecycle = class extends BaseClient {
|
|
|
402
402
|
// 4. Exit Phase (Cleanup)
|
|
403
403
|
// ===========================================
|
|
404
404
|
async leaveCommunity(community, options) {
|
|
405
|
-
const userClient = await import('./UserClient-
|
|
405
|
+
const userClient = await import('./UserClient-UYIHF6UJ.js').then((m) => new m.UserClient({
|
|
406
406
|
...this.config,
|
|
407
407
|
accountAddress: this.accountAddress,
|
|
408
408
|
sbtAddress: this.sbtAddress
|
|
@@ -410,7 +410,7 @@ var UserLifecycle = class extends BaseClient {
|
|
|
410
410
|
return await userClient.leaveCommunity(community, options);
|
|
411
411
|
}
|
|
412
412
|
async exitRole(roleId, options) {
|
|
413
|
-
const userClient = await import('./UserClient-
|
|
413
|
+
const userClient = await import('./UserClient-UYIHF6UJ.js').then((m) => new m.UserClient({
|
|
414
414
|
...this.config,
|
|
415
415
|
accountAddress: this.accountAddress,
|
|
416
416
|
registryAddress: this.registryAddress
|
|
@@ -418,7 +418,7 @@ var UserLifecycle = class extends BaseClient {
|
|
|
418
418
|
return await userClient.exitRole(roleId, options);
|
|
419
419
|
}
|
|
420
420
|
async unstakeAll(roleId, options) {
|
|
421
|
-
const userClient = await import('./UserClient-
|
|
421
|
+
const userClient = await import('./UserClient-UYIHF6UJ.js').then((m) => new m.UserClient({
|
|
422
422
|
...this.config,
|
|
423
423
|
accountAddress: this.accountAddress,
|
|
424
424
|
gTokenStakingAddress: this.gTokenStakingAddress
|
|
@@ -428,5 +428,5 @@ var UserLifecycle = class extends BaseClient {
|
|
|
428
428
|
};
|
|
429
429
|
|
|
430
430
|
export { CommunityClient, UserLifecycle };
|
|
431
|
-
//# sourceMappingURL=chunk-
|
|
432
|
-
//# sourceMappingURL=chunk-
|
|
431
|
+
//# sourceMappingURL=chunk-42KVVOOU.js.map
|
|
432
|
+
//# sourceMappingURL=chunk-42KVVOOU.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../enduser/dist/CommunityClient.js","../../enduser/dist/UserLifecycle.js"],"names":["stakeAmount","parseAbiParameters","parseEther"],"mappings":"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","file":"chunk-R2RATIK2.js","sourcesContent":["import { parseEther, encodeAbiParameters, parseAbiParameters } from 'viem';\nimport { BaseClient } from '@aastar/core';\nimport { registryActions, sbtActions, xPNTsFactoryActions, reputationActions, tokenActions } from '@aastar/core';\n/**\n * Client for Community Managers (`ROLE_COMMUNITY`)\n */\nexport class CommunityClient extends BaseClient {\n sbtAddress;\n factoryAddress;\n reputationAddress;\n constructor(config) {\n super(config);\n this.sbtAddress = config.sbtAddress;\n this.factoryAddress = config.factoryAddress;\n this.reputationAddress = config.reputationAddress;\n }\n // ========================================\n // 1. 社区创建与配置\n // ========================================\n /**\n * Create a new Community Token (xPNTs) and register it.\n * Note: In the current architecture, creating a community often involves:\n * 1. Registering the ROLE_COMMUNITY on Registry (if not exists) -> usually manual or self-register\n * 2. Deploying a Token (xPNTs) via Factory\n * 3. Linking the Token to the Community in Registry\n */\n async createCommunityToken(params, options) {\n try {\n if (!this.factoryAddress) {\n throw new Error('Factory address required for this client');\n }\n const factory = xPNTsFactoryActions(this.factoryAddress);\n // 1. Deploy Token\n // Note: The address calculation should be handled via event parsing or predictive deployment\n // For now, returning the transaction hash as per L1 pattern\n return await factory(this.client).createToken({\n name: params.name,\n symbol: params.tokenSymbol,\n community: this.getAddress(),\n account: options?.account\n });\n }\n catch (error) {\n // Error is likely already an AAStarError from L1, but we wrap it for context\n throw error;\n }\n }\n /**\n * Get Community Details (Decodes Role Metadata)\n * @param communityAddress - The address of the community manager (defaults to self)\n */\n async getCommunityInfo(communityAddress) {\n try {\n const target = communityAddress || this.getAddress();\n const registryAddr = this.requireRegistry();\n const registry = registryActions(registryAddr);\n const publicClient = this.getStartPublicClient();\n // 1. Get Role ID\n const API_ROLE_COMMUNITY = await registry(publicClient).ROLE_COMMUNITY();\n // 2. Fetch Metadata (Hex).\n // NOTE: in the deployed v5 Registry, `roleMetadata` is an INTERNAL mapping with no\n // public getter (the rich community profile — name/website/logo — is written on\n // registerRole but not readable on-chain). When the getter is absent the call\n // reverts; degrade gracefully to the on-chain-readable fields (stake) with an\n // empty profile rather than throwing, so callers can still resolve the community.\n let metadataHex;\n try {\n metadataHex = await registry(publicClient).roleMetadata({\n roleId: API_ROLE_COMMUNITY,\n user: target\n });\n }\n catch (err) {\n // Degrade ONLY on contract-level \"no getter / reverted\" errors — the deployed\n // v5 Registry genuinely lacks a public roleMetadata getter. Re-throw genuine\n // transport/RPC errors so a transient network failure is not silently masked as\n // \"no community profile\".\n const m = (err instanceof Error ? `${err.message} ${err.cause?.message ?? ''}` : String(err)).toLowerCase();\n const isContractGap = m.includes('revert') || m.includes('returned no data') ||\n m.includes('does not exist') || m.includes('is not a function') ||\n m.includes('no data was returned');\n if (!isContractGap)\n throw err;\n metadataHex = undefined;\n }\n if (!metadataHex || metadataHex === '0x') {\n let stakeAmount = 0n;\n try {\n stakeAmount = await registry(publicClient).roleStakes({ roleId: API_ROLE_COMMUNITY, user: target });\n }\n catch { /* stake unreadable too — leave 0 */ }\n return { name: '', ensName: '', website: '', description: '', logoURI: '', stakeAmount };\n }\n // 3. Decode\n // struct CommunityRoleData { string name; string ensName; string website; string description; string logoURI; uint256 stakeAmount; }\n let dataToDecode = metadataHex;\n // Check for common 'bytes' or 'tuple' wrapper offset (0x20)\n if (metadataHex.startsWith('0x0000000000000000000000000000000000000000000000000000000000000020')) {\n dataToDecode = `0x${metadataHex.slice(66)}`;\n }\n const { decodeAbiParameters, parseAbiParameters } = await import('viem');\n const [name, ensName, website, description, logoURI, stakeAmount] = decodeAbiParameters(parseAbiParameters('string, string, string, string, string, uint256'), dataToDecode);\n return {\n name,\n ensName,\n website,\n description,\n logoURI,\n stakeAmount\n };\n }\n catch (error) {\n throw error;\n }\n }\n /**\n * Register self as a Community Manager.\n * This method handles all necessary steps:\n * 1. Checks and approves GToken to GTokenStaking\n * 2. Encodes CommunityRoleData with provided parameters\n * 3. Calls registerRoleSelf on Registry\n *\n * @param params Community registration parameters\n * @param options Transaction options\n * @returns Transaction hash\n */\n async registerAsCommunity(params, options) {\n try {\n const registryAddr = this.requireRegistry();\n const registry = registryActions(registryAddr);\n const gTokenStakingAddr = this.requireGTokenStaking();\n const gTokenAddr = this.requireGToken();\n // 1. Get ROLE_COMMUNITY\n const roleCommunity = await registry(this.getStartPublicClient()).ROLE_COMMUNITY();\n // 2. Prepare stake amount (default 30 GToken as per Registry config)\n const stakeAmount = params.stakeAmount || parseEther('30');\n // 3. Check and approve GToken to GTokenStaking if needed\n const gToken = tokenActions();\n const allowance = await gToken(this.getStartPublicClient()).allowance({\n token: gTokenAddr,\n owner: this.getAddress(),\n spender: gTokenStakingAddr\n });\n if (allowance < stakeAmount) {\n const approveHash = await gToken(this.client).approve({\n token: gTokenAddr,\n spender: gTokenStakingAddr,\n amount: stakeAmount * BigInt(2), // Approve 2x for future use\n account: options?.account\n });\n await this.getStartPublicClient().waitForTransactionReceipt({ hash: approveHash });\n }\n // 4. Encode CommunityRoleData\n // struct CommunityRoleData { string name; string ensName; string website; string description; string logoURI; uint256 stakeAmount; }\n const communityData = encodeAbiParameters(parseAbiParameters('string, string, string, string, string, uint256'), [\n params.name,\n params.ensName || '',\n params.website || '',\n params.description || `${params.name} Community`,\n params.logoURI || '',\n stakeAmount\n ]);\n // 5. Register role\n return await registry(this.client).registerRoleSelf({\n roleId: roleCommunity,\n data: communityData,\n account: options?.account\n });\n }\n catch (error) {\n throw error;\n }\n }\n /**\n * One-click Setup: Register Community + Deploy Token\n * Orchestrates the complete community initialization flow.\n */\n async setupCommunity(params, options) {\n const hashes = [];\n let tokenAddress = '0x0000000000000000000000000000000000000000';\n // 1. Register as Community (Idempotent check handled inside or by registry)\n // We should check hasRole first to avoid errors if already registered\n const registry = registryActions(this.requireRegistry())(this.getStartPublicClient());\n const ROLE_COMMUNITY = await registry.ROLE_COMMUNITY();\n const hasRole = await registry.hasRole({ roleId: ROLE_COMMUNITY, user: this.getAddress() });\n if (!hasRole) {\n const hReg = await this.registerAsCommunity({\n name: params.name,\n ensName: params.website, // Mapping website to ENS param for now as per legacy behavior\n website: params.website,\n description: params.description,\n logoURI: params.logoURI,\n stakeAmount: params.stakeAmount\n }, options);\n hashes.push(hReg);\n // Critical: Factory requires caller to be registered in Registry.\n // We must wait for the registration to be mined.\n await this.getStartPublicClient().waitForTransactionReceipt({ hash: hReg });\n }\n // 2. Deploy Token (Idempotent check via Factory)\n if (this.factoryAddress) {\n const factoryReader = xPNTsFactoryActions(this.factoryAddress)(this.getStartPublicClient());\n const existingToken = await factoryReader.getTokenAddress({ community: this.getAddress() });\n if (existingToken && existingToken !== '0x0000000000000000000000000000000000000000') {\n tokenAddress = existingToken;\n }\n else {\n const hToken = await this.createCommunityToken({\n name: params.tokenName,\n tokenSymbol: params.tokenSymbol,\n description: params.description\n }, options);\n hashes.push(hToken);\n // Critical: Wait for token deployment to fetch the address\n await this.getStartPublicClient().waitForTransactionReceipt({ hash: hToken });\n // Fetch the actual address (with retries for latency)\n for (let i = 0; i < 5; i++) {\n tokenAddress = await factoryReader.getTokenAddress({ community: this.getAddress() });\n if (tokenAddress && tokenAddress !== '0x0000000000000000000000000000000000000000')\n break;\n await new Promise(r => setTimeout(r, 2000));\n }\n if (!tokenAddress || tokenAddress === '0x0000000000000000000000000000000000000000') {\n console.warn(`Warning: Token address not found after 10s. Factory might be slow indexing.`);\n }\n }\n }\n return { tokenAddress, hashes };\n }\n // ========================================\n // 2. 成员管理\n // ========================================\n /**\n * Airdrop SBTs to users to make them members\n */\n async airdropSBT(users, roleId, options) {\n try {\n if (!this.sbtAddress)\n throw new Error('SBT address required for this client');\n const sbt = sbtActions(this.sbtAddress);\n if (users.length === 1) {\n // Convert roleId to Hex (bytes32)\n const roleIdHex = `0x${roleId.toString(16).padStart(64, '0')}`;\n return await sbt(this.client).mintForRole({\n user: users[0],\n roleId: roleIdHex,\n roleData: '0x',\n account: options?.account\n });\n }\n throw new Error('Batch airdrop not fully implemented in L1 yet, use single user');\n }\n catch (error) {\n throw error;\n }\n }\n // ========================================\n // 3. 信誉系统\n // ========================================\n async setReputationRule(ruleId, ruleConfig, options) {\n try {\n if (!this.reputationAddress)\n throw new Error('Reputation address required for this client');\n const reputation = reputationActions(this.reputationAddress);\n const ruleIdHex = `0x${ruleId.toString(16).padStart(64, '0')}`;\n return await reputation(this.client).setReputationRule({\n ruleId: ruleIdHex,\n rule: ruleConfig,\n account: options?.account\n });\n }\n catch (error) {\n throw error;\n }\n }\n // ========================================\n // 4. 管理功能\n // ========================================\n /**\n * Revoke membership (Burn SBT)\n */\n async revokeMembership(userAddr, options) {\n try {\n if (!this.sbtAddress)\n throw new Error('SBT address required for this client');\n const sbt = sbtActions(this.sbtAddress);\n return await sbt(this.client).burnSBT({\n user: userAddr,\n account: options?.account\n });\n }\n catch (error) {\n throw error;\n }\n }\n /**\n * Transfer ownership of the Community Token\n */\n async transferCommunityTokenOwnership(tokenAddress, newOwner, options) {\n try {\n const token = tokenActions()(this.client);\n return await token.transferOwnership({\n token: tokenAddress,\n newOwner,\n account: options?.account\n });\n }\n catch (error) {\n throw error;\n }\n }\n}\n","import { parseEther } from 'viem';\nimport { BaseClient } from '@aastar/core';\nimport { registryActions } from '@aastar/core'; // L2/L1 Actions\n/**\n * UserLifecycle - L3 Pattern\n *\n * Responsibilities:\n * 1. Managing the complete lifecycle of an End User (Onboard -> Operate -> Exit)\n * 2. Providing a unified interface for Gasless operations\n * 3. Abstracting underlying contract interactions via L2 Actions\n */\nexport class UserLifecycle extends BaseClient {\n accountAddress;\n registryAddress;\n sbtAddress;\n gTokenAddress;\n gTokenStakingAddress;\n entryPointAddress;\n gaslessConfig;\n config;\n constructor(config) {\n super(config);\n this.config = config;\n this.accountAddress = config.accountAddress;\n this.registryAddress = config.registryAddress;\n this.sbtAddress = config.sbtAddress;\n this.gTokenAddress = config.gTokenAddress;\n this.gTokenStakingAddress = config.gTokenStakingAddress;\n this.entryPointAddress = config.entryPointAddress;\n this.gaslessConfig = config.gasless;\n }\n // ===========================================\n // 1. Onboarding Phase (Registration)\n // ===========================================\n /**\n * Check if user is eligible to join a community\n * @param community Address of the community\n */\n async checkEligibility(community) {\n // Validation logic (e.g., check blacklist or whitelist via Registry)\n const publicClient = this.getStartPublicClient();\n const registry = registryActions(this.registryAddress)(publicClient);\n // Placeholder: simplistic check, real logic might involve community specific rules\n return true;\n }\n /**\n * One-click Onboarding: Approve -> Stake -> Register -> Mint SBT\n * @param community Address of the community to join\n * @param stakeAmount Amount of GToken to stake (default 0.4 GT)\n */\n async onboard(community, stakeAmount = parseEther('0.4')) {\n try {\n const registry = registryActions(this.registryAddress)(this.getStartPublicClient());\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n registryAddress: this.registryAddress,\n gTokenStakingAddress: this.gTokenStakingAddress,\n gTokenAddress: this.gTokenAddress,\n sbtAddress: this.sbtAddress\n }));\n // Use UserClient's batch execution capability for atomic onboarding\n const txHash = await userClient.registerAsEndUser(community, stakeAmount);\n // Post-check: Verify role with retry\n let hasRole = false;\n for (let i = 0; i < 5; i++) {\n hasRole = await registry.hasRole({\n roleId: await registry.ROLE_ENDUSER(),\n user: this.accountAddress\n });\n if (hasRole)\n break;\n await new Promise(r => setTimeout(r, 2000));\n }\n return {\n success: hasRole,\n txHash\n };\n }\n catch (error) {\n console.error(\"Onboarding failed:\", error);\n return { success: false };\n }\n }\n /**\n * Enable or update Gasless configuration\n */\n async enableGasless(config) {\n this.gaslessConfig = config;\n // In future: verify paymaster connection here\n }\n // ===========================================\n // 2. Operational Phase (Execute & Interact)\n // ===========================================\n /**\n * Execute a transaction effectively using Gasless configuration if available\n */\n async executeGaslessTx(params) {\n if (!this.gaslessConfig) {\n throw new Error(\"Gasless configuration not enabled. Call enableGasless() first.\");\n }\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n // Pass minimal config needed for execution\n entryPointAddress: this.entryPointAddress,\n bundlerClient: this.config.bundlerClient\n }));\n // Determine Paymaster Type based on policy\n const paymasterType = this.gaslessConfig.policy === 'CREDIT' ? 'Super' : 'V4';\n // Note: Real implementation needs to resolve actual Paymaster Address from Registry/Config\n // This is a placeholder address resolution\n const registry = registryActions(this.registryAddress)(this.client);\n const paymasterAddress = await registry.SUPER_PAYMASTER();\n return await userClient.executeGasless({\n target: params.target,\n value: params.value,\n data: params.data,\n paymaster: paymasterAddress,\n paymasterType,\n operator: params.operator\n });\n }\n async claimSBT(roleId, options) {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n sbtAddress: this.sbtAddress\n }));\n return await userClient.mintSBT(roleId, options);\n }\n // ===========================================\n // 3. Query Phase (Info & Stats)\n // ===========================================\n async getMyReputation() {\n const publicClient = this.getStartPublicClient();\n const registry = registryActions(this.registryAddress)(publicClient);\n const [score, creditLimit] = await Promise.all([\n registry.globalReputation({ user: this.accountAddress }),\n registry.getCreditLimit({ user: this.accountAddress })\n ]);\n return {\n score,\n level: 0n, // TODO: Add level calculation logic\n creditLimit\n };\n }\n async getCreditLimit() {\n const registry = registryActions(this.registryAddress)(this.client);\n return await registry.getCreditLimit({ user: this.accountAddress });\n }\n // ===========================================\n // 4. Exit Phase (Cleanup)\n // ===========================================\n async leaveCommunity(community, options) {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n sbtAddress: this.sbtAddress\n }));\n return await userClient.leaveCommunity(community, options);\n }\n async exitRole(roleId, options) {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n registryAddress: this.registryAddress\n }));\n return await userClient.exitRole(roleId, options);\n }\n async unstakeAll(roleId, options) {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n gTokenStakingAddress: this.gTokenStakingAddress\n }));\n return await userClient.unstakeFromRole(roleId, options);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../enduser/dist/CommunityClient.js","../../enduser/dist/UserLifecycle.js"],"names":["stakeAmount","parseAbiParameters","parseEther"],"mappings":"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","file":"chunk-42KVVOOU.js","sourcesContent":["import { parseEther, encodeAbiParameters, parseAbiParameters } from 'viem';\nimport { BaseClient } from '@aastar/core';\nimport { registryActions, sbtActions, xPNTsFactoryActions, reputationActions, tokenActions } from '@aastar/core';\n/**\n * Client for Community Managers (`ROLE_COMMUNITY`)\n */\nexport class CommunityClient extends BaseClient {\n sbtAddress;\n factoryAddress;\n reputationAddress;\n constructor(config) {\n super(config);\n this.sbtAddress = config.sbtAddress;\n this.factoryAddress = config.factoryAddress;\n this.reputationAddress = config.reputationAddress;\n }\n // ========================================\n // 1. 社区创建与配置\n // ========================================\n /**\n * Create a new Community Token (xPNTs) and register it.\n * Note: In the current architecture, creating a community often involves:\n * 1. Registering the ROLE_COMMUNITY on Registry (if not exists) -> usually manual or self-register\n * 2. Deploying a Token (xPNTs) via Factory\n * 3. Linking the Token to the Community in Registry\n */\n async createCommunityToken(params, options) {\n try {\n if (!this.factoryAddress) {\n throw new Error('Factory address required for this client');\n }\n const factory = xPNTsFactoryActions(this.factoryAddress);\n // 1. Deploy Token\n // Note: The address calculation should be handled via event parsing or predictive deployment\n // For now, returning the transaction hash as per L1 pattern\n return await factory(this.client).createToken({\n name: params.name,\n symbol: params.tokenSymbol,\n community: this.getAddress(),\n account: options?.account\n });\n }\n catch (error) {\n // Error is likely already an AAStarError from L1, but we wrap it for context\n throw error;\n }\n }\n /**\n * Get Community Details (Decodes Role Metadata)\n * @param communityAddress - The address of the community manager (defaults to self)\n */\n async getCommunityInfo(communityAddress) {\n try {\n const target = communityAddress || this.getAddress();\n const registryAddr = this.requireRegistry();\n const registry = registryActions(registryAddr);\n const publicClient = this.getStartPublicClient();\n // 1. Get Role ID\n const API_ROLE_COMMUNITY = await registry(publicClient).ROLE_COMMUNITY();\n // 2. Fetch Metadata (Hex).\n // NOTE: in the deployed v5 Registry, `roleMetadata` is an INTERNAL mapping with no\n // public getter (the rich community profile — name/website/logo — is written on\n // registerRole but not readable on-chain). When the getter is absent the call\n // reverts; degrade gracefully to the on-chain-readable fields (stake) with an\n // empty profile rather than throwing, so callers can still resolve the community.\n let metadataHex;\n try {\n metadataHex = await registry(publicClient).roleMetadata({\n roleId: API_ROLE_COMMUNITY,\n user: target\n });\n }\n catch (err) {\n // Degrade ONLY on contract-level \"no getter / reverted\" errors — the deployed\n // v5 Registry genuinely lacks a public roleMetadata getter. Re-throw genuine\n // transport/RPC errors so a transient network failure is not silently masked as\n // \"no community profile\".\n const m = (err instanceof Error ? `${err.message} ${err.cause?.message ?? ''}` : String(err)).toLowerCase();\n const isContractGap = m.includes('revert') || m.includes('returned no data') ||\n m.includes('does not exist') || m.includes('is not a function') ||\n m.includes('no data was returned');\n if (!isContractGap)\n throw err;\n metadataHex = undefined;\n }\n if (!metadataHex || metadataHex === '0x') {\n let stakeAmount = 0n;\n try {\n stakeAmount = await registry(publicClient).roleStakes({ roleId: API_ROLE_COMMUNITY, user: target });\n }\n catch { /* stake unreadable too — leave 0 */ }\n return { name: '', ensName: '', website: '', description: '', logoURI: '', stakeAmount };\n }\n // 3. Decode\n // struct CommunityRoleData { string name; string ensName; string website; string description; string logoURI; uint256 stakeAmount; }\n let dataToDecode = metadataHex;\n // Check for common 'bytes' or 'tuple' wrapper offset (0x20)\n if (metadataHex.startsWith('0x0000000000000000000000000000000000000000000000000000000000000020')) {\n dataToDecode = `0x${metadataHex.slice(66)}`;\n }\n const { decodeAbiParameters, parseAbiParameters } = await import('viem');\n const [name, ensName, website, description, logoURI, stakeAmount] = decodeAbiParameters(parseAbiParameters('string, string, string, string, string, uint256'), dataToDecode);\n return {\n name,\n ensName,\n website,\n description,\n logoURI,\n stakeAmount\n };\n }\n catch (error) {\n throw error;\n }\n }\n /**\n * Register self as a Community Manager.\n * This method handles all necessary steps:\n * 1. Checks and approves GToken to GTokenStaking\n * 2. Encodes CommunityRoleData with provided parameters\n * 3. Calls registerRoleSelf on Registry\n *\n * @param params Community registration parameters\n * @param options Transaction options\n * @returns Transaction hash\n */\n async registerAsCommunity(params, options) {\n try {\n const registryAddr = this.requireRegistry();\n const registry = registryActions(registryAddr);\n const gTokenStakingAddr = this.requireGTokenStaking();\n const gTokenAddr = this.requireGToken();\n // 1. Get ROLE_COMMUNITY\n const roleCommunity = await registry(this.getStartPublicClient()).ROLE_COMMUNITY();\n // 2. Prepare stake amount (default 30 GToken as per Registry config)\n const stakeAmount = params.stakeAmount || parseEther('30');\n // 3. Check and approve GToken to GTokenStaking if needed\n const gToken = tokenActions();\n const allowance = await gToken(this.getStartPublicClient()).allowance({\n token: gTokenAddr,\n owner: this.getAddress(),\n spender: gTokenStakingAddr\n });\n if (allowance < stakeAmount) {\n const approveHash = await gToken(this.client).approve({\n token: gTokenAddr,\n spender: gTokenStakingAddr,\n amount: stakeAmount * BigInt(2), // Approve 2x for future use\n account: options?.account\n });\n await this.getStartPublicClient().waitForTransactionReceipt({ hash: approveHash });\n }\n // 4. Encode CommunityRoleData\n // struct CommunityRoleData { string name; string ensName; string website; string description; string logoURI; uint256 stakeAmount; }\n const communityData = encodeAbiParameters(parseAbiParameters('string, string, string, string, string, uint256'), [\n params.name,\n params.ensName || '',\n params.website || '',\n params.description || `${params.name} Community`,\n params.logoURI || '',\n stakeAmount\n ]);\n // 5. Register role\n return await registry(this.client).registerRoleSelf({\n roleId: roleCommunity,\n data: communityData,\n account: options?.account\n });\n }\n catch (error) {\n throw error;\n }\n }\n /**\n * One-click Setup: Register Community + Deploy Token\n * Orchestrates the complete community initialization flow.\n */\n async setupCommunity(params, options) {\n const hashes = [];\n let tokenAddress = '0x0000000000000000000000000000000000000000';\n // 1. Register as Community (Idempotent check handled inside or by registry)\n // We should check hasRole first to avoid errors if already registered\n const registry = registryActions(this.requireRegistry())(this.getStartPublicClient());\n const ROLE_COMMUNITY = await registry.ROLE_COMMUNITY();\n const hasRole = await registry.hasRole({ roleId: ROLE_COMMUNITY, user: this.getAddress() });\n if (!hasRole) {\n const hReg = await this.registerAsCommunity({\n name: params.name,\n ensName: params.website, // Mapping website to ENS param for now as per legacy behavior\n website: params.website,\n description: params.description,\n logoURI: params.logoURI,\n stakeAmount: params.stakeAmount\n }, options);\n hashes.push(hReg);\n // Critical: Factory requires caller to be registered in Registry.\n // We must wait for the registration to be mined.\n await this.getStartPublicClient().waitForTransactionReceipt({ hash: hReg });\n }\n // 2. Deploy Token (Idempotent check via Factory)\n if (this.factoryAddress) {\n const factoryReader = xPNTsFactoryActions(this.factoryAddress)(this.getStartPublicClient());\n const existingToken = await factoryReader.getTokenAddress({ community: this.getAddress() });\n if (existingToken && existingToken !== '0x0000000000000000000000000000000000000000') {\n tokenAddress = existingToken;\n }\n else {\n const hToken = await this.createCommunityToken({\n name: params.tokenName,\n tokenSymbol: params.tokenSymbol,\n description: params.description\n }, options);\n hashes.push(hToken);\n // Critical: Wait for token deployment to fetch the address\n await this.getStartPublicClient().waitForTransactionReceipt({ hash: hToken });\n // Fetch the actual address (with retries for latency)\n for (let i = 0; i < 5; i++) {\n tokenAddress = await factoryReader.getTokenAddress({ community: this.getAddress() });\n if (tokenAddress && tokenAddress !== '0x0000000000000000000000000000000000000000')\n break;\n await new Promise(r => setTimeout(r, 2000));\n }\n if (!tokenAddress || tokenAddress === '0x0000000000000000000000000000000000000000') {\n console.warn(`Warning: Token address not found after 10s. Factory might be slow indexing.`);\n }\n }\n }\n return { tokenAddress, hashes };\n }\n // ========================================\n // 2. 成员管理\n // ========================================\n /**\n * Airdrop SBTs to users to make them members\n */\n async airdropSBT(users, roleId, options) {\n try {\n if (!this.sbtAddress)\n throw new Error('SBT address required for this client');\n const sbt = sbtActions(this.sbtAddress);\n if (users.length === 1) {\n // Convert roleId to Hex (bytes32)\n const roleIdHex = `0x${roleId.toString(16).padStart(64, '0')}`;\n return await sbt(this.client).mintForRole({\n user: users[0],\n roleId: roleIdHex,\n roleData: '0x',\n account: options?.account\n });\n }\n throw new Error('Batch airdrop not fully implemented in L1 yet, use single user');\n }\n catch (error) {\n throw error;\n }\n }\n // ========================================\n // 3. 信誉系统\n // ========================================\n async setReputationRule(ruleId, ruleConfig, options) {\n try {\n if (!this.reputationAddress)\n throw new Error('Reputation address required for this client');\n const reputation = reputationActions(this.reputationAddress);\n const ruleIdHex = `0x${ruleId.toString(16).padStart(64, '0')}`;\n return await reputation(this.client).setReputationRule({\n ruleId: ruleIdHex,\n rule: ruleConfig,\n account: options?.account\n });\n }\n catch (error) {\n throw error;\n }\n }\n // ========================================\n // 4. 管理功能\n // ========================================\n /**\n * Revoke membership (Burn SBT)\n */\n async revokeMembership(userAddr, options) {\n try {\n if (!this.sbtAddress)\n throw new Error('SBT address required for this client');\n const sbt = sbtActions(this.sbtAddress);\n return await sbt(this.client).burnSBT({\n user: userAddr,\n account: options?.account\n });\n }\n catch (error) {\n throw error;\n }\n }\n /**\n * Transfer ownership of the Community Token\n */\n async transferCommunityTokenOwnership(tokenAddress, newOwner, options) {\n try {\n const token = tokenActions()(this.client);\n return await token.transferOwnership({\n token: tokenAddress,\n newOwner,\n account: options?.account\n });\n }\n catch (error) {\n throw error;\n }\n }\n}\n","import { parseEther } from 'viem';\nimport { BaseClient } from '@aastar/core';\nimport { registryActions } from '@aastar/core'; // L2/L1 Actions\n/**\n * UserLifecycle - L3 Pattern\n *\n * Responsibilities:\n * 1. Managing the complete lifecycle of an End User (Onboard -> Operate -> Exit)\n * 2. Providing a unified interface for Gasless operations\n * 3. Abstracting underlying contract interactions via L2 Actions\n */\nexport class UserLifecycle extends BaseClient {\n accountAddress;\n registryAddress;\n sbtAddress;\n gTokenAddress;\n gTokenStakingAddress;\n entryPointAddress;\n gaslessConfig;\n config;\n constructor(config) {\n super(config);\n this.config = config;\n this.accountAddress = config.accountAddress;\n this.registryAddress = config.registryAddress;\n this.sbtAddress = config.sbtAddress;\n this.gTokenAddress = config.gTokenAddress;\n this.gTokenStakingAddress = config.gTokenStakingAddress;\n this.entryPointAddress = config.entryPointAddress;\n this.gaslessConfig = config.gasless;\n }\n // ===========================================\n // 1. Onboarding Phase (Registration)\n // ===========================================\n /**\n * Check if user is eligible to join a community\n * @param community Address of the community\n */\n async checkEligibility(community) {\n // Validation logic (e.g., check blacklist or whitelist via Registry)\n const publicClient = this.getStartPublicClient();\n const registry = registryActions(this.registryAddress)(publicClient);\n // Placeholder: simplistic check, real logic might involve community specific rules\n return true;\n }\n /**\n * One-click Onboarding: Approve -> Stake -> Register -> Mint SBT\n * @param community Address of the community to join\n * @param stakeAmount Amount of GToken to stake (default 0.4 GT)\n */\n async onboard(community, stakeAmount = parseEther('0.4')) {\n try {\n const registry = registryActions(this.registryAddress)(this.getStartPublicClient());\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n registryAddress: this.registryAddress,\n gTokenStakingAddress: this.gTokenStakingAddress,\n gTokenAddress: this.gTokenAddress,\n sbtAddress: this.sbtAddress\n }));\n // Use UserClient's batch execution capability for atomic onboarding\n const txHash = await userClient.registerAsEndUser(community, stakeAmount);\n // Post-check: Verify role with retry\n let hasRole = false;\n for (let i = 0; i < 5; i++) {\n hasRole = await registry.hasRole({\n roleId: await registry.ROLE_ENDUSER(),\n user: this.accountAddress\n });\n if (hasRole)\n break;\n await new Promise(r => setTimeout(r, 2000));\n }\n return {\n success: hasRole,\n txHash\n };\n }\n catch (error) {\n console.error(\"Onboarding failed:\", error);\n return { success: false };\n }\n }\n /**\n * Enable or update Gasless configuration\n */\n async enableGasless(config) {\n this.gaslessConfig = config;\n // In future: verify paymaster connection here\n }\n // ===========================================\n // 2. Operational Phase (Execute & Interact)\n // ===========================================\n /**\n * Execute a transaction effectively using Gasless configuration if available\n */\n async executeGaslessTx(params) {\n if (!this.gaslessConfig) {\n throw new Error(\"Gasless configuration not enabled. Call enableGasless() first.\");\n }\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n // Pass minimal config needed for execution\n entryPointAddress: this.entryPointAddress,\n bundlerClient: this.config.bundlerClient\n }));\n // Determine Paymaster Type based on policy\n const paymasterType = this.gaslessConfig.policy === 'CREDIT' ? 'Super' : 'V4';\n // Note: Real implementation needs to resolve actual Paymaster Address from Registry/Config\n // This is a placeholder address resolution\n const registry = registryActions(this.registryAddress)(this.client);\n const paymasterAddress = await registry.SUPER_PAYMASTER();\n return await userClient.executeGasless({\n target: params.target,\n value: params.value,\n data: params.data,\n paymaster: paymasterAddress,\n paymasterType,\n operator: params.operator\n });\n }\n async claimSBT(roleId, options) {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n sbtAddress: this.sbtAddress\n }));\n return await userClient.mintSBT(roleId, options);\n }\n // ===========================================\n // 3. Query Phase (Info & Stats)\n // ===========================================\n async getMyReputation() {\n const publicClient = this.getStartPublicClient();\n const registry = registryActions(this.registryAddress)(publicClient);\n const [score, creditLimit] = await Promise.all([\n registry.globalReputation({ user: this.accountAddress }),\n registry.getCreditLimit({ user: this.accountAddress })\n ]);\n return {\n score,\n level: 0n, // TODO: Add level calculation logic\n creditLimit\n };\n }\n async getCreditLimit() {\n const registry = registryActions(this.registryAddress)(this.client);\n return await registry.getCreditLimit({ user: this.accountAddress });\n }\n // ===========================================\n // 4. Exit Phase (Cleanup)\n // ===========================================\n async leaveCommunity(community, options) {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n sbtAddress: this.sbtAddress\n }));\n return await userClient.leaveCommunity(community, options);\n }\n async exitRole(roleId, options) {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n registryAddress: this.registryAddress\n }));\n return await userClient.exitRole(roleId, options);\n }\n async unstakeAll(roleId, options) {\n const userClient = await import('./UserClient.js').then(m => new m.UserClient({\n ...this.config,\n accountAddress: this.accountAddress,\n gTokenStakingAddress: this.gTokenStakingAddress\n }));\n return await userClient.unstakeFromRole(roleId, options);\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { x402Actions } from './chunk-
|
|
1
|
+
import { x402Actions } from './chunk-TIH7D4FQ.js';
|
|
2
2
|
import { toHex } from 'viem';
|
|
3
3
|
|
|
4
4
|
var EIP3009_TYPES = {
|
|
@@ -412,5 +412,5 @@ var X402Client = class {
|
|
|
412
412
|
};
|
|
413
413
|
|
|
414
414
|
export { EIP3009_TYPES, FacilitatorClient, GTOKEN_EIP712_DOMAIN, HEADER_PAYMENT_REQUIRED, HEADER_PAYMENT_RESPONSE, HEADER_PAYMENT_SIGNATURE, HEADER_V1_PAYMENT, HEADER_V1_PAYMENT_RESPONSE, X402Client, decodePaymentPayload, decodePaymentRequired, decodeSettleResponse, encodePaymentPayload, encodePaymentRequired, encodeSettleResponse, extractPaymentRequired, extractSettleResponse, generateNonce, getEIP3009Domain, signCancelAuthorization, signGTokenTransferWithAuthorization, signReceiveWithAuthorization, signTransferWithAuthorization };
|
|
415
|
-
//# sourceMappingURL=chunk-
|
|
416
|
-
//# sourceMappingURL=chunk-
|
|
415
|
+
//# sourceMappingURL=chunk-6UHVUGDT.js.map
|
|
416
|
+
//# sourceMappingURL=chunk-6UHVUGDT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../x402/dist/eip3009.js","../../x402/dist/payment-header.js","../../x402/dist/facilitator.js","../../x402/dist/X402Client.js"],"names":[],"mappings":"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","file":"chunk-QNYP7RPI.js","sourcesContent":["import { toHex } from 'viem';\nexport const EIP3009_TYPES = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n // Distinct typehash from TransferWithAuthorization — prevents replay across variants.\n // msg.sender must equal `to` on-chain (CallerMustBeRecipient error if violated).\n ReceiveWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n CancelAuthorization: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n ],\n};\nexport function getEIP3009Domain(tokenName, tokenVersion, chainId, verifyingContract) {\n return {\n name: tokenName,\n version: tokenVersion,\n chainId,\n verifyingContract,\n };\n}\nexport function generateNonce() {\n const bytes = new Uint8Array(32);\n globalThis.crypto.getRandomValues(bytes);\n return toHex(bytes);\n}\n// GToken EIP-712 domain constants (GTokenAuthorization v2.2.0)\nexport const GTOKEN_EIP712_DOMAIN = { name: 'GToken', version: '1' };\nexport async function signTransferWithAuthorization(walletClient, params) {\n const domain = getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract);\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n return walletClient.signTypedData({\n account,\n domain,\n types: EIP3009_TYPES,\n primaryType: 'TransferWithAuthorization',\n message: {\n from: params.from,\n to: params.to,\n value: params.value,\n validAfter: params.validAfter,\n validBefore: params.validBefore,\n nonce: params.nonce,\n },\n });\n}\n/**\n * Sign a TransferWithAuthorization for GTokenAuthorization (EIP-3009).\n * GToken-specific wrapper: enforces MAX_AUTH_VALIDITY = 300s before signing.\n * Use this instead of the generic signTransferWithAuthorization when the\n * verifying contract is GTokenAuthorization.\n */\nexport async function signGTokenTransferWithAuthorization(walletClient, params) {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.from.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match from ${params.from}`);\n }\n // GTokenAuthorization enforces MAX_AUTH_VALIDITY = 300s on-chain.\n if (params.validBefore <= params.validAfter) {\n throw new Error('validBefore must be greater than validAfter');\n }\n if (params.validBefore - params.validAfter > 300n) {\n throw new Error(`Authorization window ${params.validBefore - params.validAfter}s exceeds MAX_AUTH_VALIDITY (300s)`);\n }\n return signTransferWithAuthorization(walletClient, params);\n}\n/**\n * Sign a ReceiveWithAuthorization for GTokenAuthorization (EIP-3009).\n * The signed `to` address must be the one submitting the transaction on-chain.\n * Note: `xPNTsToken` is NOT included in the signature (it's a relay-supplied hint for RC-2).\n */\nexport async function signReceiveWithAuthorization(walletClient, params) {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.from.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match from ${params.from}`);\n }\n // GTokenAuthorization enforces MAX_AUTH_VALIDITY = 300s on-chain (RC-1).\n if (params.validBefore <= params.validAfter) {\n throw new Error('validBefore must be greater than validAfter');\n }\n if (params.validBefore - params.validAfter > 300n) {\n throw new Error(`Authorization window ${params.validBefore - params.validAfter}s exceeds MAX_AUTH_VALIDITY (300s)`);\n }\n return walletClient.signTypedData({\n account,\n domain: getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract),\n types: EIP3009_TYPES,\n primaryType: 'ReceiveWithAuthorization',\n message: {\n from: params.from,\n to: params.to,\n value: params.value,\n validAfter: params.validAfter,\n validBefore: params.validBefore,\n nonce: params.nonce,\n },\n });\n}\n/**\n * Sign a CancelAuthorization for GTokenAuthorization (EIP-3009).\n * Must be signed by the original `authorizer` address.\n */\nexport async function signCancelAuthorization(walletClient, params) {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.authorizer.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match authorizer ${params.authorizer}`);\n }\n return walletClient.signTypedData({\n account,\n domain: getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract),\n types: EIP3009_TYPES,\n primaryType: 'CancelAuthorization',\n message: {\n authorizer: params.authorizer,\n nonce: params.nonce,\n },\n });\n}\n","// ============================================================\n// x402 v2 HTTP Header Names\n// Ref: github.com/coinbase/x402/blob/main/specs/x402-specification-v2.md\n// ============================================================\n/** v2 header names (standard) */\nexport const HEADER_PAYMENT_REQUIRED = 'PAYMENT-REQUIRED';\nexport const HEADER_PAYMENT_SIGNATURE = 'PAYMENT-SIGNATURE';\nexport const HEADER_PAYMENT_RESPONSE = 'PAYMENT-RESPONSE';\n/** v1 header names (backward compat) */\nexport const HEADER_V1_PAYMENT = 'X-PAYMENT';\nexport const HEADER_V1_PAYMENT_RESPONSE = 'X-PAYMENT-RESPONSE';\n// ============================================================\n// Encoding / Decoding (Base64 JSON — per x402 spec)\n// ============================================================\nfunction toBase64(data) {\n const json = JSON.stringify(data);\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(json).toString('base64');\n }\n return btoa(json);\n}\nfunction fromBase64(encoded) {\n let json;\n if (typeof Buffer !== 'undefined') {\n json = Buffer.from(encoded, 'base64').toString('utf-8');\n }\n else {\n json = atob(encoded);\n }\n return JSON.parse(json);\n}\n// --- PaymentRequired (402 response) ---\nexport function encodePaymentRequired(req) {\n return toBase64(req);\n}\nexport function decodePaymentRequired(encoded) {\n return fromBase64(encoded);\n}\n// --- PaymentPayload (client → server) ---\nexport function encodePaymentPayload(payload) {\n return toBase64(payload);\n}\nexport function decodePaymentPayload(encoded) {\n return fromBase64(encoded);\n}\n// --- SettleResponse (server → client) ---\nexport function encodeSettleResponse(resp) {\n return toBase64(resp);\n}\nexport function decodeSettleResponse(encoded) {\n return fromBase64(encoded);\n}\n// ============================================================\n// Header Extraction Helpers\n// ============================================================\n/**\n * Extract PaymentRequired from a 402 Response.\n * Tries v2 header first, falls back to v1.\n */\nexport function extractPaymentRequired(response) {\n const v2 = response.headers.get(HEADER_PAYMENT_REQUIRED);\n if (v2)\n return decodePaymentRequired(v2);\n // v1 fallback: check body or X-PAYMENT-REQUIRED\n const v1 = response.headers.get('X-PAYMENT-REQUIRED');\n if (v1)\n return decodePaymentRequired(v1);\n return null;\n}\n/**\n * Extract SettleResponse from a successful response.\n */\nexport function extractSettleResponse(response) {\n const v2 = response.headers.get(HEADER_PAYMENT_RESPONSE);\n if (v2)\n return decodeSettleResponse(v2);\n const v1 = response.headers.get(HEADER_V1_PAYMENT_RESPONSE);\n if (v1)\n return decodeSettleResponse(v1);\n return null;\n}\n","/**\n * HTTP Facilitator Client — standard x402 v2 facilitator API.\n * Compatible with Coinbase hosted facilitator and self-hosted instances.\n *\n * Ref: coinbase/x402 HTTPFacilitatorClient pattern\n */\nexport class FacilitatorClient {\n url;\n createAuthHeaders;\n constructor(config) {\n this.url = config.url.replace(/\\/$/, '');\n this.createAuthHeaders = config.createAuthHeaders;\n }\n async getHeaders(endpoint) {\n const base = { 'Content-Type': 'application/json' };\n if (!this.createAuthHeaders)\n return base;\n const auth = await this.createAuthHeaders();\n return { ...base, ...auth[endpoint] };\n }\n /**\n * POST /verify — validate payment signature off-chain (~100ms).\n */\n async verify(paymentPayload, paymentRequirements) {\n const resp = await fetch(`${this.url}/verify`, {\n method: 'POST',\n headers: await this.getHeaders('verify'),\n body: JSON.stringify({\n x402Version: 2,\n paymentPayload,\n paymentRequirements,\n }),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /verify failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json();\n }\n /**\n * POST /settle — execute on-chain settlement (~2s on Base).\n */\n async settle(paymentPayload, paymentRequirements) {\n const resp = await fetch(`${this.url}/settle`, {\n method: 'POST',\n headers: await this.getHeaders('settle'),\n body: JSON.stringify({\n x402Version: 2,\n paymentPayload,\n paymentRequirements,\n }),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /settle failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json();\n }\n /**\n * GET /supported — query facilitator capabilities.\n */\n async supported() {\n const resp = await fetch(`${this.url}/supported`, {\n method: 'GET',\n headers: await this.getHeaders('supported'),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /supported failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json();\n }\n}\n","import { x402Actions } from '@aastar/core';\nimport { signTransferWithAuthorization, generateNonce } from './eip3009.js';\nimport { encodePaymentPayload, extractPaymentRequired, HEADER_PAYMENT_SIGNATURE, } from './payment-header.js';\nimport { FacilitatorClient } from './facilitator.js';\n/** CAIP-2 network identifier from chainId */\nfunction toNetworkId(chainId) {\n return `eip155:${chainId}`;\n}\nexport class X402Client {\n actions;\n config;\n facilitatorClient;\n constructor(config) {\n if (!config.walletClient.account) {\n throw new Error('WalletClient must have an account configured');\n }\n this.config = config;\n // walletClient supports both readContract and writeContract — single instance suffices\n this.actions = x402Actions(config.superPaymasterAddress)(config.walletClient);\n if (config.facilitator) {\n this.facilitatorClient = new FacilitatorClient(config.facilitator);\n }\n }\n /**\n * Create a signed payment payload (EIP-3009 TransferWithAuthorization).\n * Returns a base64-encoded PaymentPayload ready for PAYMENT-SIGNATURE header.\n */\n async createPayment(params) {\n const nonce = params.nonce || generateNonce();\n const now = BigInt(Math.floor(Date.now() / 1000));\n const validAfter = params.validAfter ?? (now - 600n); // 10 min grace (per x402 spec)\n const validBefore = params.validBefore ?? (now + 3600n);\n const tokenName = this.config.tokenName || 'USDC';\n const tokenVersion = this.config.tokenVersion || '2';\n const signature = await signTransferWithAuthorization(this.config.walletClient, {\n from: params.from,\n to: params.to,\n value: params.amount,\n validAfter,\n validBefore,\n nonce,\n tokenName,\n tokenVersion,\n chainId: this.config.chainId,\n verifyingContract: params.asset,\n });\n const payload = {\n x402Version: 2,\n accepted: {\n scheme: 'exact',\n network: toNetworkId(this.config.chainId),\n asset: params.asset,\n amount: params.amount.toString(),\n payTo: params.to,\n maxTimeoutSeconds: 3600,\n extra: { name: tokenName, version: tokenVersion },\n },\n payload: {\n signature,\n authorization: {\n from: params.from,\n to: params.to,\n value: params.amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce,\n },\n },\n };\n return {\n payload,\n encoded: encodePaymentPayload(payload),\n nonce,\n };\n }\n /**\n * Settle payment on-chain via SuperPaymaster (self-facilitated).\n * Uses EIP-3009 transferWithAuthorization path.\n */\n async settleOnChain(params) {\n return this.actions.settleX402Payment({\n ...params,\n account: this.config.walletClient.account,\n });\n }\n /**\n * Settle payment on-chain via direct transfer (for xPNTs and pre-approved tokens).\n */\n async settleDirectOnChain(params) {\n return this.actions.settleX402PaymentDirect({\n ...params,\n account: this.config.walletClient.account,\n });\n }\n /**\n * Get facilitator fee quote from on-chain contract.\n */\n async getQuote() {\n const feeBPS = await this.actions.facilitatorFeeBPS();\n return { feeBPS };\n }\n /**\n * Check if a nonce has been used.\n */\n async checkNonce(nonce) {\n return this.actions.x402SettlementNonces({ nonce });\n }\n /**\n * Settle via external facilitator (Coinbase, self-hosted, etc.).\n * Requires facilitator config in constructor.\n */\n async settleViaFacilitator(payload, requirements) {\n if (!this.facilitatorClient) {\n throw new Error('No facilitator configured. Pass facilitator config to X402Client constructor.');\n }\n return this.facilitatorClient.settle(payload, requirements);\n }\n /**\n * x402-aware fetch wrapper.\n * Automatically handles 402 → sign → retry flow per x402 v2 spec.\n *\n * Pattern from: @x402/fetch wrapFetchWithPayment\n *\n * Flow:\n * 1. Make initial request\n * 2. If 402, extract PaymentRequired from PAYMENT-REQUIRED header\n * 3. Select best payment option (applies policy: max amount check)\n * 4. Sign EIP-3009 authorization\n * 5. Retry with PAYMENT-SIGNATURE header\n */\n async x402Fetch(url, init) {\n const firstResponse = await fetch(url, init);\n if (firstResponse.status !== 402) {\n return firstResponse;\n }\n // Step 2: Extract payment requirements\n // TODO: some server implementations put PaymentRequired in the response body instead of headers\n const paymentRequired = extractPaymentRequired(firstResponse);\n if (!paymentRequired || !paymentRequired.accepts?.length) {\n throw new Error('402 response missing PAYMENT-REQUIRED header or empty accepts');\n }\n // Step 3: Select payment option (filter by network + policy)\n const myNetwork = toNetworkId(this.config.chainId);\n let selected = paymentRequired.accepts.find((a) => a.network === myNetwork && a.scheme === 'exact');\n if (!selected) {\n // Fallback: any EVM option\n selected = paymentRequired.accepts.find((a) => a.network.startsWith('eip155:'));\n }\n if (!selected) {\n throw new Error(`No compatible payment option for network ${myNetwork}`);\n }\n // Policy check: max amount\n if (this.config.maxAmountPerRequest && BigInt(selected.amount) > this.config.maxAmountPerRequest) {\n throw new Error(`Payment amount ${selected.amount} exceeds max ${this.config.maxAmountPerRequest}`);\n }\n const account = this.config.walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account for automatic payment');\n }\n // Step 4: Sign\n const { encoded } = await this.createPayment({\n from: account.address,\n to: selected.payTo,\n asset: selected.asset,\n amount: BigInt(selected.amount),\n });\n // Step 5: Retry with payment signature\n const retryHeaders = new Headers(init?.headers);\n retryHeaders.set(HEADER_PAYMENT_SIGNATURE, encoded);\n return fetch(url, { ...init, headers: retryHeaders });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../x402/dist/eip3009.js","../../x402/dist/payment-header.js","../../x402/dist/facilitator.js","../../x402/dist/X402Client.js"],"names":[],"mappings":"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","file":"chunk-6UHVUGDT.js","sourcesContent":["import { toHex } from 'viem';\nexport const EIP3009_TYPES = {\n TransferWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n // Distinct typehash from TransferWithAuthorization — prevents replay across variants.\n // msg.sender must equal `to` on-chain (CallerMustBeRecipient error if violated).\n ReceiveWithAuthorization: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n ],\n CancelAuthorization: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n ],\n};\nexport function getEIP3009Domain(tokenName, tokenVersion, chainId, verifyingContract) {\n return {\n name: tokenName,\n version: tokenVersion,\n chainId,\n verifyingContract,\n };\n}\nexport function generateNonce() {\n const bytes = new Uint8Array(32);\n globalThis.crypto.getRandomValues(bytes);\n return toHex(bytes);\n}\n// GToken EIP-712 domain constants (GTokenAuthorization v2.2.0)\nexport const GTOKEN_EIP712_DOMAIN = { name: 'GToken', version: '1' };\nexport async function signTransferWithAuthorization(walletClient, params) {\n const domain = getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract);\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n return walletClient.signTypedData({\n account,\n domain,\n types: EIP3009_TYPES,\n primaryType: 'TransferWithAuthorization',\n message: {\n from: params.from,\n to: params.to,\n value: params.value,\n validAfter: params.validAfter,\n validBefore: params.validBefore,\n nonce: params.nonce,\n },\n });\n}\n/**\n * Sign a TransferWithAuthorization for GTokenAuthorization (EIP-3009).\n * GToken-specific wrapper: enforces MAX_AUTH_VALIDITY = 300s before signing.\n * Use this instead of the generic signTransferWithAuthorization when the\n * verifying contract is GTokenAuthorization.\n */\nexport async function signGTokenTransferWithAuthorization(walletClient, params) {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.from.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match from ${params.from}`);\n }\n // GTokenAuthorization enforces MAX_AUTH_VALIDITY = 300s on-chain.\n if (params.validBefore <= params.validAfter) {\n throw new Error('validBefore must be greater than validAfter');\n }\n if (params.validBefore - params.validAfter > 300n) {\n throw new Error(`Authorization window ${params.validBefore - params.validAfter}s exceeds MAX_AUTH_VALIDITY (300s)`);\n }\n return signTransferWithAuthorization(walletClient, params);\n}\n/**\n * Sign a ReceiveWithAuthorization for GTokenAuthorization (EIP-3009).\n * The signed `to` address must be the one submitting the transaction on-chain.\n * Note: `xPNTsToken` is NOT included in the signature (it's a relay-supplied hint for RC-2).\n */\nexport async function signReceiveWithAuthorization(walletClient, params) {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.from.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match from ${params.from}`);\n }\n // GTokenAuthorization enforces MAX_AUTH_VALIDITY = 300s on-chain (RC-1).\n if (params.validBefore <= params.validAfter) {\n throw new Error('validBefore must be greater than validAfter');\n }\n if (params.validBefore - params.validAfter > 300n) {\n throw new Error(`Authorization window ${params.validBefore - params.validAfter}s exceeds MAX_AUTH_VALIDITY (300s)`);\n }\n return walletClient.signTypedData({\n account,\n domain: getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract),\n types: EIP3009_TYPES,\n primaryType: 'ReceiveWithAuthorization',\n message: {\n from: params.from,\n to: params.to,\n value: params.value,\n validAfter: params.validAfter,\n validBefore: params.validBefore,\n nonce: params.nonce,\n },\n });\n}\n/**\n * Sign a CancelAuthorization for GTokenAuthorization (EIP-3009).\n * Must be signed by the original `authorizer` address.\n */\nexport async function signCancelAuthorization(walletClient, params) {\n const account = walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account');\n }\n if (account.address.toLowerCase() !== params.authorizer.toLowerCase()) {\n throw new Error(`Signer ${account.address} does not match authorizer ${params.authorizer}`);\n }\n return walletClient.signTypedData({\n account,\n domain: getEIP3009Domain(params.tokenName, params.tokenVersion, params.chainId, params.verifyingContract),\n types: EIP3009_TYPES,\n primaryType: 'CancelAuthorization',\n message: {\n authorizer: params.authorizer,\n nonce: params.nonce,\n },\n });\n}\n","// ============================================================\n// x402 v2 HTTP Header Names\n// Ref: github.com/coinbase/x402/blob/main/specs/x402-specification-v2.md\n// ============================================================\n/** v2 header names (standard) */\nexport const HEADER_PAYMENT_REQUIRED = 'PAYMENT-REQUIRED';\nexport const HEADER_PAYMENT_SIGNATURE = 'PAYMENT-SIGNATURE';\nexport const HEADER_PAYMENT_RESPONSE = 'PAYMENT-RESPONSE';\n/** v1 header names (backward compat) */\nexport const HEADER_V1_PAYMENT = 'X-PAYMENT';\nexport const HEADER_V1_PAYMENT_RESPONSE = 'X-PAYMENT-RESPONSE';\n// ============================================================\n// Encoding / Decoding (Base64 JSON — per x402 spec)\n// ============================================================\nfunction toBase64(data) {\n const json = JSON.stringify(data);\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(json).toString('base64');\n }\n return btoa(json);\n}\nfunction fromBase64(encoded) {\n let json;\n if (typeof Buffer !== 'undefined') {\n json = Buffer.from(encoded, 'base64').toString('utf-8');\n }\n else {\n json = atob(encoded);\n }\n return JSON.parse(json);\n}\n// --- PaymentRequired (402 response) ---\nexport function encodePaymentRequired(req) {\n return toBase64(req);\n}\nexport function decodePaymentRequired(encoded) {\n return fromBase64(encoded);\n}\n// --- PaymentPayload (client → server) ---\nexport function encodePaymentPayload(payload) {\n return toBase64(payload);\n}\nexport function decodePaymentPayload(encoded) {\n return fromBase64(encoded);\n}\n// --- SettleResponse (server → client) ---\nexport function encodeSettleResponse(resp) {\n return toBase64(resp);\n}\nexport function decodeSettleResponse(encoded) {\n return fromBase64(encoded);\n}\n// ============================================================\n// Header Extraction Helpers\n// ============================================================\n/**\n * Extract PaymentRequired from a 402 Response.\n * Tries v2 header first, falls back to v1.\n */\nexport function extractPaymentRequired(response) {\n const v2 = response.headers.get(HEADER_PAYMENT_REQUIRED);\n if (v2)\n return decodePaymentRequired(v2);\n // v1 fallback: check body or X-PAYMENT-REQUIRED\n const v1 = response.headers.get('X-PAYMENT-REQUIRED');\n if (v1)\n return decodePaymentRequired(v1);\n return null;\n}\n/**\n * Extract SettleResponse from a successful response.\n */\nexport function extractSettleResponse(response) {\n const v2 = response.headers.get(HEADER_PAYMENT_RESPONSE);\n if (v2)\n return decodeSettleResponse(v2);\n const v1 = response.headers.get(HEADER_V1_PAYMENT_RESPONSE);\n if (v1)\n return decodeSettleResponse(v1);\n return null;\n}\n","/**\n * HTTP Facilitator Client — standard x402 v2 facilitator API.\n * Compatible with Coinbase hosted facilitator and self-hosted instances.\n *\n * Ref: coinbase/x402 HTTPFacilitatorClient pattern\n */\nexport class FacilitatorClient {\n url;\n createAuthHeaders;\n constructor(config) {\n this.url = config.url.replace(/\\/$/, '');\n this.createAuthHeaders = config.createAuthHeaders;\n }\n async getHeaders(endpoint) {\n const base = { 'Content-Type': 'application/json' };\n if (!this.createAuthHeaders)\n return base;\n const auth = await this.createAuthHeaders();\n return { ...base, ...auth[endpoint] };\n }\n /**\n * POST /verify — validate payment signature off-chain (~100ms).\n */\n async verify(paymentPayload, paymentRequirements) {\n const resp = await fetch(`${this.url}/verify`, {\n method: 'POST',\n headers: await this.getHeaders('verify'),\n body: JSON.stringify({\n x402Version: 2,\n paymentPayload,\n paymentRequirements,\n }),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /verify failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json();\n }\n /**\n * POST /settle — execute on-chain settlement (~2s on Base).\n */\n async settle(paymentPayload, paymentRequirements) {\n const resp = await fetch(`${this.url}/settle`, {\n method: 'POST',\n headers: await this.getHeaders('settle'),\n body: JSON.stringify({\n x402Version: 2,\n paymentPayload,\n paymentRequirements,\n }),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /settle failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json();\n }\n /**\n * GET /supported — query facilitator capabilities.\n */\n async supported() {\n const resp = await fetch(`${this.url}/supported`, {\n method: 'GET',\n headers: await this.getHeaders('supported'),\n });\n if (!resp.ok) {\n throw new Error(`Facilitator /supported failed: ${resp.status} ${await resp.text()}`);\n }\n return resp.json();\n }\n}\n","import { x402Actions } from '@aastar/core';\nimport { signTransferWithAuthorization, generateNonce } from './eip3009.js';\nimport { encodePaymentPayload, extractPaymentRequired, HEADER_PAYMENT_SIGNATURE, } from './payment-header.js';\nimport { FacilitatorClient } from './facilitator.js';\n/** CAIP-2 network identifier from chainId */\nfunction toNetworkId(chainId) {\n return `eip155:${chainId}`;\n}\nexport class X402Client {\n actions;\n config;\n facilitatorClient;\n constructor(config) {\n if (!config.walletClient.account) {\n throw new Error('WalletClient must have an account configured');\n }\n this.config = config;\n // walletClient supports both readContract and writeContract — single instance suffices\n this.actions = x402Actions(config.superPaymasterAddress)(config.walletClient);\n if (config.facilitator) {\n this.facilitatorClient = new FacilitatorClient(config.facilitator);\n }\n }\n /**\n * Create a signed payment payload (EIP-3009 TransferWithAuthorization).\n * Returns a base64-encoded PaymentPayload ready for PAYMENT-SIGNATURE header.\n */\n async createPayment(params) {\n const nonce = params.nonce || generateNonce();\n const now = BigInt(Math.floor(Date.now() / 1000));\n const validAfter = params.validAfter ?? (now - 600n); // 10 min grace (per x402 spec)\n const validBefore = params.validBefore ?? (now + 3600n);\n const tokenName = this.config.tokenName || 'USDC';\n const tokenVersion = this.config.tokenVersion || '2';\n const signature = await signTransferWithAuthorization(this.config.walletClient, {\n from: params.from,\n to: params.to,\n value: params.amount,\n validAfter,\n validBefore,\n nonce,\n tokenName,\n tokenVersion,\n chainId: this.config.chainId,\n verifyingContract: params.asset,\n });\n const payload = {\n x402Version: 2,\n accepted: {\n scheme: 'exact',\n network: toNetworkId(this.config.chainId),\n asset: params.asset,\n amount: params.amount.toString(),\n payTo: params.to,\n maxTimeoutSeconds: 3600,\n extra: { name: tokenName, version: tokenVersion },\n },\n payload: {\n signature,\n authorization: {\n from: params.from,\n to: params.to,\n value: params.amount.toString(),\n validAfter: validAfter.toString(),\n validBefore: validBefore.toString(),\n nonce,\n },\n },\n };\n return {\n payload,\n encoded: encodePaymentPayload(payload),\n nonce,\n };\n }\n /**\n * Settle payment on-chain via SuperPaymaster (self-facilitated).\n * Uses EIP-3009 transferWithAuthorization path.\n */\n async settleOnChain(params) {\n return this.actions.settleX402Payment({\n ...params,\n account: this.config.walletClient.account,\n });\n }\n /**\n * Settle payment on-chain via direct transfer (for xPNTs and pre-approved tokens).\n */\n async settleDirectOnChain(params) {\n return this.actions.settleX402PaymentDirect({\n ...params,\n account: this.config.walletClient.account,\n });\n }\n /**\n * Get facilitator fee quote from on-chain contract.\n */\n async getQuote() {\n const feeBPS = await this.actions.facilitatorFeeBPS();\n return { feeBPS };\n }\n /**\n * Check if a nonce has been used.\n */\n async checkNonce(nonce) {\n return this.actions.x402SettlementNonces({ nonce });\n }\n /**\n * Settle via external facilitator (Coinbase, self-hosted, etc.).\n * Requires facilitator config in constructor.\n */\n async settleViaFacilitator(payload, requirements) {\n if (!this.facilitatorClient) {\n throw new Error('No facilitator configured. Pass facilitator config to X402Client constructor.');\n }\n return this.facilitatorClient.settle(payload, requirements);\n }\n /**\n * x402-aware fetch wrapper.\n * Automatically handles 402 → sign → retry flow per x402 v2 spec.\n *\n * Pattern from: @x402/fetch wrapFetchWithPayment\n *\n * Flow:\n * 1. Make initial request\n * 2. If 402, extract PaymentRequired from PAYMENT-REQUIRED header\n * 3. Select best payment option (applies policy: max amount check)\n * 4. Sign EIP-3009 authorization\n * 5. Retry with PAYMENT-SIGNATURE header\n */\n async x402Fetch(url, init) {\n const firstResponse = await fetch(url, init);\n if (firstResponse.status !== 402) {\n return firstResponse;\n }\n // Step 2: Extract payment requirements\n // TODO: some server implementations put PaymentRequired in the response body instead of headers\n const paymentRequired = extractPaymentRequired(firstResponse);\n if (!paymentRequired || !paymentRequired.accepts?.length) {\n throw new Error('402 response missing PAYMENT-REQUIRED header or empty accepts');\n }\n // Step 3: Select payment option (filter by network + policy)\n const myNetwork = toNetworkId(this.config.chainId);\n let selected = paymentRequired.accepts.find((a) => a.network === myNetwork && a.scheme === 'exact');\n if (!selected) {\n // Fallback: any EVM option\n selected = paymentRequired.accepts.find((a) => a.network.startsWith('eip155:'));\n }\n if (!selected) {\n throw new Error(`No compatible payment option for network ${myNetwork}`);\n }\n // Policy check: max amount\n if (this.config.maxAmountPerRequest && BigInt(selected.amount) > this.config.maxAmountPerRequest) {\n throw new Error(`Payment amount ${selected.amount} exceeds max ${this.config.maxAmountPerRequest}`);\n }\n const account = this.config.walletClient.account;\n if (!account) {\n throw new Error('WalletClient must have an account for automatic payment');\n }\n // Step 4: Sign\n const { encoded } = await this.createPayment({\n from: account.address,\n to: selected.payTo,\n asset: selected.asset,\n amount: BigInt(selected.amount),\n });\n // Step 5: Retry with payment signature\n const retryHeaders = new Headers(init?.headers);\n retryHeaders.set(HEADER_PAYMENT_SIGNATURE, encoded);\n return fetch(url, { ...init, headers: retryHeaders });\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SimpleAccountFactoryABI } from './chunk-
|
|
1
|
+
import { SimpleAccountFactoryABI } from './chunk-TIH7D4FQ.js';
|
|
2
2
|
import { http, createWalletClient, encodeAbiParameters, keccak256, encodeFunctionData, concatHex } from 'viem';
|
|
3
3
|
import { privateKeyToAccount } from 'viem/accounts';
|
|
4
4
|
|
|
@@ -112,5 +112,5 @@ async function toSimpleSmartAccount(parameters) {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
export { UserOpClient, createEOAWalletClient, getUserOpHash, packUserOpLimits, toSimpleSmartAccount };
|
|
115
|
-
//# sourceMappingURL=chunk-
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
115
|
+
//# sourceMappingURL=chunk-FBDMID2J.js.map
|
|
116
|
+
//# sourceMappingURL=chunk-FBDMID2J.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../account/dist/eoa.js","../../account/dist/index.js","../../account/dist/accounts/simple.js"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../../account/dist/eoa.js","../../account/dist/index.js","../../account/dist/accounts/simple.js"],"names":[],"mappings":"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","file":"chunk-FBDMID2J.js","sourcesContent":["import { createWalletClient, http } from 'viem';\nimport { privateKeyToAccount } from 'viem/accounts';\nexport const createEOAWalletClient = (privateKey, chain, transport = http()) => {\n const account = privateKeyToAccount(privateKey);\n const client = createWalletClient({\n account,\n chain,\n transport\n });\n return Object.assign(client, {\n async sendTransaction(args) {\n return client.sendTransaction({\n ...args,\n account,\n chain\n });\n },\n getAddress: () => account.address\n });\n};\n","import { encodeAbiParameters, keccak256 } from 'viem';\nexport * from './eoa.js';\nexport * from './accounts/simple.js';\n/**\n * Common Pack Logic for v0.7 UserOperations\n */\nexport function packUserOpLimits(high, low) {\n return `0x${((high << 128n) | low).toString(16).padStart(64, '0')}`;\n}\n/**\n * Local implementation of EntryPoint v0.7 getUserOpHash\n */\nexport function getUserOpHash(op, ep, chainId) {\n const packed = encodeAbiParameters([\n { type: 'address' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' },\n { type: 'bytes32' }, { type: 'uint256' }, { type: 'bytes32' }, { type: 'bytes32' }\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 const enc = encodeAbiParameters([{ type: 'bytes32' }, { type: 'address' }, { type: 'uint256' }], [keccak256(packed), ep, BigInt(chainId)]);\n return keccak256(enc);\n}\n/**\n * UserOperation Client for handling high-level flows\n */\nexport class UserOpClient {\n static async estimateGas(bundler, op, entryPoint) {\n return bundler.request({\n method: 'eth_estimateUserOperationGas',\n params: [op, entryPoint]\n });\n }\n static async sendUserOp(bundler, op, entryPoint) {\n return bundler.request({\n method: 'eth_sendUserOperation',\n params: [op, entryPoint]\n });\n }\n static async getReceipt(bundler, hash) {\n return bundler.request({\n method: 'eth_getUserOperationReceipt',\n params: [hash]\n });\n }\n}\n","import { concatHex, encodeFunctionData, } from 'viem';\nimport { SimpleAccountFactoryABI } from '@aastar/core';\nimport { getUserOpHash } from '../index.js';\nexport async function toSimpleSmartAccount(parameters) {\n const { client, owner, factoryAddress, entryPoint, index = 0n, salt = 0n } = parameters;\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 // 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 return {\n address,\n publicKey: owner.address,\n source: 'custom',\n type: 'local',\n entryPoint: entryPoint.address,\n async signMessage({ message }) {\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 async signTypedData(typedData) {\n return owner.signTypedData(typedData);\n },\n async signTransaction(transaction) {\n throw new Error('Smart Accounts cannot sign transactions directly. Use UserOperations.');\n },\n async signUserOperation(userOp) {\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 async getInitCode() {\n return initCode;\n },\n async getDummySignature() {\n return '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';\n }\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-TIH7D4FQ.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('./index.node-
|
|
32
|
+
const { accountFactoryActions, SimpleAccountFactoryABI } = await import('./index.node-KIKM4EG6.js');
|
|
33
33
|
let abi = params.customAbi || (SimpleAccountFactoryABI?.abi || SimpleAccountFactoryABI);
|
|
34
34
|
const factoryAddr = params.factoryAddress || "0x9406Cc6185a346906296840746125a0E44976454";
|
|
35
35
|
const salt = params.salt || 0n;
|
|
@@ -363,13 +363,13 @@ var UserClient = class extends BaseClient {
|
|
|
363
363
|
functionName: "execute",
|
|
364
364
|
args: [params.target, params.value, params.data]
|
|
365
365
|
});
|
|
366
|
-
const { PaymasterClient: SDKPaymasterClient } = await import('./dist-
|
|
366
|
+
const { PaymasterClient: SDKPaymasterClient } = await import('./dist-GVWCRI4F.js');
|
|
367
367
|
let verificationGasLimit;
|
|
368
368
|
let paymasterVerificationGasLimit;
|
|
369
369
|
let paymasterPostOpGasLimit;
|
|
370
370
|
let autoEstimate = true;
|
|
371
371
|
if (params.paymasterType === "Super") {
|
|
372
|
-
const { tuneGasLimit } = await import('./dist-
|
|
372
|
+
const { tuneGasLimit } = await import('./dist-GVWCRI4F.js');
|
|
373
373
|
const est = await SDKPaymasterClient.estimateUserOperationGas(
|
|
374
374
|
this.client,
|
|
375
375
|
this.client,
|
|
@@ -422,5 +422,5 @@ var UserClient = class extends BaseClient {
|
|
|
422
422
|
};
|
|
423
423
|
|
|
424
424
|
export { UserClient };
|
|
425
|
-
//# sourceMappingURL=chunk-
|
|
426
|
-
//# sourceMappingURL=chunk-
|
|
425
|
+
//# sourceMappingURL=chunk-FIS3RUGL.js.map
|
|
426
|
+
//# sourceMappingURL=chunk-FIS3RUGL.js.map
|