@easy1staking/cip113-sdk-ts 0.7.0 → 0.10.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 (35) hide show
  1. package/README.md +118 -2
  2. package/blueprints/standard/v0.5.0-alpha.3/UPSTREAM_PIN.json +35 -0
  3. package/blueprints/standard/v0.5.0-alpha.3/plutus.json +1126 -0
  4. package/blueprints/standard/v0.5.0-alpha.4/UPSTREAM_PIN.json +36 -0
  5. package/blueprints/standard/v0.5.0-alpha.4/plutus.json +1434 -0
  6. package/dist/core/evo-utils.d.ts +357 -39
  7. package/dist/core/evo-utils.d.ts.map +1 -1
  8. package/dist/core/evo-utils.js +513 -27
  9. package/dist/core/evo-utils.js.map +1 -1
  10. package/dist/core/ledger-order.d.ts +204 -18
  11. package/dist/core/ledger-order.d.ts.map +1 -1
  12. package/dist/core/ledger-order.js +385 -28
  13. package/dist/core/ledger-order.js.map +1 -1
  14. package/dist/index.d.ts +6 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +15 -4
  17. package/dist/index.js.map +1 -1
  18. package/dist/standard/blueprint.d.ts +129 -29
  19. package/dist/standard/blueprint.d.ts.map +1 -1
  20. package/dist/standard/blueprint.js +245 -47
  21. package/dist/standard/blueprint.js.map +1 -1
  22. package/dist/standard/scripts.d.ts +189 -75
  23. package/dist/standard/scripts.d.ts.map +1 -1
  24. package/dist/standard/scripts.js +454 -123
  25. package/dist/standard/scripts.js.map +1 -1
  26. package/dist/substandards/dummy/index.d.ts +19 -0
  27. package/dist/substandards/dummy/index.d.ts.map +1 -1
  28. package/dist/substandards/dummy/index.js +322 -73
  29. package/dist/substandards/dummy/index.js.map +1 -1
  30. package/dist/substandards/freeze-and-seize/index.d.ts.map +1 -1
  31. package/dist/substandards/freeze-and-seize/index.js +455 -117
  32. package/dist/substandards/freeze-and-seize/index.js.map +1 -1
  33. package/dist/types.d.ts +161 -48
  34. package/dist/types.d.ts.map +1 -1
  35. package/package.json +2 -1
@@ -5,7 +5,7 @@
5
5
  * perform common conversions. All use Evolution SDK types directly.
6
6
  */
7
7
  import { Data, Bytes, ScriptHash as EvoScriptHash, Script, UPLC, Address as EvoAddress, Assets, Credential, InlineDatum, KeyHash, TransactionHash, UTxO as EvoUTxO, Transaction } from "@evolution-sdk/evolution";
8
- import type { HexString, PlutusScript, ScriptHash, TxInput } from "../types.js";
8
+ import type { HexString, PlutusScript, PolicyId, ScriptHash, TxInput } from "../types.js";
9
9
  /**
10
10
  * Build a PlutusV3 script object from compiled code hex.
11
11
  *
@@ -131,68 +131,274 @@ export declare function decodeRegistryNode(d: Data.Data): RegistryNodeData;
131
131
  */
132
132
  export declare const REGISTRY_NODE_MIN_ADA = 3000000n;
