@interest-protocol/blast-admin-sdk 0.0.0-stage → 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/README.md +8 -2
- package/dist/aborts.d.ts +10 -0
- package/dist/aborts.d.ts.map +1 -0
- package/dist/aborts.js +40 -0
- package/dist/aborts.js.map +1 -0
- package/dist/events.d.ts +392 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +365 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/reducer.d.ts +55 -0
- package/dist/reducer.d.ts.map +1 -0
- package/dist/reducer.js +161 -0
- package/dist/reducer.js.map +1 -0
- package/dist/state.d.ts +234 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +245 -0
- package/dist/state.js.map +1 -0
- package/dist/transactions.d.ts +146 -0
- package/dist/transactions.d.ts.map +1 -0
- package/dist/transactions.js +292 -0
- package/dist/transactions.js.map +1 -0
- package/package.json +59 -4
- package/src/aborts.ts +43 -0
- package/src/events.ts +650 -0
- package/src/index.ts +5 -0
- package/src/reducer.ts +239 -0
- package/src/state.ts +422 -0
- package/src/transactions.ts +439 -0
package/dist/events.js
ADDED
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
import { addressBcs, delayedChangeBcs, delayedMapChangeBcs, delayedSetChangeBcs, moveTypeNameBcs, suiObjectIdBcs, u64Bcs, unitKeyBcs, } from "@interest-protocol/blast-core/bcs";
|
|
2
|
+
import { normalizeSuiEventPosition, suiEventId, } from "@interest-protocol/blast-core/events";
|
|
3
|
+
import { bcs } from "@mysten/sui/bcs";
|
|
4
|
+
import { normalizeStructTag, normalizeSuiAddress, parseStructTag, } from "@mysten/sui/utils";
|
|
5
|
+
import { upgradeActionBcs } from "./state.js";
|
|
6
|
+
const roles = bcs.vector(moveTypeNameBcs);
|
|
7
|
+
/**
|
|
8
|
+
* The `blast_admin::blast_admin_events` the ACL emits, in Move field order.
|
|
9
|
+
* Package version and administration facts use packageAdministrationEventBcs;
|
|
10
|
+
* the super admin transfer's lifecycle uses the `delayed` events under
|
|
11
|
+
* `aclDelayedKeys`.
|
|
12
|
+
*/
|
|
13
|
+
export const aclEventBcs = {
|
|
14
|
+
AdminGranted: bcs.struct("AdminGranted", {
|
|
15
|
+
admin_cap_id: suiObjectIdBcs,
|
|
16
|
+
recipient: addressBcs,
|
|
17
|
+
}),
|
|
18
|
+
AdminRevoked: bcs.struct("AdminRevoked", {
|
|
19
|
+
admin_cap_id: suiObjectIdBcs,
|
|
20
|
+
roles,
|
|
21
|
+
}),
|
|
22
|
+
AdminRoleGranted: bcs.struct("AdminRoleGranted", {
|
|
23
|
+
admin_cap_id: suiObjectIdBcs,
|
|
24
|
+
role: moveTypeNameBcs,
|
|
25
|
+
}),
|
|
26
|
+
AdminRoleRevoked: bcs.struct("AdminRoleRevoked", {
|
|
27
|
+
admin_cap_id: suiObjectIdBcs,
|
|
28
|
+
role: moveTypeNameBcs,
|
|
29
|
+
}),
|
|
30
|
+
AdminDestroyed: bcs.struct("AdminDestroyed", {
|
|
31
|
+
admin_cap_id: suiObjectIdBcs,
|
|
32
|
+
roles,
|
|
33
|
+
was_active: bcs.bool(),
|
|
34
|
+
}),
|
|
35
|
+
SuperAdminTransferred: bcs.struct("SuperAdminTransferred", {
|
|
36
|
+
previous_super_admin_cap_id: suiObjectIdBcs,
|
|
37
|
+
new_super_admin_cap_id: suiObjectIdBcs,
|
|
38
|
+
recipient: addressBcs,
|
|
39
|
+
}),
|
|
40
|
+
SuperAdminCapDestroyed: bcs.struct("SuperAdminCapDestroyed", {
|
|
41
|
+
super_admin_cap_id: suiObjectIdBcs,
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Decodes one `<adminPackageId>::blast_admin_events::<Kind>` ACL event. Its
|
|
46
|
+
* `role` names are `type_name::with_defining_ids` in Move; for the immutable
|
|
47
|
+
* v1 `blast_admin` and `blast_core` they equal the original-ID names.
|
|
48
|
+
*/
|
|
49
|
+
export function decodeAclEvent(event, adminPackageId) {
|
|
50
|
+
const tag = parseStructTag(event.eventType);
|
|
51
|
+
if (tag.address !== normalizeSuiAddress(adminPackageId) ||
|
|
52
|
+
tag.module !== "blast_admin_events" ||
|
|
53
|
+
tag.typeParams.length > 0 ||
|
|
54
|
+
!Object.hasOwn(aclEventBcs, tag.name)) {
|
|
55
|
+
throw new TypeError(`unexpected ACL event type ${event.eventType}`);
|
|
56
|
+
}
|
|
57
|
+
const kind = tag.name;
|
|
58
|
+
return {
|
|
59
|
+
source: "admin",
|
|
60
|
+
kind,
|
|
61
|
+
payload: aclEventBcs[kind].parse(event.bcs),
|
|
62
|
+
sender: normalizeSuiAddress(event.sender),
|
|
63
|
+
position: normalizeSuiEventPosition(event),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function aclEventId(event) {
|
|
67
|
+
return suiEventId(event.position);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The eight `blast_admin_events` structs generic over a package's OTW, in
|
|
71
|
+
* Move field order. The OTW is only in the event type.
|
|
72
|
+
*/
|
|
73
|
+
export const packageAdministrationEventBcs = {
|
|
74
|
+
VersionAdvanced: bcs.struct("VersionAdvanced", {
|
|
75
|
+
container_id: suiObjectIdBcs,
|
|
76
|
+
original_package_id: addressBcs,
|
|
77
|
+
previous_version: u64Bcs,
|
|
78
|
+
new_version: u64Bcs,
|
|
79
|
+
}),
|
|
80
|
+
PackageVersionCreated: bcs.struct("PackageVersionCreated", {
|
|
81
|
+
package_version_id: suiObjectIdBcs,
|
|
82
|
+
package_admin_id: suiObjectIdBcs,
|
|
83
|
+
valid_pause_bits: bcs.u8(),
|
|
84
|
+
paused: bcs.u8(),
|
|
85
|
+
package_witness: moveTypeNameBcs,
|
|
86
|
+
version: u64Bcs,
|
|
87
|
+
}),
|
|
88
|
+
PackageAdminCreated: bcs.struct("PackageAdminCreated", {
|
|
89
|
+
package_admin_id: suiObjectIdBcs,
|
|
90
|
+
publisher_id: suiObjectIdBcs,
|
|
91
|
+
upgrade_cap_id: suiObjectIdBcs,
|
|
92
|
+
original_package_id: suiObjectIdBcs,
|
|
93
|
+
upgrade_cap_version: u64Bcs,
|
|
94
|
+
policy: bcs.u8(),
|
|
95
|
+
}),
|
|
96
|
+
UpgradeAuthorized: bcs.struct("UpgradeAuthorized", {
|
|
97
|
+
package_admin_id: suiObjectIdBcs,
|
|
98
|
+
upgrade_cap_id: suiObjectIdBcs,
|
|
99
|
+
current_package_id: suiObjectIdBcs,
|
|
100
|
+
upgrade_cap_version: u64Bcs,
|
|
101
|
+
policy: bcs.u8(),
|
|
102
|
+
digest: bcs.vector(bcs.u8()),
|
|
103
|
+
}),
|
|
104
|
+
UpgradeCommitted: bcs.struct("UpgradeCommitted", {
|
|
105
|
+
package_admin_id: suiObjectIdBcs,
|
|
106
|
+
upgrade_cap_id: suiObjectIdBcs,
|
|
107
|
+
original_package_id: addressBcs,
|
|
108
|
+
new_package_id: suiObjectIdBcs,
|
|
109
|
+
previous_upgrade_cap_version: u64Bcs,
|
|
110
|
+
new_upgrade_cap_version: u64Bcs,
|
|
111
|
+
}),
|
|
112
|
+
UpgradeCapDestroyed: bcs.struct("UpgradeCapDestroyed", {
|
|
113
|
+
package_admin_id: suiObjectIdBcs,
|
|
114
|
+
upgrade_cap_id: suiObjectIdBcs,
|
|
115
|
+
original_package_id: addressBcs,
|
|
116
|
+
final_upgrade_cap_version: u64Bcs,
|
|
117
|
+
final_policy: bcs.u8(),
|
|
118
|
+
}),
|
|
119
|
+
Paused: bcs.struct("Paused", {
|
|
120
|
+
package_version_id: suiObjectIdBcs,
|
|
121
|
+
bits: bcs.u8(),
|
|
122
|
+
paused: bcs.u8(),
|
|
123
|
+
}),
|
|
124
|
+
Unpaused: bcs.struct("Unpaused", {
|
|
125
|
+
package_version_id: suiObjectIdBcs,
|
|
126
|
+
bits: bcs.u8(),
|
|
127
|
+
paused: bcs.u8(),
|
|
128
|
+
}),
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Decodes one `<adminPackageId>::blast_admin_events::<Kind><OTW>` of any package.
|
|
132
|
+
* Move records `package_witness` with `type_name::with_defining_ids`; each
|
|
133
|
+
* product defines its `PackageWitness` in its first version, so the defining
|
|
134
|
+
* ID is the original ID the SDK compares against. The event type names the
|
|
135
|
+
* original v1 `blast_admin`.
|
|
136
|
+
*/
|
|
137
|
+
export function decodePackageAdministrationEvent(event, adminPackageId) {
|
|
138
|
+
const tag = parseStructTag(event.eventType);
|
|
139
|
+
const otw = tag.typeParams[0];
|
|
140
|
+
if (tag.address !== normalizeSuiAddress(adminPackageId) ||
|
|
141
|
+
tag.module !== "blast_admin_events" ||
|
|
142
|
+
tag.typeParams.length !== 1 ||
|
|
143
|
+
otw === undefined ||
|
|
144
|
+
typeof otw === "string" ||
|
|
145
|
+
!Object.hasOwn(packageAdministrationEventBcs, tag.name))
|
|
146
|
+
throw new TypeError(`unexpected package administration event ${event.eventType}`);
|
|
147
|
+
const kind = tag.name;
|
|
148
|
+
return {
|
|
149
|
+
source: "package-administration",
|
|
150
|
+
kind,
|
|
151
|
+
otw: normalizeStructTag(otw),
|
|
152
|
+
payload: packageAdministrationEventBcs[kind].parse(event.bcs),
|
|
153
|
+
sender: normalizeSuiAddress(event.sender),
|
|
154
|
+
position: normalizeSuiEventPosition(event),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Every lifecycle event the `blast_admin` delayed modules emit, generic in the
|
|
159
|
+
* parent's key `K` and the value types: `delayed` (`Delayed*`),
|
|
160
|
+
* `delayed_action` (`Action*`), `delayed_set` (`Set*`, `MemberRemoved`) and
|
|
161
|
+
* `delayed_map` (`Map*`): 21 kinds.
|
|
162
|
+
*/
|
|
163
|
+
export const DELAYED_EVENT_KINDS = [
|
|
164
|
+
"DelayedCreated",
|
|
165
|
+
"DelayedScheduled",
|
|
166
|
+
"DelayedCancelled",
|
|
167
|
+
"DelayedApplied",
|
|
168
|
+
"DelayedDestroyed",
|
|
169
|
+
"ActionCreated",
|
|
170
|
+
"ActionScheduled",
|
|
171
|
+
"ActionCancelled",
|
|
172
|
+
"ActionApplied",
|
|
173
|
+
"ActionDestroyed",
|
|
174
|
+
"SetCreated",
|
|
175
|
+
"SetScheduled",
|
|
176
|
+
"SetCancelled",
|
|
177
|
+
"SetApplied",
|
|
178
|
+
"SetDestroyed",
|
|
179
|
+
"MemberRemoved",
|
|
180
|
+
"MapCreated",
|
|
181
|
+
"MapScheduled",
|
|
182
|
+
"MapCancelled",
|
|
183
|
+
"MapApplied",
|
|
184
|
+
"MapDestroyed",
|
|
185
|
+
];
|
|
186
|
+
const FAMILY_MODULES = {
|
|
187
|
+
setting: "delayed",
|
|
188
|
+
action: "delayed_action",
|
|
189
|
+
set: "delayed_set",
|
|
190
|
+
map: "delayed_map",
|
|
191
|
+
};
|
|
192
|
+
const FAMILY_KINDS = {
|
|
193
|
+
setting: [
|
|
194
|
+
"DelayedCreated",
|
|
195
|
+
"DelayedScheduled",
|
|
196
|
+
"DelayedCancelled",
|
|
197
|
+
"DelayedApplied",
|
|
198
|
+
"DelayedDestroyed",
|
|
199
|
+
],
|
|
200
|
+
action: [
|
|
201
|
+
"ActionCreated",
|
|
202
|
+
"ActionScheduled",
|
|
203
|
+
"ActionCancelled",
|
|
204
|
+
"ActionApplied",
|
|
205
|
+
"ActionDestroyed",
|
|
206
|
+
],
|
|
207
|
+
set: [
|
|
208
|
+
"SetCreated",
|
|
209
|
+
"SetScheduled",
|
|
210
|
+
"SetCancelled",
|
|
211
|
+
"SetApplied",
|
|
212
|
+
"SetDestroyed",
|
|
213
|
+
"MemberRemoved",
|
|
214
|
+
],
|
|
215
|
+
map: [
|
|
216
|
+
"MapCreated",
|
|
217
|
+
"MapScheduled",
|
|
218
|
+
"MapCancelled",
|
|
219
|
+
"MapApplied",
|
|
220
|
+
"MapDestroyed",
|
|
221
|
+
],
|
|
222
|
+
};
|
|
223
|
+
/** The `blast_admin` module that emits `kind`. */
|
|
224
|
+
export function delayedEventModule(kind) {
|
|
225
|
+
const family = Object.keys(FAMILY_KINDS).find((candidate) => FAMILY_KINDS[candidate].includes(kind));
|
|
226
|
+
if (family === undefined)
|
|
227
|
+
throw new TypeError(`unknown delayed event ${kind}`);
|
|
228
|
+
return FAMILY_MODULES[family];
|
|
229
|
+
}
|
|
230
|
+
/** Whether `eventType` is a lifecycle event of `adminPackageId`'s delayed modules. */
|
|
231
|
+
export function isDelayedEventType(eventType, adminPackageId) {
|
|
232
|
+
const tag = parseStructTag(eventType);
|
|
233
|
+
return (tag.address === normalizeSuiAddress(adminPackageId) &&
|
|
234
|
+
Object.values(FAMILY_MODULES).includes(tag.module));
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Decodes one `blast_admin` delayed event whose key belongs to `packageId`
|
|
238
|
+
* (the consumer's original package) and is listed in `keys`.
|
|
239
|
+
*/
|
|
240
|
+
export function decodeDelayedEvent(event, identity) {
|
|
241
|
+
const tag = parseStructTag(event.eventType);
|
|
242
|
+
const kind = tag.name;
|
|
243
|
+
const keyTag = tag.typeParams[0];
|
|
244
|
+
if (tag.address !== normalizeSuiAddress(identity.adminPackageId) ||
|
|
245
|
+
!DELAYED_EVENT_KINDS.includes(kind) ||
|
|
246
|
+
keyTag === undefined ||
|
|
247
|
+
typeof keyTag === "string")
|
|
248
|
+
throw new TypeError(`unexpected delayed event type ${event.eventType}`);
|
|
249
|
+
const packageId = normalizeSuiAddress(identity.packageId);
|
|
250
|
+
const keyType = normalizeStructTag(keyTag);
|
|
251
|
+
const entry = Object.entries(identity.keys).find(([, spec]) => normalizeStructTag(`${packageId}::${spec.key}`) === keyType);
|
|
252
|
+
if (entry === undefined)
|
|
253
|
+
throw new TypeError(`unexpected delayed event key ${event.eventType}`);
|
|
254
|
+
const [name, spec] = entry;
|
|
255
|
+
const local = (type) => type.replaceAll("{package}", packageId);
|
|
256
|
+
const valueTypes = spec.family === "map"
|
|
257
|
+
? [local(spec.entryType ?? ""), local(spec.valueType)]
|
|
258
|
+
: [local(spec.valueType)];
|
|
259
|
+
if (!FAMILY_KINDS[spec.family].includes(kind) ||
|
|
260
|
+
normalizeStructTag(event.eventType) !==
|
|
261
|
+
normalizeStructTag(`${tag.address}::${FAMILY_MODULES[spec.family]}::${kind}<${[keyType, ...valueTypes].join(", ")}>`))
|
|
262
|
+
throw new TypeError(`unexpected delayed event key ${event.eventType}`);
|
|
263
|
+
return {
|
|
264
|
+
source: "delayed",
|
|
265
|
+
kind,
|
|
266
|
+
name,
|
|
267
|
+
payload: delayedEventBcs(kind, spec).parse(event.bcs),
|
|
268
|
+
sender: normalizeSuiAddress(event.sender),
|
|
269
|
+
position: normalizeSuiEventPosition(event),
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/** BCS of one delayed event under `spec`, in Move field order. */
|
|
273
|
+
export function delayedEventBcs(kind, spec) {
|
|
274
|
+
// Every decoder in a spec is a full BcsType; the spec only promises `parse`.
|
|
275
|
+
const value = spec.valueBcs;
|
|
276
|
+
const head = {
|
|
277
|
+
parent: suiObjectIdBcs,
|
|
278
|
+
key: spec.keyBcs,
|
|
279
|
+
};
|
|
280
|
+
const timing = { delay_ms: u64Bcs, ready_at_ms: u64Bcs };
|
|
281
|
+
const change = delayedChangeBcs(value);
|
|
282
|
+
const setChange = delayedSetChangeBcs(value);
|
|
283
|
+
const mapChange = spec.entryBcs
|
|
284
|
+
? delayedMapChangeBcs(spec.entryBcs, value)
|
|
285
|
+
: change;
|
|
286
|
+
const fields = {
|
|
287
|
+
DelayedCreated: { value, delay_ms: u64Bcs },
|
|
288
|
+
DelayedScheduled: { value, ...timing },
|
|
289
|
+
DelayedCancelled: { value, ...timing },
|
|
290
|
+
DelayedApplied: { previous_value: value, value, delay_ms: u64Bcs },
|
|
291
|
+
DelayedDestroyed: {},
|
|
292
|
+
ActionCreated: { delay_ms: u64Bcs },
|
|
293
|
+
ActionScheduled: { change, ...timing },
|
|
294
|
+
ActionCancelled: { change, ...timing },
|
|
295
|
+
ActionApplied: { change, delay_ms: u64Bcs },
|
|
296
|
+
ActionDestroyed: {},
|
|
297
|
+
SetCreated: { delay_ms: u64Bcs },
|
|
298
|
+
SetScheduled: { change: setChange, ...timing },
|
|
299
|
+
SetCancelled: { change: setChange, ...timing },
|
|
300
|
+
SetApplied: { change: setChange, delay_ms: u64Bcs },
|
|
301
|
+
SetDestroyed: {},
|
|
302
|
+
MemberRemoved: { member: value },
|
|
303
|
+
MapCreated: { delay_ms: u64Bcs },
|
|
304
|
+
MapScheduled: { change: mapChange, ...timing },
|
|
305
|
+
MapCancelled: { change: mapChange, ...timing },
|
|
306
|
+
MapApplied: { change: mapChange, delay_ms: u64Bcs },
|
|
307
|
+
MapDestroyed: {},
|
|
308
|
+
}[kind];
|
|
309
|
+
return bcs.struct(kind, { ...head, ...fields });
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* `package_admin::UpgradeKey<otw>`: one package's upgrade and immutability
|
|
313
|
+
* slot, `DelayedAction<UpgradeKey<OTW>, UpgradeAction>`. The key lives in the
|
|
314
|
+
* admin package, so decode with `packageId` = the admin package ID.
|
|
315
|
+
*/
|
|
316
|
+
export function upgradeDelayedKey(otw) {
|
|
317
|
+
return {
|
|
318
|
+
key: `package_admin::UpgradeKey<${normalizeStructTag(otw)}>`,
|
|
319
|
+
family: "action",
|
|
320
|
+
keyBcs: unitKeyBcs,
|
|
321
|
+
valueBcs: upgradeActionBcs,
|
|
322
|
+
valueType: "{package}::package_admin::UpgradeAction",
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
/** Decodes a `delayed_action` event keyed by any package's `UpgradeKey<OTW>`. */
|
|
326
|
+
export function decodeUpgradeDelayedEvent(event, adminPackageId) {
|
|
327
|
+
const keyTag = parseStructTag(event.eventType).typeParams[0];
|
|
328
|
+
const otw = keyTag !== undefined && typeof keyTag !== "string"
|
|
329
|
+
? keyTag.typeParams[0]
|
|
330
|
+
: undefined;
|
|
331
|
+
if (keyTag === undefined ||
|
|
332
|
+
typeof keyTag === "string" ||
|
|
333
|
+
keyTag.address !== normalizeSuiAddress(adminPackageId) ||
|
|
334
|
+
keyTag.module !== "package_admin" ||
|
|
335
|
+
keyTag.name !== "UpgradeKey" ||
|
|
336
|
+
otw === undefined ||
|
|
337
|
+
typeof otw === "string")
|
|
338
|
+
throw new TypeError(`unexpected upgrade delayed event ${event.eventType}`);
|
|
339
|
+
const type = normalizeStructTag(otw);
|
|
340
|
+
const decoded = decodeDelayedEvent(event, {
|
|
341
|
+
adminPackageId,
|
|
342
|
+
packageId: adminPackageId,
|
|
343
|
+
keys: { Upgrade: upgradeDelayedKey(type) },
|
|
344
|
+
});
|
|
345
|
+
return { ...decoded, otw: type };
|
|
346
|
+
}
|
|
347
|
+
/** The ACL's one key: the super admin transfer slot, `DelayedAction<SuperAdminTransfer, address>`. */
|
|
348
|
+
export const aclDelayedKeys = {
|
|
349
|
+
SuperAdminTransfer: {
|
|
350
|
+
key: "blast_acl::SuperAdminTransfer",
|
|
351
|
+
family: "action",
|
|
352
|
+
keyBcs: unitKeyBcs,
|
|
353
|
+
valueBcs: addressBcs,
|
|
354
|
+
valueType: "address",
|
|
355
|
+
},
|
|
356
|
+
};
|
|
357
|
+
/** Decodes the ACL's super admin transfer lifecycle. */
|
|
358
|
+
export function decodeAclDelayedEvent(event, adminPackageId) {
|
|
359
|
+
return decodeDelayedEvent(event, {
|
|
360
|
+
adminPackageId,
|
|
361
|
+
packageId: adminPackageId,
|
|
362
|
+
keys: aclDelayedKeys,
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { DelayedChange } from "@interest-protocol/blast-core/bcs";
|
|
2
|
+
import type { AclEventKind, DecodedAclDelayedEvent, DecodedAclEvent, DecodedPackageAdministrationEvent, DecodedUpgradeDelayedEvent } from "./events.ts";
|
|
3
|
+
import type { PendingSuperAdmin, UpgradeAction } from "./state.ts";
|
|
4
|
+
/**
|
|
5
|
+
* The ACL rebuilt from its events. Its `init` emits nothing, so
|
|
6
|
+
* `superAdminCapId` stays null until the first accepted transfer; the publish
|
|
7
|
+
* effects name the first root. `admins` matches `getAcl(...).admins` once every
|
|
8
|
+
* event is applied.
|
|
9
|
+
*/
|
|
10
|
+
export type AclProjection = {
|
|
11
|
+
appliedEventIds: Readonly<Record<string, true>>;
|
|
12
|
+
/** ACL events by kind; super admin transfer lifecycle events are not counted. */
|
|
13
|
+
eventCounts: Readonly<Record<AclEventKind, number>>;
|
|
14
|
+
superAdminCapId: string | null;
|
|
15
|
+
admins: Readonly<Record<string, readonly string[]>>;
|
|
16
|
+
pendingSuperAdmin: PendingSuperAdmin | null;
|
|
17
|
+
};
|
|
18
|
+
export declare function createAclProjection(): AclProjection;
|
|
19
|
+
/**
|
|
20
|
+
* Applies one event once; replaying an applied event returns `state` unchanged.
|
|
21
|
+
* The transfer's `delayed` events come from `decodeAclDelayedEvent`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function reduceAclEvent(state: AclProjection, event: DecodedAclEvent | DecodedAclDelayedEvent): AclProjection;
|
|
24
|
+
/** One package's administration, rebuilt from its `blast_admin` events. */
|
|
25
|
+
export type PackageAdministration = {
|
|
26
|
+
packageVersionId: string | null;
|
|
27
|
+
packageAdminId: string | null;
|
|
28
|
+
/** The package witness, defining-ID form, pinned at publication. */
|
|
29
|
+
packageWitness: string | null;
|
|
30
|
+
version: bigint | null;
|
|
31
|
+
validPauseBits: number | null;
|
|
32
|
+
paused: number | null;
|
|
33
|
+
upgradeCapId: string | null;
|
|
34
|
+
upgradeCapVersion: bigint | null;
|
|
35
|
+
policy: number | null;
|
|
36
|
+
/** True once `make_immutable` destroyed the UpgradeCap. */
|
|
37
|
+
immutable: boolean;
|
|
38
|
+
/** The applied delay of upgrade actions; null before `ActionCreated`. */
|
|
39
|
+
upgradeDelayMs: bigint | null;
|
|
40
|
+
/** The scheduled upgrade action or delay change, if any. */
|
|
41
|
+
pendingUpgrade: {
|
|
42
|
+
change: DelayedChange<UpgradeAction>;
|
|
43
|
+
delayMs: bigint;
|
|
44
|
+
readyAtMs: bigint;
|
|
45
|
+
} | null;
|
|
46
|
+
};
|
|
47
|
+
/** Every package's administration by OTW type, from version, pause, upgrade and upgrade-slot events. */
|
|
48
|
+
export type PackageAdministrationProjection = {
|
|
49
|
+
appliedEventIds: Readonly<Record<string, true>>;
|
|
50
|
+
packages: Readonly<Record<string, PackageAdministration>>;
|
|
51
|
+
};
|
|
52
|
+
export declare function createPackageAdministrationProjection(): PackageAdministrationProjection;
|
|
53
|
+
/** Applies one event once; replaying an applied event returns `state` unchanged. */
|
|
54
|
+
export declare function reducePackageAdministrationEvent(state: PackageAdministrationProjection, event: DecodedPackageAdministrationEvent | DecodedUpgradeDelayedEvent): PackageAdministrationProjection;
|
|
55
|
+
//# sourceMappingURL=reducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,eAAe,EACf,iCAAiC,EACjC,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,iFAAiF;IACjF,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IACpD,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,wBAAgB,mBAAmB,IAAI,aAAa,CAUnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,eAAe,GAAG,sBAAsB,GAC9C,aAAa,CA4Df;AAcD,2EAA2E;AAC3E,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oEAAoE;IACpE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4DAA4D;IAC5D,cAAc,EAAE;QACd,MAAM,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;QACrC,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,wGAAwG;AACxG,MAAM,MAAM,+BAA+B,GAAG;IAC5C,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,CAAC;CAC3D,CAAC;AAEF,wBAAgB,qCAAqC,IAAI,+BAA+B,CAEvF;AAiBD,oFAAoF;AACpF,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,+BAA+B,EACtC,KAAK,EAAE,iCAAiC,GAAG,0BAA0B,GACpE,+BAA+B,CAWjC"}
|
package/dist/reducer.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { suiEventId } from "@interest-protocol/blast-core/events";
|
|
2
|
+
import { aclEventBcs, aclEventId } from "./events.js";
|
|
3
|
+
export function createAclProjection() {
|
|
4
|
+
return {
|
|
5
|
+
appliedEventIds: {},
|
|
6
|
+
eventCounts: Object.fromEntries(Object.keys(aclEventBcs).map((kind) => [kind, 0])),
|
|
7
|
+
superAdminCapId: null,
|
|
8
|
+
admins: {},
|
|
9
|
+
pendingSuperAdmin: null,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Applies one event once; replaying an applied event returns `state` unchanged.
|
|
14
|
+
* The transfer's `delayed` events come from `decodeAclDelayedEvent`.
|
|
15
|
+
*/
|
|
16
|
+
export function reduceAclEvent(state, event) {
|
|
17
|
+
const eventId = aclEventId(event);
|
|
18
|
+
if (state.appliedEventIds[eventId])
|
|
19
|
+
return state;
|
|
20
|
+
if (event.source === "delayed") {
|
|
21
|
+
const applied = {
|
|
22
|
+
...state,
|
|
23
|
+
appliedEventIds: { ...state.appliedEventIds, [eventId]: true },
|
|
24
|
+
};
|
|
25
|
+
if (event.kind === "ActionScheduled" &&
|
|
26
|
+
event.payload.change.kind === "Action")
|
|
27
|
+
return {
|
|
28
|
+
...applied,
|
|
29
|
+
pendingSuperAdmin: {
|
|
30
|
+
recipient: event.payload.change.action,
|
|
31
|
+
readyAtMs: event.payload.ready_at_ms,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
if (event.kind === "ActionCancelled" || event.kind === "ActionApplied")
|
|
35
|
+
return { ...applied, pendingSuperAdmin: null };
|
|
36
|
+
return applied;
|
|
37
|
+
}
|
|
38
|
+
const next = {
|
|
39
|
+
...state,
|
|
40
|
+
appliedEventIds: { ...state.appliedEventIds, [eventId]: true },
|
|
41
|
+
eventCounts: {
|
|
42
|
+
...state.eventCounts,
|
|
43
|
+
[event.kind]: state.eventCounts[event.kind] + 1,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
switch (event.kind) {
|
|
47
|
+
case "AdminGranted":
|
|
48
|
+
return withRoles(next, event.payload.admin_cap_id, []);
|
|
49
|
+
case "AdminRevoked":
|
|
50
|
+
case "AdminDestroyed":
|
|
51
|
+
return withRoles(next, event.payload.admin_cap_id, null);
|
|
52
|
+
case "AdminRoleGranted": {
|
|
53
|
+
const { admin_cap_id, role } = event.payload;
|
|
54
|
+
const roles = next.admins[admin_cap_id] ?? [];
|
|
55
|
+
return withRoles(next, admin_cap_id, [...roles, role]);
|
|
56
|
+
}
|
|
57
|
+
case "AdminRoleRevoked": {
|
|
58
|
+
const { admin_cap_id, role } = event.payload;
|
|
59
|
+
const roles = next.admins[admin_cap_id] ?? [];
|
|
60
|
+
return withRoles(next, admin_cap_id, roles.filter((held) => held !== role));
|
|
61
|
+
}
|
|
62
|
+
case "SuperAdminTransferred":
|
|
63
|
+
return {
|
|
64
|
+
...next,
|
|
65
|
+
superAdminCapId: event.payload.new_super_admin_cap_id,
|
|
66
|
+
pendingSuperAdmin: null,
|
|
67
|
+
};
|
|
68
|
+
case "SuperAdminCapDestroyed":
|
|
69
|
+
return next;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function withRoles(state, adminCapId, roles) {
|
|
73
|
+
const { [adminCapId]: _, ...admins } = state.admins;
|
|
74
|
+
return {
|
|
75
|
+
...state,
|
|
76
|
+
admins: roles === null ? admins : { ...admins, [adminCapId]: roles },
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function createPackageAdministrationProjection() {
|
|
80
|
+
return { appliedEventIds: {}, packages: {} };
|
|
81
|
+
}
|
|
82
|
+
const EMPTY_ADMINISTRATION = {
|
|
83
|
+
packageVersionId: null,
|
|
84
|
+
packageAdminId: null,
|
|
85
|
+
packageWitness: null,
|
|
86
|
+
version: null,
|
|
87
|
+
validPauseBits: null,
|
|
88
|
+
paused: null,
|
|
89
|
+
upgradeCapId: null,
|
|
90
|
+
upgradeCapVersion: null,
|
|
91
|
+
policy: null,
|
|
92
|
+
immutable: false,
|
|
93
|
+
upgradeDelayMs: null,
|
|
94
|
+
pendingUpgrade: null,
|
|
95
|
+
};
|
|
96
|
+
/** Applies one event once; replaying an applied event returns `state` unchanged. */
|
|
97
|
+
export function reducePackageAdministrationEvent(state, event) {
|
|
98
|
+
const eventId = suiEventId(event.position);
|
|
99
|
+
if (state.appliedEventIds[eventId])
|
|
100
|
+
return state;
|
|
101
|
+
const current = state.packages[event.otw] ?? EMPTY_ADMINISTRATION;
|
|
102
|
+
return {
|
|
103
|
+
appliedEventIds: { ...state.appliedEventIds, [eventId]: true },
|
|
104
|
+
packages: {
|
|
105
|
+
...state.packages,
|
|
106
|
+
[event.otw]: { ...current, ...administrationChange(event) },
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function administrationChange(event) {
|
|
111
|
+
if (event.source === "delayed") {
|
|
112
|
+
switch (event.kind) {
|
|
113
|
+
case "ActionCreated":
|
|
114
|
+
return { upgradeDelayMs: event.payload.delay_ms };
|
|
115
|
+
case "ActionScheduled":
|
|
116
|
+
return {
|
|
117
|
+
pendingUpgrade: {
|
|
118
|
+
change: event.payload.change,
|
|
119
|
+
delayMs: event.payload.delay_ms,
|
|
120
|
+
readyAtMs: event.payload.ready_at_ms,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
case "ActionCancelled":
|
|
124
|
+
return { pendingUpgrade: null };
|
|
125
|
+
case "ActionApplied":
|
|
126
|
+
return { pendingUpgrade: null, upgradeDelayMs: event.payload.delay_ms };
|
|
127
|
+
case "ActionDestroyed":
|
|
128
|
+
return {};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
switch (event.kind) {
|
|
132
|
+
case "PackageVersionCreated":
|
|
133
|
+
return {
|
|
134
|
+
packageVersionId: event.payload.package_version_id,
|
|
135
|
+
packageAdminId: event.payload.package_admin_id,
|
|
136
|
+
packageWitness: event.payload.package_witness,
|
|
137
|
+
version: event.payload.version,
|
|
138
|
+
validPauseBits: event.payload.valid_pause_bits,
|
|
139
|
+
paused: event.payload.paused,
|
|
140
|
+
};
|
|
141
|
+
case "PackageAdminCreated":
|
|
142
|
+
return {
|
|
143
|
+
packageAdminId: event.payload.package_admin_id,
|
|
144
|
+
upgradeCapId: event.payload.upgrade_cap_id,
|
|
145
|
+
upgradeCapVersion: event.payload.upgrade_cap_version,
|
|
146
|
+
policy: event.payload.policy,
|
|
147
|
+
};
|
|
148
|
+
case "VersionAdvanced":
|
|
149
|
+
return { version: event.payload.new_version };
|
|
150
|
+
case "Paused":
|
|
151
|
+
case "Unpaused":
|
|
152
|
+
return { paused: event.payload.paused };
|
|
153
|
+
case "UpgradeAuthorized":
|
|
154
|
+
return {};
|
|
155
|
+
case "UpgradeCommitted":
|
|
156
|
+
return { upgradeCapVersion: event.payload.new_upgrade_cap_version };
|
|
157
|
+
case "UpgradeCapDestroyed":
|
|
158
|
+
return { immutable: true, upgradeCapId: null };
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=reducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../src/reducer.ts"],"names":[],"mappings":"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"}
|