@ocap/client 1.25.3 → 1.25.4

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.
Files changed (48) hide show
  1. package/README.md +76 -80
  2. package/dist/report.html +1 -1
  3. package/docs/_sidebar.md +22 -0
  4. package/docs/api-reference-client-methods.md +229 -0
  5. package/docs/api-reference-client-methods.zh.md +229 -0
  6. package/docs/api-reference-data-types.md +482 -0
  7. package/docs/api-reference-data-types.zh.md +482 -0
  8. package/docs/api-reference-low-level-api.md +228 -0
  9. package/docs/api-reference-low-level-api.zh.md +228 -0
  10. package/docs/api-reference-query-mutation-methods.md +814 -0
  11. package/docs/api-reference-query-mutation-methods.zh.md +814 -0
  12. package/docs/api-reference-transaction-helpers.md +649 -0
  13. package/docs/api-reference-transaction-helpers.zh.md +649 -0
  14. package/docs/api-reference.md +23 -0
  15. package/docs/api-reference.zh.md +23 -0
  16. package/docs/core-concepts-client-architecture.md +102 -0
  17. package/docs/core-concepts-client-architecture.zh.md +102 -0
  18. package/docs/core-concepts-event-subscriptions.md +123 -0
  19. package/docs/core-concepts-event-subscriptions.zh.md +123 -0
  20. package/docs/core-concepts-gas-payment.md +111 -0
  21. package/docs/core-concepts-gas-payment.zh.md +111 -0
  22. package/docs/core-concepts-transaction-lifecycle.md +183 -0
  23. package/docs/core-concepts-transaction-lifecycle.zh.md +183 -0
  24. package/docs/core-concepts.md +22 -0
  25. package/docs/core-concepts.zh.md +22 -0
  26. package/docs/getting-started-basic-usage.md +87 -0
  27. package/docs/getting-started-basic-usage.zh.md +87 -0
  28. package/docs/getting-started-installation.md +60 -0
  29. package/docs/getting-started-installation.zh.md +60 -0
  30. package/docs/getting-started.md +16 -0
  31. package/docs/getting-started.zh.md +16 -0
  32. package/docs/how-to-guides-delegate-permissions.md +167 -0
  33. package/docs/how-to-guides-delegate-permissions.zh.md +167 -0
  34. package/docs/how-to-guides-manage-accounts.md +73 -0
  35. package/docs/how-to-guides-manage-accounts.zh.md +73 -0
  36. package/docs/how-to-guides-manage-assets.md +255 -0
  37. package/docs/how-to-guides-manage-assets.zh.md +255 -0
  38. package/docs/how-to-guides-manage-tokens.md +179 -0
  39. package/docs/how-to-guides-manage-tokens.zh.md +179 -0
  40. package/docs/how-to-guides-stake-tokens-and-assets.md +205 -0
  41. package/docs/how-to-guides-stake-tokens-and-assets.zh.md +205 -0
  42. package/docs/how-to-guides-transfer-tokens-and-nfts.md +179 -0
  43. package/docs/how-to-guides-transfer-tokens-and-nfts.zh.md +179 -0
  44. package/docs/how-to-guides.md +27 -0
  45. package/docs/how-to-guides.zh.md +27 -0
  46. package/docs/overview.md +70 -0
  47. package/docs/overview.zh.md +70 -0
  48. package/package.json +14 -14
