@interest-protocol/blast-core 0.1.0 → 0.2.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 (101) hide show
  1. package/dist/aborts.d.ts +13 -0
  2. package/dist/aborts.d.ts.map +1 -0
  3. package/dist/aborts.js +32 -0
  4. package/dist/aborts.js.map +1 -0
  5. package/dist/bcs.d.ts +226 -7
  6. package/dist/bcs.d.ts.map +1 -1
  7. package/dist/bcs.js +227 -1
  8. package/dist/bcs.js.map +1 -1
  9. package/dist/bps.d.ts +25 -0
  10. package/dist/bps.d.ts.map +1 -0
  11. package/dist/bps.js +64 -0
  12. package/dist/bps.js.map +1 -0
  13. package/dist/bytecode-template.d.ts +14 -3
  14. package/dist/bytecode-template.d.ts.map +1 -1
  15. package/dist/bytecode-template.js +61 -6
  16. package/dist/bytecode-template.js.map +1 -1
  17. package/dist/deployment.d.ts +59 -0
  18. package/dist/deployment.d.ts.map +1 -0
  19. package/dist/deployment.js +172 -0
  20. package/dist/deployment.js.map +1 -0
  21. package/dist/effects.d.ts +69 -0
  22. package/dist/effects.d.ts.map +1 -0
  23. package/dist/effects.js +143 -0
  24. package/dist/effects.js.map +1 -0
  25. package/dist/fee-split.d.ts +55 -0
  26. package/dist/fee-split.d.ts.map +1 -0
  27. package/dist/fee-split.js +69 -0
  28. package/dist/fee-split.js.map +1 -0
  29. package/dist/index.d.ts +10 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +10 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/integers.d.ts +2 -0
  34. package/dist/integers.d.ts.map +1 -1
  35. package/dist/integers.js +8 -0
  36. package/dist/integers.js.map +1 -1
  37. package/dist/merkle.d.ts +6 -1
  38. package/dist/merkle.d.ts.map +1 -1
  39. package/dist/merkle.js +8 -1
  40. package/dist/merkle.js.map +1 -1
  41. package/dist/migration-math.d.ts +13 -2
  42. package/dist/migration-math.d.ts.map +1 -1
  43. package/dist/migration-math.js +34 -6
  44. package/dist/migration-math.js.map +1 -1
  45. package/dist/migration.d.ts +25 -0
  46. package/dist/migration.d.ts.map +1 -0
  47. package/dist/migration.js +43 -0
  48. package/dist/migration.js.map +1 -0
  49. package/dist/payout.d.ts +21 -0
  50. package/dist/payout.d.ts.map +1 -0
  51. package/dist/payout.js +36 -0
  52. package/dist/payout.js.map +1 -0
  53. package/dist/protocol-fees.d.ts +63 -0
  54. package/dist/protocol-fees.d.ts.map +1 -0
  55. package/dist/protocol-fees.js +117 -0
  56. package/dist/protocol-fees.js.map +1 -0
  57. package/dist/rewards/allocations.d.ts +16 -17
  58. package/dist/rewards/allocations.d.ts.map +1 -1
  59. package/dist/rewards/allocations.js +47 -43
  60. package/dist/rewards/allocations.js.map +1 -1
  61. package/dist/roles.d.ts +17 -0
  62. package/dist/roles.d.ts.map +1 -0
  63. package/dist/roles.js +32 -0
  64. package/dist/roles.js.map +1 -0
  65. package/dist/treasury.d.ts +58 -0
  66. package/dist/treasury.d.ts.map +1 -0
  67. package/dist/treasury.js +61 -0
  68. package/dist/treasury.js.map +1 -0
  69. package/package.json +39 -11
  70. package/src/aborts.ts +38 -0
  71. package/src/bcs.ts +374 -1
  72. package/src/bps.ts +92 -0
  73. package/src/bytecode-template.ts +78 -6
  74. package/src/deployment.ts +230 -0
  75. package/src/effects.ts +247 -0
  76. package/src/fee-split.ts +103 -0
  77. package/src/index.ts +10 -1
  78. package/src/integers.ts +15 -0
  79. package/src/merkle.ts +11 -1
  80. package/src/migration-math.ts +38 -6
  81. package/src/migration.ts +69 -0
  82. package/src/payout.ts +57 -0
  83. package/src/protocol-fees.ts +174 -0
  84. package/src/rewards/allocations.ts +52 -67
  85. package/src/roles.ts +39 -0
  86. package/src/treasury.ts +94 -0
  87. package/dist/rewards/keeper.d.ts +0 -17
  88. package/dist/rewards/keeper.d.ts.map +0 -1
  89. package/dist/rewards/keeper.js +0 -21
  90. package/dist/rewards/keeper.js.map +0 -1
  91. package/dist/rewards/state.d.ts +0 -55
  92. package/dist/rewards/state.d.ts.map +0 -1
  93. package/dist/rewards/state.js +0 -80
  94. package/dist/rewards/state.js.map +0 -1
  95. package/dist/timelock.d.ts +0 -15
  96. package/dist/timelock.d.ts.map +0 -1
  97. package/dist/timelock.js +0 -30
  98. package/dist/timelock.js.map +0 -1
  99. package/src/rewards/keeper.ts +0 -45
  100. package/src/rewards/state.ts +0 -113
  101. package/src/timelock.ts +0 -47
