@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
@@ -0,0 +1,143 @@
1
+ import { normalizeStructTag, normalizeSuiAddress, normalizeSuiObjectId, parseStructTag, SUI_FRAMEWORK_ADDRESS, } from "@mysten/sui/utils";
2
+ import { normalizeSharedObjectIdentity } from "./sui.js";
3
+ /** `sui::object::sui_coin_registry_address()`. */
4
+ export const COIN_REGISTRY_ID = normalizeSuiObjectId("0xc");
5
+ /** The objects a successful transaction created. */
6
+ export function createdObjects(result) {
7
+ if (!result.effects.status.success) {
8
+ throw new TypeError("transaction did not succeed");
9
+ }
10
+ return result.effects.changedObjects.filter((object) => object.idOperation === "Created");
11
+ }
12
+ /** The one package a publication created. */
13
+ export function readPublishedPackage(created) {
14
+ const packages = created.filter((object) => object.outputState === "PackageWrite");
15
+ if (packages.length !== 1) {
16
+ throw new TypeError("publication must create exactly one package");
17
+ }
18
+ return normalizeSuiObjectId(packages[0].objectId);
19
+ }
20
+ /** The parsed type of a touched object, or undefined for a package. */
21
+ export function typeOf(result, objectId) {
22
+ const type = result.objectTypes[normalizeSuiObjectId(objectId)] ??
23
+ result.objectTypes[objectId];
24
+ return type === undefined || type === "package"
25
+ ? undefined
26
+ : parseStructTag(type);
27
+ }
28
+ /** Whether the object is `0x2::coin_registry::Currency<coinType>`. */
29
+ export function isCurrencyOf(result, objectId, coinType) {
30
+ const tag = typeOf(result, objectId);
31
+ const parameter = tag?.typeParams[0];
32
+ return (tag?.address === normalizeSuiAddress(SUI_FRAMEWORK_ADDRESS) &&
33
+ tag.module === "coin_registry" &&
34
+ tag.name === "Currency" &&
35
+ tag.typeParams.length === 1 &&
36
+ parameter !== undefined &&
37
+ normalizeStructTag(parameter) === coinType);
38
+ }
39
+ /**
40
+ * The `<core>::sealed_treasury_cap::SealedTreasuryCap<Coin>` objects a
41
+ * publication created, each with its sealed coin type, in effects order.
42
+ */
43
+ export function sealedTreasuryCaps(result, created, coreOriginalPackageId) {
44
+ const core = normalizeSuiAddress(coreOriginalPackageId);
45
+ return created.flatMap((object) => {
46
+ const tag = typeOf(result, object.objectId);
47
+ const parameter = tag?.typeParams[0];
48
+ return tag?.address === core &&
49
+ tag.module === "sealed_treasury_cap" &&
50
+ tag.name === "SealedTreasuryCap" &&
51
+ parameter !== undefined &&
52
+ typeof parameter !== "string"
53
+ ? [{ object, coinType: normalizeStructTag(parameter) }]
54
+ : [];
55
+ });
56
+ }
57
+ /**
58
+ * The one sealed `TreasuryCap<coinType>` a publication sent to `owner`;
59
+ * `where` names the expectation in the error.
60
+ */
61
+ export function readSealedTreasuryCap(result, created, coreOriginalPackageId, coinType, owner, where) {
62
+ const caps = sealedTreasuryCaps(result, created, coreOriginalPackageId)
63
+ .filter((cap) => cap.coinType === coinType &&
64
+ cap.object.outputOwner?.$kind === "AddressOwner" &&
65
+ normalizeSuiAddress(cap.object.outputOwner.AddressOwner) === owner)
66
+ .map(({ object }) => object);
67
+ const [cap] = caps;
68
+ if (caps.length !== 1 || !cap) {
69
+ throw new TypeError(`publication must send exactly one SealedTreasuryCap<Coin> ${where}`);
70
+ }
71
+ return { ...versionReference(cap), owner };
72
+ }
73
+ /** The one `Currency<coinType>` a publication sent to the Coin Registry address. */
74
+ export function readPendingCurrency(result, created, coinType) {
75
+ const currencies = created.filter((object) => isCurrencyOf(result, object.objectId, coinType) &&
76
+ object.outputOwner?.$kind === "AddressOwner" &&
77
+ normalizeSuiAddress(object.outputOwner.AddressOwner) === COIN_REGISTRY_ID);
78
+ if (currencies.length !== 1) {
79
+ throw new TypeError("publication must send exactly one Currency<Coin> to the Coin Registry");
80
+ }
81
+ return versionReference(currencies[0]);
82
+ }
83
+ /**
84
+ * Reads the shared `Currency<coinType>` that
85
+ * `coin_registry::finalize_registration` created at its derived address;
86
+ * mutable for the product's `finalize`.
87
+ */
88
+ export function readCurrencyRegistration(result, coinType) {
89
+ const coin = normalizeStructTag(coinType);
90
+ const currencies = createdObjects(result).filter((object) => object.outputOwner?.$kind === "Shared" &&
91
+ isCurrencyOf(result, object.objectId, coin));
92
+ if (currencies.length !== 1) {
93
+ throw new TypeError("registration must share exactly one Currency<Coin>");
94
+ }
95
+ return sharedReference(currencies[0]);
96
+ }
97
+ /**
98
+ * `0x2::coin_registry::finalize_registration<Coin>(registry, currency)`:
99
+ * shares a published coin's pending `Currency` from the Coin Registry
100
+ * address (`readPendingCurrency`). Anyone may run it; `coinRegistry` is the
101
+ * shared registry `0xc` with its initial shared version, so it builds
102
+ * offline.
103
+ */
104
+ export function finalizeCurrencyRegistration(options) {
105
+ const coinType = normalizeStructTag(options.coinType);
106
+ const currency = {
107
+ objectId: normalizeSuiObjectId(options.currency.objectId),
108
+ version: options.currency.version,
109
+ digest: options.currency.digest,
110
+ };
111
+ const coinRegistry = normalizeSharedObjectIdentity("coinRegistry", options.coinRegistry);
112
+ return (tx) => tx.moveCall({
113
+ target: `${SUI_FRAMEWORK_ADDRESS}::coin_registry::finalize_registration`,
114
+ typeArguments: [coinType],
115
+ arguments: [
116
+ tx.sharedObjectRef({ ...coinRegistry, mutable: true }),
117
+ tx.receivingRef(currency),
118
+ ],
119
+ });
120
+ }
121
+ /** An owned object's ID, output version and digest. */
122
+ export function versionReference(object) {
123
+ if (object.outputVersion === null || object.outputDigest === null) {
124
+ throw new TypeError(`object ${object.objectId} has no output version`);
125
+ }
126
+ return {
127
+ objectId: normalizeSuiObjectId(object.objectId),
128
+ version: object.outputVersion,
129
+ digest: object.outputDigest,
130
+ };
131
+ }
132
+ /** A shared object's identity, borrowed mutably. */
133
+ export function sharedReference(object) {
134
+ if (object.outputOwner?.$kind !== "Shared") {
135
+ throw new TypeError(`object ${object.objectId} is not shared`);
136
+ }
137
+ return {
138
+ objectId: normalizeSuiObjectId(object.objectId),
139
+ initialSharedVersion: object.outputOwner.Shared.initialSharedVersion,
140
+ mutable: true,
141
+ };
142
+ }
143
+ //# sourceMappingURL=effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.js","sourceRoot":"","sources":["../src/effects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * `blast_core::fee_split::Destination`: where one route's part of each
3
+ * LP-fee collection goes. The vault decides what each special kind does.
4
+ */
5
+ export type Destination = {
6
+ kind: "Address";
7
+ address: string;
8
+ } | {
9
+ kind: "Owner";
10
+ } | {
11
+ kind: "AutoLp";
12
+ } | {
13
+ kind: "HolderRewards";
14
+ } | {
15
+ kind: "Burn";
16
+ };
17
+ /** `blast_core::fee_split::Route`: one destination and its positive share. */
18
+ export type Route = {
19
+ destination: Destination;
20
+ bps: bigint;
21
+ };
22
+ /** `blast_core::fee_split::FeeSplit`: routes summing to exactly 10,000. */
23
+ export type FeeSplit = {
24
+ routes: Route[];
25
+ };
26
+ /** BCS of `Destination`, in Move variant order. */
27
+ export declare const destinationBcs: import("@mysten/sui/bcs").BcsType<Destination, Destination, "Destination">;
28
+ export declare const routeBcs: import("@mysten/sui/bcs").BcsStruct<{
29
+ destination: import("@mysten/sui/bcs").BcsType<Destination, Destination, "Destination">;
30
+ bps: import("@mysten/sui/bcs").BcsType<bigint, bigint, string>;
31
+ }, string>;
32
+ export declare const feeSplitBcs: import("@mysten/sui/bcs").BcsStruct<{
33
+ routes: import("@mysten/sui/bcs").BcsType<{
34
+ destination: Destination;
35
+ bps: bigint;
36
+ }[], Iterable<{
37
+ destination: Destination;
38
+ bps: bigint;
39
+ }> & {
40
+ length: number;
41
+ }, string>;
42
+ }, string>;
43
+ /**
44
+ * Checks `split` as far as `fee_split::new` would reject it: at most 20
45
+ * routes, each positive (and an address route nonzero), no destination
46
+ * twice, summing to exactly 10,000. Returns the routes with normalized
47
+ * addresses, in the given order (the order `apportion` pays them).
48
+ */
49
+ export declare function normalizeFeeSplit(split: FeeSplit): FeeSplit;
50
+ /**
51
+ * Mirrors `fee_split::apportion`: `total` atoms split across the routes
52
+ * exactly, in route order, by `bps::apportion` with no rounded-up part.
53
+ */
54
+ export declare function apportionFeeSplit(split: FeeSplit, total: bigint): bigint[];
55
+ //# sourceMappingURL=fee-split.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee-split.d.ts","sourceRoot":"","sources":["../src/fee-split.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,8EAA8E;AAC9E,MAAM,MAAM,KAAK,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,2EAA2E;AAC3E,MAAM,MAAM,QAAQ,GAAG;IAAE,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,CAAC;AAE3C,mDAAmD;AACnD,eAAO,MAAM,cAAc,4EAqBvB,CAAC;AAEL,eAAO,MAAM,QAAQ;;;UAGnB,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;;;;;;UAEtB,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CA4B3D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAM1E"}
@@ -0,0 +1,69 @@
1
+ import { bcs } from "@mysten/sui/bcs";
2
+ import { normalizeSuiAddress } from "@mysten/sui/utils";
3
+ import { addressBcs } from "./bcs.js";
4
+ import { apportionBps, bpsBcs, MAX_ROUTES, requireBps } from "./bps.js";
5
+ import { BASIS_POINTS_DENOMINATOR } from "./integers.js";
6
+ /** BCS of `Destination`, in Move variant order. */
7
+ export const destinationBcs = bcs
8
+ .enum("Destination", {
9
+ Address: addressBcs,
10
+ Owner: null,
11
+ AutoLp: null,
12
+ HolderRewards: null,
13
+ Burn: null,
14
+ })
15
+ .transform({
16
+ input: (destination) => destination.kind === "Address"
17
+ ? { Address: destination.address }
18
+ : { [destination.kind]: true },
19
+ output: (destination) => destination.$kind === "Address"
20
+ ? { kind: "Address", address: destination.Address }
21
+ : { kind: destination.$kind },
22
+ });
23
+ export const routeBcs = bcs.struct("Route", {
24
+ destination: destinationBcs,
25
+ bps: bpsBcs,
26
+ });
27
+ export const feeSplitBcs = bcs.struct("FeeSplit", {
28
+ routes: bcs.vector(routeBcs),
29
+ });
30
+ /**
31
+ * Checks `split` as far as `fee_split::new` would reject it: at most 20
32
+ * routes, each positive (and an address route nonzero), no destination
33
+ * twice, summing to exactly 10,000. Returns the routes with normalized
34
+ * addresses, in the given order (the order `apportion` pays them).
35
+ */
36
+ export function normalizeFeeSplit(split) {
37
+ if (split.routes.length > MAX_ROUTES) {
38
+ throw new RangeError(`a fee split holds at most ${MAX_ROUTES} routes`);
39
+ }
40
+ const routes = split.routes.map(({ destination, bps }) => {
41
+ if (requireBps(bps) === 0n) {
42
+ throw new RangeError("a fee-split route needs a positive share");
43
+ }
44
+ if (destination.kind !== "Address")
45
+ return { destination, bps };
46
+ const address = normalizeSuiAddress(destination.address);
47
+ if (address === normalizeSuiAddress("0x0")) {
48
+ throw new RangeError("a fee-split route cannot pay the zero address");
49
+ }
50
+ return { destination: { kind: "Address", address }, bps };
51
+ });
52
+ const keys = routes.map(({ destination }) => destination.kind === "Address" ? destination.address : destination.kind);
53
+ if (new Set(keys).size !== keys.length) {
54
+ throw new RangeError("a fee split names each destination at most once");
55
+ }
56
+ if (routes.reduce((sum, route) => sum + route.bps, 0n) !==
57
+ BASIS_POINTS_DENOMINATOR) {
58
+ throw new RangeError("fee-split routes must sum to 10,000 basis points");
59
+ }
60
+ return { routes };
61
+ }
62
+ /**
63
+ * Mirrors `fee_split::apportion`: `total` atoms split across the routes
64
+ * exactly, in route order, by `bps::apportion` with no rounded-up part.
65
+ */
66
+ export function apportionFeeSplit(split, total) {
67
+ return apportionBps(split.routes.map(({ bps }) => bps), total, null);
68
+ }
69
+ //# sourceMappingURL=fee-split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fee-split.js","sourceRoot":"","sources":["../src/fee-split.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,14 +1,23 @@
1
+ export * from "./aborts.ts";
1
2
  export * from "./arrays.ts";