133
133
  /**
134
- * `ProgrammableLogicGlobalParams` the datum on the coordination UTxO.
134
+ * The minimum lovelace an output must carry, computed from PROTOCOL PARAMETERS
135
+ * and the output's own serialised size.
135
136
  *
136
- * SEVEN fields, ordered by upstream BY READ FREQUENCY (a deliberate cost
137
- * choice: programmable_logic_base reads 2-4 on every dispatch, and the field
138
- * is read once per delegate invocation rather than once per input).
137
+ * WHY THIS EXISTS RATHER THAN ANOTHER CONSTANT. min-UTxO scales with
138
+ * SERIALISED OUTPUT SIZE, and three things that scale it are supplied by the
139
+ * CALLER, not by us:
140
+ * - the CIP-68 metadata datum (name/description/ticker/url/logo). This
141
+ * package imposes no length caps at all, so the datum is UNBOUNDED.
142
+ * - the ASSET NAME. CIP-67-labelled names run to 32 bytes, and this package's
143
+ * API takes raw hex names at every boundary.
144
+ * - the QUANTITY, which is a CBOR integer and widens with magnitude.
139
145
  *
140
- * Fields 2-5 are MUTABLE an in-place upgrade rewrites them in this datum
141
- * rather than redeploying programmable_logic_base, whose hash anchors every
142
- * programmable token address. `coordination_spend` 28-byte-guards each one and
143
- * freezes fields 0 and 1 permanently.
146
+ * AND EVOLUTION DOES NOT RESCUE AN UNDER-FUNDED OUTPUT. MEASURED on preview
147
+ * (2026-09-01): `calculateMinimumUtxoLovelace` is applied ONLY to CHANGE and
148
+ * unfracking outputs. An explicit `payToAddress` amount is passed through
149
+ * verbatim a build with a deliberately short datum-bearing output produced a
150
+ * transaction carrying exactly the requested lovelace. The shortfall therefore
151
+ * survives to submission, where the ledger rejects it as "insufficient Ada"
152
+ * with a number and NEVER as "your datum grew".
144
153
  *
145
- * It is SEVEN, not six. Upstream's CONTRACT_SURFACE_CHANGES.md says six in
146
- * three places, and in a fourth phrases it as an instruction — "6-field
147
- * ProgrammableLogicGlobalParams parser / builder (order above)". Building that
148
- * shape yields a malformed datum on EVERY programmable_logic_base spend, not
149
- * merely at deploy, with no type error anywhere. `max_inline_datum_bytes`
150
- * (index 6) arrives with #115 and is absent from that document.
154
+ * A flat constant cannot be right for an input the caller controls. This is the
155
+ * successor to {@link REGISTRY_NODE_MIN_ADA}'s "deliberately generous" habit:
156
+ * generous is a guess, and it was already wrong at 3 ADA for a CIP-68 datum
157
+ * whose fields sit within a consumer's own documented caps.
158
+ *
159
+ * Built from PUBLIC Evolution API only, and solved as a fixed point because the
160
+ * lovelace figure is itself part of what gets serialised.
161
+ */
162
+ export declare function minUtxoForOutput(params: {
163
+ /** Bech32 address the output pays to. */
164
+ address: string;
165
+ /** The output's assets. Its lovelace component is ignored and solved for. */
166
+ assets: Assets.Assets;
167
+ /** Inline datum the output will carry, if any. */
168
+ datum?: Data.Data;
169
+ /** `coinsPerUtxoByte` from the live protocol parameters. */
170
+ coinsPerUtxoByte: bigint;
171
+ }): bigint;
172
+ /** Round up to a whole ADA. */
173
+ export declare function ceilToWholeAda(lovelace: bigint): bigint;
174
+ /**
175
+ * min-UTxO for an output, never returning less than `floor`.
176
+ *
177
+ * The floor keeps this change MONOTONE: every value this package used to emit
178
+ * is preserved for ordinary inputs, and the figure only ever rises — where it
179
+ * had to. A fix that lowered an amount would be a behaviour change smuggled in
180
+ * beside a bug fix.
181
+ */
182
+ export declare function minUtxoAtLeast(floor: bigint, params: Parameters<typeof minUtxoForOutput>[0]): bigint;
183
+ /**
184
+ * `ProgrammableLogicGlobalParams` — the datum on the protocol-params UTxO.
185
+ *
186
+ * SIX fields in 0.5.0-alpha.4, ordered by upstream BY READ FREQUENCY:
187
+ *
188
+ * 0 plg_cred <- programmable_logic_base, once per programmable INPUT
189
+ * 1 issuance_logic_cred <- issuance_mint, once per issuance tx (mint AND burn)
190
+ * 2 transfer_cred <- issuance_logic, precise delegation (audit finding 04)
191
+ * 3 third_party_cred <- issuance_logic, same reason
192
+ * 4 upgrade_cred <- protocol_params spend, the upgrade authority
193
+ * 5 pending_upgrade_cred <- protocol_params spend, Option<Credential>
194
+ *
195
+ * ⛔ INDEX 1 IS THE TRAP, AND IT IS SILENT BY CONSTRUCTION. alpha.3 had FOUR
196
+ * fields with `transfer_cred` at index 1. alpha.4 INSERTS `issuance_logic_cred`
197
+ * at index 1 — it was not appended — so `transfer_cred` moved to 2 and every
198
+ * later field shifted. BOTH ARE CREDENTIALS. A six-field datum written in
199
+ * alpha.3's order with two fields appended is six fields long, passes the arity
200
+ * check below, decodes without a single error, and hands `issuance_mint` the
201
+ * TRANSFER credential where it expects ISSUANCE_LOGIC.
202
+ *
203
+ * ⇒ No decoder can catch that, here or anywhere. What prevents PRODUCING it is
204
+ * that {@link protocolParamsDatum} takes a KEYED record and offers no positional
205
+ * form. What catches a datum already written that way is a read-back comparison
206
+ * against the deployment record — the devnet bootstrap, which compares every
207
+ * decoded field against what it deployed. See the demonstration test in
208
+ * `test/datum-layout.test.mjs`.
209
+ *
210
+ * ⛔ TWO UPSTREAM COMMENTS ARE STALE AND WILL WALK YOU INTO EXACTLY THAT DEFECT.
211
+ * They are recorded here so the next reader does not have to re-derive it:
212
+ * - `validators/issuance_mint.ak`'s header says `issuance_logic_cred` is
213
+ * "field 5". It is field 1.
214
+ * - `validators/issuance_logic.ak`'s header says "`transfer_cred`, field 1;
215
+ * `third_party_cred`, field 2". They are fields 2 and 3.
216
+ * The `ProgrammableLogicGlobalParams` DECLARATION and the `*_field` accessors'
217
+ * `tail_list` depths in `validators/programmable_logic/params.ak` are the
218
+ * authority, and the vendored blueprint agrees with them. Never take a shape
219
+ * from prose — take it from
220
+ * `blueprints/standard/v0.5.0-alpha.4/plutus.json`'s `definitions`.
221
+ *
222
+ * ⛔ Nor from upstream's CONTRACT_SURFACE_CHANGES.md, which has now been wrong
223
+ * about this repository twice — see the block comment at the top of
224
+ * `src/standard/blueprint.ts`.
225
+ *
226
+ * ⚠ `max_inline_datum_bytes` did not disappear in alpha.3, it CHANGED KIND: a
227
+ * compile-time parameter of transfer / third_party / unfracking rather than a
228
+ * datum field. See DeploymentParams.maxInlineDatumBytes. `unfracking_cred` is
229
+ * gone because the DISPATCHER names unfracking at compile time now, and
230
+ * `registry_node_cs` because the registry reads its own policy off its own
231
+ * input's payment credential (#117).
151
232
  */