package/dist/bps.js ADDED
@@ -0,0 +1,64 @@
1
+ import { bcs } from "@mysten/sui/bcs";
2
+ import { u64Bcs } from "./bcs.js";
3
+ import { BASIS_POINTS_DENOMINATOR, mulDivUp, requireBasisPoints, requireU64, } from "./integers.js";
4
+ /** `blast_core::constants::max_lp_fee_bps`: Blast's largest LP-fee share of each asset. */
5
+ export const MAX_LP_FEE_BPS = 3000n;
6
+ /** `blast_core::constants::max_routes`: the most routes one fee split holds. */
7
+ export const MAX_ROUTES = 20;
8
+ /** `blast_core::constants::max_vesting_duration_ms`: the technical bound on a schedule. */
9
+ export const MAX_VESTING_DURATION_MS = 2n ** 63n;
10
+ /** BCS layout of the positional `blast_core::bps::Bps(u64)`. */
11
+ export const bpsBcs = bcs.struct("Bps", { value: u64Bcs }).transform({
12
+ input: (value) => ({ value: requireBps(value) }),
13
+ output: (value) => value.value,
14
+ });
15
+ /** Mirrors `bps::new`: a rate from zero through 10,000 basis points. */
16
+ export function requireBps(value) {
17
+ return requireBasisPoints("bps", value);
18
+ }
19
+ /**
20
+ * Mirrors `bps::apply_up`: `ceil(amount * bps / 10,000)` over atomic units,
21
+ * at most `amount`.
22
+ */
23
+ export function applyBpsUp(amount, bps) {
24
+ return mulDivUp(requireU64("amount", amount), requireBps(bps), BASIS_POINTS_DENOMINATOR);
25
+ }
26
+ /**
27
+ * Mirrors `bps::apportion`: largest-remainder apportionment of `total` atoms
28
+ * over `rates`, which must sum to exactly 10,000. The `roundedUp` part takes
29
+ * its ceiling and every other part its floor; the leftover atoms go one each
30
+ * to the largest remaining remainders, earlier parts first. The amounts sum
31
+ * to `total`. Throws where the contract aborts (`EInvalidApportionment`).
32
+ */
33
+ export function apportionBps(rates, total, roundedUp) {
34
+ requireU64("total", total);
35
+ rates.forEach(requireBps);
36
+ if (rates.reduce((sum, rate) => sum + rate, 0n) !== BASIS_POINTS_DENOMINATOR ||
37
+ (roundedUp !== null &&
38
+ !(Number.isInteger(roundedUp) &&
39
+ roundedUp >= 0 &&
40
+ roundedUp < rates.length))) {
41
+ throw new RangeError("apportioned rates must sum to 10,000 and name a rounded-up part inside them");
42
+ }
43
+ const products = rates.map((rate) => total * rate);
44
+ const amounts = products.map((product, index) => index === roundedUp
45
+ ? (product + BASIS_POINTS_DENOMINATOR - 1n) / BASIS_POINTS_DENOMINATOR
46
+ : product / BASIS_POINTS_DENOMINATOR);
47
+ const order = products
48
+ .map((product, index) => ({
49
+ index,
50
+ remainder: product % BASIS_POINTS_DENOMINATOR,
51
+ }))
52
+ .filter(({ index }) => index !== roundedUp)
53
+ .sort((left, right) => left.remainder === right.remainder
54
+ ? left.index - right.index
55
+ : left.remainder > right.remainder
56
+ ? -1
57
+ : 1);
58
+ const leftover = Number(total - amounts.reduce((sum, a) => sum + a, 0n));
59
+ for (const { index } of order.slice(0, leftover)) {
60
+ amounts[index] = (amounts[index] ?? 0n) + 1n;
61
+ }
62
+ return amounts;
63
+ }
64
+ //# sourceMappingURL=bps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bps.js","sourceRoot":"","sources":["../src/bps.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,17 @@ export type BytecodeTemplateInitOptions = {
36
36
  * asset automatically.