@@ -0,0 +1,649 @@
1
+ # 高级 API
2
+
3
+ 交易助手是 OCAP Client 内置的高级函数,它抽象了创建和签署常见交易的复杂性。您可以使用这些便捷的方法来处理创建资产、转移通证、质押和执行原子交换等工作流程,而无需手动构建交易对象。这些助手确保了交易结构的正确性,并显著简化了开发过程。
4
+
5
+ 要更深入地了解底层交易生命周期,请参阅[核心概念:交易生命周期](./core-concepts-transaction-lifecycle.md)。
6
+
7
+ ---
8
+
9
+ ## 账户管理
10
+
11
+ ### migrateAccount
12
+
13
+ 将账户的所有权迁移到新的密钥对。这对于密钥轮换或账户恢复很有用。
14
+
15
+ **参数**
16
+
17
+ <x-field-group>
18
+ <x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="要从中迁移的账户的钱包对象。"></x-field>
19
+ <x-field data-name="to" data-type="WalletObject" data-required="true" data-desc="要迁移到的账户的钱包对象。"></x-field>
20
+ </x-field-group>
21
+
22
+ **返回**
23
+
24
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
25
+
26
+ **示例**
27
+
28
+ ```javascript Send an AccountMigrateTx icon=logos:javascript
29
+ const txHash = await client.migrateAccount({
30
+ from: oldWallet,
31
+ to: newWallet,
32
+ });
33
+ console.log('迁移交易哈希:', txHash);
34
+ ```
35
+
36
+ ### delegate
37
+
38
+ 授权另一个账户(受托人)代表委托人发送特定类型的交易。这是一个用于创建安全的沙盒权限的强大功能。
39
+
40
+ **参数**
41
+
42
+ <x-field-group>
43
+ <x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="授予权限的委托人的钱包。"></x-field>
44
+ <x-field data-name="to" data-type="WalletObject" data-required="true" data-desc="接收权限的受托人的钱包。"></x-field>
45
+ <x-field data-name="privileges" data-type="array" data-required="true" data-desc="一个指定允许操作的权限对象数组。">
46
+ <x-field data-name="typeUrl" data-type="string" data-required="true" data-desc="被允许的交易的类型 URL(例如,'fg:t:transfer_v2')。"></x-field>
47
+ <x-field data-name="limit" data-type="object" data-required="false" data-desc="对委托的可选限制。">
48
+ <x-field data-name="tokens" data-type="array" data-desc="对特定可替代通证的限制。"></x-field>
49
+ <x-field data-name="assets" data-type="array" data-desc="对特定资产 (NFT) 的限制。"></x-field>
50
+ </x-field>
51
+ </x-field>
52
+ </x-field-group>
53
+
54
+ **返回**
55
+
56
+ <x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建的委托地址的数组。"></x-field>
57
+
58
+ **示例**
59
+
60
+ ```javascript Send a DelegateTx icon=logos:javascript
61
+ const [txHash, delegateAddress] = await client.delegate({
62
+ from: userWallet,
63
+ to: appWallet,
64
+ privileges: [
65
+ {
66
+ typeUrl: 'fg:t:transfer_v2',
67
+ },
68
+ ],
69
+ });
70
+ console.log('委托交易哈希:', txHash);
71
+ console.log('委托地址:', delegateAddress);
72
+ ```
73
+
74
+ ### revokeDelegate
75
+
76
+ 从受托人处撤销先前授予的权限。
77
+
78
+ **参数**
79
+
80
+ <x-field-group>
81
+ <x-field data-name="from" data-type="WalletObject" data-required="true" data-desc="委托人的钱包。"></x-field>
82
+ <x-field data-name="to" data-type="WalletObject" data-required="true" data-desc="受托人的钱包。"></x-field>
83
+ <x-field data-name="privileges" data-type="array" data-required="true" data-desc="一个指定要撤销权限的权限对象数组。">
84
+ <x-field data-name="typeUrl" data-type="string" data-required="true" data-desc="要撤销的交易的类型 URL(例如,'fg:t:transfer_v2')。"></x-field>
85
+ </x-field>
86
+ </x-field-group>
87
+
88
+ **返回**
89
+
90
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
91
+
92
+ **示例**
93
+
94
+ ```javascript Send a RevokeDelegateTx icon=logos:javascript
95
+ const txHash = await client.revokeDelegate({
96
+ from: userWallet,
97
+ to: appWallet,
98
+ privileges: ['fg:t:transfer_v2'],
99
+ });
100
+ console.log('撤销委托交易哈希:', txHash);
101
+ ```
102
+
103
+ ---
104
+
105
+ ## 资产 (NFT) 管理
106
+
107
+ ### createAsset
108
+
109
+ 在区块链上创建一个新资产(非同质化代币)。
110
+
111
+ **参数**
112
+
113
+ <x-field-group>
114
+ <x-field data-name="moniker" data-type="string" data-required="true" data-desc="资产的简短、人类可读的名称。"></x-field>
115
+ <x-field data-name="data" data-type="object" data-required="true" data-desc="包含资产元数据的 JSON 对象。"></x-field>
116
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="资产初始所有者的钱包。"></x-field>
117
+ <x-field data-name="parent" data-type="string" data-required="false" data-desc="父资产的地址,用于建立层级链接。"></x-field>
118
+ <x-field data-name="ttl" data-type="number" data-required="false" data-default="0" data-desc="首次消费后的存活时间(秒)。"></x-field>
119
+ <x-field data-name="readonly" data-type="boolean" data-required="false" data-default="false" data-desc="如果为 true,资产在创建后无法更新。"></x-field>
120
+ <x-field data-name="transferrable" data-type="boolean" data-required="false" data-default="true" data-desc="如果为 true,资产可以转移到另一个账户。"></x-field>
121
+ <x-field data-name="display" data-type="object" data-required="false" data-desc="用于资产显示元数据的对象。"></x-field>
122
+ <x-field data-name="endpoint" data-type="object" data-required="false" data-desc="用于资产端点元数据的对象。"></x-field>
123
+ <x-field data-name="tags" data-type="string[]" data-required="false" data-desc="用于分类的标签数组。"></x-field>
124
+ <x-field data-name="delegator" data-type="string" data-required="false" data-desc="委托人的地址,如果交易由受托人发送。"></x-field>
125
+ </x-field-group>
126
+
127
+ **返回**
128
+
129
+ <x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建资产地址的数组。"></x-field>
130
+
131
+ **示例**
132
+
133
+ ```javascript Send a CreateAssetTx icon=logos:javascript
134
+ const [txHash, assetAddress] = await client.createAsset({
135
+ moniker: 'My First NFT',
136
+ data: {
137
+ typeUrl: 'json',
138
+ value: { name: 'Digital Collectible', description: 'A unique item.' },
139
+ },
140
+ wallet: userWallet,
141
+ });
142
+ console.log('创建资产交易哈希:', txHash);
143
+ console.log('新资产地址:', assetAddress);
144
+ ```
145
+
146
+ ### updateAsset
147
+
148
+ 更新现有非只读资产的 `moniker` 和 `data` 字段。
149
+
150
+ **参数**
151
+
152
+ <x-field-group>
153
+ <x-field data-name="address" data-type="string" data-required="true" data-desc="要更新的资产地址。"></x-field>
154
+ <x-field data-name="moniker" data-type="string" data-required="true" data-desc="资产的新 moniker。"></x-field>
155
+ <x-field data-name="data" data-type="object" data-required="true" data-desc="资产的新 JSON 数据对象。"></x-field>
156
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="资产当前所有者的钱包。"></x-field>
157
+ </x-field-group>
158
+
159
+ **返回**
160
+
161
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
162
+
163
+ **示例**
164
+
165
+ ```javascript Send an UpdateAssetTx icon=logos:javascript
166
+ const txHash = await client.updateAsset({
167
+ address: 'z3g...',
168
+ moniker: 'Updated NFT Name',
169
+ data: {
170
+ typeUrl: 'json',
171
+ value: { name: 'Updated Collectible', description: 'Now with more features!' },
172
+ },
173
+ wallet: userWallet,
174
+ });
175
+ console.log('更新资产交易哈希:', txHash);
176
+ ```
177
+
178
+ ### createAssetFactory
179
+
180
+ 创建一个资产工厂,它作为模板用于铸造具有一致结构的多个新资产。
181
+
182
+ **参数**
183
+
184
+ <x-field-group>
185
+ <x-field data-name="factory" data-type="object" data-required="true" data-desc="包含工厂配置的对象。">
186
+ <x-field data-name="name" data-type="string" data-required="true" data-desc="工厂的名称。"></x-field>
187
+ <x-field data-name="description" data-type="string" data-required="true" data-desc="工厂的描述。"></x-field>
188
+ <x-field data-name="limit" data-type="number" data-required="false" data-default="0" data-desc="可以铸造的最大资产数量(0 表示无限制)。"></x-field>
189
+ <x-field data-name="trustedIssuers" data-type="string[]" data-required="false" data-desc="允许从此工厂铸造的钱包地址列表。"></x-field>
190
+ <x-field data-name="input" data-type="object" data-required="true" data-desc="定义铸造所需的输入。"></x-field>
191
+ <x-field data-name="output" data-type="object" data-required="true" data-desc="定义铸造资产的结构,通常使用模板。"></x-field>
192
+ </x-field>
193
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="拥有该工厂的钱包。"></x-field>
194
+ </x-field-group>
195
+
196
+ **返回**
197
+
198
+ <x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建工厂地址的数组。"></x-field>
199
+
200
+ **示例**
201
+
202
+ ```javascript Send a CreateFactoryTx icon=logos:javascript
203
+ const factoryConfig = {
204
+ name: 'Ticket Factory',
205
+ description: 'Mints event tickets',
206
+ limit: 1000,
207
+ input: { ... },
208
+ output: { ... },
209
+ };
210
+
211
+ const [txHash, factoryAddress] = await client.createAssetFactory({
212
+ factory: factoryConfig,
213
+ wallet: eventCreatorWallet,
214
+ });
215
+ console.log('创建工厂交易哈希:', txHash);
216
+ console.log('新工厂地址:', factoryAddress);
217
+ ```
218
+
219
+ ### acquireAsset
220
+
221
+ 从现有资产工厂获取(铸造)一个新资产。这通常由将拥有该资产的最终用户发起。
222
+
223
+ **参数**
224
+
225
+ <x-field-group>
226
+ <x-field data-name="itx" data-type="AcquireAssetV2Tx" data-required="true" data-desc="内部交易对象,通常使用像 `preMintAsset` 这样的辅助函数准备。"></x-field>
227
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="获取资产的用户的钱包。"></x-field>
228
+ <x-field data-name="delegator" data-type="string" data-required="false" data-desc="委托人的地址(如果适用)。"></x-field>
229
+ </x-field-group>
230
+
231
+ **返回**
232
+
233
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
234
+
235
+ **示例**
236
+
237
+ ```javascript Send an AcquireAssetV2Tx icon=logos:javascript
238
+ // 首先,准备铸造交易(例如,在服务器上)
239
+ const itx = await client.preMintAsset({
240
+ factory: factoryAddress,
241
+ owner: userWallet.address,
242
+ wallet: issuerWallet,
243
+ });
244
+
245
+ // 然后,用户发送交易
246
+ const txHash = await client.acquireAsset({ itx, wallet: userWallet });
247
+ console.log('获取资产交易哈希:', txHash);
248
+ ```
249
+
250
+ ### mintAsset
251
+
252
+ 这是 `acquireAsset` 的发行方对应操作。它允许受信任的发行方从工厂铸造资产并将其分配给指定的所有者。
253
+
254
+ **参数**
255
+
256
+ <x-field-group>
257
+ <x-field data-name="itx" data-type="MintAssetTx" data-required="true" data-desc="内部交易对象,通常使用 `preMintAsset` 准备。"></x-field>
258
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="受信任发行方的钱包。"></x-field>
259
+ </x-field-group>
260
+
261
+ **返回**
262
+
263
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
264
+
265
+ **示例**
266
+
267
+ ```javascript Send a MintAssetTx icon=logos:javascript
268
+ const itx = await client.preMintAsset({
269
+ factory: factoryAddress,
270
+ owner: userWallet.address,
271
+ wallet: issuerWallet,
272
+ });
273
+
274
+ const txHash = await client.mintAsset({ itx, wallet: issuerWallet });
275
+ console.log('铸造资产交易哈希:', txHash);
276
+ ```
277
+
278
+ ---
279
+
280
+ ## 通证管理
281
+
282
+ ### createTokenFactory
283
+
284
+ 创建一个用于铸造和销毁特定可替代通证的新工厂,通常基于联合曲线定价模型。
285
+
286
+ **参数**
287
+
288
+ <x-field-group>
289
+ <x-field data-name="feeRate" data-type="number" data-required="false" data-default="0" data-desc="铸造和销毁操作的费率。"></x-field>
290
+ <x-field data-name="curve" data-type="object" data-required="true" data-desc="用于定价的联合曲线配置。"></x-field>
291
+ <x-field data-name="token" data-type="object" data-required="true">
292
+ <x-field-desc markdown>要创建的通证的配置。这包括 `name`、`symbol`、`decimal` 和 `maxTotalSupply` 等属性。</x-field-desc>
293
+ </x-field>
294
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="通证工厂的可选元数据。"></x-field>
295
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工厂所有者的钱包。"></x-field>
296
+ </x-field-group>
297
+
298
+ **返回**
299
+
300
+ <x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建的通证工厂地址的数组。"></x-field>
301
+
302
+ **示例**
303
+
304
+ ```javascript Send a CreateTokenFactoryTx icon=logos:javascript
305
+ const [txHash, factoryAddress] = await client.createTokenFactory({
306
+ feeRate: 100, // 1%
307
+ curve: { fixedPrice: '1' }, // 每个新通证 1 个原生通证
308
+ token: {
309
+ name: 'My Community Token',
310
+ symbol: 'MCT',
311
+ decimal: 18,
312
+ maxTotalSupply: '1000000',
313
+ },
314
+ wallet: creatorWallet,
315
+ });
316
+ console.log('创建通证工厂交易哈希:', txHash);
317
+ console.log('新通证工厂地址:', factoryAddress);
318
+ ```
319
+
320
+ ### updateTokenFactory
321
+
322
+ 更新现有通证工厂的 `feeRate` 和 `data`。
323
+
324
+ **参数**
325
+
326
+ <x-field-group>
327
+ <x-field data-name="address" data-type="string" data-required="true" data-desc="要更新的通证工厂地址。"></x-field>
328
+ <x-field data-name="feeRate" data-type="number" data-required="false" data-desc="新的铸造和销毁费率。"></x-field>
329
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="通证工厂的新元数据。"></x-field>
330
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="工厂所有者的钱包。"></x-field>
331
+ </x-field-group>
332
+
333
+ **返回**
334
+
335
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
336
+
337
+ **示例**
338
+
339
+ ```javascript Send an UpdateTokenFactoryTx icon=logos:javascript
340
+ const txHash = await client.updateTokenFactory({
341
+ address: 'z2f...',
342
+ feeRate: 50, // 0.5%
343
+ wallet: ownerWallet,
344
+ });
345
+ console.log('更新通证工厂交易哈希:', txHash);
346
+ ```
347
+
348
+ ### mintToken
349
+
350
+ 从通证工厂铸造新通证,以换取储备通证(通常是原生链通证)。成本由工厂的联合曲线决定。
351
+
352
+ **参数**
353
+
354
+ <x-field-group>
355
+ <x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="通证工厂的地址。"></x-field>
356
+ <x-field data-name="amount" data-type="number" data-required="true" data-desc="要铸造的新通证数量。"></x-field>
357
+ <x-field data-name="receiver" data-type="string" data-required="true" data-desc="将接收新铸造通证的地址。"></x-field>
358
+ <x-field data-name="maxReserve" data-type="number" data-required="true" data-desc="用户愿意支付的储备通证的最大数量。这起到滑点保护的作用。"></x-field>
359
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="交易的可选元数据。"></x-field>
360
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="发起铸造的钱包。"></x-field>
361
+ </x-field-group>
362
+
363
+ **返回**
364
+
365
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
366
+
367
+ **示例**
368
+
369
+ ```javascript Send a MintTokenTx icon=logos:javascript
370
+ const txHash = await client.mintToken({
371
+ tokenFactory: 'z2f...',
372
+ amount: 100,
373
+ receiver: userWallet.address,
374
+ maxReserve: 105, // 愿意最多支付 105 个原生通证
375
+ wallet: userWallet,
376
+ });
377
+ console.log('铸造通证交易哈希:', txHash);
378
+ ```
379
+
380
+ ### burnToken
381
+
382
+ 在工厂销毁现有通证,以换取底层的储备通证。收到的储备通证数量由工厂的联合曲线决定。
383
+
384
+ **参数**
385
+
386
+ <x-field-group>
387
+ <x-field data-name="tokenFactory" data-type="string" data-required="true" data-desc="通证工厂的地址。"></x-field>
388
+ <x-field data-name="amount" data-type="number" data-required="true" data-desc="要销毁的通证数量。"></x-field>
389
+ <x-field data-name="receiver" data-type="string" data-required="true" data-desc="将接收储备通证的地址。"></x-field>
390
+ <x-field data-name="minReserve" data-type="number" data-required="true" data-desc="用户期望收到的储备通证的最小数量。这起到滑点保护的作用。"></x-field>
391
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="交易的可选元数据。"></x-field>
392
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="发起销毁的钱包。"></x-field>
393
+ </x-field-group>
394
+
395
+ **返回**
396
+
397
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
398
+
399
+ **示例**
400
+
401
+ ```javascript Send a BurnTokenTx icon=logos:javascript
402
+ const txHash = await client.burnToken({
403
+ tokenFactory: 'z2f...',
404
+ amount: 50,
405
+ receiver: userWallet.address,
406
+ minReserve: 48, // 期望至少收到 48 个原生通证
407
+ wallet: userWallet,
408
+ });
409
+ console.log('销毁通证交易哈希:', txHash);
410
+ ```
411
+
412
+ ---
413
+
414
+ ## 转账与交换
415
+
416
+ ### transfer
417
+
418
+ 在单笔交易中将原生通证、自定义可替代通证和/或资产(NFT)转移到另一个账户。
419
+
420
+ **参数**
421
+
422
+ <x-field-group>
423
+ <x-field data-name="to" data-type="string" data-required="true" data-desc="接收方的地址。"></x-field>
424
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="发送方的钱包。"></x-field>
425
+ <x-field data-name="token" data-type="number" data-required="false" data-default="0" data-desc="要转移的链原生通证的数量。"></x-field>
426
+ <x-field data-name="assets" data-type="string[]" data-required="false" data-desc="要转移的资产地址(NFT)数组。"></x-field>
427
+ <x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="要转移的自定义可替代通证对象数组。">
428
+ <x-field data-name="address" data-type="string" data-required="true" data-desc="自定义通证合约的地址。"></x-field>
429
+ <x-field data-name="value" data-type="number" data-required="true" data-desc="要转移的自定义通证数量。"></x-field>
430
+ </x-field>
431
+ <x-field data-name="memo" data-type="string" data-required="false" data-desc="交易的可选备注。"></x-field>
432
+ <x-field data-name="delegator" data-type="string" data-required="false" data-desc="委托人的地址(如果适用)。"></x-field>
433
+ </x-field-group>
434
+
435
+ **返回**
436
+
437
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
438
+
439
+ **示例**
440
+
441
+ ```javascript Send a TransferV2Tx icon=logos:javascript
442
+ const txHash = await client.transfer({
443
+ to: 'z1sb...',
444
+ token: 1.5, // 1.5 个原生链通证
445
+ assets: ['z3g...'], // 一个 NFT
446
+ tokens: [{ address: 'z2t...', value: 100 }], // 100 个自定义通证
447
+ memo: 'Payment for services',
448
+ wallet: senderWallet,
449
+ });
450
+ console.log('转账交易哈希:', txHash);
451
+ ```
452
+
453
+ ### prepareExchange
454
+
455
+ 准备原子交换(exchange)交易的发送方部分。它对发送方的报价进行签名,并返回一个可以传递给接收方的交易对象。
456
+
457
+ **参数**
458
+
459
+ <x-field-group>
460
+ <x-field data-name="receiver" data-type="string" data-required="true" data-desc="交换中另一方的地址。"></x-field>
461
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="发出报价的用户的钱包。"></x-field>
462
+ <x-field data-name="offerToken" data-type="number" data-required="false" data-desc="报价的原生通证数量。"></x-field>
463
+ <x-field data-name="offerAssets" data-type="string[]" data-required="false" data-desc="报价的资产地址数组。"></x-field>
464
+ <x-field data-name="offerTokens" data-type="object[]" data-required="false" data-desc="报价的自定义可替代通证数组。"></x-field>
465
+ <x-field data-name="demandToken" data-type="number" data-required="false" data-desc="要求的回报原生通证数量。"></x-field>
466
+ <x-field data-name="demandAssets" data-type="string[]" data-required="false" data-desc="要求的回报资产地址数组。"></x-field>
467
+ <x-field data-name="demandTokens" data-type="object[]" data-required="false" data-desc="要求的回报自定义可替代通证数组。"></x-field>
468
+ <x-field data-name="memo" data-type="string" data-required="false" data-desc="交易的可选备注。"></x-field>
469
+ </x-field-group>
470
+
471
+ **返回**
472
+
473
+ <x-field data-name="transactionObject" data-type="Promise<object>" data-desc="部分签名的交易对象。"></x-field>
474
+
475
+ ### finalizeExchange
476
+
477
+ 最终确定原子交换的接收方部分。它接收来自 `prepareExchange` 的部分签名交易,添加接收方的签名,并返回完全签名的交易对象。
478
+
479
+ **参数**
480
+
481
+ <x-field-group>
482
+ <x-field data-name="tx" data-type="object" data-required="true" data-desc="从 `prepareExchange` 返回的交易对象。"></x-field>
483
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="接受报价的用户的钱包。"></x-field>
484
+ <x-field data-name="data" data-type="object" data-required="false" data-desc="多重签名中的额外数据。"></x-field>
485
+ </x-field-group>
486
+
487
+ **返回**
488
+
489
+ <x-field data-name="transactionObject" data-type="Promise<object>" data-desc="完全签名的多重签名交易对象。"></x-field>
490
+
491
+ ### exchange
492
+
493
+ 将完全签名的交换交易发送到区块链。在 `finalizeExchange` 完成后,任何一方都可以调用此函数。
494
+
495
+ **参数**
496
+
497
+ <x-field-group>
498
+ <x-field data-name="tx" data-type="object" data-required="true" data-desc="从 `finalizeExchange` 返回的交易对象。"></x-field>
499
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="提交交易的用户的钱包。"></x-field>
500
+ </x-field-group>
501
+
502
+ **返回**
503
+
504
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
505
+
506
+ **示例 (完整的交换流程)**
507
+
508
+ ```javascript Perform an atomic swap icon=logos:javascript
509
+ // 1. 报价方准备交易
510
+ const offerTx = await client.prepareExchange({
511
+ receiver: receiverWallet.address,
512
+ offerAssets: ['z3g...'], // 报价一个 NFT
513
+ demandToken: 10, // 要求 10 个原生通证
514
+ wallet: offererWallet,
515
+ });
516
+
517
+ // 2. 接收方最终确定交易
518
+ const finalTx = await client.finalizeExchange({
519
+ tx: offerTx,
520
+ wallet: receiverWallet,
521
+ });
522
+
523
+ // 3. 任何一方都可以发送最终确定的交易
524
+ const txHash = await client.exchange({ tx: finalTx, wallet: offererWallet });
525
+ console.log('交换交易哈希:', txHash);
526
+ ```
527
+
528
+ ---
529
+
530
+ ## 质押
531
+
532
+ ### stake
533
+
534
+ 将通证和/或资产质押到一个接收地址。质押会锁定资源,通常用于换取奖励或提供安全性。
535
+
536
+ **参数**
537
+
538
+ <x-field-group>
539
+ <x-field data-name="to" data-type="string" data-required="true" data-desc="质押接收方的地址。"></x-field>
540
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="质押者的钱包。"></x-field>
541
+ <x-field data-name="assets" data-type="string[]" data-required="false" data-desc="要质押的资产地址数组。"></x-field>
542
+ <x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="要质押的可替代通证对象数组。"></x-field>
543
+ <x-field data-name="locked" data-type="boolean" data-required="false" data-default="false" data-desc="创建时质押是否被锁定。"></x-field>
544
+ <x-field data-name="slashers" data-type="string[]" data-required="false" data-desc="允许削减此质押的地址列表。"></x-field>
545
+ <x-field data-name="message" data-type="string" data-required="false" data-desc="质押的可选备注。"></x-field>
546
+ </x-field-group>
547
+
548
+ **返回**
549
+
550
+ <x-field data-name="result" data-type="Promise<[string, string]>" data-desc="一个包含交易哈希和新创建的质押地址的数组。"></x-field>
551
+
552
+ **示例**
553
+
554
+ ```javascript Send a StakeTx icon=logos:javascript
555
+ const [txHash, stakeAddress] = await client.stake({
556
+ to: 'z1v...',
557
+ tokens: [{ address: 'z2t...', value: 5000 }],
558
+ message: 'Staking for validator rewards',
559
+ wallet: userWallet,
560
+ });
561
+ console.log('质押交易哈希:', txHash);
562
+ console.log('新质押地址:', stakeAddress);
563
+ ```
564
+
565
+ ### revokeStake
566
+
567
+ 撤销先前质押的通证和/或资产,启动将其返还给所有者的过程。请注意,在资产可以被认领之前可能存在一个解绑期。
568
+
569
+ **参数**
570
+
571
+ <x-field-group>
572
+ <x-field data-name="from" data-type="string" data-required="true" data-desc="要从中撤销的质押地址。"></x-field>
573
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="质押所有者的钱包。"></x-field>
574
+ <x-field data-name="assets" data-type="string[]" data-required="false" data-desc="要撤销的资产地址数组。"></x-field>
575
+ <x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="要撤销的可替代通证对象数组。"></x-field>
576
+ </x-field-group>
577
+
578
+ **返回**
579
+
580
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
581
+
582
+ **示例**
583
+
584
+ ```javascript Send a RevokeStakeTx icon=logos:javascript
585
+ const txHash = await client.revokeStake({
586
+ from: 'z6s...',
587
+ tokens: [{ address: 'z2t...', value: 1000 }],
588
+ wallet: userWallet,
589
+ });
590
+ console.log('撤销质押交易哈希:', txHash);
591
+ ```
592
+
593
+ ### claimStake
594
+
595
+ 从已成功撤销并度过解绑期的质押中认领项目。
596
+
597
+ **参数**
598
+
599
+ <x-field-group>
600
+ <x-field data-name="from" data-type="string" data-required="true" data-desc="要从中认领的质押地址。"></x-field>
601
+ <x-field data-name="evidence" data-type="string" data-required="true" data-desc="`revokeStake` 交易的交易哈希。"></x-field>
602
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="质押所有者的钱包。"></x-field>
603
+ </x-field-group>
604
+
605
+ **返回**
606
+
607
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
608
+
609
+ **示例**
610
+
611
+ ```javascript Send a ClaimStakeTx icon=logos:javascript
612
+ const revokeTxHash = '0x123...abc';
613
+ const txHash = await client.claimStake({
614
+ from: 'z6s...',
615
+ evidence: revokeTxHash,
616
+ wallet: userWallet,
617
+ });
618
+ console.log('认领质押交易哈希:', txHash);
619
+ ```
620
+
621
+ ### slashStake
622
+
623
+ 允许指定的削减者对质押进行惩罚,通常是因为不当行为。被削减的资产将转移到指定的金库地址。
624
+
625
+ **参数**
626
+
627
+ <x-field-group>
628
+ <x-field data-name="from" data-type="string" data-required="true" data-desc="要削减的质押地址。"></x-field>
629
+ <x-field data-name="reason" data-type="string" data-required="true" data-desc="解释削减原因的消息。"></x-field>
630
+ <x-field data-name="wallet" data-type="WalletObject" data-required="true" data-desc="指定削减者的钱包。"></x-field>
631
+ <x-field data-name="assets" data-type="string[]" data-required="false" data-desc="要削减的资产地址数组。"></x-field>
632
+ <x-field data-name="tokens" data-type="object[]" data-required="false" data-desc="要削减的可替代通证对象数组。"></x-field>
633
+ </x-field-group>
634
+
635
+ **返回**
636
+
637
+ <x-field data-name="transactionHash" data-type="Promise<string>" data-desc="已提交交易的哈希值。"></x-field>
638
+
639
+ **示例**
640
+
641
+ ```javascript Send a SlashStakeTx icon=logos:javascript
642
+ const txHash = await client.slashStake({
643
+ from: 'z6s...',
644
+ reason: 'Validator downtime',
645
+ tokens: [{ address: 'z2t...', value: 500 }],
646
+ wallet: slasherWallet,
647
+ });
648
+ console.log('削减质押交易哈希:', txHash);
649
+ ```
@@ -0,0 +1,23 @@
1
+ # API Reference
2
+
3
+ Welcome to the OCAP Client API Reference. This section provides a comprehensive and searchable reference for all available classes, methods, and data types. Whether you're looking for the specifics of a GraphQL method, the parameters for a transaction helper, or the structure of a response object, you'll find the detailed information you need here.
4
+
5
+ Explore the following sections to dive deeper into the client's capabilities:
6
+
7
+ <x-cards data-columns="2">
8
+ <x-card data-title="Helper Methods" data-icon="lucide:function-square" data-href="/api-reference/client-methods">
9
+ Detailed documentation for core client helper methods, such as `getType`, `decodeTx`, and `fromUnitToToken`.
10
+ </x-card>
11
+ <x-card data-title="Query & Mutation Methods" data-icon="lucide:database-zap" data-href="/api-reference/query-mutation-methods">
12
+ A complete list of all available GraphQL query and mutation methods for reading from and writing to the chain.
13
+ </x-card>
14
+ <x-card data-title="High-level API" data-icon="lucide:zap" data-href="/api-reference/transaction-helpers">
15
+ Reference for high-level functions that simplify common workflows like transferring tokens and managing assets.
16
+ </x-card>
17
+ <x-card data-title="Low-level API" data-icon="lucide:cpu" data-href="/api-reference/low-level-api">
18
+ Learn how to manually construct, sign, and send transactions for full control over the transaction lifecycle.
19
+ </x-card>
20
+ <x-card data-title="Data Types" data-icon="lucide:box" data-href="/api-reference/data-types">
21
+ Defines all the custom data structures, input parameters, and response objects used throughout the client API.
22
+ </x-card>
23
+ </x-cards>