@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/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
|
package/dist/bps.js.map
ADDED
|
@@ -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
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
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":"
|
|
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
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
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
|
|
188
|
+
const symbolIdentifier = normalizedSymbol.toUpperCase().replaceAll(" ", "_");
|
|
134
189
|
const moduleName = requestedModuleName ?? normalizedSymbol.toLowerCase().replaceAll(" ", "_");
|
|
135
|
-
if (!/^[A-Z][A-Z0-9_]*$/.test(
|
|
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":"AAAA,OAAO,oBAAoB,EAAE,EAC3B,WAAW,GACZ,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AA+
|
|
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"}
|