37
37
  */
38
38
  export declare function initializeBytecodeTemplate(options?: BytecodeTemplateInitOptions): Promise<void>;
39
+ /** A deployed package's original ID that a generated package links: valid and not a system address. */
40
+ export declare function requireDependencyPackageId(name: string, packageId: string): string;
41
+ /**
42
+ * Binds every non-system address of the template to the deployed package
43
+ * whose modules it names: `bindings` maps a module name to that package's
44
+ * original ID. Each placeholder address must be claimed by exactly one
45
+ * package through the modules it holds, and each binding must claim one, so
46
+ * a template that gains or loses a dependency fails here instead of linking
47
+ * a placeholder.
48
+ */
49
+ export declare function patchDependencyAddresses(label: string, compiled: CompiledModule, bindings: Readonly<Record<string, string>>): void;
39
50
  /** Deserializes a template module and checks the tables patching reads. */
40
51
  export declare function deserializeTemplate(label: string, bytecode: Uint8Array): CompiledModule;
41
52
  /**
@@ -54,9 +65,9 @@ export declare function assertIdentifierSlots(label: string, compiled: CompiledM
54
65
  witnessName: string;
55
66
  }): void;
56
67
  /**
57
- * Derives the module and one-time-witness names from a symbol, the same
58
- * transformation as Blast V1: the witness is the uppercased symbol and the
59
- * module its lowercase form, spaces becoming underscores.
68
+ * Defaults the module to the lowercased symbol, with spaces becoming underscores.
69
+ * Sui requires its one-time witness to be the uppercase module name, including
70
+ * when the caller overrides the module name.
60
71
  */
