moltspay 0.1.2 → 0.1.3

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.
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 支付引导消息生成
3
+ * 用于引导没有支付能力的Agent安装和使用moltspay
4
+ */
5
+ interface PaymentGuideParams {
6
+ orderId: string;
7
+ prompt: string;
8
+ price: number;
9
+ recipientAddress: string;
10
+ chain?: 'base' | 'base_sepolia';
11
+ serviceName?: string;
12
+ }
13
+ /**
14
+ * 生成完整的支付引导消息
15
+ */
16
+ declare function generatePaymentGuide(params: PaymentGuideParams): string;
17
+ /**
18
+ * 生成简短的支付提醒
19
+ */
20
+ declare function generatePaymentReminder(params: {
21
+ orderId: string;
22
+ price: number;
23
+ recipientAddress: string;
24
+ chain?: 'base' | 'base_sepolia';
25
+ }): string;
26
+ /**
27
+ * 生成钱包创建指南
28
+ */
29
+ declare function generateWalletGuide(): string;
30
+ /**
31
+ * 解析用户消息中的交易hash
32
+ */
33
+ declare function extractTransactionHash(message: string): string | null;
34
+ /**
35
+ * 判断消息是否包含交易hash
36
+ */
37
+ declare function hasTransactionHash(message: string): boolean;
38
+
39
+ export { type PaymentGuideParams, extractTransactionHash, generatePaymentGuide, generatePaymentReminder, generateWalletGuide, hasTransactionHash };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 支付引导消息生成
3
+ * 用于引导没有支付能力的Agent安装和使用moltspay
4
+ */
5
+ interface PaymentGuideParams {
6
+ orderId: string;
7
+ prompt: string;
8
+ price: number;
9
+ recipientAddress: string;
10
+ chain?: 'base' | 'base_sepolia';
11
+ serviceName?: string;
12
+ }
13
+ /**
14
+ * 生成完整的支付引导消息
15
+ */
16
+ declare function generatePaymentGuide(params: PaymentGuideParams): string;
17
+ /**
18
+ * 生成简短的支付提醒
19
+ */
20
+ declare function generatePaymentReminder(params: {
21
+ orderId: string;
22
+ price: number;
23
+ recipientAddress: string;
24
+ chain?: 'base' | 'base_sepolia';
25
+ }): string;
26
+ /**
27
+ * 生成钱包创建指南
28
+ */
29
+ declare function generateWalletGuide(): string;
30
+ /**
31
+ * 解析用户消息中的交易hash
32
+ */
33
+ declare function extractTransactionHash(message: string): string | null;
34
+ /**
35
+ * 判断消息是否包含交易hash
36
+ */
37
+ declare function hasTransactionHash(message: string): boolean;
38
+
39
+ export { type PaymentGuideParams, extractTransactionHash, generatePaymentGuide, generatePaymentReminder, generateWalletGuide, hasTransactionHash };
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/guide/index.ts
21
+ var guide_exports = {};
22
+ __export(guide_exports, {
23
+ extractTransactionHash: () => extractTransactionHash,
24
+ generatePaymentGuide: () => generatePaymentGuide,
25
+ generatePaymentReminder: () => generatePaymentReminder,
26
+ generateWalletGuide: () => generateWalletGuide,
27
+ hasTransactionHash: () => hasTransactionHash
28
+ });
29
+ module.exports = __toCommonJS(guide_exports);
30
+ function generatePaymentGuide(params) {
31
+ const {
32
+ orderId,
33
+ prompt,
34
+ price,
35
+ recipientAddress,
36
+ chain = "base",
37
+ serviceName = "\u89C6\u9891\u751F\u6210\u670D\u52A1"
38
+ } = params;
39
+ const chainId = chain === "base" ? 8453 : 84532;
40
+ const chainName = chain === "base" ? "Base \u4E3B\u7F51" : "Base Sepolia \u6D4B\u8BD5\u7F51";
41
+ const explorer = chain === "base" ? "https://basescan.org/tx/" : "https://sepolia.basescan.org/tx/";
42
+ return `\u{1F3AC} **${serviceName}**
43
+
44
+ \u{1F4CB} **\u8BA2\u5355\u4FE1\u606F:**
45
+ - \u8BA2\u5355\u53F7: \`${orderId}\`
46
+ - \u5185\u5BB9: ${prompt.length > 50 ? prompt.slice(0, 50) + "..." : prompt}
47
+ - \u4EF7\u683C: **${price} USDC**
48
+ - \u94FE: ${chainName}
49
+
50
+ ---
51
+
52
+ ## \u{1F4B3} \u5982\u4F55\u652F\u4ED8
53
+
54
+ ### \u65B9\u5F0F\u4E00\uFF1A\u5B89\u88C5 moltspay SDK\uFF08\u63A8\u8350\uFF09
55
+
56
+ \`\`\`bash
57
+ npm install moltspay ethers
58
+ \`\`\`
59
+
60
+ **\u521B\u5EFA\u94B1\u5305\u5E76\u652F\u4ED8\uFF1A**
61
+
62
+ \`\`\`javascript
63
+ const { SecureWallet, getChain } = require('moltspay');
64
+ const { Wallet } = require('ethers');
65
+
66
+ // 1. \u521B\u5EFA\u65B0\u94B1\u5305\uFF08\u9996\u6B21\u4F7F\u7528\uFF09
67
+ const newWallet = Wallet.createRandom();
68
+ console.log('\u94B1\u5305\u5730\u5740:', newWallet.address);
69
+ console.log('\u79C1\u94A5\uFF08\u8BF7\u5B89\u5168\u4FDD\u5B58\uFF09:', newWallet.privateKey);
70
+
71
+ // 2. \u6216\u4F7F\u7528\u5DF2\u6709\u94B1\u5305
72
+ const wallet = new SecureWallet({
73
+ chainId: ${chainId},
74
+ privateKey: process.env.WALLET_KEY, // \u4F60\u7684\u79C1\u94A5
75
+ limits: { requireWhitelist: false } // \u5141\u8BB8\u5411\u4EFB\u610F\u5730\u5740\u8F6C\u8D26
76
+ });
77
+
78
+ // 3. \u67E5\u770B\u4F59\u989D
79
+ const balance = await wallet.getBalance();
80
+ console.log('USDC\u4F59\u989D:', balance.usdc);
81
+
82
+ // 4. \u652F\u4ED8
83
+ const result = await wallet.transfer('${recipientAddress}', '${price}');
84
+ if (result.success) {
85
+ console.log('\u2705 \u652F\u4ED8\u6210\u529F\uFF01');
86
+ console.log('\u4EA4\u6613hash:', result.hash);
87
+ // \u628A\u4EA4\u6613hash\u53D1\u7ED9\u6211
88
+ }
89
+ \`\`\`
90
+
91
+ ### \u65B9\u5F0F\u4E8C\uFF1A\u76F4\u63A5\u8F6C\u8D26
92
+
93
+ \u4ECE\u4EFB\u610F\u94B1\u5305\u8F6C\u8D26 USDC\uFF1A
94
+ - **\u94FE:** ${chainName} (Chain ID: ${chainId})
95
+ - **Token:** USDC
96
+ - **\u6536\u6B3E\u5730\u5740:** \`${recipientAddress}\`
97
+ - **\u91D1\u989D:** ${price} USDC
98
+
99
+ ---
100
+
101
+ ## \u2705 \u652F\u4ED8\u5B8C\u6210\u540E
102
+
103
+ \u8BF7\u53D1\u9001**\u4EA4\u6613hash**\u7ED9\u6211\uFF0C\u683C\u5F0F\uFF1A
104
+ \`\`\`
105
+ tx: 0x1234...
106
+ \`\`\`
107
+
108
+ \u6216\u76F4\u63A5\u53D1\u9001hash\uFF1A
109
+ \`\`\`
110
+ 0x1234abcd...
111
+ \`\`\`
112
+
113
+ \u6211\u4F1A\u9A8C\u8BC1\u94FE\u4E0A\u4EA4\u6613\u540E\u5F00\u59CB\u5904\u7406\u4F60\u7684\u8BF7\u6C42\u3002
114
+
115
+ ---
116
+
117
+ \u{1F4E6} **moltspay:** https://www.npmjs.com/package/moltspay
118
+ \u{1F517} **\u533A\u5757\u6D4F\u89C8\u5668:** ${explorer}`;
119
+ }
120
+ function generatePaymentReminder(params) {
121
+ const { orderId, price, recipientAddress, chain = "base" } = params;
122
+ const chainName = chain === "base" ? "Base" : "Base Sepolia";
123
+ return `\u23F3 **\u5F85\u652F\u4ED8\u8BA2\u5355: ${orderId}**
124
+
125
+ \u8BF7\u652F\u4ED8 **${price} USDC** \u5230:
126
+ - \u94FE: ${chainName}
127
+ - \u5730\u5740: \`${recipientAddress}\`
128
+
129
+ \u652F\u4ED8\u540E\u53D1\u9001\u4EA4\u6613hash\u7ED9\u6211\u3002
130
+
131
+ ---
132
+ \u{1F4A1} \u6CA1\u6709\u652F\u4ED8\u80FD\u529B\uFF1F\u8FD0\u884C \`npm install moltspay\` \u83B7\u53D6\u652F\u4ED8SDK`;
133
+ }
134
+ function generateWalletGuide() {
135
+ return `## \u{1F510} \u521B\u5EFA\u652F\u4ED8\u94B1\u5305
136
+
137
+ **1. \u5B89\u88C5 moltspay:**
138
+ \`\`\`bash
139
+ npm install moltspay ethers
140
+ \`\`\`
141
+
142
+ **2. \u521B\u5EFA\u65B0\u94B1\u5305:**
143
+ \`\`\`javascript
144
+ const { Wallet } = require('ethers');
145
+
146
+ const wallet = Wallet.createRandom();
147
+ console.log('\u5730\u5740:', wallet.address);
148
+ console.log('\u79C1\u94A5:', wallet.privateKey);
149
+ // \u26A0\uFE0F \u8BF7\u5B89\u5168\u4FDD\u5B58\u79C1\u94A5\uFF01
150
+ \`\`\`
151
+
152
+ **3. \u83B7\u53D6 USDC:**
153
+ - \u4E3B\u7F51: \u4ECE\u4EA4\u6613\u6240\u63D0\u5E01\u5230\u4F60\u7684\u94B1\u5305\u5730\u5740
154
+ - \u6D4B\u8BD5\u7F51: \u4F7F\u7528 Base Sepolia faucet
155
+
156
+ **4. \u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF:**
157
+ \`\`\`bash
158
+ export WALLET_KEY="\u4F60\u7684\u79C1\u94A5"
159
+ \`\`\`
160
+
161
+ \u5B8C\u6210\u540E\u5373\u53EF\u4F7F\u7528 moltspay \u8FDB\u884C\u94FE\u4E0A\u652F\u4ED8\uFF01`;
162
+ }
163
+ function extractTransactionHash(message) {
164
+ const match = message.match(/0x[a-fA-F0-9]{64}/);
165
+ if (match) return match[0];
166
+ const txMatch = message.match(/tx:\s*([a-fA-F0-9]{64})/i);
167
+ if (txMatch) return "0x" + txMatch[1];
168
+ return null;
169
+ }
170
+ function hasTransactionHash(message) {
171
+ return extractTransactionHash(message) !== null;
172
+ }
173
+ // Annotate the CommonJS export names for ESM import in node:
174
+ 0 && (module.exports = {
175
+ extractTransactionHash,
176
+ generatePaymentGuide,
177
+ generatePaymentReminder,
178
+ generateWalletGuide,
179
+ hasTransactionHash
180
+ });
181
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/guide/index.ts"],"sourcesContent":["/**\n * 支付引导消息生成\n * 用于引导没有支付能力的Agent安装和使用moltspay\n */\n\nexport interface PaymentGuideParams {\n orderId: string;\n prompt: string;\n price: number;\n recipientAddress: string;\n chain?: 'base' | 'base_sepolia';\n serviceName?: string;\n}\n\n/**\n * 生成完整的支付引导消息\n */\nexport function generatePaymentGuide(params: PaymentGuideParams): string {\n const {\n orderId,\n prompt,\n price,\n recipientAddress,\n chain = 'base',\n serviceName = '视频生成服务'\n } = params;\n\n const chainId = chain === 'base' ? 8453 : 84532;\n const chainName = chain === 'base' ? 'Base 主网' : 'Base Sepolia 测试网';\n const explorer = chain === 'base' \n ? 'https://basescan.org/tx/' \n : 'https://sepolia.basescan.org/tx/';\n\n return `🎬 **${serviceName}**\n\n📋 **订单信息:**\n- 订单号: \\`${orderId}\\`\n- 内容: ${prompt.length > 50 ? prompt.slice(0, 50) + '...' : prompt}\n- 价格: **${price} USDC**\n- 链: ${chainName}\n\n---\n\n## 💳 如何支付\n\n### 方式一:安装 moltspay SDK(推荐)\n\n\\`\\`\\`bash\nnpm install moltspay ethers\n\\`\\`\\`\n\n**创建钱包并支付:**\n\n\\`\\`\\`javascript\nconst { SecureWallet, getChain } = require('moltspay');\nconst { Wallet } = require('ethers');\n\n// 1. 创建新钱包(首次使用)\nconst newWallet = Wallet.createRandom();\nconsole.log('钱包地址:', newWallet.address);\nconsole.log('私钥(请安全保存):', newWallet.privateKey);\n\n// 2. 或使用已有钱包\nconst wallet = new SecureWallet({\n chainId: ${chainId},\n privateKey: process.env.WALLET_KEY, // 你的私钥\n limits: { requireWhitelist: false } // 允许向任意地址转账\n});\n\n// 3. 查看余额\nconst balance = await wallet.getBalance();\nconsole.log('USDC余额:', balance.usdc);\n\n// 4. 支付\nconst result = await wallet.transfer('${recipientAddress}', '${price}');\nif (result.success) {\n console.log('✅ 支付成功!');\n console.log('交易hash:', result.hash);\n // 把交易hash发给我\n}\n\\`\\`\\`\n\n### 方式二:直接转账\n\n从任意钱包转账 USDC:\n- **链:** ${chainName} (Chain ID: ${chainId})\n- **Token:** USDC\n- **收款地址:** \\`${recipientAddress}\\`\n- **金额:** ${price} USDC\n\n---\n\n## ✅ 支付完成后\n\n请发送**交易hash**给我,格式:\n\\`\\`\\`\ntx: 0x1234...\n\\`\\`\\`\n\n或直接发送hash:\n\\`\\`\\`\n0x1234abcd...\n\\`\\`\\`\n\n我会验证链上交易后开始处理你的请求。\n\n---\n\n📦 **moltspay:** https://www.npmjs.com/package/moltspay\n🔗 **区块浏览器:** ${explorer}`;\n}\n\n/**\n * 生成简短的支付提醒\n */\nexport function generatePaymentReminder(params: {\n orderId: string;\n price: number;\n recipientAddress: string;\n chain?: 'base' | 'base_sepolia';\n}): string {\n const { orderId, price, recipientAddress, chain = 'base' } = params;\n const chainName = chain === 'base' ? 'Base' : 'Base Sepolia';\n\n return `⏳ **待支付订单: ${orderId}**\n\n请支付 **${price} USDC** 到:\n- 链: ${chainName}\n- 地址: \\`${recipientAddress}\\`\n\n支付后发送交易hash给我。\n\n---\n💡 没有支付能力?运行 \\`npm install moltspay\\` 获取支付SDK`;\n}\n\n/**\n * 生成钱包创建指南\n */\nexport function generateWalletGuide(): string {\n return `## 🔐 创建支付钱包\n\n**1. 安装 moltspay:**\n\\`\\`\\`bash\nnpm install moltspay ethers\n\\`\\`\\`\n\n**2. 创建新钱包:**\n\\`\\`\\`javascript\nconst { Wallet } = require('ethers');\n\nconst wallet = Wallet.createRandom();\nconsole.log('地址:', wallet.address);\nconsole.log('私钥:', wallet.privateKey);\n// ⚠️ 请安全保存私钥!\n\\`\\`\\`\n\n**3. 获取 USDC:**\n- 主网: 从交易所提币到你的钱包地址\n- 测试网: 使用 Base Sepolia faucet\n\n**4. 设置环境变量:**\n\\`\\`\\`bash\nexport WALLET_KEY=\"你的私钥\"\n\\`\\`\\`\n\n完成后即可使用 moltspay 进行链上支付!`;\n}\n\n/**\n * 解析用户消息中的交易hash\n */\nexport function extractTransactionHash(message: string): string | null {\n // 匹配 0x 开头的64位hex\n const match = message.match(/0x[a-fA-F0-9]{64}/);\n if (match) return match[0];\n\n // 匹配 tx: 后面的内容\n const txMatch = message.match(/tx:\\s*([a-fA-F0-9]{64})/i);\n if (txMatch) return '0x' + txMatch[1];\n\n return null;\n}\n\n/**\n * 判断消息是否包含交易hash\n */\nexport function hasTransactionHash(message: string): boolean {\n return extractTransactionHash(message) !== null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBO,SAAS,qBAAqB,QAAoC;AACvE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB,IAAI;AAEJ,QAAM,UAAU,UAAU,SAAS,OAAO;AAC1C,QAAM,YAAY,UAAU,SAAS,sBAAY;AACjD,QAAM,WAAW,UAAU,SACvB,6BACA;AAEJ,SAAO,eAAQ,WAAW;AAAA;AAAA;AAAA,0BAGjB,OAAO;AAAA,kBACV,OAAO,SAAS,KAAK,OAAO,MAAM,GAAG,EAAE,IAAI,QAAQ,MAAM;AAAA,oBACvD,KAAK;AAAA,YACR,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAyBH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAUoB,gBAAgB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAWzD,SAAS,eAAe,OAAO;AAAA;AAAA,oCAE1B,gBAAgB;AAAA,sBACpB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gDAqBD,QAAQ;AACxB;AAKO,SAAS,wBAAwB,QAK7B;AACT,QAAM,EAAE,SAAS,OAAO,kBAAkB,QAAQ,OAAO,IAAI;AAC7D,QAAM,YAAY,UAAU,SAAS,SAAS;AAE9C,SAAO,4CAAc,OAAO;AAAA;AAAA,uBAEtB,KAAK;AAAA,YACN,SAAS;AAAA,oBACN,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1B;AAKO,SAAS,sBAA8B;AAC5C,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BT;AAKO,SAAS,uBAAuB,SAAgC;AAErE,QAAM,QAAQ,QAAQ,MAAM,mBAAmB;AAC/C,MAAI,MAAO,QAAO,MAAM,CAAC;AAGzB,QAAM,UAAU,QAAQ,MAAM,0BAA0B;AACxD,MAAI,QAAS,QAAO,OAAO,QAAQ,CAAC;AAEpC,SAAO;AACT;AAKO,SAAS,mBAAmB,SAA0B;AAC3D,SAAO,uBAAuB,OAAO,MAAM;AAC7C;","names":[]}
@@ -0,0 +1,152 @@
1
+ // src/guide/index.ts
2
+ function generatePaymentGuide(params) {
3
+ const {
4
+ orderId,
5
+ prompt,
6
+ price,
7
+ recipientAddress,
8
+ chain = "base",
9
+ serviceName = "\u89C6\u9891\u751F\u6210\u670D\u52A1"
10
+ } = params;
11
+ const chainId = chain === "base" ? 8453 : 84532;
12
+ const chainName = chain === "base" ? "Base \u4E3B\u7F51" : "Base Sepolia \u6D4B\u8BD5\u7F51";
13
+ const explorer = chain === "base" ? "https://basescan.org/tx/" : "https://sepolia.basescan.org/tx/";
14
+ return `\u{1F3AC} **${serviceName}**
15
+
16
+ \u{1F4CB} **\u8BA2\u5355\u4FE1\u606F:**
17
+ - \u8BA2\u5355\u53F7: \`${orderId}\`
18
+ - \u5185\u5BB9: ${prompt.length > 50 ? prompt.slice(0, 50) + "..." : prompt}
19
+ - \u4EF7\u683C: **${price} USDC**
20
+ - \u94FE: ${chainName}
21
+
22
+ ---
23
+
24
+ ## \u{1F4B3} \u5982\u4F55\u652F\u4ED8
25
+
26
+ ### \u65B9\u5F0F\u4E00\uFF1A\u5B89\u88C5 moltspay SDK\uFF08\u63A8\u8350\uFF09
27
+
28
+ \`\`\`bash
29
+ npm install moltspay ethers
30
+ \`\`\`
31
+
32
+ **\u521B\u5EFA\u94B1\u5305\u5E76\u652F\u4ED8\uFF1A**
33
+
34
+ \`\`\`javascript
35
+ const { SecureWallet, getChain } = require('moltspay');
36
+ const { Wallet } = require('ethers');
37
+
38
+ // 1. \u521B\u5EFA\u65B0\u94B1\u5305\uFF08\u9996\u6B21\u4F7F\u7528\uFF09
39
+ const newWallet = Wallet.createRandom();
40
+ console.log('\u94B1\u5305\u5730\u5740:', newWallet.address);
41
+ console.log('\u79C1\u94A5\uFF08\u8BF7\u5B89\u5168\u4FDD\u5B58\uFF09:', newWallet.privateKey);
42
+
43
+ // 2. \u6216\u4F7F\u7528\u5DF2\u6709\u94B1\u5305
44
+ const wallet = new SecureWallet({
45
+ chainId: ${chainId},
46
+ privateKey: process.env.WALLET_KEY, // \u4F60\u7684\u79C1\u94A5
47
+ limits: { requireWhitelist: false } // \u5141\u8BB8\u5411\u4EFB\u610F\u5730\u5740\u8F6C\u8D26
48
+ });
49
+
50
+ // 3. \u67E5\u770B\u4F59\u989D
51
+ const balance = await wallet.getBalance();
52
+ console.log('USDC\u4F59\u989D:', balance.usdc);
53
+
54
+ // 4. \u652F\u4ED8
55
+ const result = await wallet.transfer('${recipientAddress}', '${price}');
56
+ if (result.success) {
57
+ console.log('\u2705 \u652F\u4ED8\u6210\u529F\uFF01');
58
+ console.log('\u4EA4\u6613hash:', result.hash);
59
+ // \u628A\u4EA4\u6613hash\u53D1\u7ED9\u6211
60
+ }
61
+ \`\`\`
62
+
63
+ ### \u65B9\u5F0F\u4E8C\uFF1A\u76F4\u63A5\u8F6C\u8D26
64
+
65
+ \u4ECE\u4EFB\u610F\u94B1\u5305\u8F6C\u8D26 USDC\uFF1A
66
+ - **\u94FE:** ${chainName} (Chain ID: ${chainId})
67
+ - **Token:** USDC
68
+ - **\u6536\u6B3E\u5730\u5740:** \`${recipientAddress}\`
69
+ - **\u91D1\u989D:** ${price} USDC
70
+
71
+ ---
72
+
73
+ ## \u2705 \u652F\u4ED8\u5B8C\u6210\u540E
74
+
75
+ \u8BF7\u53D1\u9001**\u4EA4\u6613hash**\u7ED9\u6211\uFF0C\u683C\u5F0F\uFF1A
76
+ \`\`\`
77
+ tx: 0x1234...
78
+ \`\`\`
79
+
80
+ \u6216\u76F4\u63A5\u53D1\u9001hash\uFF1A
81
+ \`\`\`
82
+ 0x1234abcd...
83
+ \`\`\`
84
+
85
+ \u6211\u4F1A\u9A8C\u8BC1\u94FE\u4E0A\u4EA4\u6613\u540E\u5F00\u59CB\u5904\u7406\u4F60\u7684\u8BF7\u6C42\u3002
86
+
87
+ ---
88
+
89
+ \u{1F4E6} **moltspay:** https://www.npmjs.com/package/moltspay
90
+ \u{1F517} **\u533A\u5757\u6D4F\u89C8\u5668:** ${explorer}`;
91
+ }
92
+ function generatePaymentReminder(params) {
93
+ const { orderId, price, recipientAddress, chain = "base" } = params;
94
+ const chainName = chain === "base" ? "Base" : "Base Sepolia";
95
+ return `\u23F3 **\u5F85\u652F\u4ED8\u8BA2\u5355: ${orderId}**
96
+
97
+ \u8BF7\u652F\u4ED8 **${price} USDC** \u5230:
98
+ - \u94FE: ${chainName}
99
+ - \u5730\u5740: \`${recipientAddress}\`
100
+
101
+ \u652F\u4ED8\u540E\u53D1\u9001\u4EA4\u6613hash\u7ED9\u6211\u3002
102
+
103
+ ---
104
+ \u{1F4A1} \u6CA1\u6709\u652F\u4ED8\u80FD\u529B\uFF1F\u8FD0\u884C \`npm install moltspay\` \u83B7\u53D6\u652F\u4ED8SDK`;
105
+ }
106
+ function generateWalletGuide() {
107
+ return `## \u{1F510} \u521B\u5EFA\u652F\u4ED8\u94B1\u5305
108
+
109
+ **1. \u5B89\u88C5 moltspay:**
110
+ \`\`\`bash
111
+ npm install moltspay ethers
112
+ \`\`\`
113
+
114
+ **2. \u521B\u5EFA\u65B0\u94B1\u5305:**
115
+ \`\`\`javascript
116
+ const { Wallet } = require('ethers');
117
+
118
+ const wallet = Wallet.createRandom();
119
+ console.log('\u5730\u5740:', wallet.address);
120
+ console.log('\u79C1\u94A5:', wallet.privateKey);
121
+ // \u26A0\uFE0F \u8BF7\u5B89\u5168\u4FDD\u5B58\u79C1\u94A5\uFF01
122
+ \`\`\`
123
+
124
+ **3. \u83B7\u53D6 USDC:**
125
+ - \u4E3B\u7F51: \u4ECE\u4EA4\u6613\u6240\u63D0\u5E01\u5230\u4F60\u7684\u94B1\u5305\u5730\u5740
126
+ - \u6D4B\u8BD5\u7F51: \u4F7F\u7528 Base Sepolia faucet
127
+
128
+ **4. \u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF:**
129
+ \`\`\`bash
130
+ export WALLET_KEY="\u4F60\u7684\u79C1\u94A5"
131
+ \`\`\`
132
+
133
+ \u5B8C\u6210\u540E\u5373\u53EF\u4F7F\u7528 moltspay \u8FDB\u884C\u94FE\u4E0A\u652F\u4ED8\uFF01`;
134
+ }
135
+ function extractTransactionHash(message) {
136
+ const match = message.match(/0x[a-fA-F0-9]{64}/);
137
+ if (match) return match[0];
138
+ const txMatch = message.match(/tx:\s*([a-fA-F0-9]{64})/i);
139
+ if (txMatch) return "0x" + txMatch[1];
140
+ return null;
141
+ }
142
+ function hasTransactionHash(message) {
143
+ return extractTransactionHash(message) !== null;
144
+ }
145
+ export {
146
+ extractTransactionHash,
147
+ generatePaymentGuide,
148
+ generatePaymentReminder,
149
+ generateWalletGuide,
150
+ hasTransactionHash
151
+ };
152
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/guide/index.ts"],"sourcesContent":["/**\n * 支付引导消息生成\n * 用于引导没有支付能力的Agent安装和使用moltspay\n */\n\nexport interface PaymentGuideParams {\n orderId: string;\n prompt: string;\n price: number;\n recipientAddress: string;\n chain?: 'base' | 'base_sepolia';\n serviceName?: string;\n}\n\n/**\n * 生成完整的支付引导消息\n */\nexport function generatePaymentGuide(params: PaymentGuideParams): string {\n const {\n orderId,\n prompt,\n price,\n recipientAddress,\n chain = 'base',\n serviceName = '视频生成服务'\n } = params;\n\n const chainId = chain === 'base' ? 8453 : 84532;\n const chainName = chain === 'base' ? 'Base 主网' : 'Base Sepolia 测试网';\n const explorer = chain === 'base' \n ? 'https://basescan.org/tx/' \n : 'https://sepolia.basescan.org/tx/';\n\n return `🎬 **${serviceName}**\n\n📋 **订单信息:**\n- 订单号: \\`${orderId}\\`\n- 内容: ${prompt.length > 50 ? prompt.slice(0, 50) + '...' : prompt}\n- 价格: **${price} USDC**\n- 链: ${chainName}\n\n---\n\n## 💳 如何支付\n\n### 方式一:安装 moltspay SDK(推荐)\n\n\\`\\`\\`bash\nnpm install moltspay ethers\n\\`\\`\\`\n\n**创建钱包并支付:**\n\n\\`\\`\\`javascript\nconst { SecureWallet, getChain } = require('moltspay');\nconst { Wallet } = require('ethers');\n\n// 1. 创建新钱包(首次使用)\nconst newWallet = Wallet.createRandom();\nconsole.log('钱包地址:', newWallet.address);\nconsole.log('私钥(请安全保存):', newWallet.privateKey);\n\n// 2. 或使用已有钱包\nconst wallet = new SecureWallet({\n chainId: ${chainId},\n privateKey: process.env.WALLET_KEY, // 你的私钥\n limits: { requireWhitelist: false } // 允许向任意地址转账\n});\n\n// 3. 查看余额\nconst balance = await wallet.getBalance();\nconsole.log('USDC余额:', balance.usdc);\n\n// 4. 支付\nconst result = await wallet.transfer('${recipientAddress}', '${price}');\nif (result.success) {\n console.log('✅ 支付成功!');\n console.log('交易hash:', result.hash);\n // 把交易hash发给我\n}\n\\`\\`\\`\n\n### 方式二:直接转账\n\n从任意钱包转账 USDC:\n- **链:** ${chainName} (Chain ID: ${chainId})\n- **Token:** USDC\n- **收款地址:** \\`${recipientAddress}\\`\n- **金额:** ${price} USDC\n\n---\n\n## ✅ 支付完成后\n\n请发送**交易hash**给我,格式:\n\\`\\`\\`\ntx: 0x1234...\n\\`\\`\\`\n\n或直接发送hash:\n\\`\\`\\`\n0x1234abcd...\n\\`\\`\\`\n\n我会验证链上交易后开始处理你的请求。\n\n---\n\n📦 **moltspay:** https://www.npmjs.com/package/moltspay\n🔗 **区块浏览器:** ${explorer}`;\n}\n\n/**\n * 生成简短的支付提醒\n */\nexport function generatePaymentReminder(params: {\n orderId: string;\n price: number;\n recipientAddress: string;\n chain?: 'base' | 'base_sepolia';\n}): string {\n const { orderId, price, recipientAddress, chain = 'base' } = params;\n const chainName = chain === 'base' ? 'Base' : 'Base Sepolia';\n\n return `⏳ **待支付订单: ${orderId}**\n\n请支付 **${price} USDC** 到:\n- 链: ${chainName}\n- 地址: \\`${recipientAddress}\\`\n\n支付后发送交易hash给我。\n\n---\n💡 没有支付能力?运行 \\`npm install moltspay\\` 获取支付SDK`;\n}\n\n/**\n * 生成钱包创建指南\n */\nexport function generateWalletGuide(): string {\n return `## 🔐 创建支付钱包\n\n**1. 安装 moltspay:**\n\\`\\`\\`bash\nnpm install moltspay ethers\n\\`\\`\\`\n\n**2. 创建新钱包:**\n\\`\\`\\`javascript\nconst { Wallet } = require('ethers');\n\nconst wallet = Wallet.createRandom();\nconsole.log('地址:', wallet.address);\nconsole.log('私钥:', wallet.privateKey);\n// ⚠️ 请安全保存私钥!\n\\`\\`\\`\n\n**3. 获取 USDC:**\n- 主网: 从交易所提币到你的钱包地址\n- 测试网: 使用 Base Sepolia faucet\n\n**4. 设置环境变量:**\n\\`\\`\\`bash\nexport WALLET_KEY=\"你的私钥\"\n\\`\\`\\`\n\n完成后即可使用 moltspay 进行链上支付!`;\n}\n\n/**\n * 解析用户消息中的交易hash\n */\nexport function extractTransactionHash(message: string): string | null {\n // 匹配 0x 开头的64位hex\n const match = message.match(/0x[a-fA-F0-9]{64}/);\n if (match) return match[0];\n\n // 匹配 tx: 后面的内容\n const txMatch = message.match(/tx:\\s*([a-fA-F0-9]{64})/i);\n if (txMatch) return '0x' + txMatch[1];\n\n return null;\n}\n\n/**\n * 判断消息是否包含交易hash\n */\nexport function hasTransactionHash(message: string): boolean {\n return extractTransactionHash(message) !== null;\n}\n"],"mappings":";AAiBO,SAAS,qBAAqB,QAAoC;AACvE,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,cAAc;AAAA,EAChB,IAAI;AAEJ,QAAM,UAAU,UAAU,SAAS,OAAO;AAC1C,QAAM,YAAY,UAAU,SAAS,sBAAY;AACjD,QAAM,WAAW,UAAU,SACvB,6BACA;AAEJ,SAAO,eAAQ,WAAW;AAAA;AAAA;AAAA,0BAGjB,OAAO;AAAA,kBACV,OAAO,SAAS,KAAK,OAAO,MAAM,GAAG,EAAE,IAAI,QAAQ,MAAM;AAAA,oBACvD,KAAK;AAAA,YACR,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAyBH,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wCAUoB,gBAAgB,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAWzD,SAAS,eAAe,OAAO;AAAA;AAAA,oCAE1B,gBAAgB;AAAA,sBACpB,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gDAqBD,QAAQ;AACxB;AAKO,SAAS,wBAAwB,QAK7B;AACT,QAAM,EAAE,SAAS,OAAO,kBAAkB,QAAQ,OAAO,IAAI;AAC7D,QAAM,YAAY,UAAU,SAAS,SAAS;AAE9C,SAAO,4CAAc,OAAO;AAAA;AAAA,uBAEtB,KAAK;AAAA,YACN,SAAS;AAAA,oBACN,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAM1B;AAKO,SAAS,sBAA8B;AAC5C,SAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2BT;AAKO,SAAS,uBAAuB,SAAgC;AAErE,QAAM,QAAQ,QAAQ,MAAM,mBAAmB;AAC/C,MAAI,MAAO,QAAO,MAAM,CAAC;AAGzB,QAAM,UAAU,QAAQ,MAAM,0BAA0B;AACxD,MAAI,QAAS,QAAO,OAAO,QAAQ,CAAC;AAEpC,SAAO;AACT;AAKO,SAAS,mBAAmB,SAA0B;AAC3D,SAAO,uBAAuB,OAAO,MAAM;AAC7C;","names":[]}
package/dist/index.d.mts CHANGED
@@ -4,6 +4,7 @@ export { SecureWallet, Wallet } from './wallet/index.mjs';
4
4
  export { PermitPayment } from './permit/index.mjs';
5
5
  export { CreateOrderParams, MemoryOrderStore, Order, OrderManager, OrderStatus, OrderStore } from './orders/index.mjs';
6
6
  export { VerifyPaymentParams, VerifyPaymentResult, getTransactionStatus, verifyPayment, waitForTransaction } from './verify/index.mjs';
7
+ export { PaymentGuideParams, extractTransactionHash, generatePaymentGuide, generatePaymentReminder, generateWalletGuide, hasTransactionHash } from './guide/index.mjs';
7
8
  export { CHAINS, ERC20_ABI, getChain, getChainById, listChains } from './chains/index.mjs';
8
9
 
9
10
  /**
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { SecureWallet, Wallet } from './wallet/index.js';
4
4
  export { PermitPayment } from './permit/index.js';
5
5
  export { CreateOrderParams, MemoryOrderStore, Order, OrderManager, OrderStatus, OrderStore } from './orders/index.js';
6
6
  export { VerifyPaymentParams, VerifyPaymentResult, getTransactionStatus, verifyPayment, waitForTransaction } from './verify/index.js';
7
+ export { PaymentGuideParams, extractTransactionHash, generatePaymentGuide, generatePaymentReminder, generateWalletGuide, hasTransactionHash } from './guide/index.js';
7
8
  export { CHAINS, ERC20_ABI, getChain, getChainById, listChains } from './chains/index.js';
8
9
 
9
10
  /**
package/dist/index.js CHANGED
@@ -39,9 +39,14 @@ __export(src_exports, {
39
39
  PermitPayment: () => PermitPayment,
40
40
  SecureWallet: () => SecureWallet,
41
41
  Wallet: () => Wallet,
42
+ extractTransactionHash: () => extractTransactionHash,
43
+ generatePaymentGuide: () => generatePaymentGuide,
44
+ generatePaymentReminder: () => generatePaymentReminder,
45
+ generateWalletGuide: () => generateWalletGuide,
42
46
  getChain: () => getChain,
43
47
  getChainById: () => getChainById,
44
48
  getTransactionStatus: () => getTransactionStatus,
49
+ hasTransactionHash: () => hasTransactionHash,
45
50
  listChains: () => listChains,
46
51
  verifyPayment: () => verifyPayment,
47
52
  waitForTransaction: () => waitForTransaction
@@ -1266,6 +1271,151 @@ async function waitForTransaction(txHash, chain = "base", confirmations = 1, tim
1266
1271
  return { verified: false, confirmed: false, error: e.message || String(e) };
1267
1272
  }
1268
1273
  }
1274
+
1275
+ // src/guide/index.ts
1276
+ function generatePaymentGuide(params) {
1277
+ const {
1278
+ orderId,
1279
+ prompt,
1280
+ price,
1281
+ recipientAddress,
1282
+ chain = "base",
1283
+ serviceName = "\u89C6\u9891\u751F\u6210\u670D\u52A1"
1284
+ } = params;
1285
+ const chainId = chain === "base" ? 8453 : 84532;
1286
+ const chainName = chain === "base" ? "Base \u4E3B\u7F51" : "Base Sepolia \u6D4B\u8BD5\u7F51";
1287
+ const explorer = chain === "base" ? "https://basescan.org/tx/" : "https://sepolia.basescan.org/tx/";
1288
+ return `\u{1F3AC} **${serviceName}**
1289
+
1290
+ \u{1F4CB} **\u8BA2\u5355\u4FE1\u606F:**
1291
+ - \u8BA2\u5355\u53F7: \`${orderId}\`
1292
+ - \u5185\u5BB9: ${prompt.length > 50 ? prompt.slice(0, 50) + "..." : prompt}
1293
+ - \u4EF7\u683C: **${price} USDC**
1294
+ - \u94FE: ${chainName}
1295
+
1296
+ ---
1297
+
1298
+ ## \u{1F4B3} \u5982\u4F55\u652F\u4ED8
1299
+
1300
+ ### \u65B9\u5F0F\u4E00\uFF1A\u5B89\u88C5 moltspay SDK\uFF08\u63A8\u8350\uFF09
1301
+
1302
+ \`\`\`bash
1303
+ npm install moltspay ethers
1304
+ \`\`\`
1305
+
1306
+ **\u521B\u5EFA\u94B1\u5305\u5E76\u652F\u4ED8\uFF1A**
1307
+
1308
+ \`\`\`javascript
1309
+ const { SecureWallet, getChain } = require('moltspay');
1310
+ const { Wallet } = require('ethers');
1311
+
1312
+ // 1. \u521B\u5EFA\u65B0\u94B1\u5305\uFF08\u9996\u6B21\u4F7F\u7528\uFF09
1313
+ const newWallet = Wallet.createRandom();
1314
+ console.log('\u94B1\u5305\u5730\u5740:', newWallet.address);
1315
+ console.log('\u79C1\u94A5\uFF08\u8BF7\u5B89\u5168\u4FDD\u5B58\uFF09:', newWallet.privateKey);
1316
+
1317
+ // 2. \u6216\u4F7F\u7528\u5DF2\u6709\u94B1\u5305
1318
+ const wallet = new SecureWallet({
1319
+ chainId: ${chainId},
1320
+ privateKey: process.env.WALLET_KEY, // \u4F60\u7684\u79C1\u94A5
1321
+ limits: { requireWhitelist: false } // \u5141\u8BB8\u5411\u4EFB\u610F\u5730\u5740\u8F6C\u8D26
1322
+ });
1323
+
1324
+ // 3. \u67E5\u770B\u4F59\u989D
1325
+ const balance = await wallet.getBalance();
1326
+ console.log('USDC\u4F59\u989D:', balance.usdc);
1327
+
1328
+ // 4. \u652F\u4ED8
1329
+ const result = await wallet.transfer('${recipientAddress}', '${price}');
1330
+ if (result.success) {
1331
+ console.log('\u2705 \u652F\u4ED8\u6210\u529F\uFF01');
1332
+ console.log('\u4EA4\u6613hash:', result.hash);
1333
+ // \u628A\u4EA4\u6613hash\u53D1\u7ED9\u6211
1334
+ }
1335
+ \`\`\`
1336
+
1337
+ ### \u65B9\u5F0F\u4E8C\uFF1A\u76F4\u63A5\u8F6C\u8D26
1338
+
1339
+ \u4ECE\u4EFB\u610F\u94B1\u5305\u8F6C\u8D26 USDC\uFF1A
1340
+ - **\u94FE:** ${chainName} (Chain ID: ${chainId})
1341
+ - **Token:** USDC
1342
+ - **\u6536\u6B3E\u5730\u5740:** \`${recipientAddress}\`
1343
+ - **\u91D1\u989D:** ${price} USDC
1344
+
1345
+ ---
1346
+
1347
+ ## \u2705 \u652F\u4ED8\u5B8C\u6210\u540E
1348
+
1349
+ \u8BF7\u53D1\u9001**\u4EA4\u6613hash**\u7ED9\u6211\uFF0C\u683C\u5F0F\uFF1A
1350
+ \`\`\`
1351
+ tx: 0x1234...
1352
+ \`\`\`
1353
+
1354
+ \u6216\u76F4\u63A5\u53D1\u9001hash\uFF1A
1355
+ \`\`\`
1356
+ 0x1234abcd...
1357
+ \`\`\`
1358
+
1359
+ \u6211\u4F1A\u9A8C\u8BC1\u94FE\u4E0A\u4EA4\u6613\u540E\u5F00\u59CB\u5904\u7406\u4F60\u7684\u8BF7\u6C42\u3002
1360
+
1361
+ ---
1362
+
1363
+ \u{1F4E6} **moltspay:** https://www.npmjs.com/package/moltspay
1364
+ \u{1F517} **\u533A\u5757\u6D4F\u89C8\u5668:** ${explorer}`;
1365
+ }
1366
+ function generatePaymentReminder(params) {
1367
+ const { orderId, price, recipientAddress, chain = "base" } = params;
1368
+ const chainName = chain === "base" ? "Base" : "Base Sepolia";
1369
+ return `\u23F3 **\u5F85\u652F\u4ED8\u8BA2\u5355: ${orderId}**
1370
+
1371
+ \u8BF7\u652F\u4ED8 **${price} USDC** \u5230:
1372
+ - \u94FE: ${chainName}
1373
+ - \u5730\u5740: \`${recipientAddress}\`
1374
+
1375
+ \u652F\u4ED8\u540E\u53D1\u9001\u4EA4\u6613hash\u7ED9\u6211\u3002
1376
+
1377
+ ---
1378
+ \u{1F4A1} \u6CA1\u6709\u652F\u4ED8\u80FD\u529B\uFF1F\u8FD0\u884C \`npm install moltspay\` \u83B7\u53D6\u652F\u4ED8SDK`;
1379
+ }
1380
+ function generateWalletGuide() {
1381
+ return `## \u{1F510} \u521B\u5EFA\u652F\u4ED8\u94B1\u5305
1382
+
1383
+ **1. \u5B89\u88C5 moltspay:**
1384
+ \`\`\`bash
1385
+ npm install moltspay ethers
1386
+ \`\`\`
1387
+
1388
+ **2. \u521B\u5EFA\u65B0\u94B1\u5305:**
1389
+ \`\`\`javascript
1390
+ const { Wallet } = require('ethers');
1391
+
1392
+ const wallet = Wallet.createRandom();
1393
+ console.log('\u5730\u5740:', wallet.address);
1394
+ console.log('\u79C1\u94A5:', wallet.privateKey);
1395
+ // \u26A0\uFE0F \u8BF7\u5B89\u5168\u4FDD\u5B58\u79C1\u94A5\uFF01
1396
+ \`\`\`
1397
+
1398
+ **3. \u83B7\u53D6 USDC:**
1399
+ - \u4E3B\u7F51: \u4ECE\u4EA4\u6613\u6240\u63D0\u5E01\u5230\u4F60\u7684\u94B1\u5305\u5730\u5740
1400
+ - \u6D4B\u8BD5\u7F51: \u4F7F\u7528 Base Sepolia faucet
1401
+
1402
+ **4. \u8BBE\u7F6E\u73AF\u5883\u53D8\u91CF:**
1403
+ \`\`\`bash
1404
+ export WALLET_KEY="\u4F60\u7684\u79C1\u94A5"
1405
+ \`\`\`
1406
+
1407
+ \u5B8C\u6210\u540E\u5373\u53EF\u4F7F\u7528 moltspay \u8FDB\u884C\u94FE\u4E0A\u652F\u4ED8\uFF01`;
1408
+ }
1409
+ function extractTransactionHash(message) {
1410
+ const match = message.match(/0x[a-fA-F0-9]{64}/);
1411
+ if (match) return match[0];
1412
+ const txMatch = message.match(/tx:\s*([a-fA-F0-9]{64})/i);
1413
+ if (txMatch) return "0x" + txMatch[1];
1414
+ return null;
1415
+ }
1416
+ function hasTransactionHash(message) {
1417
+ return extractTransactionHash(message) !== null;
1418
+ }
1269
1419
  // Annotate the CommonJS export names for ESM import in node:
1270
1420
  0 && (module.exports = {
1271
1421
  AuditLog,
@@ -1277,9 +1427,14 @@ async function waitForTransaction(txHash, chain = "base", confirmations = 1, tim
1277
1427
  PermitPayment,
1278
1428
  SecureWallet,
1279
1429
  Wallet,
1430
+ extractTransactionHash,
1431
+ generatePaymentGuide,
1432
+ generatePaymentReminder,
1433
+ generateWalletGuide,
1280
1434
  getChain,
1281
1435
  getChainById,
1282
1436
  getTransactionStatus,
1437
+ hasTransactionHash,
1283
1438
  listChains,
1284
1439
  verifyPayment,
1285
1440
  waitForTransaction