2
3
  export * from "./bcs.ts";
4
+ export * from "./bps.ts";
3
5
  export * from "./bytecode-template.ts";
4
6
  export * from "./cetus.ts";
5
7
  export * from "./coins.ts";
8
+ export * from "./deployment.ts";
9
+ export * from "./effects.ts";
6
10
  export * from "./events.ts";
11
+ export * from "./fee-split.ts";
7
12
  export * from "./gas.ts";
8
13
  export * from "./integers.ts";
9
14
  export * from "./merkle.ts";
15
+ export * from "./migration.ts";
10
16
  export * from "./migration-math.ts";
17
+ export * from "./payout.ts";
18
+ export * from "./protocol-fees.ts";
11
19
  export * from "./ptb.ts";
20
+ export * from "./roles.ts";
12
21
  export * from "./sui.ts";
13
- export * from "./timelock.ts";
22
+ export * from "./treasury.ts";
14
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,14 +1,23 @@
1
+ export * from "./aborts.js";
1
2
  export * from "./arrays.js";
2
3
  export * from "./bcs.js";
4
+ export * from "./bps.js";
3
5
  export * from "./bytecode-template.js";
4
6
  export * from "./cetus.js";
5
7
  export * from "./coins.js";
8
+ export * from "./deployment.js";
9
+ export * from "./effects.js";
6
10
  export * from "./events.js";
