moltspay 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
@@ -1,9 +1,10 @@
1
1
  import { C as ChainName, a as ChainConfig, P as PaymentAgentConfig, b as CreateInvoiceParams, I as Invoice, V as VerifyOptions, c as VerifyResult, W as WalletBalance, A as AuditAction, d as AuditEntry } from './index-CZzgdtin.mjs';
2
2
  export { E as EIP712TypedData, e as PendingTransfer, f as PermitExecuteResult, g as PermitRequest, h as PermitSignature, S as SecureWalletConfig, i as SecurityLimits, T as TransferParams, j as TransferResult } from './index-CZzgdtin.mjs';
3
- export { SecureWallet, Wallet } from './wallet/index.mjs';
3
+ export { CreateWalletOptions, CreateWalletResult, PermitData, PermitWallet, PermitWalletConfig, SecureWallet, TransferWithPermitParams, TransferWithPermitResult, Wallet, WalletData, createWallet, formatPermitRequest, getWalletAddress, loadWallet, walletExists } 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
  /**
@@ -117,4 +118,251 @@ declare class AuditLog {
117
118
  private ensureDir;
118
119
  }
119
120
 
120
- export { AuditAction, AuditEntry, AuditLog, ChainConfig, ChainName, CreateInvoiceParams, Invoice, PaymentAgent, PaymentAgentConfig, VerifyOptions, VerifyResult, WalletBalance };
121
+ /**
122
+ * Receipt - 交易收据生成
123
+ *
124
+ * 用于生成标准化的交易收据,便于对账/报销/审计
125
+ */
126
+
127
+ interface ReceiptParams {
128
+ /** 发票号(自动生成或指定) */
129
+ invoiceId?: string;
130
+ /** 订单号 */
131
+ orderId: string;
132
+ /** 服务名称 */
133
+ service: string;
134
+ /** 服务描述 */
135
+ description?: string;
136
+ /** 金额 */
137
+ amount: number;
138
+ /** Token */
139
+ token?: 'USDC' | 'USDT' | 'ETH';
140
+ /** 链 */
141
+ chain: ChainName;
142
+ /** 交易 hash */
143
+ txHash: string;
144
+ /** 付款方地址 */
145
+ payerAddress: string;
146
+ /** 收款方地址 */
147
+ recipientAddress: string;
148
+ /** 交付信息 */
149
+ delivery?: {
150
+ /** 交付物 URL */
151
+ url?: string;
152
+ /** 文件 hash */
153
+ fileHash?: string;
154
+ /** 交付时间 */
155
+ deliveredAt?: string;
156
+ };
157
+ /** 额外元数据 */
158
+ metadata?: Record<string, unknown>;
159
+ }
160
+ interface Receipt {
161
+ type: 'receipt';
162
+ version: '1.0';
163
+ /** 发票号 */
164
+ invoiceId: string;
165
+ /** 订单号 */
166
+ orderId: string;
167
+ /** 服务 */
168
+ service: string;
169
+ description?: string;
170
+ /** 金额 */
171
+ amount: string;
172
+ token: string;
173
+ /** 链信息 */
174
+ chain: string;
175
+ chainId: number;
176
+ /** 交易信息 */
177
+ txHash: string;
178
+ txUrl: string;
179
+ /** 参与方 */
180
+ payer: string;
181
+ recipient: string;
182
+ /** 时间 */
183
+ paidAt: string;
184
+ issuedAt: string;
185
+ /** 交付信息 */
186
+ delivery?: {
187
+ url?: string;
188
+ fileHash?: string;
189
+ deliveredAt?: string;
190
+ };
191
+ /** 额外元数据 */
192
+ metadata?: Record<string, unknown>;
193
+ }
194
+ /**
195
+ * 生成交易收据
196
+ */
197
+ declare function generateReceipt(params: ReceiptParams): Receipt;
198
+ /**
199
+ * 从 Invoice + VerifyResult 生成收据
200
+ */
201
+ declare function generateReceiptFromInvoice(invoice: Invoice, verifyResult: VerifyResult, delivery?: ReceiptParams['delivery']): Receipt;
202
+ /**
203
+ * 格式化收据为人类可读消息
204
+ */
205
+ declare function formatReceiptMessage(receipt: Receipt): string;
206
+ /**
207
+ * 格式化收据为纯文本(适合飞书/WhatsApp)
208
+ */
209
+ declare function formatReceiptText(receipt: Receipt): string;
210
+ /**
211
+ * 格式化收据为 JSON(适合 Agent 解析)
212
+ */
213
+ declare function formatReceiptJson(receipt: Receipt): string;
214
+
215
+ /**
216
+ * Agent 对话模板
217
+ *
218
+ * 标准化的 Agent-to-Agent 支付对话模板
219
+ * 可直接嵌入 prompt 或用于生成对话
220
+ */
221
+
222
+ declare const SellerTemplates: {
223
+ /**
224
+ * 1. 能力识别 - 询问买方是否有支付能力
225
+ */
226
+ askPaymentCapability(): string;
227
+ /**
228
+ * 2. 能力协商 - 说明结算方式
229
+ */
230
+ explainSettlement(chain?: ChainName): string;
231
+ /**
232
+ * 3.1 引导安装 - 第一步安装 SDK
233
+ */
234
+ guideInstall(): string;
235
+ /**
236
+ * 3.2 确认钱包地址
237
+ */
238
+ confirmWalletAddress(address: string): string;
239
+ /**
240
+ * 3.3 引导获取资金 - 选择方式
241
+ */
242
+ guideFunding(): string;
243
+ /**
244
+ * 3.4 引导 Permit 授权
245
+ */
246
+ guidePermit(agentAddress: string, suggestedAmount?: number): string;
247
+ /**
248
+ * 3.5 确认能力就绪
249
+ */
250
+ confirmCapabilityReady(): string;
251
+ /**
252
+ * 4. 询问服务需求
253
+ */
254
+ askServiceRequirements(serviceName?: string): string;
255
+ /**
256
+ * 5. 报价
257
+ */
258
+ quote(params: {
259
+ service: string;
260
+ price: number;
261
+ recipientAddress: string;
262
+ chain?: ChainName;
263
+ }): string;
264
+ /**
265
+ * 7. 验证中
266
+ */
267
+ verifying(): string;
268
+ /**
269
+ * 7. 验证通过
270
+ */
271
+ verificationPassed(amount: string): string;
272
+ /**
273
+ * 7. 验证失败
274
+ */
275
+ verificationFailed(error: string): string;
276
+ /**
277
+ * 8. 交付
278
+ */
279
+ deliver(params: {
280
+ downloadUrl: string;
281
+ fileHash?: string;
282
+ }): string;
283
+ /**
284
+ * 9. 收据
285
+ */
286
+ receipt(receipt: Receipt): string;
287
+ /**
288
+ * 10. 结束
289
+ */
290
+ end(): string;
291
+ };
292
+ declare const BuyerTemplates: {
293
+ /**
294
+ * 0. 发起请求
295
+ */
296
+ requestService(service: string): string;
297
+ /**
298
+ * 1. 回复无能力
299
+ */
300
+ noCapability(): string;
301
+ /**
302
+ * 1. 回复有能力
303
+ */
304
+ hasCapability(balance?: string): string;
305
+ /**
306
+ * 2. 同意引导
307
+ */
308
+ agreeToGuide(): string;
309
+ /**
310
+ * 3.1 报告钱包创建完成
311
+ */
312
+ walletCreated(address: string): string;
313
+ /**
314
+ * 3.3 选择 Permit 方式
315
+ */
316
+ choosePermit(): string;
317
+ /**
318
+ * 3.3 选择直接转账方式
319
+ */
320
+ chooseDirectTransfer(): string;
321
+ /**
322
+ * 3.4 报告获得授权
323
+ */
324
+ permitReceived(amount: number): string;
325
+ /**
326
+ * 4. 提交需求
327
+ */
328
+ submitRequirements(requirements: string): string;
329
+ /**
330
+ * 5. 确认购买
331
+ */
332
+ confirmPurchase(): string;
333
+ /**
334
+ * 6. 报告已支付
335
+ */
336
+ paymentSent(txHash: string, amount: number): string;
337
+ /**
338
+ * 8. 确认收到交付
339
+ */
340
+ deliveryReceived(): string;
341
+ /**
342
+ * 9. 确认收据
343
+ */
344
+ receiptReceived(): string;
345
+ /**
346
+ * 向 Boss 请求 Permit
347
+ */
348
+ requestPermitFromBoss(params: {
349
+ amount: number;
350
+ agentAddress: string;
351
+ deadlineHours?: number;
352
+ reason?: string;
353
+ }): string;
354
+ };
355
+ declare const StatusMarkers: {
356
+ walletReady: string;
357
+ permitReady: (amount: number) => string;
358
+ paymentSent: (txHash: string, amount: number) => string;
359
+ paymentConfirmed: (txHash: string) => string;
360
+ delivered: (url: string, hash?: string) => string;
361
+ receiptIssued: (invoiceId: string, txHash: string) => string;
362
+ };
363
+ declare function parseStatusMarker(message: string): {
364
+ type: string;
365
+ data: Record<string, string>;
366
+ } | null;
367
+
368
+ export { AuditAction, AuditEntry, AuditLog, BuyerTemplates, ChainConfig, ChainName, CreateInvoiceParams, Invoice, PaymentAgent, PaymentAgentConfig, type Receipt, type ReceiptParams, SellerTemplates, StatusMarkers, VerifyOptions, VerifyResult, WalletBalance, formatReceiptJson, formatReceiptMessage, formatReceiptText, generateReceipt, generateReceiptFromInvoice, parseStatusMarker };
package/dist/index.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { C as ChainName, a as ChainConfig, P as PaymentAgentConfig, b as CreateInvoiceParams, I as Invoice, V as VerifyOptions, c as VerifyResult, W as WalletBalance, A as AuditAction, d as AuditEntry } from './index-CZzgdtin.js';
2
2
  export { E as EIP712TypedData, e as PendingTransfer, f as PermitExecuteResult, g as PermitRequest, h as PermitSignature, S as SecureWalletConfig, i as SecurityLimits, T as TransferParams, j as TransferResult } from './index-CZzgdtin.js';