152
233
  export interface ProtocolParamsData {
153
- registryNodeCs: HexString;
154
- progLogicCred: Cip113Credential;
155
- /** index 2 mutable. PLG's transfer arm, renamed by #110. */
234
+ /**
235
+ * index 0 — the dispatcher's credential. Read by programmable_logic_base once
236
+ * per programmable input, which is why upstream put it first.
237
+ *
238
+ * ⛔ COHERENCE HAZARD, unenforceable on chain: nothing verifies that the
239
+ * dispatcher named here was compiled against the delegates whose credentials
240
+ * sit in fields 2 and 3. They must be written together.
241
+ */
242
+ plgCred: Cip113Credential;
243
+ /**
244
+ * index 1 — NEW IN alpha.4, and it DISPLACED `transferCred` from this slot.
245
+ * The `issuance_logic` withdraw-0 credential, read by `issuance_mint` on every
246
+ * mint and burn. Rewriting this field is how the protocol's issuance rules are
247
+ * upgraded for every token that already exists, without moving a policy id.
248
+ */
249
+ issuanceLogicCred: Cip113Credential;
250
+ /** index 2 — was index 1 in alpha.3. Read by issuance_logic for precise delegation. */
156
251
  transferCred: Cip113Credential;
157
- /** index 3 — mutable. Seize / clawback. */
252
+ /** index 3 — seize / clawback. */
158
253
  thirdPartyCred: Cip113Credential;
159
- /** index 4 — mutable. */
160
- unfrackingCred: Cip113Credential;
161
- /** index 5 — mutable. The upgrade authority this datum trampolines to. */
254
+ /** index 4 — the upgrade authority this datum trampolines to. */
162
255
  upgradeCred: Cip113Credential;
163
256
  /**
164
- * index 6the #106-vector-3 bound. A seizure must reproduce a seized
165
- * output's inline datum byte-for-byte, so an unbounded datum pushes the
166
- * seizure past maxTxSize and yields an output nobody can seize.
167
- *
168
- * ⚠ This is a SECURITY PARAMETER with no upstream guidance. Upstream's test
169
- * fixtures use 1024; that is a fixture value, not a recommendation. See
170
- * PLAN.md D-17 — 1024 is sanctioned for the DEVNET fixture only.
257
+ * index 5NEW IN alpha.4. `Option<Credential>`: the INCOMING upgrade
258
+ * authority while a handover is in flight, `null` at rest. An authority
259
+ * handover is two phases (nominate, then the nominee promotes itself by
260
+ * presenting its own withdraw-0), and this field is phase one's only effect.
171
261
  */
172
- maxInlineDatumBytes: bigint;
262
+ pendingUpgradeCred: Cip113Credential | null;
173
263
  }
