@xgamesfun/solana 0.26.3 → 0.27.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xgamesfun/solana",
3
- "version": "0.26.3",
3
+ "version": "0.27.0",
4
4
  "mcpName": "io.github.XGamesFun/solana-kit",
5
5
  "description": "Loot boxes, gacha, shops, lotteries, auctions, NFT staking, crafting and rewards on Solana without writing a smart contract: one shared program, its JS client, a CLI, and an MCP server and skill so Claude Code, Codex or any AI agent can design, check, simulate and launch an economy.",
6
6
  "license": "Apache-2.0",
package/release.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
- "version": "0.26.1",
2
+ "version": "0.27.0",
3
3
  "programId": "9cwqM1TXytPnFZsLfmUyv2dg4uW6Ch9C6UJVPns7NFQ",
4
- "sbfBytes": 1783800,
5
- "sbfSha256": "af318ccfa4d2901076b85fcd1b4467b03253adf0de16e73a9dfc1ef8077b2c14",
6
- "idlSha256": "0e88fc826a585cf17917cbc654e33b68232771769fe9aae1d5899a257940ff47",
7
- "clientSha256": "8c8c89bfca22961d24379b2cc63964dfa2e68d3b65cdcbb33d52352677464533"
4
+ "sbfBytes": 1794664,
5
+ "sbfSha256": "3b11c460548a4fec865fd902431a94ac13a71c3a1013e4516783515e5d266bd6",
6
+ "idlSha256": "62364c5fd5be8aa001f4d72fb87b121b045dea07668f9b5ec9856d323d6cf445",
7
+ "clientSha256": "179b7ff59398a39cce70df059c1781e91a3d0366791797b368d8030169a507ad"
8
8
  }
@@ -9,9 +9,9 @@ An economy is one JSON spec (`xsolana.json` in the project) on **loot**, a Solan
9
9
  writes or deploys a contract: the spec is checked, simulated and priced by the `xsolana_*` tools, and the project's
10
10
  owner puts it live by approving in their own wallet. It runs on **devnet** until the program is audited.
11
11
 
12
- The tools are the `xsolana_*` MCP tools. Without MCP, the same from a terminal: `npx -y @xgamesfun/solana@0.26.3 <guide|examples|check|simulate|cost|explain|review|publish|status> [xsolana.json]`,
13
- `npx -y @xgamesfun/solana@0.26.3 token <mint>` for a coin made elsewhere,
14
- or `npx -y @xgamesfun/solana@0.26.3 tool <name> '<json>'` for any tool (always with the exact version).
12
+ The tools are the `xsolana_*` MCP tools. Without MCP, the same from a terminal: `npx -y @xgamesfun/solana@0.27.0 <guide|examples|check|simulate|cost|explain|review|publish|status> [xsolana.json]`,
13
+ `npx -y @xgamesfun/solana@0.27.0 token <mint>` for a coin made elsewhere,
14
+ or `npx -y @xgamesfun/solana@0.27.0 tool <name> '<json>'` for any tool (always with the exact version).
15
15
 
16
16
  ## Rules (always)
17
17
 
@@ -123,7 +123,7 @@ or `npx -y @xgamesfun/solana@0.26.3 tool <name> '<json>'` for any tool (always w
123
123
  level would cost. Run it again after every change that touches a route that pays.
124
124
  9. **When they say "put it live"**: `xsolana_publish` lists every step and its cost and gives the command. Tell them to
125
125
  run it themselves in the project folder, exactly as `xsolana_publish` gives it (it names the exact version:
126
- `npx -y @xgamesfun/solana@0.26.3 approve xsolana.json`; never drop the version). It opens a page on their computer where
126
+ `npx -y @xgamesfun/solana@0.27.0 approve xsolana.json`; never drop the version). It opens a page on their computer where
127
127
  they connect a devnet wallet and approve; what lands is written back into `xsolana.json`. You publish nothing.
128
128
  10. **After it is live**: `xsolana_status` shows each part on chain; read it before acting on what the person says
129
129
  happened. A later change is the same loop: save, publish, and the approval sends only what changed. What only the