61
72
  export declare function deriveTemplateIdentifiers(symbol: string, requestedModuleName?: string): {
62
73
  moduleName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"bytecode-template.d.ts","sourceRoot":"","sources":["../src/bytecode-template.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,gBAAgB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpD,aAAa,EAAE;QAAE,IAAI,EAAE;YAAE,IAAI,EAAE,OAAO,EAAE,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,WAAW,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAIF;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,UAAU,GACnB,cAAc,CAchB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,SAAS,aAAa,EAAE,GAChC,IAAI,CAyBN;AAuDD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,WAAW,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvD,IAAI,CAgBN;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,MAAM,GAC3B;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiB7C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzE"}
1
+ {"version":3,"file":"bytecode-template.d.ts","sourceRoot":"","sources":["../src/bytecode-template.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACrD,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAClC,gBAAgB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,cAAc,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpD,aAAa,EAAE;QAAE,IAAI,EAAE;YAAE,IAAI,EAAE,OAAO,EAAE,CAAA;SAAE,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CACvD,CAAC;AAEF,yFAAyF;AACzF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,CAAC;IACrB,WAAW,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAUF;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,uGAAuG;AACvG,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,MAAM,CAYR;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GACzC,IAAI,CA4BN;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,UAAU,GACnB,cAAc,CAchB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,SAAS,aAAa,EAAE,GAChC,IAAI,CAyBN;AAuDD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,SAAS,MAAM,EAAE,EAC/B,WAAW,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACvD,IAAI,CAgBN;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,MAAM,GAC3B;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiB7C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzE"}
@@ -1,5 +1,11 @@
1
1
  import initBytecodeTemplate, { deserialize, } from "@mysten/move-bytecode-template";
2
2
  import { bcs } from "@mysten/sui/bcs";
3
+ import { isValidSuiObjectId, MOVE_STDLIB_ADDRESS, normalizeSuiObjectId, SUI_FRAMEWORK_ADDRESS, } from "@mysten/sui/utils";
4
+ const SYSTEM_ADDRESSES = new Set([
5
+ normalizeSuiObjectId("0x0"),
6
+ MOVE_STDLIB_ADDRESS,
7
+ SUI_FRAMEWORK_ADDRESS,
8
+ ]);
3
9
  let initialization;
4
10
  /**
5
11
  * Initializes the bytecode-template WASM helper once for every template. A
@@ -16,6 +22,55 @@ export function initializeBytecodeTemplate(options) {
16
22
  });
17
23
  return initialization;
18
24
  }
25
+ /** A deployed package's original ID that a generated package links: valid and not a system address. */
26
+ export function requireDependencyPackageId(name, packageId) {
27
+ if (typeof packageId !== "string") {
28
+ throw new TypeError(`${name} must be a string`);
29
+ }
30
+ const normalized = normalizeSuiObjectId(packageId);
31
+ if (!isValidSuiObjectId(normalized)) {
32
+ throw new TypeError(`${name} must be a valid Sui package ID`);
33
+ }
34
+ if (SYSTEM_ADDRESSES.has(normalized)) {
35
+ throw new RangeError(`${name} must identify a deployed Blast package`);
36
+ }
37
+ return normalized;
38
+ }
39
+ /**
40
+ * Binds every non-system address of the template to the deployed package
41
+ * whose modules it names: `bindings` maps a module name to that package's
42
+ * original ID. Each placeholder address must be claimed by exactly one
43
+ * package through the modules it holds, and each binding must claim one, so
44
+ * a template that gains or loses a dependency fails here instead of linking
45
+ * a placeholder.
46
+ */
47
+ export function patchDependencyAddresses(label, compiled, bindings) {
48
+ const claimed = new Set();
49
+ compiled.address_identifiers.forEach((address, index) => {
50
+ if (SYSTEM_ADDRESSES.has(normalizeSuiObjectId(address)))
51
+ return;
52
+ const packageIds = new Set(compiled.module_handles.flatMap((handle) => {
53
+ const module = compiled.identifiers[handle.name];
54
+ const packageId = handle.address === index && module !== undefined
55
+ ? bindings[module]
56
+ : undefined;
57
+ if (packageId !== undefined && module !== undefined) {
58
+ claimed.add(module);
59
+ }
60
+ return packageId === undefined ? [] : [packageId];
61
+ }));
62
+ if (packageIds.size !== 1) {
63
+ throw new TypeError(`${label} has an unbound dependency address`);
64
+ }
65
+ const [packageId] = packageIds;
66
+ compiled.address_identifiers[index] = packageId.slice(2);
67
+ });
68
+ for (const module of Object.keys(bindings)) {
69
+ if (!claimed.has(module)) {
70
+ throw new TypeError(`${label} does not link ${module}`);
71
+ }
72
+ }
73
+ }
19
74
  /** Deserializes a template module and checks the tables patching reads. */
20
75
  export function deserializeTemplate(label, bytecode) {
21
76
  const value = deserialize(bytecode);
@@ -124,21 +179,21 @@ export function assertIdentifierSlots(label, compiled, placeholders, identifiers
124
179
  }
125
180
  }
126
181
  /**
127
- * Derives the module and one-time-witness names from a symbol, the same
128
- * transformation as Blast V1: the witness is the uppercased symbol and the
129
- * module its lowercase form, spaces becoming underscores.
182
+ * Defaults the module to the lowercased symbol, with spaces becoming underscores.
183
+ * Sui requires its one-time witness to be the uppercase module name, including
184
+ * when the caller overrides the module name.
130
185
  */
131
186
  export function deriveTemplateIdentifiers(symbol, requestedModuleName) {
132
187
  const normalizedSymbol = requireNonEmptyString("symbol", symbol);
133
- const witnessName = normalizedSymbol.toUpperCase().replaceAll(" ", "_");
188
+ const symbolIdentifier = normalizedSymbol.toUpperCase().replaceAll(" ", "_");
134
189
  const moduleName = requestedModuleName ?? normalizedSymbol.toLowerCase().replaceAll(" ", "_");
135
- if (!/^[A-Z][A-Z0-9_]*$/.test(witnessName)) {
190
+ if (!/^[A-Z][A-Z0-9_]*$/.test(symbolIdentifier)) {
136
191
  throw new RangeError("symbol must produce an uppercase Move witness identifier");
137
192
  }
138
193
  if (!/^[a-z][a-z0-9_]*$/.test(moduleName)) {
139
194
  throw new RangeError("moduleName must start with a lowercase letter and contain only lowercase letters, digits, or underscores");
140
195
  }
141
- return { moduleName, witnessName };
196
+ return { moduleName, witnessName: moduleName.toUpperCase() };
142
197
  }
143
198
  export function requireString(name, value) {
144
199
  if (typeof value !== "string") {
@@ -1 +1 @@
1
- {"version":3,"file":"bytecode-template.js","sourceRoot":"","sources":["../src/bytecode-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bytecode-template.js","sourceRoot":"","sources":["../src/bytecode-template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import type { Transaction, TransactionObjectInput, TransactionResult } from "@mysten/sui/transactions";
2
+ import type { FeeSplit } from "./fee-split.ts";
3
+ import type { VestingTerms } from "./payout.ts";
4
+ import type { SharedObjectIdentity } from "./sui.ts";
5
+ /**
6
+ * The `blast_core` package and its shared `blast_treasury::Treasury`. Calls
7
+ * target `packageId`; types and roles name `originalPackageId`.
8
+ */
9
+ export type CoreDeployment = {
10
+ packageId: string;
11
+ originalPackageId: string;
12
+ treasury: SharedObjectIdentity;
13
+ };
14
+ export declare function normalizeCoreDeployment(deployment: CoreDeployment): CoreDeployment;
15
+ /** `<core original>::<module>::<name>`, normalized. */
16
+ export declare function coreType(core: Pick<CoreDeployment, "originalPackageId">, module: string, name: string): string;
17
+ /**
18
+ * `blast_core` value constructors and treasury calls. Each method returns a
19
+ * PTB step; the constructors return the value as a transaction result that
20
+ * the product or vault call consuming it takes by value.
21
+ */
22
+ export declare class CoreCalls {
23
+ #private;
24
+ readonly deployment: CoreDeployment;
25
+ constructor(deployment: CoreDeployment);
26
+ /** `bps::new`: aborts above 10,000. */
27
+ bps(value: bigint): (tx: Transaction) => TransactionResult;
28
+ /**
29
+ * `fee_split::new` over one `fee_split::route` per route, each built from
30
+ * its `*_destination` constructor and `bps::new`, in the given order.
31
+ */
32
+ feeSplit(split: FeeSplit): (tx: Transaction) => TransactionResult;
33
+ /**
34
+ * `payout::vesting_terms`; rejects terms the contract aborts on: positive
35
+ * steps whose total fits `MAX_VESTING_DURATION_MS` and a cliff within it.
36
+ */
37
+ vestingTerms(terms: VestingTerms): (tx: Transaction) => TransactionResult;
38
+ /** `payout::recipient`: paid outright when `vestingTerms` is null. */
39
+ recipient(options: {
40
+ destination: string;
41
+ vestingTerms: VestingTerms | null;
42
+ }): (tx: Transaction) => TransactionResult;
43
+ /**
44
+ * `blast_treasury::schedule_destination`: a `TreasuryAdmin` witness
45
+ * schedules `destination` and the next change's `delayMs`.
46
+ */
47
+ scheduleDestination(options: {
48
+ adminWitness: TransactionObjectInput;
49
+ destination: string;
50
+ delayMs: bigint;
51
+ }): (tx: Transaction) => void;
52
+ /** `blast_treasury::apply_destination`: anyone, once ready. */
53
+ applyDestination(): (tx: Transaction) => void;
54
+ /** `blast_treasury::cancel_destination` with a `CancelAdmin` witness. */
55
+ cancelDestination(options: {
56
+ adminWitness: TransactionObjectInput;
57
+ }): (tx: Transaction) => void;
58
+ }
59
+ //# sourceMappingURL=deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAGrD;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,cAAc,GACzB,cAAc,CAShB;AAED,uDAAuD;AACvD,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,EAC/C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,MAAM,CAIR;AAED;;;;GAIG;AACH,qBAAa,SAAS;;IACpB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IAEpC,YAAY,UAAU,EAAE,cAAc,EAErC;IAED,uCAAuC;IACvC,GAAG,CAAC,KAAK,EAAE,MAAM,QAEH,WAAW,KAAG,iBAAiB,CAK5C;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,QAEV,WAAW,KAAG,iBAAiB,CAiB5C;IAED;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,YAAY,QAclB,WAAW,KAAG,iBAAiB,CAS5C;IAED,sEAAsE;IACtE,SAAS,CAAC,OAAO,EAAE;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;KACnC,QAKa,WAAW,KAAG,iBAAiB,CAiB5C;IAED;;;OAGG;IACH,mBAAmB,CAAC,OAAO,EAAE;QAC3B,YAAY,EAAE,sBAAsB,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,QAEa,WAAW,KAAG,IAAI,CAY/B;IAED,+DAA+D;IAC/D,gBAAgB,SACF,WAAW,KAAG,IAAI,CAM/B;IAED,yEAAyE;IACzE,iBAAiB,CAAC,OAAO,EAAE;QAAE,YAAY,EAAE,sBAAsB,CAAA;KAAE,QACrD,WAAW,KAAG,IAAI,CAM/B;CAmCF"}
@@ -0,0 +1,172 @@
1
+ import { normalizeStructTag, normalizeSuiObjectId } from "@mysten/sui/utils";
2
+ import { MAX_VESTING_DURATION_MS, requireBps } from "./bps.js";
3
+ import { normalizeFeeSplit } from "./fee-split.js";
4
+ import { requireU64 } from "./integers.js";
5
+ import { normalizeSharedObjectIdentity } from "./sui.js";
6
+ export function normalizeCoreDeployment(deployment) {
7
+ return {
8
+ packageId: normalizeSuiObjectId(deployment.packageId),
9
+ originalPackageId: normalizeSuiObjectId(deployment.originalPackageId),
10
+ treasury: normalizeSharedObjectIdentity("core.treasury", deployment.treasury),
11
+ };
12
+ }
13
+ /** `<core original>::<module>::<name>`, normalized. */
14
+ export function coreType(core, module, name) {
15
+ return normalizeStructTag(`${normalizeSuiObjectId(core.originalPackageId)}::${module}::${name}`);
16
+ }
17
+ /**
18
+ * `blast_core` value constructors and treasury calls. Each method returns a
19
+ * PTB step; the constructors return the value as a transaction result that
20
+ * the product or vault call consuming it takes by value.
21
+ */
22
+ export class CoreCalls {
23
+ deployment;
24
+ constructor(deployment) {
25
+ this.deployment = normalizeCoreDeployment(deployment);
26
+ }
27
+ /** `bps::new`: aborts above 10,000. */
28
+ bps(value) {
29
+ const bps = requireBps(value);
30
+ return (tx) => tx.moveCall({
31
+ target: this.#target("bps", "new"),
32
+ arguments: [tx.pure.u64(bps)],
33
+ });
34
+ }
35
+ /**
36
+ * `fee_split::new` over one `fee_split::route` per route, each built from
37
+ * its `*_destination` constructor and `bps::new`, in the given order.
38
+ */
39
+ feeSplit(split) {
40
+ const { routes } = normalizeFeeSplit(split);
41
+ return (tx) => {
42
+ const elements = routes.map(({ destination, bps }) => tx.moveCall({
43
+ target: this.#target("fee_split", "route"),
44
+ arguments: [this.#destination(tx, destination), this.bps(bps)(tx)],
45
+ }));
46
+ return tx.moveCall({
47
+ target: this.#target("fee_split", "new"),
48
+ arguments: [
49
+ tx.makeMoveVec({
50
+ type: coreType(this.deployment, "fee_split", "Route"),
51
+ elements,
52
+ }),
53
+ ],
54
+ });
55
+ };
56
+ }
57
+ /**
58
+ * `payout::vesting_terms`; rejects terms the contract aborts on: positive
59
+ * steps whose total fits `MAX_VESTING_DURATION_MS` and a cliff within it.
60
+ */
61
+ vestingTerms(terms) {
62
+ const cliff = requireU64("cliffDelayMs", terms.cliffDelayMs);
63
+ const period = requireU64("periodDurationMs", terms.periodDurationMs);
64
+ const periods = requireU64("periods", terms.periods);
65
+ if (period === 0n ||
66
+ periods === 0n ||
67
+ period > MAX_VESTING_DURATION_MS / periods ||
68
+ cliff > period * periods) {
69
+ throw new RangeError("vesting needs positive steps whose total and cliff fit the bound");
70
+ }
71
+ return (tx) => tx.moveCall({
72
+ target: this.#target("payout", "vesting_terms"),
73
+ arguments: [
74
+ tx.pure.u64(cliff),
75
+ tx.pure.u64(period),
76
+ tx.pure.u64(periods),
77
+ ],
78
+ });
79
+ }
80
+ /** `payout::recipient`: paid outright when `vestingTerms` is null. */
81
+ recipient(options) {
82
+ const terms = options.vestingTerms
83
+ ? this.vestingTerms(options.vestingTerms)
84
+ : null;
85
+ const termsType = coreType(this.deployment, "payout", "VestingTerms");
86
+ return (tx) => tx.moveCall({
87
+ target: this.#target("payout", "recipient"),
88
+ arguments: [
89
+ tx.pure.address(options.destination),
90
+ terms
91
+ ? tx.moveCall({
92
+ target: "0x1::option::some",
93
+ typeArguments: [termsType],
94
+ arguments: [terms(tx)],
95
+ })
96
+ : tx.moveCall({
97
+ target: "0x1::option::none",
98
+ typeArguments: [termsType],
99
+ }),
100
+ ],
101
+ });
102
+ }
103
+ /**
104
+ * `blast_treasury::schedule_destination`: a `TreasuryAdmin` witness
105
+ * schedules `destination` and the next change's `delayMs`.
106
+ */
107
+ scheduleDestination(options) {
108
+ const delayMs = requireU64("delayMs", options.delayMs);
109
+ return (tx) => {
110
+ tx.moveCall({
111
+ target: this.#target("blast_treasury", "schedule_destination"),
112
+ arguments: [
113
+ this.#treasury(tx, true),
114
+ tx.object(options.adminWitness),
115
+ tx.pure.address(options.destination),
116
+ tx.pure.u64(delayMs),
117
+ tx.object.clock(),
118
+ ],
119
+ });
120
+ };
121
+ }
122
+ /** `blast_treasury::apply_destination`: anyone, once ready. */
123
+ applyDestination() {
124
+ return (tx) => {
125
+ tx.moveCall({
126
+ target: this.#target("blast_treasury", "apply_destination"),
127
+ arguments: [this.#treasury(tx, true), tx.object.clock()],
128
+ });
129
+ };
130
+ }
131
+ /** `blast_treasury::cancel_destination` with a `CancelAdmin` witness. */
132
+ cancelDestination(options) {
133
+ return (tx) => {
134
+ tx.moveCall({
135
+ target: this.#target("blast_treasury", "cancel_destination"),
136
+ arguments: [this.#treasury(tx, true), tx.object(options.adminWitness)],
137
+ });
138
+ };
139
+ }
140
+ #destination(tx, destination) {
141
+ switch (destination.kind) {
142
+ case "Address":
143
+ return tx.moveCall({
144
+ target: this.#target("fee_split", "address_destination"),
145
+ arguments: [tx.pure.address(destination.address)],
146
+ });
147
+ case "Owner":
148
+ return tx.moveCall({
149
+ target: this.#target("fee_split", "owner_destination"),
150
+ });
151
+ case "AutoLp":
152
+ return tx.moveCall({
153
+ target: this.#target("fee_split", "auto_lp_destination"),
154
+ });
155
+ case "HolderRewards":
156
+ return tx.moveCall({
157
+ target: this.#target("fee_split", "holder_rewards_destination"),
158
+ });
159
+ case "Burn":
160
+ return tx.moveCall({
161
+ target: this.#target("fee_split", "burn_destination"),
162
+ });
163
+ }
164
+ }
165
+ #target(module, functionName) {
166
+ return `${this.deployment.packageId}::${module}::${functionName}`;
167
+ }
168
+ #treasury(tx, mutable) {
169
+ return tx.sharedObjectRef({ ...this.deployment.treasury, mutable });
170
+ }
171
+ }
172
+ //# sourceMappingURL=deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ import type { SuiClientTypes } from "@mysten/sui/client";
2
+ import type { Transaction, TransactionResult } from "@mysten/sui/transactions";
3
+ import { parseStructTag } from "@mysten/sui/utils";
4
+ import type { SharedObjectIdentity, SharedObjectReference } from "./sui.ts";
5
+ /**
6
+ * The parts of one executed transaction these readers need: its effects and
7
+ * the types of the objects they touched (Core API `include: { effects: true,
8
+ * objectTypes: true }`).
9
+ */
10
+ export type TransactionEffectsInput = {
11
+ effects: SuiClientTypes.TransactionEffects;
12
+ objectTypes: Readonly<Record<string, string>>;
13
+ };
14
+ /** An owned or receiving object at one version. */
15
+ export type ObjectVersionReference = {
16
+ objectId: string;
17
+ version: string;
18
+ digest: string;
19
+ };
20
+ /** `sui::object::sui_coin_registry_address()`. */
21
+ export declare const COIN_REGISTRY_ID: string;
22
+ /** The objects a successful transaction created. */
23
+ export declare function createdObjects(result: TransactionEffectsInput): SuiClientTypes.ChangedObject[];
24
+ /** The one package a publication created. */
25
+ export declare function readPublishedPackage(created: readonly SuiClientTypes.ChangedObject[]): string;
26
+ /** The parsed type of a touched object, or undefined for a package. */
27
+ export declare function typeOf(result: TransactionEffectsInput, objectId: string): ReturnType<typeof parseStructTag> | undefined;
28
+ /** Whether the object is `0x2::coin_registry::Currency<coinType>`. */
29
+ export declare function isCurrencyOf(result: TransactionEffectsInput, objectId: string, coinType: string): boolean;
30
+ /**
31
+ * The `<core>::sealed_treasury_cap::SealedTreasuryCap<Coin>` objects a
32
+ * publication created, each with its sealed coin type, in effects order.
33
+ */
34
+ export declare function sealedTreasuryCaps(result: TransactionEffectsInput, created: readonly SuiClientTypes.ChangedObject[], coreOriginalPackageId: string): {
35
+ object: SuiClientTypes.ChangedObject;
36
+ coinType: string;
37
+ }[];
38
+ /**
39
+ * The one sealed `TreasuryCap<coinType>` a publication sent to `owner`;
40
+ * `where` names the expectation in the error.
41
+ */
42
+ export declare function readSealedTreasuryCap(result: TransactionEffectsInput, created: readonly SuiClientTypes.ChangedObject[], coreOriginalPackageId: string, coinType: string, owner: string, where: string): ObjectVersionReference & {
43
+ owner: string;
44
+ };
45
+ /** The one `Currency<coinType>` a publication sent to the Coin Registry address. */
46
+ export declare function readPendingCurrency(result: TransactionEffectsInput, created: readonly SuiClientTypes.ChangedObject[], coinType: string): ObjectVersionReference;
47
+ /**
48
+ * Reads the shared `Currency<coinType>` that
49
+ * `coin_registry::finalize_registration` created at its derived address;
50
+ * mutable for the product's `finalize`.
51
+ */
52
+ export declare function readCurrencyRegistration(result: TransactionEffectsInput, coinType: string): SharedObjectReference<true>;
53
+ /**
54
+ * `0x2::coin_registry::finalize_registration<Coin>(registry, currency)`:
55
+ * shares a published coin's pending `Currency` from the Coin Registry
56
+ * address (`readPendingCurrency`). Anyone may run it; `coinRegistry` is the
57
+ * shared registry `0xc` with its initial shared version, so it builds
58
+ * offline.
59
+ */
60
+ export declare function finalizeCurrencyRegistration(options: {
61
+ coinType: string;
62
+ currency: ObjectVersionReference;
63
+ coinRegistry: SharedObjectIdentity;
64
+ }): (tx: Transaction) => TransactionResult;
65
+ /** An owned object's ID, output version and digest. */
66
+ export declare function versionReference(object: SuiClientTypes.ChangedObject): ObjectVersionReference;
67
+ /** A shared object's identity, borrowed mutably. */
68
+ export declare function sharedReference(object: SuiClientTypes.ChangedObject): SharedObjectReference<true>;
69
+ //# sourceMappingURL=effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../src/effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAIL,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAS5E;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,cAAc,CAAC,kBAAkB,CAAC;IAC3C,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/C,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAE5D,oDAAoD;AACpD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,uBAAuB,GAC9B,cAAc,CAAC,aAAa,EAAE,CAOhC;AAED,6CAA6C;AAC7C,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,cAAc,CAAC,aAAa,EAAE,GAC/C,MAAM,CAQR;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CACpB,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,MAAM,GACf,UAAU,CAAC,OAAO,cAAc,CAAC,GAAG,SAAS,CAO/C;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAC1B,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAWT;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,SAAS,cAAc,CAAC,aAAa,EAAE,EAChD,qBAAqB,EAAE,MAAM,GAC5B;IAAE,MAAM,EAAE,cAAc,CAAC,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,CAa9D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,SAAS,cAAc,CAAC,aAAa,EAAE,EAChD,qBAAqB,EAAE,MAAM,EAC7B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,sBAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAgB5C;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,uBAAuB,EAC/B,OAAO,EAAE,SAAS,cAAc,CAAC,aAAa,EAAE,EAChD,QAAQ,EAAE,MAAM,GACf,sBAAsB,CAaxB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,uBAAuB,EAC/B,QAAQ,EAAE,MAAM,GACf,qBAAqB,CAAC,IAAI,CAAC,CAW7B;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,YAAY,EAAE,oBAAoB,CAAC;CACpC,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,iBAAiB,CAoBzC;AAED,uDAAuD;AACvD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,CAAC,aAAa,GACnC,sBAAsB,CASxB;AAED,oDAAoD;AACpD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,CAAC,aAAa,GACnC,qBAAqB,CAAC,IAAI,CAAC,CAS7B"}