11
+ export * from "./fee-split.js";
7
12
  export * from "./gas.js";
8
13
  export * from "./integers.js";
9
14
  export * from "./merkle.js";
15
+ export * from "./migration.js";
10
16
  export * from "./migration-math.js";
17
+ export * from "./payout.js";
18
+ export * from "./protocol-fees.js";
11
19
  export * from "./ptb.js";
20
+ export * from "./roles.js";
12
21
  export * from "./sui.js";
13
- export * from "./timelock.js";
22
+ export * from "./treasury.js";
14
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
@@ -24,6 +24,8 @@ export declare function requirePositiveU64(name: string, value: bigint): U64;
24
24
  export declare function requireU128(name: string, value: bigint): U128;
25
25
  /** Requires a basis-point value in the inclusive range 0 through 10,000. */
26
26
  export declare function requireBasisPoints(name: string, value: bigint): BasisPoints;
27
+ /** Requires a basis-point value no greater than a contract's compiled maximum. */
28
+ export declare function requireBasisPointsAtMost(name: string, value: bigint, maximum: bigint): BasisPoints;
27
29
  /** Adds two values and requires the result to remain a Move `u64`. */
28
30
  export declare function checkedAddU64(name: string, left: bigint, right: bigint): U64;
29
31
  /** Multiplies before dividing, rounding the non-negative result down. */
