@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/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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"}
@@ -0,0 +1,6 @@
1
+ export * from "./aborts.ts";
2
+ export * from "./events.ts";
3
+ export * from "./reducer.ts";
4
+ export * from "./state.ts";
5
+ export * from "./transactions.ts";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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,6 @@
1
+ export * from "./aborts.js";
2
+ export * from "./events.js";
3
+ export * from "./reducer.js";
4
+ export * from "./state.js";
5
+ export * from "./transactions.js";
6
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -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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"}