@xgamesfun/solana 0.20.1 → 0.25.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.
Files changed (112) hide show
  1. package/README.md +95 -52
  2. package/bin/xsolana.mjs +23 -8
  3. package/examples/blind-forge.json +2 -4
  4. package/examples/coin-flip-arena.json +4 -12
  5. package/examples/duel-arena.json +1 -4
  6. package/examples/elements-set.json +2 -9
  7. package/examples/expedition-guild.json +1 -8
  8. package/examples/fair-presale.json +1 -3
  9. package/examples/guild-missions.json +3 -10
  10. package/examples/halving-seasons.json +4 -9
  11. package/examples/hero-trials.json +15 -6
  12. package/examples/holder-den.json +38 -0
  13. package/examples/holders-drop.json +105 -0
  14. package/examples/ideas.json +788 -788
  15. package/examples/match-predictions.json +24 -0
  16. package/examples/merge-2048.json +5 -5
  17. package/examples/nft-raffle.json +1 -0
  18. package/examples/pack-league.json +108 -0
  19. package/examples/paper-hands-farm.json +4 -16
  20. package/examples/partner-vault.json +20 -7
  21. package/examples/sacrifice-raffle.json +2 -10
  22. package/examples/shelter-fair.json +1 -0
  23. package/examples/stakers-draw.json +4 -15
  24. package/examples/star-fleet.json +1 -8
  25. package/examples/starforce.json +6 -6
  26. package/examples/stride-sneakers.json +164 -0
  27. package/examples/trade-in-shop.json +2 -3
  28. package/js/approve/details.mjs +122 -52
  29. package/js/approve/ed25519.mjs +5 -1
  30. package/js/approve/live-check.mjs +83 -26
  31. package/js/approve/page.html +217 -78
  32. package/js/approve/page.js +43 -15
  33. package/js/approve/server.mjs +290 -73
  34. package/js/chain/base58.js +7 -1
  35. package/js/chain/borsh.js +24 -11
  36. package/js/chain/bytes.js +11 -8
  37. package/js/chain/core.js +35 -7
  38. package/js/chain/curve.js +1 -1
  39. package/js/chain/lookup.js +124 -36
  40. package/js/chain/mint.js +6 -2
  41. package/js/chain/pda.js +2 -2
  42. package/js/chain/programs.js +6 -6
  43. package/js/chain/rpc.js +44 -16
  44. package/js/chain/token.js +13 -2
  45. package/js/chain/token2022.js +55 -16
  46. package/js/chain/tx.js +32 -22
  47. package/js/client/accounts.js +653 -131
  48. package/js/client/compressed.js +4 -3
  49. package/js/client/grant.js +267 -83
  50. package/js/client/idl/loot.js +1 -1
  51. package/js/client/idl/loot.json +2406 -2176
  52. package/js/client/index.js +1 -0
  53. package/js/client/ix.js +3059 -664
  54. package/js/client/pda.js +39 -33
  55. package/js/client/policy.js +52 -24
  56. package/js/client/random.js +70 -0
  57. package/js/client/sizes.js +414 -16
  58. package/js/client/traits.js +14 -5
  59. package/js/connect/connect.mjs +59 -17
  60. package/js/economy/check.mjs +4153 -725
  61. package/js/economy/cost.mjs +403 -64
  62. package/js/economy/examples.mjs +176 -35
  63. package/js/economy/explain.mjs +466 -111
  64. package/js/economy/guide.mjs +296 -72
  65. package/js/economy/legal.mjs +12 -6
  66. package/js/economy/live.mjs +83 -19
  67. package/js/economy/model.mjs +462 -124
  68. package/js/economy/plan.mjs +1306 -219
  69. package/js/economy/schema.json +390 -484
  70. package/js/economy/secrets.mjs +17 -7
  71. package/js/economy/simulate.mjs +883 -223
  72. package/js/economy/txsize.mjs +15 -3
  73. package/js/economy/validate.mjs +61 -24
  74. package/js/mcp/server.mjs +42 -14
  75. package/js/mcp/tools.mjs +307 -88
  76. package/js/play/index.js +2864 -619
  77. package/js/play/keys.js +193 -0
  78. package/js/results/index.js +223 -30
  79. package/js/results/server.js +230 -0
  80. package/js/results/wire.js +64 -16
  81. package/package.json +6 -4
  82. package/release.json +5 -5
  83. package/skills/xsolana-economy/SKILL.md +39 -21
  84. package/skills/xsolana-economy/references/after-launch.md +58 -38
  85. package/skills/xsolana-economy/references/apps.md +97 -50
  86. package/skills/xsolana-economy/references/sentence-to-spec.md +148 -121
  87. package/skills/xsolana-economy/references/telling-the-person.md +61 -17
  88. package/types/chain/core.d.ts +4 -2
  89. package/types/chain/lookup.d.ts +5 -2
  90. package/types/chain/rpc.d.ts +3 -1
  91. package/types/client/accounts.d.ts +217 -56
  92. package/types/client/grant.d.ts +72 -27
  93. package/types/client/idl/loot.d.ts +602 -549
  94. package/types/client/index.d.ts +1 -0
  95. package/types/client/ix.d.ts +3884 -247
  96. package/types/client/pda.d.ts +22 -16
  97. package/types/client/policy.d.ts +39 -14
  98. package/types/client/random.d.ts +26 -0
  99. package/types/client/sizes.d.ts +93 -5
  100. package/types/economy/check.d.mts +5 -10
  101. package/types/economy/cost.d.mts +2 -1
  102. package/types/economy/guide.d.mts +5 -0
  103. package/types/economy/live.d.mts +16 -1
  104. package/types/economy/model.d.mts +151 -38
  105. package/types/economy/plan.d.mts +237 -194
  106. package/types/economy/simulate.d.mts +21 -13
  107. package/types/mcp/tools.d.mts +21 -13
  108. package/types/play/index.d.ts +453 -53
  109. package/types/play/keys.d.ts +51 -0
  110. package/types/results/index.d.ts +7 -6
  111. package/types/results/server.d.ts +126 -0
  112. package/types/results/wire.d.ts +1 -1
