@meantjs/profile 0.0.0-bootstrap → 0.1.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,515 @@
1
+ {
2
+ "format": "candid-profile",
3
+ "format_version": 0,
4
+ "kind": "pack",
5
+ "name": "icrc2",
6
+ "origin": "pack",
7
+ "language": "en",
8
+ "description": "Standard pack for ICRC-2 approve and transfer-from. Applies to any canister whose service is a subtype of `binds.requires` (ICRC-2 ledgers also implement ICRC-1, so the icrc1 pack applies too).",
9
+ "binds": {
10
+ "standard": "ICRC-2",
11
+ "spec_url": "https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-2/README.md",
12
+ "requires": "type Account = record { owner : principal; subaccount : opt blob };\ntype ApproveArgs = record {\n from_subaccount : opt blob;\n spender : Account;\n amount : nat;\n expected_allowance : opt nat;\n expires_at : opt nat64;\n fee : opt nat;\n memo : opt blob;\n created_at_time : opt nat64;\n};\ntype ApproveError = variant {\n BadFee : record { expected_fee : nat };\n InsufficientFunds : record { balance : nat };\n AllowanceChanged : record { current_allowance : nat };\n Expired : record { ledger_time : nat64 };\n TooOld;\n CreatedInFuture : record { ledger_time : nat64 };\n Duplicate : record { duplicate_of : nat };\n TemporarilyUnavailable;\n GenericError : record { error_code : nat; message : text };\n};\ntype TransferFromArgs = record {\n spender_subaccount : opt blob;\n from : Account;\n to : Account;\n amount : nat;\n fee : opt nat;\n memo : opt blob;\n created_at_time : opt nat64;\n};\ntype TransferFromError = variant {\n BadFee : record { expected_fee : nat };\n BadBurn : record { min_burn_amount : nat };\n InsufficientFunds : record { balance : nat };\n InsufficientAllowance : record { allowance : nat };\n TooOld;\n CreatedInFuture : record { ledger_time : nat64 };\n Duplicate : record { duplicate_of : nat };\n TemporarilyUnavailable;\n GenericError : record { error_code : nat; message : text };\n};\ntype AllowanceArgs = record { account : Account; spender : Account };\nservice : {\n icrc1_symbol : () -> (text) query;\n icrc1_decimals : () -> (nat8) query;\n icrc2_approve : (ApproveArgs) -> (variant { Ok : nat; Err : ApproveError });\n icrc2_transfer_from : (TransferFromArgs) -> (variant { Ok : nat; Err : TransferFromError });\n icrc2_allowance : (AllowanceArgs) -> (record { allowance : nat; expires_at : opt nat64 }) query;\n}\n"
13
+ },
14
+ "annotations": [
15
+ {
16
+ "at": "icrc2_approve",
17
+ "tag": "intent",
18
+ "args": {
19
+ "title": "Approve spending",
20
+ "template": "Set {spender}'s allowance to {amount}, replacing any existing allowance[ (only if the current allowance is {expected_allowance})][ until {expires_at}][ from subaccount {from_subaccount}][ with memo {memo}]"
21
+ }
22
+ },
23
+ {
24
+ "at": "icrc2_approve",
25
+ "tag": "effect",
26
+ "args": {
27
+ "kind": "approve",
28
+ "irreversible": false
29
+ }
30
+ },
31
+ {
32
+ "at": "icrc2_approve",
33
+ "tag": "idempotency",
34
+ "args": {
35
+ "mode": "replay_same_payload",
36
+ "stamp": "created_at_time"
37
+ }
38
+ },
39
+ {
40
+ "at": "icrc2_approve",
41
+ "tag": "outcome",
42
+ "args": {
43
+ "classes": {
44
+ "Ok": "success",
45
+ "Err.Duplicate": "already_done",
46
+ "Err.TemporarilyUnavailable": "retry_same",
47
+ "Err.TooOld": "retry_new",
48
+ "Err.CreatedInFuture": "retry_new",
49
+ "Err.BadFee": "fix_input",
50
+ "Err.AllowanceChanged": "fix_input",
51
+ "Err.Expired": "fix_input",
52
+ "Err.InsufficientFunds": "fail",
53
+ "Err.GenericError": "fail"
54
+ },
55
+ "default": "fail"
56
+ }
57
+ },
58
+ {
59
+ "at": "icrc2_approve(0).spender",
60
+ "tag": "account",
61
+ "args": {
62
+ "encoding": "icrc1"
63
+ }
64
+ },
65
+ {
66
+ "at": "icrc2_approve(0).spender",
67
+ "tag": "describe",
68
+ "args": {
69
+ "label": "Spender"
70
+ }
71
+ },
72
+ {
73
+ "at": "icrc2_approve(0).amount",
74
+ "tag": "amount",
75
+ "args": {
76
+ "decimals": {
77
+ "from": "query:icrc1_decimals"
78
+ },
79
+ "symbol": {
80
+ "from": "query:icrc1_symbol"
81
+ }
82
+ }
83
+ },
84
+ {
85
+ "at": "icrc2_approve(0).amount",
86
+ "tag": "describe",
87
+ "args": {
88
+ "label": "Allowance",
89
+ "help": "Maximum the spender may transfer. An approval replaces the previous allowance; it does not add to it."
90
+ }
91
+ },
92
+ {
93
+ "at": "icrc2_approve(0).expected_allowance",
94
+ "tag": "amount",
95
+ "args": {
96
+ "decimals": {
97
+ "from": "query:icrc1_decimals"
98
+ },
99
+ "symbol": {
100
+ "from": "query:icrc1_symbol"
101
+ }
102
+ }
103
+ },
104
+ {
105
+ "at": "icrc2_approve(0).expected_allowance",
106
+ "tag": "describe",
107
+ "args": {
108
+ "label": "Expected current allowance",
109
+ "help": "Optional safety check: the call fails with AllowanceChanged if the current allowance differs."
110
+ }
111
+ },
112
+ {
113
+ "at": "icrc2_approve(0).expires_at",
114
+ "tag": "timestamp",
115
+ "args": {
116
+ "unit": "ns",
117
+ "epoch": "unix"
118
+ }
119
+ },
120
+ {
121
+ "at": "icrc2_approve(0).expires_at",
122
+ "tag": "describe",
123
+ "args": {
124
+ "label": "Expires at",
125
+ "help": "Omit for an allowance that does not expire."
126
+ }
127
+ },
128
+ {
129
+ "at": "icrc2_approve(0).from_subaccount",
130
+ "tag": "subaccount",
131
+ "args": {}
132
+ },
133
+ {
134
+ "at": "icrc2_approve(0).from_subaccount",
135
+ "tag": "describe",
136
+ "args": {
137
+ "label": "From subaccount"
138
+ }
139
+ },
140
+ {
141
+ "at": "icrc2_approve(0).fee",
142
+ "tag": "amount",
143
+ "args": {
144
+ "decimals": {
145
+ "from": "query:icrc1_decimals"
146
+ },
147
+ "symbol": {
148
+ "from": "query:icrc1_symbol"
149
+ }
150
+ }
151
+ },
152
+ {
153
+ "at": "icrc2_approve(0).fee",
154
+ "tag": "default",
155
+ "args": {
156
+ "value": "null",
157
+ "mode": "auto"
158
+ }
159
+ },
160
+ {
161
+ "at": "icrc2_approve(0).memo",
162
+ "tag": "bytes",
163
+ "args": {
164
+ "encoding": "utf8"
165
+ }
166
+ },
167
+ {
168
+ "at": "icrc2_approve(0).memo",
169
+ "tag": "default",
170
+ "args": {
171
+ "value": "null",
172
+ "mode": "suggest"
173
+ }
174
+ },
175
+ {
176
+ "at": "icrc2_approve(0).memo",
177
+ "tag": "describe",
178
+ "args": {
179
+ "label": "Memo",
180
+ "help": "Ledgers accept at least 32 bytes; longer memos may be rejected."
181
+ }
182
+ },
183
+ {
184
+ "at": "icrc2_approve(0).created_at_time",
185
+ "tag": "timestamp",
186
+ "args": {
187
+ "unit": "ns",
188
+ "epoch": "unix"
189
+ }
190
+ },
191
+ {
192
+ "at": "icrc2_approve(0).created_at_time",
193
+ "tag": "ui",
194
+ "args": {
195
+ "hidden": true
196
+ }
197
+ },
198
+ {
199
+ "at": "icrc2_approve->(0).Ok",
200
+ "tag": "describe",
201
+ "args": {
202
+ "label": "Block index"
203
+ }
204
+ },
205
+ {
206
+ "at": "icrc2_approve->(0).Err.BadFee.expected_fee",
207
+ "tag": "amount",
208
+ "args": {
209
+ "decimals": {
210
+ "from": "query:icrc1_decimals"
211
+ },
212
+ "symbol": {
213
+ "from": "query:icrc1_symbol"
214
+ }
215
+ }
216
+ },
217
+ {
218
+ "at": "icrc2_approve->(0).Err.InsufficientFunds.balance",
219
+ "tag": "amount",
220
+ "args": {
221
+ "decimals": {
222
+ "from": "query:icrc1_decimals"
223
+ },
224
+ "symbol": {
225
+ "from": "query:icrc1_symbol"
226
+ }
227
+ }
228
+ },
229
+ {
230
+ "at": "icrc2_approve->(0).Err.AllowanceChanged.current_allowance",
231
+ "tag": "amount",
232
+ "args": {
233
+ "decimals": {
234
+ "from": "query:icrc1_decimals"
235
+ },
236
+ "symbol": {
237
+ "from": "query:icrc1_symbol"
238
+ }
239
+ }
240
+ },
241
+ {
242
+ "at": "icrc2_approve->(0).Err.Expired.ledger_time",
243
+ "tag": "timestamp",
244
+ "args": {
245
+ "unit": "ns",
246
+ "epoch": "unix"
247
+ }
248
+ },
249
+ {
250
+ "at": "icrc2_approve->(0).Err.CreatedInFuture.ledger_time",
251
+ "tag": "timestamp",
252
+ "args": {
253
+ "unit": "ns",
254
+ "epoch": "unix"
255
+ }
256
+ },
257
+ {
258
+ "at": "icrc2_transfer_from",
259
+ "tag": "intent",
260
+ "args": {
261
+ "title": "Transfer using allowance",
262
+ "template": "Move {amount} from {from} to {to} using an allowance[ (spender subaccount {spender_subaccount})][ with memo {memo}]"
263
+ }
264
+ },
265
+ {
266
+ "at": "icrc2_transfer_from",
267
+ "tag": "effect",
268
+ "args": {
269
+ "kind": "transfer",
270
+ "irreversible": true
271
+ }
272
+ },
273
+ {
274
+ "at": "icrc2_transfer_from",
275
+ "tag": "idempotency",
276
+ "args": {
277
+ "mode": "replay_same_payload",
278
+ "stamp": "created_at_time"
279
+ }
280
+ },
281
+ {
282
+ "at": "icrc2_transfer_from",
283
+ "tag": "outcome",
284
+ "args": {
285
+ "classes": {
286
+ "Ok": "success",
287
+ "Err.Duplicate": "already_done",
288
+ "Err.TemporarilyUnavailable": "retry_same",
289
+ "Err.TooOld": "retry_new",
290
+ "Err.CreatedInFuture": "retry_new",
291
+ "Err.BadFee": "fix_input",
292
+ "Err.BadBurn": "fix_input",
293
+ "Err.InsufficientFunds": "fail",
294
+ "Err.InsufficientAllowance": "fail",
295
+ "Err.GenericError": "fail"
296
+ },
297
+ "default": "fail"
298
+ }
299
+ },
300
+ {
301
+ "at": "icrc2_transfer_from(0).from",
302
+ "tag": "account",
303
+ "args": {
304
+ "encoding": "icrc1"
305
+ }
306
+ },
307
+ {
308
+ "at": "icrc2_transfer_from(0).from",
309
+ "tag": "describe",
310
+ "args": {
311
+ "label": "From"
312
+ }
313
+ },
314
+ {
315
+ "at": "icrc2_transfer_from(0).to",
316
+ "tag": "account",
317
+ "args": {
318
+ "encoding": "icrc1"
319
+ }
320
+ },
321
+ {
322
+ "at": "icrc2_transfer_from(0).to",
323
+ "tag": "describe",
324
+ "args": {
325
+ "label": "Recipient"
326
+ }
327
+ },
328
+ {
329
+ "at": "icrc2_transfer_from(0).amount",
330
+ "tag": "amount",
331
+ "args": {
332
+ "decimals": {
333
+ "from": "query:icrc1_decimals"
334
+ },
335
+ "symbol": {
336
+ "from": "query:icrc1_symbol"
337
+ }
338
+ }
339
+ },
340
+ {
341
+ "at": "icrc2_transfer_from(0).amount",
342
+ "tag": "describe",
343
+ "args": {
344
+ "label": "Amount"
345
+ }
346
+ },
347
+ {
348
+ "at": "icrc2_transfer_from(0).spender_subaccount",
349
+ "tag": "subaccount",
350
+ "args": {}
351
+ },
352
+ {
353
+ "at": "icrc2_transfer_from(0).spender_subaccount",
354
+ "tag": "describe",
355
+ "args": {
356
+ "label": "Spender subaccount"
357
+ }
358
+ },
359
+ {
360
+ "at": "icrc2_transfer_from(0).fee",
361
+ "tag": "amount",
362
+ "args": {
363
+ "decimals": {
364
+ "from": "query:icrc1_decimals"
365
+ },
366
+ "symbol": {
367
+ "from": "query:icrc1_symbol"
368
+ }
369
+ }
370
+ },
371
+ {
372
+ "at": "icrc2_transfer_from(0).fee",
373
+ "tag": "default",
374
+ "args": {
375
+ "value": "null",
376
+ "mode": "auto"
377
+ }
378
+ },
379
+ {
380
+ "at": "icrc2_transfer_from(0).memo",
381
+ "tag": "bytes",
382
+ "args": {
383
+ "encoding": "utf8"
384
+ }
385
+ },
386
+ {
387
+ "at": "icrc2_transfer_from(0).memo",
388
+ "tag": "default",
389
+ "args": {
390
+ "value": "null",
391
+ "mode": "suggest"
392
+ }
393
+ },
394
+ {
395
+ "at": "icrc2_transfer_from(0).memo",
396
+ "tag": "describe",
397
+ "args": {
398
+ "label": "Memo",
399
+ "help": "Ledgers accept at least 32 bytes; longer memos may be rejected."
400
+ }
401
+ },
402
+ {
403
+ "at": "icrc2_transfer_from(0).created_at_time",
404
+ "tag": "timestamp",
405
+ "args": {
406
+ "unit": "ns",
407
+ "epoch": "unix"
408
+ }
409
+ },
410
+ {
411
+ "at": "icrc2_transfer_from(0).created_at_time",
412
+ "tag": "ui",
413
+ "args": {
414
+ "hidden": true
415
+ }
416
+ },
417
+ {
418
+ "at": "icrc2_transfer_from->(0).Ok",
419
+ "tag": "describe",
420
+ "args": {
421
+ "label": "Block index"
422
+ }
423
+ },
424
+ {
425
+ "at": "icrc2_transfer_from->(0).Err.BadFee.expected_fee",
426
+ "tag": "amount",
427
+ "args": {
428
+ "decimals": {
429
+ "from": "query:icrc1_decimals"
430
+ },
431
+ "symbol": {
432
+ "from": "query:icrc1_symbol"
433
+ }
434
+ }
435
+ },
436
+ {
437
+ "at": "icrc2_transfer_from->(0).Err.BadBurn.min_burn_amount",
438
+ "tag": "amount",
439
+ "args": {
440
+ "decimals": {
441
+ "from": "query:icrc1_decimals"
442
+ },
443
+ "symbol": {
444
+ "from": "query:icrc1_symbol"
445
+ }
446
+ }
447
+ },
448
+ {
449
+ "at": "icrc2_transfer_from->(0).Err.InsufficientFunds.balance",
450
+ "tag": "amount",
451
+ "args": {
452
+ "decimals": {
453
+ "from": "query:icrc1_decimals"
454
+ },
455
+ "symbol": {
456
+ "from": "query:icrc1_symbol"
457
+ }
458
+ }
459
+ },
460
+ {
461
+ "at": "icrc2_transfer_from->(0).Err.InsufficientAllowance.allowance",
462
+ "tag": "amount",
463
+ "args": {
464
+ "decimals": {
465
+ "from": "query:icrc1_decimals"
466
+ },
467
+ "symbol": {
468
+ "from": "query:icrc1_symbol"
469
+ }
470
+ }
471
+ },
472
+ {
473
+ "at": "icrc2_transfer_from->(0).Err.CreatedInFuture.ledger_time",
474
+ "tag": "timestamp",
475
+ "args": {
476
+ "unit": "ns",
477
+ "epoch": "unix"
478
+ }
479
+ },
480
+ {
481
+ "at": "icrc2_allowance(0).account",
482
+ "tag": "account",
483
+ "args": {
484
+ "encoding": "icrc1"
485
+ }
486
+ },
487
+ {
488
+ "at": "icrc2_allowance(0).spender",
489
+ "tag": "account",
490
+ "args": {
491
+ "encoding": "icrc1"
492
+ }
493
+ },
494
+ {
495
+ "at": "icrc2_allowance->(0).allowance",
496
+ "tag": "amount",
497
+ "args": {
498
+ "decimals": {
499
+ "from": "query:icrc1_decimals"
500
+ },
501
+ "symbol": {
502
+ "from": "query:icrc1_symbol"
503
+ }
504
+ }
505
+ },
506
+ {
507
+ "at": "icrc2_allowance->(0).expires_at",
508
+ "tag": "timestamp",
509
+ "args": {
510
+ "unit": "ns",
511
+ "epoch": "unix"
512
+ }
513
+ }
514
+ ]
515
+ }