174
- /** Build the coordination datum. Field order is the on-chain contract. */
264
+ /** Build the protocol-params datum. Field order is the on-chain contract. */
175
265
  export declare function protocolParamsDatum(p: ProtocolParamsData): Data.Data;
176
- /** Parse the coordination datum. */
266
+ /**
267
+ * Parse the protocol-params datum. STRICT on arity — see the block above for
268
+ * why that strictness is load-bearing rather than defensive, AND for the one
269
+ * misread it CANNOT catch.
270
+ */
177
271
  export declare function decodeProtocolParams(d: Data.Data): ProtocolParamsData;
272
+ /**
273
+ * Verify that the deployment record and live protocol-params datum name the
274
+ * same issuance-logic script. They are independent sources: the record drives
275
+ * the withdrawal emitted here, while the datum drives the permanent issuance
276
+ * policy on chain.
277
+ */
278
+ export declare function assertProtocolParamsIssuanceLogic(utxo: EvoUTxO.UTxO, expectedScriptHash: string): void;
178
279
  /** Build a BlacklistNode datum */
179
280
  export declare function blacklistNodeDatum(key: HexString, next: HexString): Data.Data;
180
281
  /**
181
- * `issuance_mint`'s redeemer a BARE `MintingRegistryProof`.
182
- *
183
- * Upstream #68 REMOVED the `SmartTokenMintingAction { minting_logic_cred,
184
- * minting_registry_proof }` wrapper these builders used to emit. The redeemer is
185
- * now the proof itself, and the minting-logic credential is no longer carried in
186
- * it at all — it comes from the registry node.
282
+ * A `MintingRegistryProof` — where the token's registry node is in this
283
+ * transaction.
187
284
  *
188
285
  * ctor 0 RefInput { index } — the registry node is a REFERENCE input
189
286
  * ctor 1 OutputIndex { index } — the registry node is an OUTPUT of this tx
190
287
  * (registration and first mint in one)
191
288
  *
192
- * Verified against the blueprint's own redeemer schema, not upstream's prose.
289
+ * THIS IS NO LONGER `issuance_mint`'s REDEEMER, AND THE OLD COMMENT HERE WAS
290
+ * AN INSTRUCTION FOR BUILDING A TRANSACTION THE LEDGER REFUSES. In 0.5.0-alpha.3
291
+ * `issuance_mint` took a BARE `MintingRegistryProof`. In alpha.4 issuance was
292
+ * split (upstream #129): the permanent per-token policy's redeemer is now
293
+ * `IssuanceRedeemer { params_idx }` — see {@link issuanceRedeemer} — and the
294
+ * proof travels as a VALUE inside the `issuance_logic` withdraw-0 redeemer's
295
+ * map, keyed by policy id. See {@link issuanceLogicRedeemer}, which is where a
296
+ * proof built here now goes.
297
+ *
298
+ * Signatures and encodings are UNCHANGED on purpose: `src/substandards/**`
299
+ * still calls both, and rewiring those call sites is a separate slice.
300
+ *
301
+ * Verified against the blueprint's own `types/MintingRegistryProof` definition,
302
+ * not upstream's prose.
193
303
  */