@@ -1,6 +1,6 @@
1
1
  /** Most transactions one wallet approval carries. */
2
2
  export declare const PER_APPROVAL = 12;
3
- export declare function itemArgs(it: any): {
3
+ export declare function itemArgs(it: any, m: any): {
4
4
  kind: string;
5
5
  rarity: number;
6
6
  soulbound: boolean;
@@ -8,24 +8,33 @@ export declare function itemArgs(it: any): {
8
8
  name: any;
9
9
  uri: any;
10
10
  max_supply: any;
11
- life: {
12
- ready_after: number;
13
- lasts: number;
14
- uses: any;
15
- cooldown: number;
16
- } | null;
17
11
  active: boolean;
18
12
  collection: any;
13
+ traits: any;
19
14
  };
15
+ /**
16
+ * The bytes of an order of box `b` (`orderBytes`), its spec's names standing in as addresses, with the shares its split
17
+ * stores. `opened`: an open's (`open_box`, `Order::sized`: each draw at its dearest outcome's prizes as they are kept,
18
+ * rows only for the tables its fresh items draw); otherwise a roll made inside another call (a craft, a grant's claim,
19
+ * a mission, a lottery's place, a roll lot: `Order::space_for`, the box's whole table budget a draw).
20
+ */
21
+ export declare const boxOrderBytes: (b: any, m: any, opens?: number, { opened }?: {
22
+ opened?: boolean | undefined;
23
+ }) => number;
24
+ /** The most bytes of rows one table write carries: what a 1,232-byte transaction leaves after the upsert's accounts,
25
+ * its signature and its own bytes. */
26
+ export declare const TABLE_BATCH_BYTES = 800;
27
+ /** A spec table's rows as the program takes them ({ weight, left, label }), in batches that fit a transaction each. */
28
+ export declare function tableBatches(t: any): never[][];
20
29
  /** The program's `Prize` for one part of a box outcome (`model.outcomeParts`). */
21
- export declare function partPrize(o: any, m: any): {
30
+ export declare function partPrize(o: any, m: any): "Raffled" | {
22
31
  Stash: any[];
23
32
  } | {
24
- Item?: undefined;
25
33
  Compressed: {
26
34
  item: any;
27
35
  tree: string;
28
36
  };
37
+ Item?: undefined;
29
38
  Held?: undefined;
30
39
  Nft?: undefined;
31
40
  Roll?: undefined;
@@ -38,15 +47,15 @@ export declare function partPrize(o: any, m: any): {
38
47
  Roll?: undefined;
39
48
  Tokens?: undefined;
40
49
  } | {
41
- Item?: undefined;
42
50
  Compressed?: undefined;
51
+ Item?: undefined;
43
52
  Held: any[];
44
53
  Nft?: undefined;
45
54
  Roll?: undefined;
46
55
  Tokens?: undefined;
47
56
  } | {
48
- Item?: undefined;
49
57
  Compressed?: undefined;
58
+ Item?: undefined;
50
59
  Held?: undefined;
51
60
  Nft: {
52
61
  stash: any;
@@ -55,34 +64,15 @@ export declare function partPrize(o: any, m: any): {
55
64
  Roll?: undefined;
56
65
  Tokens?: undefined;
57
66
  } | {
58
- Item?: undefined;
59
67
  Compressed?: undefined;
68
+ Item?: undefined;
60
69
  Held?: undefined;
61
70
  Nft?: undefined;
62
71
  Roll: any[];
63
72
  Tokens?: undefined;
64
73
  } | {
65
- Item?: undefined;
66
74
  Compressed?: undefined;
67
- Held?: undefined;
68
- Nft?: undefined;
69
- Roll?: undefined;
70
- Tokens: {
71
- from: {
72
- Pool: any[];
73
- Mint?: undefined;
74
- } | {
75
- Pool?: undefined;
76
- Mint: string[];
77
- };
78
- amount: {
79
- Bps: number[];
80
- Fixed?: undefined;
81
- };
82
- };
83
- } | {
84
75
  Item?: undefined;
85
- Compressed?: undefined;
86
76
  Held?: undefined;
87
77
  Nft?: undefined;
88
78
  Roll?: undefined;
@@ -94,10 +84,7 @@ export declare function partPrize(o: any, m: any): {
94
84
  Pool?: undefined;
95
85
  Mint: string[];
96
86
  };
97
- amount: {
98
- Bps?: undefined;
99
- Fixed: bigint[];
100
- };
87
+ amount: bigint;
101
88
  };
102
89
  };
103
90
  export declare function boxArgs(b: any, m: any): {
@@ -115,8 +102,10 @@ export declare function boxArgs(b: any, m: any): {
115
102
  shared: boolean;
116
103
  } | null;
117
104
  stock_odds: boolean;
105
+ when_out: string;
118
106
  active: boolean;
119
107
  shares: any;
108
+ slots: any;
120
109
  entries: any;
121
110
  gate: {
122
111
  Wallets: any[];
@@ -148,8 +137,8 @@ export declare function boxArgs(b: any, m: any): {
148
137
  Item: any[];
149
138
  Collection?: undefined;
150
139
  } | {
151
- Item?: undefined;
152
140
  Collection: any[];
141
+ Item?: undefined;
153
142
  };
154
143
  key: any;
155
144
  test: any;
@@ -170,29 +159,29 @@ export declare function boxArgs(b: any, m: any): {
170
159
  Item: any[];
171
160
  Collection?: undefined;
172
161
  } | {
173
- Item?: undefined;
174
162
  Collection: any[];
163
+ Item?: undefined;
175
164
  };
176
165
  key: any;
177
166
  test: any;
178
167
  } | null;
179
168
  fates: any;
180
169
  };
181
- /** Where an outcome sends the NFT a box rolls on: back, burned, given (the treasury's wallet is filled in when the economy goes live), or into a stash. */
182
- export declare const thenOf: (then: any, m: any) => "Back" | "Burn" | {
170
+ /** Where an outcome sends the NFT a box rolls on: back (null), burned, given (the treasury's wallet is filled in when the economy goes live), or into a stash. */
171
+ export declare const thenOf: (then: any, m: any) => "Burn" | {
183
172
  Give?: undefined;
184
173
  Stash: any[];
185
174
  } | {
186
175
  Stash?: undefined;
187
176
  Give: any[];
188
- };
177
+ } | null;
189
178
  export declare function recipeArgs(r: any, m: any): {
190
179
  active: boolean;
191
180
  inputs: any;
192
181
  outputs: any;
193
- needs: any;
182
+ needs: any[];
194
183
  keeps: any;
195
- raises: any;
184
+ raises: any[];
196
185
  window: {
197
186
  opens_at: bigint;
198
187
  closes_at: bigint;
@@ -207,12 +196,42 @@ export declare function scheduleArgs(s: any, m: any): {
207
196
  active: boolean;
208
197
  action: {
209
198
  from: {
210
- Pool?: undefined;
211
199
  Mint: string[];
212
200
  Vest?: undefined;
201
+ Pool?: undefined;
213
202
  };
214
- to: {
203
+ to: string | {
215
204
  Pool: any[];
205
+ Account?: undefined;
206
+ Wallet?: undefined;
207
+ Chosen?: undefined;
208
+ Holder?: undefined;
209
+ } | {
210
+ Account: (string | undefined)[];
211
+ Wallet?: undefined;
212
+ Chosen?: undefined;
213
+ Holder?: undefined;
214
+ Pool?: undefined;
215
+ } | {
216
+ Account?: undefined;
217
+ Wallet: (string | undefined)[];
218
+ Chosen?: undefined;
219
+ Holder?: undefined;
220
+ Pool?: undefined;
221
+ } | {
222
+ Account?: undefined;
223
+ Wallet?: undefined;
224
+ Chosen: {
225
+ item: any;
226
+ };
227
+ Holder?: undefined;
228
+ Pool?: undefined;
229
+ } | {
230
+ Account?: undefined;
231
+ Wallet?: undefined;
232
+ Chosen?: undefined;
233
+ Holder: (string | undefined)[];
234
+ Pool?: undefined;
216
235
  };
217
236
  amount: {
218
237
  Fixed: bigint[];
@@ -220,8 +239,8 @@ export declare function scheduleArgs(s: any, m: any): {
220
239
  halve_every: any;
221
240
  } | {
222
241
  from: {
223
- Pool?: undefined;
224
242
  Vest: string[];
243
+ Pool?: undefined;
225
244
  Mint?: undefined;
226
245
  };
227
246
  to: string | {
@@ -231,38 +250,38 @@ export declare function scheduleArgs(s: any, m: any): {
231
250
  Chosen?: undefined;
232
251
  Holder?: undefined;
233
252
  } | {
234
- Pool?: undefined;
235
253
  Account: (string | undefined)[];
236
254
  Wallet?: undefined;
237
255
  Chosen?: undefined;
238
256
  Holder?: undefined;
239
- } | {
240
257
  Pool?: undefined;
258
+ } | {
241
259
  Account?: undefined;
242
260
  Wallet: (string | undefined)[];
243
261
  Chosen?: undefined;
244
262
  Holder?: undefined;
245
- } | {
246
263
  Pool?: undefined;
264
+ } | {
247
265
  Account?: undefined;
248
266
  Wallet?: undefined;
249
267
  Chosen: {
250
268
  item: any;
251
269
  };
252
270
  Holder?: undefined;
253
- } | {
254
271
  Pool?: undefined;
272
+ } | {
255
273
  Account?: undefined;
256
274
  Wallet?: undefined;
257
275
  Chosen?: undefined;
258
276
  Holder: (string | undefined)[];
277
+ Pool?: undefined;
259
278
  };
260
279
  amount: {
261
280
  Bps: number[];
262
281
  Fixed?: undefined;
263
282
  } | {
264
- Fixed: bigint[];
265
283
  Bps?: undefined;
284
+ Fixed: bigint[];
266
285
  };
267
286
  halve_every: any;
268
287
  } | {
@@ -278,38 +297,38 @@ export declare function scheduleArgs(s: any, m: any): {
278
297
  Chosen?: undefined;
279
298
  Holder?: undefined;
280
299
  } | {
281
- Pool?: undefined;
282
300
  Account: (string | undefined)[];
283
301
  Wallet?: undefined;
284
302
  Chosen?: undefined;
285
303
  Holder?: undefined;
286
- } | {
287
304
  Pool?: undefined;
305
+ } | {
288
306
  Account?: undefined;
289
307
  Wallet: (string | undefined)[];
290
308
  Chosen?: undefined;
291
309
  Holder?: undefined;
292
- } | {
293
310
  Pool?: undefined;
311
+ } | {
294
312
  Account?: undefined;
295
313
  Wallet?: undefined;
296
314
  Chosen: {
297
315
  item: any;
298
316
  };
299
317
  Holder?: undefined;
300
- } | {
301
318
  Pool?: undefined;
319
+ } | {
302
320
  Account?: undefined;
303
321
  Wallet?: undefined;
304
322
  Chosen?: undefined;
305
323
  Holder: (string | undefined)[];
324
+ Pool?: undefined;
306
325
  };
307
326
  amount: {
308
- Bps: number[];
309
327
  Fixed?: undefined;
328
+ Bps: number[];
310
329
  } | {
311
- Fixed: bigint[];
312
330
  Bps?: undefined;
331
+ Fixed: bigint[];
313
332
  };
314
333
  halve_every: any;
315
334
  };
@@ -321,12 +340,12 @@ export declare function scheduleArgs(s: any, m: any): {
321
340
  * The program's `Prize` for a prize line (`model.prizeLine`): tokens minted or from a pool (a fixed amount, or a share
322
341
  * of the pool), an item (a compressed NFT of it into the project's tree, "@tree"), one NFT of a stash, or a roll of a box.
323
342
  */
324
- export declare function prizeArgs(p: any, m: any): {
325
- Item?: undefined;
343
+ export declare function prizeArgs(p: any, m: any): "Raffled" | {
326
344
  Compressed: {
327
345
  item: any;
328
346
  tree: string;
329
347
  };
348
+ Item?: undefined;
330
349
  Held?: undefined;
331
350
  Nft?: undefined;
332
351
  Roll?: undefined;
@@ -339,15 +358,15 @@ export declare function prizeArgs(p: any, m: any): {
339
358
  Roll?: undefined;
340
359
  Tokens?: undefined;
341
360
  } | {
342
- Item?: undefined;
343
361
  Compressed?: undefined;
362
+ Item?: undefined;
344
363
  Held: any[];
345
364
  Nft?: undefined;
346
365
  Roll?: undefined;
347
366
  Tokens?: undefined;
348
367
  } | {
349
- Item?: undefined;
350
368
  Compressed?: undefined;
369
+ Item?: undefined;
351
370
  Held?: undefined;
352
371
  Nft: {
353
372
  stash: any;
@@ -356,34 +375,15 @@ export declare function prizeArgs(p: any, m: any): {
356
375
  Roll?: undefined;
357
376
  Tokens?: undefined;
358
377
  } | {
359
- Item?: undefined;
360
378
  Compressed?: undefined;
379
+ Item?: undefined;
361
380
  Held?: undefined;
362
381
  Nft?: undefined;
363
382
  Roll: any[];
364
383
  Tokens?: undefined;
365
384
  } | {
366
- Item?: undefined;
367
385
  Compressed?: undefined;
368
- Held?: undefined;
369
- Nft?: undefined;
370
- Roll?: undefined;
371
- Tokens: {
372
- from: {
373
- Pool: any[];
374
- Mint?: undefined;
375
- } | {
376
- Pool?: undefined;
377
- Mint: string[];
378
- };
379
- amount: {
380
- Bps: number[];
381
- Fixed?: undefined;
382
- };
383
- };
384
- } | {
385
386
  Item?: undefined;
386
- Compressed?: undefined;
387
387
  Held?: undefined;
388
388
  Nft?: undefined;
389
389
  Roll?: undefined;
@@ -395,10 +395,7 @@ export declare function prizeArgs(p: any, m: any): {
395
395
  Pool?: undefined;
396
396
  Mint: string[];
397
397
  };
398
- amount: {
399
- Bps?: undefined;
400
- Fixed: bigint[];
401
- };
398
+ amount: bigint;
402
399
  };
403
400
  };
404
401
  /**
@@ -408,17 +405,83 @@ export declare function prizeArgs(p: any, m: any): {
408
405
  */
409
406
  export declare const listLeaves: (list: any, t: any) => any;
410
407
  /**
411
- * A lottery's args: its own pot in `currency` (the project's by default), ticket money split by `split` (and
412
- * `cutPercent` to the treasury) with the rest into the pot. No `every` draws once, at `firstDraw`.
408
+ * A lottery's args: its money in `currency` (the project's by default), ticket money split by `split` (and
409
+ * `cutPercent` to the treasury) with the rest for the places, which are paid from its pot (`pot`) or from each round's
410
+ * own money, what they leave going to `rest` (`paysFromOf`). No `every` draws once, at `firstDraw`.
413
411
  */
414
412
  export declare function lotteryArgs(l: any, m: any): {
415
- price: bigint;
416
- mint: string;
417
- shares: any;
418
- places: any;
419
- ticket_mint: string;
413
+ terms: {
414
+ price: bigint;
415
+ mint: string;
416
+ pays_from: {
417
+ Pot: any[];
418
+ Round?: undefined;
419
+ } | {
420
+ Pot?: undefined;
421
+ Round: {
422
+ rest: string | {
423
+ Pool: any[];
424
+ Account?: undefined;
425
+ Wallet?: undefined;
426
+ Chosen?: undefined;
427
+ Holder?: undefined;
428
+ } | {
429
+ Account: (string | undefined)[];
430
+ Wallet?: undefined;
431
+ Chosen?: undefined;
432
+ Holder?: undefined;
433
+ Pool?: undefined;
434
+ } | {
435
+ Account?: undefined;
436
+ Wallet: (string | undefined)[];
437
+ Chosen?: undefined;
438
+ Holder?: undefined;
439
+ Pool?: undefined;
440
+ } | {
441
+ Account?: undefined;
442
+ Wallet?: undefined;
443
+ Chosen: {
444
+ item: any;
445
+ };
446
+ Holder?: undefined;
447
+ Pool?: undefined;
448
+ } | {
449
+ Account?: undefined;
450
+ Wallet?: undefined;
451
+ Chosen?: undefined;
452
+ Holder: (string | undefined)[];
453
+ Pool?: undefined;
454
+ };
455
+ };
456
+ };
457
+ shares: any;
458
+ places: any;
459
+ ticket_mint: string;
460
+ draws_at: bigint;
461
+ nft_ticket: {
462
+ rule: {
463
+ of: {
464
+ Item: any[];
465
+ Collection?: undefined;
466
+ } | {
467
+ Collection: any[];
468
+ Item?: undefined;
469
+ };
470
+ key: any;
471
+ test: any;
472
+ } | null;
473
+ then: string | {
474
+ Stash: any[];
475
+ Give?: undefined;
476
+ } | {
477
+ Stash?: undefined;
478
+ Give: any[];
479
+ };
480
+ } | null;
481
+ returns: boolean;
482
+ min_sold: bigint;
483
+ };
420
484
  every: bigint;
421
- draws_at: bigint;
422
485
  gate: {
423
486
  Wallets: any[];
424
487
  Staked?: undefined;
@@ -449,37 +512,41 @@ export declare function lotteryArgs(l: any, m: any): {
449
512
  Item: any[];
450
513
  Collection?: undefined;
451
514
  } | {
452
- Item?: undefined;
453
515
  Collection: any[];
516
+ Item?: undefined;
454
517
  };
455
518
  key: any;
456
519
  test: any;
457
520
  } | null)[];
458
521
  } | null;
459
522
  per_wallet: any;
460
- nft_ticket: {
461
- rule: {
462
- of: {
463
- Item: any[];
464
- Collection?: undefined;
465
- } | {
466
- Item?: undefined;
467
- Collection: any[];
468
- };
469
- key: any;
470
- test: any;
471
- } | null;
472
- then: string | {
473
- Stash: any[];
474
- Give?: undefined;
475
- } | {
476
- Stash?: undefined;
477
- Give: any[];
478
- };
479
- } | null;
480
- returns: boolean;
481
- min_sold: bigint;
482
523
  };
524
+ /**
525
+ * A lottery round's header as its first purchase sizes it (`LotteryRound::new`: its `head`), and the token accounts a
526
+ * round may open (`accounts`: the payment mint's, the pot's, one for each run whose prize comes from a pool). The
527
+ * header holds a copy of the terms, a total for each share, two bits a place, a record for each run of tokens and an
528
+ * NFT slot for each place of the lottery's own stash.
529
+ */
530
+ export declare function roundSize(l: any, m: any): {
531
+ head: number;
532
+ accounts: any;
533
+ };
534
+ /** How many rounds of a lottery are open or still paying out at once, and how many purchases a round takes, as the
535
+ * spec expects them (`expect`): by default two rounds of a lottery that draws again (one selling, one paying out) and
536
+ * one of a lottery that draws once; a round's purchases from the scenario's purchases a day over a round, else 100. */
537
+ export declare function roundsExpected(l: any, m: any): {
538
+ rounds: any;
539
+ entries: any;
540
+ };
541
+ /**
542
+ * The SOL, in lamports, a lottery holds for its rounds' rent: the spec's `roundRent` (0 turns it off), or by default
543
+ * what its expected rounds take at once (`roundsExpected`), each its header, its token accounts and its expected
544
+ * entries' bytes (`LotteryRound.lent`: in a round the lottery opened, its spare SOL pays each entry while it covers
545
+ * them, so buyers pay no program rent for a ticket), at devnet's and mainnet's rent, rounded up to 0.001 SOL. Short
546
+ * of it (a busier round, a cluster that charges more), the first buyer fronts the header and later buyers pay their
547
+ * own entries. Each round gives back what it took when it closes; the lottery gives the rest back to the owner when it closes.
548
+ */
549
+ export declare function roundRentOf(l: any, m: any): bigint;
483
550
  /**
484
551
  * The args the authority opens a contest with, `at` (Unix seconds) its opening: its sides, when entries close and the
485
552
  * result is due, its split, its gate (a list of wallets for a duel), the keys that may decide it, the least pot (an
@@ -520,8 +587,8 @@ export declare function contestArgs(c: any, m: any, at?: any): {
520
587
  Item: any[];
521
588
  Collection?: undefined;
522
589
  } | {
523
- Item?: undefined;
524
590
  Collection: any[];
591
+ Item?: undefined;
525
592
  };
526
593
  key: any;
527
594
  test: any;
@@ -530,12 +597,12 @@ export declare function contestArgs(c: any, m: any, at?: any): {
530
597
  deciders: any;
531
598
  min_pot: bigint;
532
599
  stake: bigint;
533
- prize: {
534
- Item?: undefined;
600
+ prize: string | {
535
601
  Compressed: {
536
602
  item: any;
537
603
  tree: string;
538
604
  };
605
+ Item?: undefined;
539
606
  Held?: undefined;
540
607
  Nft?: undefined;
541
608
  Roll?: undefined;
@@ -548,15 +615,15 @@ export declare function contestArgs(c: any, m: any, at?: any): {
548
615
  Roll?: undefined;
549
616
  Tokens?: undefined;
550
617
  } | {
551
- Item?: undefined;
552
618
  Compressed?: undefined;
619
+ Item?: undefined;
553
620
  Held: any[];
554
621
  Nft?: undefined;
555
622
  Roll?: undefined;
556
623
  Tokens?: undefined;
557
624
  } | {
558
- Item?: undefined;
559
625
  Compressed?: undefined;
626
+ Item?: undefined;
560
627
  Held?: undefined;
561
628
  Nft: {
562
629
  stash: any;
@@ -565,34 +632,15 @@ export declare function contestArgs(c: any, m: any, at?: any): {
565
632
  Roll?: undefined;
566
633
  Tokens?: undefined;
567
634
  } | {
568
- Item?: undefined;
569
635
  Compressed?: undefined;
636
+ Item?: undefined;
570
637
  Held?: undefined;
571
638
  Nft?: undefined;
572
639
  Roll: any[];
573
640
  Tokens?: undefined;
574
641
  } | {
575
- Item?: undefined;
576
642
  Compressed?: undefined;
577
- Held?: undefined;
578
- Nft?: undefined;
579
- Roll?: undefined;
580
- Tokens: {
581
- from: {
582
- Pool: any[];
583
- Mint?: undefined;
584
- } | {
585
- Pool?: undefined;
586
- Mint: string[];
587
- };
588
- amount: {
589
- Bps: number[];
590
- Fixed?: undefined;
591
- };
592
- };
593
- } | {
594
643
  Item?: undefined;
595
- Compressed?: undefined;
596
644
  Held?: undefined;
597
645
  Nft?: undefined;
598
646
  Roll?: undefined;
@@ -604,10 +652,7 @@ export declare function contestArgs(c: any, m: any, at?: any): {
604
652
  Pool?: undefined;
605
653
  Mint: string[];
606
654
  };
607
- amount: {
608
- Bps?: undefined;
609
- Fixed: bigint[];
610
- };
655
+ amount: bigint;
611
656
  };
612
657
  } | null;
613
658
  prize_split: boolean;
@@ -616,16 +661,16 @@ export declare function contestArgs(c: any, m: any, at?: any): {
616
661
  Item: any[];
617
662
  Collection?: undefined;
618
663
  } | {
619
- Item?: undefined;
620
664
  Collection: any[];
665
+ Item?: undefined;
621
666
  };
622
667
  key: any;
623
668
  test: any;
624
669
  } | null;
670
+ cap: any;
625
671
  };
626
672
  export declare function farmArgs(f: any, m: any): {
627
673
  custody: any;
628
- rewards_pool: any;
629
674
  tiers: any;
630
675
  boosts: any;
631
676
  max_boost_bps: number;
@@ -634,8 +679,8 @@ export declare function farmArgs(f: any, m: any): {
634
679
  Item: any[];
635
680
  Collection?: undefined;
636
681
  } | {
637
- Item?: undefined;
638
682
  Collection: any[];
683
+ Item?: undefined;
639
684
  };
640
685
  key: any;
641
686
  test: any;
@@ -643,6 +688,8 @@ export declare function farmArgs(f: any, m: any): {
643
688
  rate: {
644
689
  per_day: bigint;
645
690
  mints: boolean;
691
+ shared: boolean;
692
+ halve_every: number;
646
693
  } | null;
647
694
  growth: {
648
695
  key: any;
@@ -650,6 +697,8 @@ export declare function farmArgs(f: any, m: any): {
650
697
  level: any;
651
698
  steps: any;
652
699
  streak: boolean;
700
+ profile: boolean;
701
+ at_least: bigint;
653
702
  }[];
654
703
  ends_at: bigint;
655
704
  lock_key: any;
@@ -657,18 +706,14 @@ export declare function farmArgs(f: any, m: any): {
657
706
  exit_to: string | {
658
707
  Pool: any[];
659
708
  } | null;
660
- unbond: number;
661
- toll: {
662
- bps: number;
663
- to: string | {
664
- Pool: any[];
665
- };
666
- } | null;
667
709
  };
668
- /** A fee's sink (`Sink`): "burn", or "pool:<key>", one of the project's pools. */
669
- export declare const sinkOf: (to: any, m: any) => "Burn" | {
710
+ /** A fee's sink (`Sink`): "burn", "rewards" (the farm's own vault), or "pool:<key>", one of the project's pools. */
711
+ export declare const sinkOf: (to: any, m: any) => "Burn" | "Rewards" | {
670
712
  Pool: any[];
671
713
  };
714
+ /** Whether a spec's farm keeps a record of when its seats stop earning (`loot.farmKeepsEnds`): a tier's term or an upkeep,
715
+ * and it pays something. Each different time waiting costs whoever writes it `loot.END_BYTES` of rent. */
716
+ export declare const farmEnds: (f: any) => any;
672
717
  /** An auction's args: its lot, reserve, least raise, times and split. "start" is when it goes live unless it says. */
673
718
  export declare function auctionArgs(a: any, m: any): {
674
719
  lot: {
@@ -714,8 +759,8 @@ export declare function auctionArgs(a: any, m: any): {
714
759
  Item: any[];
715
760
  Collection?: undefined;
716
761
  } | {
717
- Item?: undefined;
718
762
  Collection: any[];
763
+ Item?: undefined;
719
764
  };
720
765
  key: any;
721
766
  test: any;
@@ -726,20 +771,20 @@ export declare function auctionArgs(a: any, m: any): {
726
771
  Item: any[];
727
772
  Collection?: undefined;
728
773
  } | {
729
- Item?: undefined;
730
774
  Collection: any[];
775
+ Item?: undefined;
731
776
  };
732
777
  key: any;
733
778
  test: any;
734
779
  } | null;
735
780
  };
736
781
  export declare function grantArgs(g: any, m: any): {
737
- gives: {
738
- Item?: undefined;
782
+ gives: string | {
739
783
  Compressed: {
740
784
  item: any;
741
785
  tree: string;
742
786
  };
787
+ Item?: undefined;
743
788
  Held?: undefined;
744
789
  Nft?: undefined;
745
790
  Roll?: undefined;
@@ -752,15 +797,15 @@ export declare function grantArgs(g: any, m: any): {
752
797
  Roll?: undefined;
753
798
  Tokens?: undefined;
754
799
  } | {
755
- Item?: undefined;
756
800
  Compressed?: undefined;
801
+ Item?: undefined;
757
802
  Held: any[];
758
803
  Nft?: undefined;
759
804
  Roll?: undefined;
760
805
  Tokens?: undefined;
761
806
  } | {
762
- Item?: undefined;
763
807
  Compressed?: undefined;
808
+ Item?: undefined;
764
809
  Held?: undefined;
765
810
  Nft: {
766
811
  stash: any;
@@ -769,34 +814,15 @@ export declare function grantArgs(g: any, m: any): {
769
814
  Roll?: undefined;
770
815
  Tokens?: undefined;
771
816
  } | {
772
- Item?: undefined;
773
817
  Compressed?: undefined;
818
+ Item?: undefined;
774
819
  Held?: undefined;
775
820
  Nft?: undefined;
776
821
  Roll: any[];
777
822
  Tokens?: undefined;
778
823
  } | {
779
- Item?: undefined;
780
824
  Compressed?: undefined;
781
- Held?: undefined;
782
- Nft?: undefined;
783
- Roll?: undefined;
784
- Tokens: {
785
- from: {
786
- Pool: any[];
787
- Mint?: undefined;
788
- } | {
789
- Pool?: undefined;
790
- Mint: string[];
791
- };
792
- amount: {
793
- Bps: number[];
794
- Fixed?: undefined;
795
- };
796
- };
797
- } | {
798
825
  Item?: undefined;
799
- Compressed?: undefined;
800
826
  Held?: undefined;
801
827
  Nft?: undefined;
802
828
  Roll?: undefined;
@@ -808,10 +834,7 @@ export declare function grantArgs(g: any, m: any): {
808
834
  Pool?: undefined;
809
835
  Mint: string[];
810
836
  };
811
- amount: {
812
- Bps?: undefined;
813
- Fixed: bigint[];
814
- };
837
+ amount: bigint;
815
838
  };
816
839
  };
817
840
  vouchers: any[];
@@ -826,8 +849,11 @@ export declare function grantArgs(g: any, m: any): {
826
849
  };
827
850
  per_person: any;
828
851
  per_key: any;
829
- per_day: any;
830
- total: any;
852
+ all: {
853
+ total: any;
854
+ per_window: any;
855
+ window: number;
856
+ };
831
857
  window: {
832
858
  opens_at: bigint;
833
859
  closes_at: bigint;
@@ -864,20 +890,21 @@ export declare function grantArgs(g: any, m: any): {
864
890
  Item: any[];
865
891
  Collection?: undefined;
866
892
  } | {
867
- Item?: undefined;
868
893
  Collection: any[];
894
+ Item?: undefined;
869
895
  };
870
896
  key: any;
871
897
  test: any;
872
898
  } | null)[];
873
899
  } | null;
900
+ shard_bits: number;
874
901
  };
875
902
  /**
876
903
  * Every step that sets the economy up, in order: the tokens the project mints, the collection, the project, the pools, items, boxes (the shop's too), recipes, schedules, lotteries, grants,
877
904
  * farms, auctions, then the seeds and the grants' funds. `only` limits it to these part ids (a change to a live economy).
878
905
  *
879
- * A farm opens before the seed of its rewards pool lands, and anyone may stake in between. That is safe: a sharing
880
- * farm credits nothing at once, and releases what lands in its pool over its longest lock (a day at least) to the
906
+ * A farm opens before its seed lands in its rewards vault, and anyone may stake in between. That is safe: a sharing
907
+ * farm credits nothing at once, and releases what lands in its vault over its longest lock (a day at least) to the
881
908
  * seats there as it is released, its clock stopped while nobody is in. A seed that lands
882
909
  * before the first stake or after it is released the same way from that stake on, so seeding first would change nothing.
883
910
  */
@@ -900,8 +927,9 @@ export declare function setupSteps(economy: any, { now, only, live: given }?: {
900
927
  treeHolds: any;
901
928
  projectNumber: any;
902
929
  items: any;
903
- pools: any[];
930
+ pools: any;
904
931
  stashes: any;
932
+ tables: any;
905
933
  boxes: never[];
906
934
  payments: any;
907
935
  recipes: any;
@@ -918,11 +946,23 @@ export declare function setupSteps(economy: any, { now, only, live: given }?: {
918
946
  live: any;
919
947
  };
920
948
  };
921
- /** A stash's bytes before its NFTs: its tag, its project, its id and its count (`stash.rs`); each NFT adds 32. */
922
- export declare const STASH_HEAD_BYTES = 41;
949
+ /** The token accounts going live opens (`setupSteps`): [{ who ('the treasury', 'the project' or a wallet), token }], each
950
+ * once, for the coins the economy takes in. */
951
+ export declare function goLiveAccounts(m: any): any[];
952
+ /**
953
+ * The addresses a project's transactions name most, for its standing lookup table: loot's own fixed accounts (the
954
+ * platform, the oracle's), the project and its fee box, its treasury and collections, each coin's mint, its vault and
955
+ * the treasury's account of it, then each pool, item, box and stash. Each a function of the go-live context.
956
+ */
957
+ export declare function standingAddresses(m: any): any[];
958
+ /** A stash's bytes with `n` NFTs: a table of NFTs (`table.rs`): its 51-byte header, a total for each group of 4,096
959
+ * rows and each block of 64, and 36 bytes an NFT (its weight and its address). */
960
+ export declare const stashBytes: (n: any) => number;
923
961
  /** Who puts a spec's auction up, and so is named in its address: the owner for a collectible it holds, the authority for a new unit of an item. */
924
962
  export declare const auctionSeller: (a: any, ctx: any) => any;
925
963
  export declare const recordBytesOf: (kind: any, body: any) => number;
964
+ /** A farm's bytes as `open_farm` writes it: its args and its numbers. */
965
+ export declare const farmBytes: (f: any, m: any) => number;
926
966
  /** Exact initial contest record size for its configured shares, gate, sides and deciders. */
927
967
  export declare const contestBytes: (contest: any, m: any) => number;
928
968
  /** Stand-in addresses for every name a plan uses, so it can be built and sized without a wallet. */
@@ -941,6 +981,7 @@ export declare function placeholderContext(m: any, { rent }?: {
941
981
  'new:tree'?: string | undefined;
942
982
  };
943
983
  rent: (bytes: any) => bigint;
984
+ slot: bigint;
944
985
  };
945
986
  /**
946
987
  * What of `live` is made. While a setup is landing (`partial`), the project, its collection, its tree and each mint the
@@ -976,6 +1017,7 @@ export declare function pack(steps: any, ctx: any): {
976
1017
  built: any[];
977
1018
  instructions: any;
978
1019
  signers: any[];
1020
+ alone: boolean;
979
1021
  }[];
980
1022
  /**
981
1023
  * The plan for a spec: refusals, or every step packed into transactions. With `ctx` the transactions carry the
@@ -1005,6 +1047,7 @@ export declare function plan(economy: any, { now, ctx, only, live }?: {
1005
1047
  built: any[];
1006
1048
  instructions: any;
1007
1049
  signers: any[];
1050
+ alone: boolean;
1008
1051
  }[];
1009
1052
  approvals: number;
1010
1053
  freshKeys: any[];