@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.
- package/dist/aborts.d.ts +13 -0
- package/dist/aborts.d.ts.map +1 -0
- package/dist/aborts.js +32 -0
- package/dist/aborts.js.map +1 -0
- package/dist/bcs.d.ts +226 -7
- package/dist/bcs.d.ts.map +1 -1
- package/dist/bcs.js +227 -1
- package/dist/bcs.js.map +1 -1
- package/dist/bps.d.ts +25 -0
- package/dist/bps.d.ts.map +1 -0
- package/dist/bps.js +64 -0
- package/dist/bps.js.map +1 -0
- package/dist/bytecode-template.d.ts +14 -3
- package/dist/bytecode-template.d.ts.map +1 -1
- package/dist/bytecode-template.js +61 -6
- package/dist/bytecode-template.js.map +1 -1
- package/dist/deployment.d.ts +59 -0
- package/dist/deployment.d.ts.map +1 -0
- package/dist/deployment.js +172 -0
- package/dist/deployment.js.map +1 -0
- package/dist/effects.d.ts +69 -0
- package/dist/effects.d.ts.map +1 -0
- package/dist/effects.js +143 -0
- package/dist/effects.js.map +1 -0
- package/dist/fee-split.d.ts +55 -0
- package/dist/fee-split.d.ts.map +1 -0
- package/dist/fee-split.js +69 -0
- package/dist/fee-split.js.map +1 -0
- package/dist/index.d.ts +10 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/integers.d.ts +2 -0
- package/dist/integers.d.ts.map +1 -1
- package/dist/integers.js +8 -0
- package/dist/integers.js.map +1 -1
- package/dist/merkle.d.ts +6 -1
- package/dist/merkle.d.ts.map +1 -1
- package/dist/merkle.js +8 -1
- package/dist/merkle.js.map +1 -1
- package/dist/migration-math.d.ts +13 -2
- package/dist/migration-math.d.ts.map +1 -1
- package/dist/migration-math.js +34 -6
- package/dist/migration-math.js.map +1 -1
- package/dist/migration.d.ts +25 -0
- package/dist/migration.d.ts.map +1 -0
- package/dist/migration.js +43 -0
- package/dist/migration.js.map +1 -0
- package/dist/payout.d.ts +21 -0
- package/dist/payout.d.ts.map +1 -0
- package/dist/payout.js +36 -0
- package/dist/payout.js.map +1 -0
- package/dist/protocol-fees.d.ts +63 -0
- package/dist/protocol-fees.d.ts.map +1 -0
- package/dist/protocol-fees.js +117 -0
- package/dist/protocol-fees.js.map +1 -0
- package/dist/rewards/allocations.d.ts +16 -17
- package/dist/rewards/allocations.d.ts.map +1 -1
- package/dist/rewards/allocations.js +47 -43
- package/dist/rewards/allocations.js.map +1 -1
- package/dist/roles.d.ts +17 -0
- package/dist/roles.d.ts.map +1 -0
- package/dist/roles.js +32 -0
- package/dist/roles.js.map +1 -0
- package/dist/treasury.d.ts +58 -0
- package/dist/treasury.d.ts.map +1 -0
- package/dist/treasury.js +61 -0
- package/dist/treasury.js.map +1 -0
- package/package.json +39 -11
- package/src/aborts.ts +38 -0
- package/src/bcs.ts +374 -1
- package/src/bps.ts +92 -0
- package/src/bytecode-template.ts +78 -6
- package/src/deployment.ts +230 -0
- package/src/effects.ts +247 -0
- package/src/fee-split.ts +103 -0
- package/src/index.ts +10 -1
- package/src/integers.ts +15 -0
- package/src/merkle.ts +11 -1
- package/src/migration-math.ts +38 -6
- package/src/migration.ts +69 -0
- package/src/payout.ts +57 -0
- package/src/protocol-fees.ts +174 -0
- package/src/rewards/allocations.ts +52 -67
- package/src/roles.ts +39 -0
- package/src/treasury.ts +94 -0
- package/dist/rewards/keeper.d.ts +0 -17
- package/dist/rewards/keeper.d.ts.map +0 -1
- package/dist/rewards/keeper.js +0 -21
- package/dist/rewards/keeper.js.map +0 -1
- package/dist/rewards/state.d.ts +0 -55
- package/dist/rewards/state.d.ts.map +0 -1
- package/dist/rewards/state.js +0 -80
- package/dist/rewards/state.js.map +0 -1
- package/dist/timelock.d.ts +0 -15
- package/dist/timelock.d.ts.map +0 -1
- package/dist/timelock.js +0 -30
- package/dist/timelock.js.map +0 -1
- package/src/rewards/keeper.ts +0 -45
- package/src/rewards/state.ts +0 -113
- package/src/timelock.ts +0 -47
package/dist/effects.js
ADDED
|
@@ -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 "./
|
|
22
|
+
export * from "./treasury.ts";
|
|
14
23
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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 "./
|
|
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"}
|
package/dist/integers.d.ts
CHANGED
|
@@ -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. */
|
package/dist/integers.d.ts.map
CHANGED
|
@@ -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);
|
package/dist/integers.js.map
CHANGED
|
@@ -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
|
-
/**
|
|
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
|
package/dist/merkle.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
/**
|
|
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
|
}
|
package/dist/merkle.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/migration-math.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
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 `
|
|
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;
|
|
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"}
|
package/dist/migration-math.js
CHANGED
|
@@ -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
|
-
/**
|
|
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 `
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
const numerator = memeIsCoinA
|
|
46
|
-
|
|
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":"AAAA,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5E,MAAM,GAAG,GAAG,EAAE,IAAI,GAAG,CAAC;AACtB,MAAM,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC;AACxB,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,
|
|
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
|