194
304
  export declare function mintingProofRefInput(registryRefInputIndex: number): Data.Data;
305
+ /** The other arm of {@link mintingProofRefInput} — see its block comment. */
195
306
  export declare function mintingProofOutputIndex(registryOutputIndex: number): Data.Data;
307
+ /**
308
+ * `issuance_mint`'s redeemer — `IssuanceRedeemer { params_idx }`.
309
+ *
310
+ * The PERMANENT half of issuance (upstream #129). This script's applied hash IS
311
+ * a token's policy id, so its redeemer is frozen for as long as any token
312
+ * exists: nothing but an index hint locating the protocol-params UTxO among the
313
+ * reference inputs. Everything that could ever change moved to
314
+ * {@link issuanceLogicRedeemer}.
315
+ *
316
+ * ⚠ `params_idx` INDEXES THE COMPLETE, LEDGER-SORTED REFERENCE-INPUT SET, and
317
+ * the validator jumps straight to `list.at(reference_inputs, params_idx)` and
318
+ * authenticates what it finds by the params NFT. Computing this index before
319
+ * the builder has added every reference input is a builder bug, and it does not
320
+ * report as one — it resolves to some other UTxO, fails the NFT check, and dies
321
+ * naming nothing. Use `referenceInputIndexOf` in `src/core/ledger-order.ts`,
322
+ * over the complete set, last.
323
+ */
324
+ export declare function issuanceRedeemer(paramsIdx: number): Data.Data;
325
+ /**
326
+ * `issuance_logic`'s withdraw-0 redeemer — a MAP from policy id to that
327
+ * policy's `MintingRegistryProof`.
328
+ *
329
+ * The REPLACEABLE half of issuance (upstream #129). This is a Plutus `Pairs`
330
+ * association list, NOT a Constr. The two consumers read disjoint halves of it:
331
+ *
332
+ * - `issuance_mint` reads only the KEYS — `has_key(covered, own_policy)`. It
333
+ * never decodes a value.
334
+ * - `issuance_logic` reads only the VALUES — `list.all` over the entries,
335
+ * running the per-policy rule set on each proof.
336
+ *
337
+ * Entry ORDER is not significant to either, which is why this takes a list and
338
+ * imposes no sort.
339
+ *
340
+ * Three refusals, each closing a builder bug that reports as something else:
341
+ *
342
+ * ⛔ AN EMPTY MAP. `list.all([])` is VACUOUSLY TRUE on chain, so an empty
343
+ * redeemer sails through `issuance_logic` while every `issuance_mint` in the
344
+ * transaction fails its `has_key`. The failure names the mint, not the empty
345
+ * map, and nothing points at the omission.
346
+ *
347
+ * ⛔ A DUPLICATE POLICY ID. Compared as LOWER-CASED HEX STRINGS, not as encoded
348
+ * keys. MEASURED: `Data.map` builds a JS `Map` keyed by `Uint8Array` IDENTITY,
349
+ * so two distinct arrays holding identical bytes BOTH survive and the map is not
350
+ * deduplicated for you. Which of the two proofs governs is then a property of
351
+ * the ledger's map handling rather than of anything you wrote. The keys are
352
+ * lower-cased first because hex case is presentation and two spellings of one
353
+ * policy encode to identical bytes — the same normalisation `cip171.ts` applies
354
+ * to raw script hashes, and the hazard `ledger-order.ts` measures for ordering.
355
+ *
356
+ * ⛔ A VALUE THAT IS NOT A `MintingRegistryProof`. The keys are the frozen
357
+ * interface `issuance_mint` depends on; the values are what `issuance_logic`
358
+ * decodes, and a value it cannot decode aborts the whole withdrawal.
359
+ */
360
+ export declare function issuanceLogicRedeemer(entries: readonly {
361
+ policyId: PolicyId;
362
+ proof: Data.Data;
363
+ }[]): Data.Data;
364
+ /**
365
+ * Which of the three upgrade-path shapes a `protocol_params` SPEND is.
366
+ * Field-less constructors; the index is the whole payload. Mirrors `PlgAct` in
367
+ * `src/core/ledger-order.ts`.
368
+ */
369
+ export declare const ProtocolParamsAct: {
370
+ readonly PROTOCOL_UPGRADE: 0n;
371
+ readonly NOMINATE_AUTHORITY: 1n;
372
+ readonly PROMOTE_AUTHORITY: 2n;
373
+ };
374
+ export type ProtocolParamsActVariant = keyof typeof ProtocolParamsAct;
375
+ /**
376
+ * Build a `ProtocolParamsRedeemer`.
377
+ *
378
+ * The arms carry no payload: every value a branch needs is already in the
379
+ * continuing datum, which is validated regardless. They exist to make each
380
+ * transaction DECLARE its intent, so `ProtocolUpgrade` freezes the nomination
381
+ * and `NominateAuthority` freezes everything else — an authority handover can
382
+ * never ride along inside a parameter change.
383
+ *
384
+ * ⛔ HAZARD: `ProtocolUpgrade` IS BYTE-IDENTICAL TO {@link voidData}, which is
385
+ * `Constr(0, [])`. Every existing caller that passes `voidData()` as the params
386
+ * spend redeemer therefore keeps working BY ACCIDENT, and no decoder anywhere —
387
+ * on chain or off — can distinguish a migrated caller from a stale one, because
388
+ * the bytes are the same bytes. Same shape as the `SpendViaTransfer` /
389
+ * `BaseSpendRedeemer` collision recorded in WORKLOG S-6.
390
+ *
391
+ * ⇒ The silence is ASYMMETRIC, and that is the risk profile: the other two arms
392
+ * are constructors 1 and 2, which `voidData()` cannot represent, so they fail
393
+ * loudly. Only the upgrade path is quiet — and it is the one every deployment
394
+ * exercises first.
395
+ *
396
+ * ⇒ Because no offline instrument can settle it, the proof that this redeemer
397
+ * was ever really implemented is a devnet mutation: submit `Constr(1, [])` where
398
+ * the validator expects `ProtocolUpgrade` and require it to go RED on chain. The
399
+ * ledger is the only witness with jurisdiction.
400
+ */
401
+ export declare function protocolParamsRedeemer(arm: ProtocolParamsActVariant): Data.Data;
196
402
  export interface RegistryProof {
197
403
  type: "exists" | "not-exists";
198
404
  nodeIdx: number;
@@ -221,6 +427,72 @@ export declare function blacklistInitRedeemer(): Data.Data;
221
427
  export declare function blacklistAddRedeemer(stakingPkh: HexString): Data.Data;
222
428
  /** Blacklist remove (constructor 2) */
223
429
  export declare function blacklistRemoveRedeemer(stakingPkh: HexString): Data.Data;
430
+ /**
431
+ * Upper bound on the number of nodes (inner and leaf) a `MultisigScript` may
432
+ * hold, from upstream `lib/multisig.ak`'s `max_size`. Chosen there on MEASURED
433
+ * execution budget, not on feel, and baked into the validator's bytes — so a
434
+ * tree above it is refused on chain and changing the cap is a redeployment.
435
+ */
436
+ export declare const MULTISIG_MAX_SIZE = 20;
437
+ /**
438
+ * A `MultisigScript` tree — native-script multisig semantics in Plutus, used for
439
+ * the upgrade authority. Constructor indices are the on-chain contract:
440
+ *
441
+ * 0 Signature { key_hash }
442
+ * 1 AllOf { scripts }
443
+ * 2 AnyOf { scripts }
444
+ * 3 AtLeast { required, scripts }
445
+ * 4 Before { time }
446
+ * 5 After { time }
447
+ * 6 Script { script_hash }
448
+ *
449
+ * `time` is a bigint because a POSIX bound is a Plutus Int and must round-trip
450
+ * exactly; `required` is a plain number because it is bounded by
451
+ * {@link MULTISIG_MAX_SIZE}.
452
+ */
453
+ export type MultisigScriptTree = {
454
+ type: "signature";
455
+ keyHash: HexString;
456
+ } | {
457
+ type: "all-of";
458
+ scripts: readonly MultisigScriptTree[];
459
+ } | {
460
+ type: "any-of";
461
+ scripts: readonly MultisigScriptTree[];
462
+ } | {
463
+ type: "at-least";
464
+ required: number;
465
+ scripts: readonly MultisigScriptTree[];
466
+ } | {
467
+ type: "before";
468
+ time: bigint;
469
+ } | {
470
+ type: "after";
471
+ time: bigint;
472
+ } | {
473
+ type: "script";
474
+ scriptHash: HexString;
475
+ };
476
+ /**
477
+ * Build a `MultisigScript` datum, enforcing upstream `lib/multisig.ak`'s
478
+ * `well_formed` — 28-byte hashes, non-empty and duplicate-free child lists,
479
+ * `1 <= required <= |scripts|`, and at most {@link MULTISIG_MAX_SIZE} nodes.
480
+ *
481
+ * ⛔ THE RAIL LIVES ON THE ENCODER ONLY, AND {@link decodeMultisigScript}
482
+ * DELIBERATELY ENFORCES NONE OF IT. The two functions answer different
483
+ * questions: the encoder decides what may be WRITTEN, the decoder reads what is
484
+ * ON CHAIN. A decoder that refused an ill-formed tree could not be used to
485
+ * inspect one — and inspecting a live authority somebody managed to write is
486
+ * exactly the moment you need to read it. Do not "tidy" the check into the
487
+ * decoder for symmetry.
488
+ */
489
+ export declare function multisigScriptDatum(tree: MultisigScriptTree): Data.Data;
490
+ /**
491
+ * Parse a `MultisigScript` datum. Reads what is on chain and enforces NO
492
+ * well-formedness — see {@link multisigScriptDatum} for why the asymmetry is
493
+ * deliberate.
494
+ */
495
+ export declare function decodeMultisigScript(d: Data.Data): MultisigScriptTree;
224
496
  /** Build an Assets object with a single native token unit + min lovelace */
225
497
  export declare function singleTokenAssets(policyId: string, assetName: string, qty: bigint): Assets.Assets;
226
498
  /** Build mint assets map from unit -> qty entries (Evolution SDK format) */
@@ -273,5 +545,51 @@ export declare function hasCIP67Label(assetNameHex: HexString): boolean;
273
545
  * Matches real-world CIP-68 FT datums (e.g., FLDT token).
274
546
  */
275
547
  export declare function buildCIP68FTDatum(meta: CIP68MetadataInput): Data.Data;
548
+ /**
549
+ * Serialised size, in bytes, of an inline datum.
550
+ *
551
+ * The on-chain counterpart is `bytearray.length(builtin.serialise_data(d))`
552
+ * inside `is_seizable_output_shape_bounded` (upstream `lib/assets.ak`), which
553
+ * every script that creates a programmable-logic-base output applies as
554
+ * `... <= max_inline_datum_bytes`. Since alpha.4 that includes `issuance_logic`,
555
+ * so a CIP-68 mint datum is bounded at BIRTH — the old issuance exemption is
556
+ * expired, and CIP-68 reference tokens carrying data-URI logos were the
557
+ * standing example of the kilobyte datum it now refuses.
558
+ *
559
+ * TWO ENCODERS, AND ONLY ONE DIRECTION IS SAFE. This measures with Evolution's
560
+ * `Data.toCBORBytes`; the chain measures with Plutus's `serialise_data`. They
561
+ * are different implementations and no offline instrument can prove they agree.
562
+ * The SDK must measure GREATER THAN OR EQUAL TO the chain: if it ever measures
563
+ * fewer bytes than the ledger does, it accepts a record the ledger then
564
+ * refuses, which is precisely the failure the bound exists to prevent.
565
+ *
566
+ * That direction is NOT settled here, and nothing in `test/cip68-bound.test.mjs`
567
+ * establishes it — every figure in that file comes from this same encoder. It
568
+ * is settled by the devnet at-bound SUCCESS in T-F04-4: a datum measuring
569
+ * exactly `maxInlineDatumBytes` by this function, accepted by a real ledger.
570
+ * Until that test is green, the agreement of the two encoders is an ASSUMPTION.
571
+ */
572
+ export declare function inlineDatumBytes(datum: Data.Data): number;
573
+ /**
574
+ * Refuse an inline datum larger than `maxInlineDatumBytes`, naming the bound,
575
+ * the measured size and the parameter the caller would have to change.
576
+ *
577
+ * THE COMPARISON IS `<=`, MATCHING THE CHAIN. A datum measuring EXACTLY
578
+ * `maxInlineDatumBytes` is legal and MUST be accepted. A `<` here would read as
579
+ * prudence and would instead remove CIP-68 registration from this SDK for the
580
+ * boundary case: the caller sees a refusal, concludes the feature does not
581
+ * work, and there is no incident, no log and no corruption for anyone to
582
+ * investigate. `test/cip68-bound.test.mjs` pins both directions one byte apart
583
+ * for that reason.
584
+ *
585
+ * `datum` is a `Data.Data` and NOT a `CIP68MetadataInput` on purpose: the thing
586
+ * the chain bounds is the serialised datum, so a helper taking metadata would
587
+ * be measuring a different object one step removed from the rule it mirrors.
588
+ *
589
+ * @param datum the inline datum that will be attached to the output
590
+ * @param maxInlineDatumBytes the deployment's bound (`DeploymentParams`)
591
+ * @param what what is being measured, for the refusal message
592
+ */
593
+ export declare function assertInlineDatumWithinBound(datum: Data.Data, maxInlineDatumBytes: number, what: string): void;
276
594
  export { Data, Bytes, Assets, Credential, InlineDatum, KeyHash, EvoAddress, EvoScriptHash, TransactionHash, Transaction, UPLC, };
277
595
  //# sourceMappingURL=evo-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evo-utils.d.ts","sourceRoot":"","sources":["../../src/core/evo-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evo-utils.d.ts","sourceRoot":"","sources":["../../src/core/evo-utils.ts"],"names":[],"mappings":"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"}