3
- export { SecureWallet, Wallet } from './wallet/index.js';
3
+ export { CreateWalletOptions, CreateWalletResult, PermitData, PermitWallet, PermitWalletConfig, SecureWallet, TransferWithPermitParams, TransferWithPermitResult, Wallet, WalletData, createWallet, formatPermitRequest, getWalletAddress, loadWallet, walletExists } 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
  /**
@@ -117,4 +118,251 @@ declare class AuditLog {
117
118
  private ensureDir;
118
119
  }
119
120
 
120
- export { AuditAction, AuditEntry, AuditLog, ChainConfig, ChainName, CreateInvoiceParams, Invoice, PaymentAgent, PaymentAgentConfig, VerifyOptions, VerifyResult, WalletBalance };
121
+ /**
122
+ * Receipt - 交易收据生成
123
+ *
124
+ * 用于生成标准化的交易收据,便于对账/报销/审计
125
+ */
126
+
127
+ interface ReceiptParams {
128
+ /** 发票号(自动生成或指定) */
129
+ invoiceId?: string;
130
+ /** 订单号 */
131
+ orderId: string;
132
+ /** 服务名称 */
133
+ service: string;
134
+ /** 服务描述 */
135
+ description?: string;
136
+ /** 金额 */
137
+ amount: number;
138
+ /** Token */
139
+ token?: 'USDC' | 'USDT' | 'ETH';
140
+ /** 链 */
141
+ chain: ChainName;
142
+ /** 交易 hash */
143
+ txHash: string;
144
+ /** 付款方地址 */
145
+ payerAddress: string;
146
+ /** 收款方地址 */
147
+ recipientAddress: string;
148
+ /** 交付信息 */
149
+ delivery?: {
150
+ /** 交付物 URL */
151
+ url?: string;
152
+ /** 文件 hash */
153
+ fileHash?: string;
154
+ /** 交付时间 */
155
+ deliveredAt?: string;
156
+ };
157
+ /** 额外元数据 */
158
+ metadata?: Record<string, unknown>;
159
+ }
160
+ interface Receipt {
161
+ type: 'receipt';
162
+ version: '1.0';
163
+ /** 发票号 */
164
+ invoiceId: string;
165
+ /** 订单号 */
166
+ orderId: string;
167
+ /** 服务 */
168
+ service: string;
169
+ description?: string;
170
+ /** 金额 */
171
+ amount: string;
172
+ token: string;
173
+ /** 链信息 */
174
+ chain: string;
175
+ chainId: number;
176
+ /** 交易信息 */
177
+ txHash: string;
178
+ txUrl: string;
179
+ /** 参与方 */
180
+ payer: string;
181
+ recipient: string;
182
+ /** 时间 */
183
+ paidAt: string;
184
+ issuedAt: string;
185
+ /** 交付信息 */
186
+ delivery?: {
187
+ url?: string;
188
+ fileHash?: string;
189
+ deliveredAt?: string;
190
+ };
191
+ /** 额外元数据 */
192
+ metadata?: Record<string, unknown>;
193
+ }
194
+ /**
195
+ * 生成交易收据
196
+ */
197
+ declare function generateReceipt(params: ReceiptParams): Receipt;
198
+ /**
199
+ * 从 Invoice + VerifyResult 生成收据
200
+ */
201
+ declare function generateReceiptFromInvoice(invoice: Invoice, verifyResult: VerifyResult, delivery?: ReceiptParams['delivery']): Receipt;
202
+ /**
203
+ * 格式化收据为人类可读消息
204
+ */
205
+ declare function formatReceiptMessage(receipt: Receipt): string;
206
+ /**
207
+ * 格式化收据为纯文本(适合飞书/WhatsApp)
208
+ */
209
+ declare function formatReceiptText(receipt: Receipt): string;
210
+ /**
211
+ * 格式化收据为 JSON(适合 Agent 解析)
212
+ */
213
+ declare function formatReceiptJson(receipt: Receipt): string;
214
+
215
+ /**
216
+ * Agent 对话模板
217
+ *
218
+ * 标准化的 Agent-to-Agent 支付对话模板
219
+ * 可直接嵌入 prompt 或用于生成对话
220
+ */
221
+
222
+ declare const SellerTemplates: {
223
+ /**
224
+ * 1. 能力识别 - 询问买方是否有支付能力
225
+ */
226
+ askPaymentCapability(): string;
227
+ /**
228
+ * 2. 能力协商 - 说明结算方式
229
+ */
230
+ explainSettlement(chain?: ChainName): string;
231
+ /**
232
+ * 3.1 引导安装 - 第一步安装 SDK
233
+ */
234
+ guideInstall(): string;
235
+ /**
236
+ * 3.2 确认钱包地址
237
+ */
238
+ confirmWalletAddress(address: string): string;
239
+ /**
240
+ * 3.3 引导获取资金 - 选择方式
241
+ */
242
+ guideFunding(): string;
243
+ /**
244
+ * 3.4 引导 Permit 授权
245
+ */
246
+ guidePermit(agentAddress: string, suggestedAmount?: number): string;
247
+ /**
248
+ * 3.5 确认能力就绪
249
+ */
250
+ confirmCapabilityReady(): string;
251
+ /**
252
+ * 4. 询问服务需求
253
+ */
254
+ askServiceRequirements(serviceName?: string): string;
255
+ /**
256
+ * 5. 报价
257
+ */
258
+ quote(params: {
259
+ service: string;
260
+ price: number;
261
+ recipientAddress: string;
262
+ chain?: ChainName;
263
+ }): string;
264
+ /**
265
+ * 7. 验证中
266
+ */
267
+ verifying(): string;
268
+ /**
269
+ * 7. 验证通过
270
+ */
271
+ verificationPassed(amount: string): string;
272
+ /**
273
+ * 7. 验证失败
274
+ */
275
+ verificationFailed(error: string): string;
276
+ /**
277
+ * 8. 交付
278
+ */
279
+ deliver(params: {
280
+ downloadUrl: string;
281
+ fileHash?: string;
282
+ }): string;
283
+ /**
284
+ * 9. 收据
285
+ */
286
+ receipt(receipt: Receipt): string;
287
+ /**
288
+ * 10. 结束
289
+ */
290
+ end(): string;
291
+ };
292
+ declare const BuyerTemplates: {
293
+ /**
294
+ * 0. 发起请求
295
+ */
296
+ requestService(service: string): string;
297
+ /**
298
+ * 1. 回复无能力
299
+ */
300
+ noCapability(): string;
301
+ /**
302
+ * 1. 回复有能力
303
+ */
304
+ hasCapability(balance?: string): string;
305
+ /**
306
+ * 2. 同意引导
307
+ */
308
+ agreeToGuide(): string;
309
+ /**
310
+ * 3.1 报告钱包创建完成
311
+ */
312
+ walletCreated(address: string): string;
313
+ /**
314
+ * 3.3 选择 Permit 方式
315
+ */
316
+ choosePermit(): string;
317
+ /**
318
+ * 3.3 选择直接转账方式
319
+ */
320
+ chooseDirectTransfer(): string;
321
+ /**
322
+ * 3.4 报告获得授权
323
+ */
324
+ permitReceived(amount: number): string;
325
+ /**
326
+ * 4. 提交需求
327
+ */
328
+ submitRequirements(requirements: string): string;
329
+ /**
330
+ * 5. 确认购买
331
+ */
332
+ confirmPurchase(): string;
333
+ /**
334
+ * 6. 报告已支付
335
+ */
336
+ paymentSent(txHash: string, amount: number): string;
337
+ /**
338
+ * 8. 确认收到交付
339
+ */
340
+ deliveryReceived(): string;
341
+ /**
342
+ * 9. 确认收据
343
+ */
344
+ receiptReceived(): string;
345
+ /**
346
+ * 向 Boss 请求 Permit
347
+ */
348
+ requestPermitFromBoss(params: {
349
+ amount: number;
350
+ agentAddress: string;
351
+ deadlineHours?: number;
352
+ reason?: string;
353
+ }): string;
354
+ };
355
+ declare const StatusMarkers: {
356
+ walletReady: string;
357
+ permitReady: (amount: number) => string;
358
+ paymentSent: (txHash: string, amount: number) => string;
359
+ paymentConfirmed: (txHash: string) => string;
360
+ delivered: (url: string, hash?: string) => string;
361
+ receiptIssued: (invoiceId: string, txHash: string) => string;
362
+ };
363
+ declare function parseStatusMarker(message: string): {
364
+ type: string;
365
+ data: Record<string, string>;
366
+ } | null;
367
+
368
+ export { AuditAction, AuditEntry, AuditLog, BuyerTemplates, ChainConfig, ChainName, CreateInvoiceParams, Invoice, PaymentAgent, PaymentAgentConfig, type Receipt, type ReceiptParams, SellerTemplates, StatusMarkers, VerifyOptions, VerifyResult, WalletBalance, formatReceiptJson, formatReceiptMessage, formatReceiptText, generateReceipt, generateReceiptFromInvoice, parseStatusMarker };