@@ -1 +1 @@
1
- {"version":3,"file":"integers.d.ts","sourceRoot":"","sources":["../src/integers.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;AACvC,OAAO,CAAC,MAAM,UAAU,EAAE,OAAO,MAAM,CAAC;AACxC,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,MAAM,CAAC;AAEhD,6DAA6D;AAC7D,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAC1D,8DAA8D;AAC9D,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAC5D,gFAAgF;AAChF,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG;IAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAExE,eAAO,MAAM,OAAO,QAAmB,CAAC;AACxC,eAAO,MAAM,QAAQ,QAAoB,CAAC;AAC1C,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAEhD,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAK3D;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAKnE;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK7D;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAK3E;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAE5E;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAGR;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,CACtB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAIR;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,MAAM,CAYR"}
1
+ {"version":3,"file":"integers.d.ts","sourceRoot":"","sources":["../src/integers.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,SAAS,EAAE,OAAO,MAAM,CAAC;AACvC,OAAO,CAAC,MAAM,UAAU,EAAE,OAAO,MAAM,CAAC;AACxC,OAAO,CAAC,MAAM,kBAAkB,EAAE,OAAO,MAAM,CAAC;AAEhD,6DAA6D;AAC7D,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAC1D,8DAA8D;AAC9D,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAC5D,gFAAgF;AAChF,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG;IAAE,QAAQ,CAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAExE,eAAO,MAAM,OAAO,QAAmB,CAAC;AACxC,eAAO,MAAM,QAAQ,QAAoB,CAAC;AAC1C,eAAO,MAAM,wBAAwB,SAAU,CAAC;AAEhD,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAK3D;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAKnE;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK7D;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAK3E;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,WAAW,CAQb;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAE5E;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CACxB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAGR;AAED,uEAAuE;AACvE,wBAAgB,QAAQ,CACtB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,CAIR;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,MAAM,CAYR"}
package/dist/integers.js CHANGED
@@ -29,6 +29,14 @@ export function requireBasisPoints(name, value) {
29
29
  }
30
30
  return value;
31
31
  }
32
+ /** Requires a basis-point value no greater than a contract's compiled maximum. */
33
+ export function requireBasisPointsAtMost(name, value, maximum) {
34
+ const bps = requireBasisPoints(name, value);
35
+ if (bps > maximum) {
36
+ throw new RangeError(`${name} exceeds ${maximum.toLocaleString("en-US")} basis points`);
37
+ }
38
+ return bps;
39
+ }
32
40
  /** Adds two values and requires the result to remain a Move `u64`. */
33
41
  export function checkedAddU64(name, left, right) {
34
42
  return requireU64(name, left + right);
@@ -1 +1 @@
1
- {"version":3,"file":"integers.js","sourceRoot":"","sources":["../src/integers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integers.js","sourceRoot":"","sources":["../src/integers.ts"],"names":[],"mappings":"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"}
package/dist/merkle.d.ts CHANGED
@@ -1,5 +1,10 @@
1
1
  export declare function blake2b256(bytes: Uint8Array): Uint8Array;
2
- /** Mirrors the contracts' Merkle `node`: `blake2b256(0x01 || left || right)`. */
2
+ /**
3
+ * Mirrors `blast_core::merkle::leaf`: `blake2b256(0x00 || domain || payload)`,
4
+ * `domain` naming the tree's purpose (UTF-8) and `payload` the leaf's BCS.
5
+ */
6
+ export declare function merkleLeaf(domain: string, payload: Uint8Array): Uint8Array;
7
+ /** Mirrors `blast_core::merkle::node`: `blake2b256(0x01 || left || right)`. */
3
8
  export declare function merkleNode(left: Uint8Array, right: Uint8Array): Uint8Array;
4
9
  /**
5
10
  * Every layer of the positional tree the contracts verify, leaves first and
@@ -1 +1 @@
1
- {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../src/merkle.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAExD;AAED,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE1E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,EAAE,CAY1E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,UAAU,CAItE;AAED,0CAA0C;AAC1C,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,EAC/B,KAAK,EAAE,MAAM,GACZ,UAAU,EAAE,CAOd"}
1
+ {"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../src/merkle.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAExD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAI1E;AAED,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAE1E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE,EAAE,CAY1E;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,GAAG,UAAU,CAItE;AAED,0CAA0C;AAC1C,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,EAC/B,KAAK,EAAE,MAAM,GACZ,UAAU,EAAE,CAOd"}
package/dist/merkle.js CHANGED
@@ -2,7 +2,14 @@ import { blake2b } from "@noble/hashes/blake2.js";
2
2
  export function blake2b256(bytes) {
3
3
  return blake2b(bytes, { dkLen: 32 });
4
4
  }
5
- /** Mirrors the contracts' Merkle `node`: `blake2b256(0x01 || left || right)`. */
5
+ /**
6
+ * Mirrors `blast_core::merkle::leaf`: `blake2b256(0x00 || domain || payload)`,
7
+ * `domain` naming the tree's purpose (UTF-8) and `payload` the leaf's BCS.
8
+ */
9
+ export function merkleLeaf(domain, payload) {
10
+ return blake2b256(new Uint8Array([0, ...new TextEncoder().encode(domain), ...payload]));
11
+ }
12
+ /** Mirrors `blast_core::merkle::node`: `blake2b256(0x01 || left || right)`. */
6
13
  export function merkleNode(left, right) {
7
14
  return blake2b256(new Uint8Array([1, ...left, ...right]));
8
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../src/merkle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,UAAU,CAAC,IAAgB,EAAE,KAAiB;IAC5D,OAAO,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAA6B;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAC;IAC5E,IAAI,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAChC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAC5D,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA+B;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,WAAW,CACzB,MAA+B,EAC/B,KAAa;IAEb,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,KAAK,IAAI,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,UAAU,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"merkle.js","sourceRoot":"","sources":["../src/merkle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,OAAmB;IAC5D,OAAO,UAAU,CACf,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,UAAU,CAAC,IAAgB,EAAE,KAAiB;IAC5D,OAAO,UAAU,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAA6B;IACxD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAC;IAC5E,IAAI,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IACxB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAChC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAC5D,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA+B;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC,CAAC;IAC9D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,WAAW,CACzB,MAA+B,EAC/B,KAAa;IAEb,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,QAAQ,GAAG,KAAK,IAAI,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,UAAU,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,9 +1,20 @@
1
1
  /** Atoms of the other asset `auto_lp_fixed_side` keeps beyond its estimate. */
2
2
  export declare const AUTO_LP_MARGIN = 2n;
3
- /** Mirrors `blast_fun_migrators::migration_math::sqrt_price_x64` over atomic Meme/Quote units. */
3
+ /**
4
+ * Mirrors `blast_core::migration::sqrt_price_x64` over atomic Meme/Quote
5
+ * units: `floor(sqrt(B / A) * 2^64)`, B / A being Quote / Meme when Meme is
6
+ * coin A and Meme / Quote otherwise.
7
+ */
4
8
  export declare function sqrtPriceX64(memeAmount: bigint, quoteAmount: bigint, memeIsCoinA: boolean): bigint;
5
9
  /**
6
- * Mirrors `migration_math::auto_lp_fixed_side`, which Bluefin auto-LP uses to
10
+ * Mirrors `migration::is_seedable_price`: whether Cetus and Bluefin can both
11
+ * seed a full-range pool at `sqrtPriceX64`, within
12
+ * `[2 * MIN_SQRT_PRICE_X64, MAX_SQRT_PRICE_X64 / 2]` (the upper bound rounds
13
+ * down).
14
+ */
15
+ export declare function isSeedablePrice(sqrtPriceX64: bigint): boolean;
16
+ /**
17
+ * Mirrors `blast_migrators::bluefin`'s `auto_lp_fixed_side`, which Bluefin auto-LP uses to
7
18
  * choose the fixed side from the pool's and the position's Q64.64 sqrt prices.
8
19
  * Returns `{ fixA, amount }`; a zero amount means nothing is added now.
9
20
  * Divisions round down except the other side's requirement, which rounds up.
@@ -1 +1 @@
1
- {"version":3,"file":"migration-math.d.ts","sourceRoot":"","sources":["../src/migration-math.ts"],"names":[],"mappings":"AAIA,+EAA+E;AAC/E,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,kGAAkG;AAClG,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,OAAO,GACnB,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAyBnC"}
1
+ {"version":3,"file":"migration-math.d.ts","sourceRoot":"","sources":["../src/migration-math.ts"],"names":[],"mappings":"AAIA,+EAA+E;AAC/E,eAAO,MAAM,cAAc,KAAK,CAAC;AASjC;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,OAAO,GACnB,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAyBnC"}
@@ -3,12 +3,33 @@ const Q64 = 1n << 64n;
3
3
  const Q128 = 1n << 128n;
4
4
  /** Atoms of the other asset `auto_lp_fixed_side` keeps beyond its estimate. */
5
5
  export const AUTO_LP_MARGIN = 2n;
6
- /** Mirrors `blast_fun_migrators::migration_math::sqrt_price_x64` over atomic Meme/Quote units. */
6
+ /**
7
+ * `tick_math` sqrt-price bounds, Q64.64, shared by Cetus and Bluefin
8
+ * (`blast_core::constants::{min,max}_sqrt_price_x64`).
9
+ */
10
+ const MIN_SQRT_PRICE_X64 = 4295048016n;
11
+ const MAX_SQRT_PRICE_X64 = 79226673515401279992447579055n;
12
+ /**
13
+ * Mirrors `blast_core::migration::sqrt_price_x64` over atomic Meme/Quote
14
+ * units: `floor(sqrt(B / A) * 2^64)`, B / A being Quote / Meme when Meme is
15
+ * coin A and Meme / Quote otherwise.
16
+ */
7
17
  export function sqrtPriceX64(memeAmount, quoteAmount, memeIsCoinA) {
8
18
  return integerSqrt(ratioQ128(memeAmount, quoteAmount, memeIsCoinA));
9
19
  }
10
20
  /**
11
- * Mirrors `migration_math::auto_lp_fixed_side`, which Bluefin auto-LP uses to
21
+ * Mirrors `migration::is_seedable_price`: whether Cetus and Bluefin can both
22
+ * seed a full-range pool at `sqrtPriceX64`, within
23
+ * `[2 * MIN_SQRT_PRICE_X64, MAX_SQRT_PRICE_X64 / 2]` (the upper bound rounds
24
+ * down).
25
+ */
26
+ export function isSeedablePrice(sqrtPriceX64) {
27
+ requireU128("sqrtPriceX64", sqrtPriceX64);
28
+ return (sqrtPriceX64 >= MIN_SQRT_PRICE_X64 * 2n &&
29
+ sqrtPriceX64 <= MAX_SQRT_PRICE_X64 / 2n);
30
+ }
31
+ /**
32
+ * Mirrors `blast_migrators::bluefin`'s `auto_lp_fixed_side`, which Bluefin auto-LP uses to
12
33
  * choose the fixed side from the pool's and the position's Q64.64 sqrt prices.
13
34
  * Returns `{ fixA, amount }`; a zero amount means nothing is added now.
14
35
  * Divisions round down except the other side's requirement, which rounds up.
@@ -40,10 +61,17 @@ export function autoLpFixedSide(sqrtLower, sqrtPrice, sqrtUpper, amountA, amount
40
61
  return { fixA: true, amount: 0n };
41
62
  }
42
63
  function ratioQ128(memeAmount, quoteAmount, memeIsCoinA) {
43
- requirePositiveU64("memeAmount", memeAmount);
44
- requirePositiveU64("quoteAmount", quoteAmount);
45
- const numerator = memeIsCoinA ? quoteAmount : memeAmount;
46
- const denominator = memeIsCoinA ? memeAmount : quoteAmount;
64
+ // Move divides by the coin-A side (it aborts at zero) and allows a zero
65
+ // numerator, whose price is 0 and not seedable.
66
+ const [numerator, denominator] = memeIsCoinA
67
+ ? [
68
+ requireU64("quoteAmount", quoteAmount),
69
+ requirePositiveU64("memeAmount", memeAmount),
70
+ ]
71
+ : [
72
+ requireU64("memeAmount", memeAmount),
73
+ requirePositiveU64("quoteAmount", quoteAmount),
74
+ ];
47
75
  return (numerator << 128n) / denominator;
48
76
  }
49
77
  function integerSqrt(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"migration-math.js","sourceRoot":"","sources":["../src/migration-math.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-math.js","sourceRoot":"","sources":["../src/migration-math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { FeeSplit } from "./fee-split.ts";
2
+ /**
3
+ * `blast_core::migration::ResidualPolicy`: migration residuals the pool does
4
+ * not take are paid to Blast (`Protocol`) or held for the owner (`Owner`).
5
+ * `VenueTicket`, `Migration` and `OwnerProof` have no abilities: they exist
6
+ * only inside one PTB, as transaction results, and have no BCS here.
7
+ */
8
+ export type ResidualPolicy = "Protocol" | "Owner";
9
+ export declare const residualPolicyBcs: import("@mysten/sui/bcs").BcsType<ResidualPolicy, ResidualPolicy, "ResidualPolicy">;
10
+ /**
11
+ * `blast_core::migration::VaultTerms`: what a vault snapshots from the sale
12
+ * that sealed its terms. `origin` is the launch or presale ID and
13
+ * `packageWitness` the original type of the product's package witness.
14
+ */
15
+ export type VaultTerms = {
16
+ origin: string;
17
+ packageWitness: string;
18
+ feeSplit: FeeSplit;
19
+ protocolMemeBps: bigint;
20
+ protocolQuoteBps: bigint;
21
+ partnerId: string | null;
22
+ residuals: ResidualPolicy;
23
+ };
24
+ export declare const vaultTermsBcs: import("@mysten/sui/bcs").BcsType<VaultTerms, VaultTerms, string>;
25
+ //# sourceMappingURL=migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../src/migration.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,CAAC;AAElD,eAAO,MAAM,iBAAiB,qFAQ1B,CAAC;AAEL;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,aAAa,mEA6BtB,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { bcs } from "@mysten/sui/bcs";
2
+ import { moveTypeNameBcs, suiObjectIdBcs } from "./bcs.js";
3
+ import { bpsBcs } from "./bps.js";
4
+ import { feeSplitBcs } from "./fee-split.js";
5
+ export const residualPolicyBcs = bcs
6
+ .enum("ResidualPolicy", { Protocol: null, Owner: null })
7
+ .transform({
8
+ input: (policy) => policy === "Protocol"
9
+ ? { Protocol: true }
10
+ : { Owner: true },
11
+ output: (policy) => policy.$kind,
12
+ });
13
+ export const vaultTermsBcs = bcs
14
+ .struct("VaultTerms", {
15
+ origin: suiObjectIdBcs,
16
+ package_witness: moveTypeNameBcs,
17
+ fee_split: feeSplitBcs,
18
+ protocol_meme_bps: bpsBcs,
19
+ protocol_quote_bps: bpsBcs,
20
+ partner_id: bcs.option(suiObjectIdBcs),
21
+ residuals: residualPolicyBcs,
22
+ })
23
+ .transform({
24
+ input: (terms) => ({
25
+ origin: terms.origin,
26
+ package_witness: terms.packageWitness,
27
+ fee_split: terms.feeSplit,
28
+ protocol_meme_bps: terms.protocolMemeBps,
29
+ protocol_quote_bps: terms.protocolQuoteBps,
30
+ partner_id: terms.partnerId,
31
+ residuals: terms.residuals,
32
+ }),
33
+ output: (terms) => ({
34
+ origin: terms.origin,
35
+ packageWitness: terms.package_witness,
36
+ feeSplit: terms.fee_split,
37
+ protocolMemeBps: terms.protocol_meme_bps,
38
+ protocolQuoteBps: terms.protocol_quote_bps,
39
+ partnerId: terms.partner_id,
40
+ residuals: terms.residuals,
41
+ }),
42
+ });
43
+ //# sourceMappingURL=migration.js.map