@@ -178,6 +178,12 @@ assetId, tree }` after a `loot.proveLeafIx` in the same transaction. `app.stakeN
178
178
  of its `mint`), then `app.repay(asset, due, { repay })` pays exactly that, in the payer's one prompt (a loan whose
179
179
  debt changed since is refused); a throwaway key that transaction funds sends the NFT home to its borrower, a pNFT's
180
180
  or a compressed NFT's too (one prompt). A lender sees an overdue unpaid loan in `claims()` (`release`, to them).
181
+ - **An NFT its collection took back.** Whoever controls a collection the project does not can take an NFT out of a
182
+ hold, a loan or a listing, or burn it there. `claims()` then lists that hold or loan, for its player and for its
183
+ lender, as a `release` flagged `gone`: show `c.says` (closing it sends nothing, and a loan ends unpaid) and let
184
+ `app.claim(c)` close it. `app.listing(asset)` and `app.listings()` flag such a listing `gone`: show it as not for
185
+ sale. Its maker's `app.unlist` closes it, and `app.closeGone(asset)` lets anyone close it. Before a deposit, the
186
+ play module closes what an earlier owner left of the NFT, in the same prompt.
181
187
  - **A grant that pays by rank**: a voucher with an `amount` (base units of the grant's token) pays that much, up to
182
188
  the grant's; `app.claimGrant(key, { voucher })` passes it, and `{ proof, round, personHash, amount }` for a list.
183
189
  - **The price the player saw is the most they pay**: `app.buy` and `app.openBox` need the listing `shop()` or
@@ -122,8 +122,10 @@ Don'ts:
122
122
  - **A token the setup makes is named on chain as it goes live**: its `name`, its `symbol` and its `uri` (a link to a
123
123
  JSON file the project hosts, `{ "name", "symbol", "image": "https://…" }`), which is what wallets and explorers show.
124
124
  Ask for the name, the ticker and a picture before going live: with no `uri` it shows by name and ticker with no
125
- picture. Only the owner's wallet can change the three later (Token Metadata's rule, not loot's), and these tools
126
- don't change a live token's yet, so get them right first. The record costs about 0.014 SOL (`xsolana_cost` says it:
125
+ picture. Only the owner's wallet can change the three later (Token Metadata's rule, not loot's): change them in the
126
+ spec and approve again, and the record is written again for the price of a transaction (approving reads the record
127
+ first: one its owner handed to another wallet, made unchangeable or gave a royalty or creators outside these tools
128
+ is left as it is, and the page says so at each approve until the spec gives the old name back). The record costs about 0.014 SOL (`xsolana_cost` says it:
127
129
  rent, and 0.01 SOL Token Metadata keeps). A token that went live before the tools wrote one has none and
128
130
  can't be given one: only a mint's own authority can name it, and its minting was handed on or turned off.
129
131
  - **NFTs the project has no authority over** (any collection but its own): they count as they are. Say that
@@ -119,9 +119,10 @@ Run `xsolana_review` and go through what it reports; these are the points behind
119
119
  enter: keep contests for results the server decides, or that anyone can check outside the game. A prize to each
120
120
  winning entry with no stake and no gate pays one person with many wallets once a wallet.
121
121
  15. **NFTs the project doesn't control.** The creator of an NFT with a permanent delegate can pull it back out of a
122
- hold, a stake, a loan or a listing, and a collection the project is only an update delegate of lets its owner and
123
- every other delegate mint NFTs that read as the project's own items. Name only collections whose every writer the
124
- project trusts.
122
+ hold, a stake, a loan or a listing, or burn it there. Its record then closes without it (anyone may, and nothing
123
+ is paid: a lender is out what they lent), and `js/play` closes what an earlier owner left before the next owner's
124
+ deposit. A collection the project is only an update delegate of lets its owner and every other delegate mint NFTs
125
+ that read as the project's own items. Name only collections whose every writer the project trusts.
125
126
 
126
127
  ## Telling the person
127
128
 
@@ -36,5 +36,50 @@ export declare function createFungibleMetadataIx({ mint, authority, payer, name,
36
36
  }[];
37
37
  data: Uint8Array<any>;
38
38
  };
39
+ /**
40
+ * Token Metadata's UpdateMetadataAccountV2 for a fungible token's record: a new name, ticker and link ('' for none),
41
+ * all three written as given. `authority` is the record's update authority (for a token a setup made: the project's
42
+ * owner) and signs; it stays the update authority, and the record stays changeable. The record's words are written
43
+ * whole, with no royalty, creators, collection or uses: as a record a setup made has them. One that was given any of
44
+ * those outside these tools would lose them (or refuse the write), so the approval sends this only to a record that
45
+ * has none (`parseRecord`'s `plain`; approve/live-check.mjs readRenames). The mint is untouched, and it costs only the
46
+ * transaction: the record keeps its size.
47
+ */
48
+ export declare function updateFungibleMetadataIx({ mint, authority, name, symbol, uri }: {
49
+ authority: any;
50
+ mint: any;
51
+ name: any;
52
+ symbol: any;
53
+ uri?: string | undefined;
54
+ }): {
55
+ programId: string;
56
+ keys: {
57
+ pubkey: any;
58
+ isSigner: any;
59
+ isWritable: any;
60
+ }[];
61
+ data: Uint8Array<any>;
62
+ };
63
+ /**
64
+ * A Token Metadata record as the chain holds it, or null when the data is not one (its first byte says a metadata
65
+ * record; the strings are padded with NULs to their full length):
66
+ * { updateAuthority, mint, name, symbol, uri, royalty, creators, mutable, collection, uses, plain }.
67
+ * `royalty`: its resale royalty, in hundredths of a percent. `creators`: how many it lists. `mutable`: its update
68
+ * authority can still change it. `collection`, `uses`: whether it names one. `plain`: none of royalty, creators,
69
+ * collection or uses, as a setup's own record is: writing its words again changes nothing else of it.
70
+ */
71
+ export declare function parseRecord(data: any): {
72
+ updateAuthority: string;
73
+ mint: string;
74
+ name: string;
75
+ symbol: string;
76
+ uri: string;
77
+ royalty: number;
78
+ creators: number;
79
+ mutable: boolean;
80
+ collection: boolean;
81
+ uses: boolean;
82
+ plain: boolean;
83
+ } | null;
39
84
  /** The update authority a Token Metadata record names (who can change its name, ticker and link). */
40
85
  export declare const metadataUpdateAuthority: (data: any) => string | null;
@@ -6,8 +6,10 @@ export declare function proofLength(treeData: any): number;
6
6
  /**
7
7
  * A compressed NFT from an indexer's answers: `asset` (DAS `getAsset`), `proof` (DAS `getAssetProof`) and the tree
8
8
  * account's bytes (`treeData`, for how much of the proof to pass). Returns { id, tree, nonce, owner, delegate,
9
- * collection (or null), dataHash, creatorHash, assetDataHash (or null), flags, root, proof: [node, …] }. The proof
10
- * must be against the tree's current root when it lands: fetch it just before sending.
9
+ * collection (or null), dataHash, creatorHash, assetDataHash (or null), flags, root, proof: [node, …], burnt }. The
10
+ * proof must be against the tree's current root when it lands: fetch it just before sending. A burned NFT (DAS says
11
+ * `burnt`) is described as the program takes one: a data hash of all zeros, which `proveLeafIx` then proves against
12
+ * the leaf's empty slot, so its record names no owner (a record that holds it lets go of it on that proof).
11
13
  */
12
14
  export declare function compressedFromDas({ asset, proof, treeData }: {
13
15
  asset: any;
@@ -26,4 +28,5 @@ export declare function compressedFromDas({ asset, proof, treeData }: {
26
28
  flags: number;
27
29
  root: Uint8Array<ArrayBuffer> | null;
28
30
  proof: any;
31
+ burnt: boolean;
29
32
  };
@@ -3877,6 +3877,10 @@ export declare const SETTLE_LAST = 4294967295;
3877
3877
  * them (one its collection won't let move). `giveUp`: the places in `won` of tokens or collectibles the player,
3878
3878
  * signing, gives up because they can't receive them (an account its issuer froze, a collection that refuses the mint),
3879
3879
  * so the rest of the order is not held up: tokens given up stay in the project's vault (`PrizeForgone` says which).
3880
+ * An NFT proven gone from the project is passed over the same way, with no choice of the player's (`piece`: the Core
3881
+ * asset itself, `tokenMetadata.evidence` in its kind, a compressed NFT's record proven again): the NFT the order rolled
3882
+ * on is not sent back, burned, given or stashed (`NftGone`), and a stash's NFT it won is not given (`PrizeForgone`
3883
+ * for it beside `NftGone`: read it as not given); everything else settles as rolled.
3880
3884
  * `handBack`: the wallet the box's fate gives the NFT rolled on to
3881
3885
  * (`receiverOf`) is an account of the loot program (`handsBack` of it as read), so the program gives it back to the
3882
3886
  * player, and a Token Metadata NFT's `token` is the player's. `extra`: a hook's or a memo's accounts.
@@ -3931,6 +3935,8 @@ export declare const INCINERATOR = "1nc1nerator11111111111111111111111111111111"
3931
3935
  * (`orderRefundable`). A purchase counted against a box's limit for each
3932
3936
  * wallet is given back. A purchase that counts its draws in its box's `in_flight` (`order.reserved`, a box that stops
3933
3937
  * selling when an entry runs out) names the box, whose count it leaves. `extra`: a hook's or a memo's accounts.
3938
+ * An NFT the order holds that is proven gone from the project (`subject`, as `piece` takes it) is not looked for: the
3939
+ * whole payment goes back all the same (`NftGone` beside `OrderRefunded`).
3934
3940
  */
3935
3941
  export declare function refundIx({ signer, orderAddress, order, subject, programs, extra }: {
3936
3942
  extra?: never[] | undefined;
@@ -4083,6 +4089,10 @@ export declare const madeAssets: (project: any, item: any, itemState: any, count
4083
4089
  * NFT is any kind
4084
4090
  * (`piece`): `asset` and `collection` for a Core asset, with `tokenMetadata` for a Token Metadata NFT, or `compressed`
4085
4091
  * (after a `proveLeafIx`).
4092
+ * A hold whose NFT is proven gone from the project (`piece`: the Core asset itself, `tokenMetadata.evidence`, a
4093
+ * compressed NFT's record proven again) closes instead: anyone sends it, at any time, also while the hold runs and for
4094
+ * a loan before it is due, for no project fee. Nothing moves and `to` is not read; the hold's rent goes to whoever paid
4095
+ * it, and a loan's debt ends unpaid. Its receipt is `NftGone`, with no `Released`.
4086
4096
  */
4087
4097
  export declare function releaseIx({ signer, project, collection, asset, tokenMetadata: tm, compressed, hold, address, to, treasury, reference: ref, more, }: {
4088
4098
  address?: null | undefined;
@@ -4344,6 +4354,8 @@ export declare function pullAssigns(r: any, stash: any, upto: any): number;
4344
4354
  * close, and the next carries on. Every pull of one entry's places names the same `nonce`: a place's roll is made at
4345
4355
  * `prizeRollNonce(nonce + place)`, so a later pull with another nonce can land on an order an earlier pull made and fail
4346
4356
  * ("already in use"). js/play names `prizeNonce(round, entry)` for every pull of an entry, whoever sends it.
4357
+ * An NFT ticket proven gone from the project (`ticket`, as `piece` takes it) goes nowhere: its part settles and
4358
+ * nothing moves (`LotteryPulled` with amount 0 beside `NftGone`).
4347
4359
  */
4348
4360
  export declare function pullIx({ payer, project, roundAddress: key, round: r, entry, part, projectState, ticket, handBack, hold, nonce, prize, holders, toTreasury, lotteryClosed, programs, extra, }: {
4349
4361
  entry?: number | undefined;
@@ -4424,14 +4436,17 @@ export declare const farmKeepsEnds: (args: any) => any;
4424
4436
  * little compute, so a farm idle past many ends may leave a move no room: `farmNeedsWalk`.
4425
4437
  */
4426
4438
  export declare function endsToWalk(farm: any, ends: any, now: any): any;
4427
- /** How many ends `walk_farm` walks in one transaction at `WALK_COMPUTE_UNITS`: an end takes at most some 2,300 units, with a
4428
- * halving rate (`js/test/farm-ends.test.mjs` measures it). */
4429
- export declare const WALK_PER_TX = 500;
4439
+ /** How many ends `walk_farm` walks in one transaction at `WALK_COMPUTE_UNITS`: an end takes up to some 3,150 units at
4440
+ * the dearest farm, a halving rate and seats of 4 × 10^16 base units at a ×100 tier (`js/test/farm-ends.test.mjs`
4441
+ * measures it: 400 ends take 1,260,730 units, 2,270 an end with light seats). Since loot 0.27 each end walked also
4442
+ * frees the leaving weight's share of the carry, some 300 units more at that farm; it was 500 until then, measured
4443
+ * with light seats only. */
4444
+ export declare const WALK_PER_TX = 400;
4430
4445
  /** The compute units a transaction that walks ends asks for: `walk_farm`, or a move with ends to walk first. */
4431
4446
  export declare const WALK_COMPUTE_UNITS = 1400000;
4432
- /** How many ends a move can walk first at `WALK_COMPUTE_UNITS` and still do its own work: past this, the farm is walked
4433
- * first (`farmNeedsWalk`). */
4434
- export declare const MOVE_WALK_ROOM = 400;
4447
+ /** How many ends a move can walk first at `WALK_COMPUTE_UNITS` and still do its own work (some 400,000 units are left
4448
+ * for it at the dearest farm): past this, the farm is walked first (`farmNeedsWalk`). 400 until loot 0.27. */
4449
+ export declare const MOVE_WALK_ROOM = 300;
4435
4450
  /**
4436
4451
  * Whether a farm has passed more ends than a move can walk in its own transaction (`endsToWalk`, `MOVE_WALK_ROOM`): such
4437
4452
  * a move fails on compute until `walk_farm` has caught the farm up. Nothing is lost by waiting: what a seat earned by
@@ -4553,6 +4568,11 @@ export declare const AUTH_RULES_PROGRAM = "auth9SigNpDKz4sJJ1DfCTuZrZNSAgh9sFD3r
4553
4568
  * token account of `wallet` (its holder, or whoever the project sends it to) and the project's own;
4554
4569
  * a compressed NFT (`compressed`, from `compressedFromDas`), proven by a `proveLeafIx` earlier in the transaction.
4555
4570
  * A Token Metadata or compressed NFT passes its Sheet: the project writes nothing on it.
4571
+ * An NFT proven gone from the project (whoever controls its collection took it out of the project's hands or burned
4572
+ * it) is let go by the record that holds it, on these same accounts (loot 0.27, receipt `NftGone`): a Core asset shows
4573
+ * it by itself; a compressed NFT by its record, proven again as the leaf is now; a Token Metadata NFT by
4574
+ * `tokenMetadata.evidence`, the token account that holds it now, or its mint when it was burned, which goes in the
4575
+ * place of `wallet`'s token account. Anything else shows nothing, and the route goes its usual way.
4556
4576
  * What the route does with it, so only the accounts it takes are passed (each true when left out):
4557
4577
  * `moves`: hands it to the project or sends it on; `locks`: locks or unlocks it in its wallet; `writes`: writes on it;
4558
4578
  * `burns`: burns a Core asset (false when left out); `reads`: reads its Sheet; `held`: reads it in the project's token
@@ -5062,6 +5082,10 @@ export declare function holdIx({ player, project, collection, asset, tokenMetada
5062
5082
  * by, and gets back the rent it no longer needs. `drop`: the NFT leaves the stash and stays where it is, owed to the
5063
5083
  * treasury in its hold (`["hold", nft, 0]`, the signer paying its rent until anyone `release`s it to the treasury, one
5064
5084
  * NFT a call). `out` is never the project's own address nor another account of the program (`ToTheProject`).
5085
+ * Taking out of a project's stash an NFT proven gone from the project (`piece`: the Core asset itself,
5086
+ * `tokenMetadata.evidence`, a compressed NFT's record proven again) only takes its row off the list: anyone may send
5087
+ * it (`signer`), for no fee, nothing moves and no hold is made (`NftGone`, no `Stashed`); the rent the stash no longer
5088
+ * needs goes to the signer only when it is one of the project's keys. A lottery's own stash stays the project's keys'.
5065
5089
  */
5066
5090
  export declare function stashIx({ signer, project, id, lottery, lotteryState, asset, out, drop, weight, collection, tokenMetadata: tm, compressed, more, }: {
5067
5091
  asset: any;
@@ -5444,6 +5468,10 @@ export declare function openListingIx({ maker, project, asset, mint, deal, share
5444
5468
  * takes none of the NFT's accounts but its address. `holders`, `programs`, `treasury` as for any split. After the
5445
5469
  * take's own accounts come a sale's compressed NFT's proof, then the shares' accounts, then (in `extra`) Core's
5446
5470
  * transfer adapters and any transfer hook's accounts, which the program finds by address after the shares'.
5471
+ * A listing whose NFT is proven gone from the project (`piece`: the Core asset itself, `tokenMetadata.evidence`, a
5472
+ * compressed NFT's record proven again) closes instead, whoever sends this: the taker pays nothing and no fee, the
5473
+ * listing's rent goes to its maker, and the receipt is `NftGone`. It is refused while a rental runs (`Rented`), and
5474
+ * closes once the rental has run.
5447
5475
  */
5448
5476
  export declare function takeListingIx({ taker, project, projectState, listing, periods, collection, hasAuthority, tokenMetadata: tm, compressed, holders, programs, takerToken, extra, }: {
5449
5477
  collection: any;
@@ -5466,7 +5494,10 @@ export declare function takeListingIx({ taker, project, projectState, listing, p
5466
5494
  };
5467
5495
  /**
5468
5496
  * Its maker closes a listing (`listing` the decoded Listing): the NFT goes home. While a rental runs it only stops (no
5469
- * renter takes it again), and the same call once the rental is over takes it home. Free.
5497
+ * renter takes it again), and the same call once the rental is over takes it home. Free. A listing whose NFT is proven
5498
+ * gone from the project (`piece`: the Core asset itself, `tokenMetadata.evidence`, a compressed NFT's record proven
5499
+ * again) closes without it once no rental runs, its rent to its maker (`NftGone`, no `Unlisted`); anyone else closes
5500
+ * such a listing with `takeListingIx`.
5470
5501
  */
5471
5502
  export declare function closeListingIx({ maker, project, listing, collection, hasAuthority, tokenMetadata: tm, compressed, extra, }: {
5472
5503
  collection: any;
@@ -19,10 +19,11 @@ export declare function setupCost(plan: any, economy: any): {
19
19
  export declare function actionCosts(economy: any, { now }?: Readonly<Record<string, any>>): any[];
20
20
  /** Setup and play costs for a spec, or its refusals. */
21
21
  /** `only` and `live`: a change to a live economy, priced as only what it publishes (live.mjs `changedParts`). */
22
- export declare function cost(economy: any, { now, only, live }?: {
22
+ export declare function cost(economy: any, { now, only, live, renames }?: {
23
23
  live?: null | undefined;
24
24
  now?: number | undefined;
25
25
  only?: null | undefined;
26
+ renames?: null | undefined;
26
27
  }): {
27
28
  ok: boolean;
28
29
  refusals: any[];
@@ -35,7 +36,14 @@ export declare function cost(economy: any, { now, only, live }?: {
35
36
  refusals?: undefined;
36
37
  ok: boolean;
37
38
  warnings: any[];
38
- steps: any[];
39
+ steps: {
40
+ creates: never[];
41
+ signers: string[];
42
+ id: string;
43
+ part: string;
44
+ says: string;
45
+ build: {};
46
+ }[];
39
47
  transactions: {
40
48
  signer: string;
41
49
  steps: any[];
@@ -46,7 +54,7 @@ export declare function cost(economy: any, { now, only, live }?: {
46
54
  alone: boolean;
47
55
  }[];
48
56
  approvals: number;
49
- freshKeys: any[];
57
+ freshKeys: string[];
50
58
  } | {
51
59
  ok: boolean;
52
60
  setup: {
@@ -7,12 +7,13 @@ export declare function freshAddresses(names: any, random?: typeof randomBytes):
7
7
  * The transactions that put `economy` live for `owner`, with `keys` the addresses of the fresh accounts (each signs
8
8
  * the transaction that creates it). `live`: what is already live (a change publishes only what differs).
9
9
  */
10
- export declare function prepare(economy: any, { owner, keys, live, now, rent, only, slot }: {
10
+ export declare function prepare(economy: any, { owner, keys, live, now, rent, only, slot, renames }: {
11
11
  keys: any;
12
12
  live?: null | undefined;
13
13
  now?: number | undefined;
14
14
  only?: null | undefined;
15
15
  owner: any;
16
+ renames?: null | undefined;
16
17
  rent: any;
17
18
  slot?: null | undefined;
18
19
  }): {
@@ -27,7 +28,14 @@ export declare function prepare(economy: any, { owner, keys, live, now, rent, on
27
28
  refusals?: undefined;
28
29
  ok: boolean;
29
30
  warnings: any[];
30
- steps: any[];
31
+ steps: {
32
+ creates: never[];
33
+ signers: string[];
34
+ id: string;
35
+ part: string;
36
+ says: string;
37
+ build: {};
38
+ }[];
31
39
  transactions: {
32
40
  signer: string;
33
41
  steps: any[];
@@ -38,7 +46,7 @@ export declare function prepare(economy: any, { owner, keys, live, now, rent, on
38
46
  alone: boolean;
39
47
  }[];
40
48
  approvals: number;
41
- freshKeys: any[];
49
+ freshKeys: string[];
42
50
  } | {
43
51
  ok: boolean;
44
52
  refusals: any[];
@@ -55,6 +63,7 @@ export declare function prepare(economy: any, { owner, keys, live, now, rent, on
55
63
  project: any;
56
64
  treasury: any;
57
65
  mints: {};
66
+ tables: any;
58
67
  keys: any;
59
68
  rent: any;
60
69
  slot: null;
@@ -63,7 +72,14 @@ export declare function prepare(economy: any, { owner, keys, live, now, rent, on
63
72
  refusals?: undefined;
64
73
  ok: boolean;
65
74
  warnings: any[];
66
- steps: any[];
75
+ steps: {
76
+ creates: never[];
77
+ signers: string[];
78
+ id: string;
79
+ part: string;
80
+ says: string;
81
+ build: {};
82
+ }[];
67
83
  transactions: {
68
84
  signer: string;
69
85
  steps: any[];
@@ -74,7 +90,7 @@ export declare function prepare(economy: any, { owner, keys, live, now, rent, on
74
90
  alone: boolean;
75
91
  }[];
76
92
  approvals: number;
77
- freshKeys: any[];
93
+ freshKeys: string[];
78
94
  ctx: {
79
95
  owner: any;
80
96
  authority: any;
@@ -83,6 +99,7 @@ export declare function prepare(economy: any, { owner, keys, live, now, rent, on
83
99
  project: any;
84
100
  treasury: any;
85
101
  mints: {};
102
+ tables: any;
86
103
  keys: any;
87
104
  rent: any;
88
105
  slot: null;
@@ -118,9 +135,16 @@ export declare function changedParts(economy: any): {
118
135
  fixed: never[];
119
136
  removed: never[];
120
137
  settings: never[];
138
+ renames: never[];
121
139
  } | {
122
140
  only: Set<any>;
123
141
  fixed: string[];
124
142
  removed: string[];
125
143
  settings: string[];
144
+ renames: any[];
126
145
  };
146
+ /**
147
+ * In words, for a tool that does not read the chain: the spec changes what these tokens are called, and what becomes
148
+ * of that is decided when the change is approved.
149
+ */
150
+ export declare const renamesNote: (renames: any) => string;
@@ -196,6 +196,12 @@ export declare const spendOf: (then: any, m: any) => "Burn" | {
196
196
  Stash?: undefined;
197
197
  Give: any[];
198
198
  };
199
+ /**
200
+ * What a token the setup makes is called on chain, from its entry in a spec as written: [name, ticker, link], with
201
+ * the names it gets when the spec gives none (`tokenOf`: its key in capitals for a ticker, its ticker or key for a
202
+ * name). Two entries with the same labels write the same record, however they are spelled.
203
+ */
204
+ export declare function tokenLabels(t: any): any[];
199
205
  /**
200
206
  * The spec with references resolved and ids given. Unknown references stay as they are (the checker reports
201
207
  * them); call `check` first when it matters.
@@ -929,12 +929,20 @@ export declare function grantArgs(g: any, m: any): {
929
929
  * seats there as it is released, its clock stopped while nobody is in. A seed that lands
930
930
  * before the first stake or after it is released the same way from that stake on, so seeding first would change nothing.
931
931
  */
932
- export declare function setupSteps(economy: any, { now, only, live: given }?: {
932
+ export declare function setupSteps(economy: any, { now, only, live: given, renames }?: {
933
933
  live?: null | undefined;
934
934
  now?: number | undefined;
935
935
  only?: null | undefined;
936
+ renames?: null | undefined;
936
937
  }): {
937
- steps: any[];
938
+ steps: {
939
+ creates: never[];
940
+ signers: string[];
941
+ id: string;
942
+ part: string;
943
+ says: string;
944
+ build: {};
945
+ }[];
938
946
  model: {
939
947
  now: number;
940
948
  name: any;
@@ -1026,6 +1034,7 @@ export declare function setupContext(m: any, { owner: ownerKey, keys, live: give
1026
1034
  project: any;
1027
1035
  treasury: any;
1028
1036
  mints: {};
1037
+ tables: any;
1029
1038
  keys: any;
1030
1039
  rent: any;
1031
1040
  };
@@ -1051,11 +1060,12 @@ export declare function pack(steps: any, ctx: any): {
1051
1060
  * The plan for a spec: refusals, or every step packed into transactions. With `ctx` the transactions carry the
1052
1061
  * real instructions; without it they are built on stand-in addresses (for sizing, cost and showing).
1053
1062
  */
1054
- export declare function plan(economy: any, { now, ctx, only, live }?: {
1063
+ export declare function plan(economy: any, { now, ctx, only, live, renames }?: {
1055
1064
  ctx?: null | undefined;
1056
1065
  live?: null | undefined;
1057
1066
  now?: number | undefined;
1058
1067
  only?: null | undefined;
1068
+ renames?: null | undefined;
1059
1069
  }): {
1060
1070
  ok: boolean;
1061
1071
  refusals: any[];
@@ -1068,7 +1078,14 @@ export declare function plan(economy: any, { now, ctx, only, live }?: {
1068
1078
  refusals?: undefined;
1069
1079
  ok: boolean;
1070
1080
  warnings: any[];
1071
- steps: any[];
1081
+ steps: {
1082
+ creates: never[];
1083
+ signers: string[];
1084
+ id: string;
1085
+ part: string;
1086
+ says: string;
1087
+ build: {};
1088
+ }[];
1072
1089
  transactions: {
1073
1090
  signer: string;
1074
1091
  steps: any[];
@@ -1079,7 +1096,7 @@ export declare function plan(economy: any, { now, ctx, only, live }?: {
1079
1096
  alone: boolean;
1080
1097
  }[];
1081
1098
  approvals: number;
1082
- freshKeys: any[];
1099
+ freshKeys: string[];
1083
1100
  };
1084
1101
  /** What each part needs while the economy runs: the instruction, and who signs it. */
1085
1102
  export declare function playSteps(economy: any): any[];