@interest-protocol/blast-partners-sdk 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.
@@ -3,7 +3,7 @@ import { AdminCalls } from "@interest-protocol/blast-admin-sdk/transactions";
3
3
  import type { SharedObjectReference } from "@interest-protocol/blast-core/sui";
4
4
  import type { TransactionObjectArgument, TransactionObjectInput, TransactionResult } from "@mysten/sui/transactions";
5
5
  import { Transaction } from "@mysten/sui/transactions";
6
- /** The immutable `blast_partners` package and the ACL its `PartnerAdmin` signs in to. */
6
+ /** The canonical `blast_partners` package (immutability deferred) and the ACL its `PartnerAdmin` signs in to. */
7
7
  export type PartnersDeployment = {
8
8
  packageId: string;
9
9
  admin: AdminDeployment;
@@ -32,19 +32,44 @@ export declare class PartnersCalls {
32
32
  recipient: string;
33
33
  shareBps: bigint;
34
34
  }): (tx: Transaction) => void;
35
- /** `schedule_share` (`PartnerAdmin`): the share takes effect after the partner delay. */
35
+ /**
36
+ * `schedule_share` (`PartnerAdmin`): proposes the share, which `applyShare`
37
+ * applies once `PARTNER_DELAY_MS` has passed. A new proposal replaces a
38
+ * pending one and restarts the notice.
39
+ */
36
40
  scheduleShare(options: {
37
41
  partner: SharedObjectReference<true>;
38
42
  adminWitness: TransactionObjectInput;
39
43
  shareBps: bigint;
40
44
  }): (tx: Transaction) => void;
41
- /** `schedule_cap` (`PartnerAdmin`): moves the partner to the cap `capId` after the delay. */
45
+ /**
46
+ * `schedule_cap` (`PartnerAdmin`): proposes moving the partner to the cap
47
+ * `capId`, which `applyCap` applies once `PARTNER_DELAY_MS` has passed.
48
+ */
42
49
  scheduleCap(options: {
43
50
  partner: SharedObjectReference<true>;
44
51
  adminWitness: TransactionObjectInput;
45
52
  capId: string;
46
53
  }): (tx: Transaction) => void;
47
- /** `set_recipient`: the partner's live cap sets where it is paid, at once. */
54
+ /** `apply_share`: anyone applies the proposed share once its notice has passed. */
55
+ applyShare(options: {
56
+ partner: SharedObjectReference<true>;
57
+ }): (tx: Transaction) => void;
58
+ /** `apply_cap`: anyone applies the proposed managing cap once its notice has passed. */
59
+ applyCap(options: {
60
+ partner: SharedObjectReference<true>;
61
+ }): (tx: Transaction) => void;
62
+ /** `cancel_share` (`PartnerAdmin`): discards the proposed share, even a ready one. */
63
+ cancelShare(options: {
64
+ partner: SharedObjectReference<true>;
65
+ adminWitness: TransactionObjectInput;
66
+ }): (tx: Transaction) => void;
67
+ /** `cancel_cap` (`PartnerAdmin`): discards the proposed managing cap, even a ready one. */
68
+ cancelCap(options: {
69
+ partner: SharedObjectReference<true>;
70
+ adminWitness: TransactionObjectInput;
71
+ }): (tx: Transaction) => void;
72
+ /** `set_recipient`: the partner's applied cap sets where it is paid, at once. */
48
73
  setRecipient(options: {
49
74
  partner: SharedObjectReference<true>;
50
75
  partnerCap: TransactionObjectInput;
@@ -78,6 +103,20 @@ export declare class PartnersTransactions {
78
103
  partner: SharedObjectReference<true>;
79
104
  capId: string;
80
105
  }): Transaction;
106
+ applyShare(options: {
107
+ partner: SharedObjectReference<true>;
108
+ }): Transaction;
109
+ applyCap(options: {
110
+ partner: SharedObjectReference<true>;
111
+ }): Transaction;
112
+ cancelShare(options: {
113
+ adminCapId: string;
114
+ partner: SharedObjectReference<true>;
115
+ }): Transaction;
116
+ cancelCap(options: {
117
+ adminCapId: string;
118
+ partner: SharedObjectReference<true>;
119
+ }): Transaction;
81
120
  setRecipient(options: {
82
121
  partner: SharedObjectReference<true>;
83
122
  partnerCapId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transactions.d.ts","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,11 @@ export class PartnersCalls {
49
49
  });
50
50
  };
51
51
  }
52
- /** `schedule_share` (`PartnerAdmin`): the share takes effect after the partner delay. */
52
+ /**
53
+ * `schedule_share` (`PartnerAdmin`): proposes the share, which `applyShare`
54
+ * applies once `PARTNER_DELAY_MS` has passed. A new proposal replaces a
55
+ * pending one and restarts the notice.
56
+ */
53
57
  scheduleShare(options) {
54
58
  const shareBps = requireBasisPoints("shareBps", options.shareBps);
55
59
  return (tx) => {
@@ -64,7 +68,10 @@ export class PartnersCalls {
64
68
  });
65
69
  };
66
70
  }
67
- /** `schedule_cap` (`PartnerAdmin`): moves the partner to the cap `capId` after the delay. */
71
+ /**
72
+ * `schedule_cap` (`PartnerAdmin`): proposes moving the partner to the cap
73
+ * `capId`, which `applyCap` applies once `PARTNER_DELAY_MS` has passed.
74
+ */
68
75
  scheduleCap(options) {
69
76
  const capId = normalizeSuiObjectId(options.capId);
70
77
  return (tx) => {
@@ -79,7 +86,49 @@ export class PartnersCalls {
79
86
  });
80
87
  };
81
88
  }
82
- /** `set_recipient`: the partner's live cap sets where it is paid, at once. */
89
+ /** `apply_share`: anyone applies the proposed share once its notice has passed. */
90
+ applyShare(options) {
91
+ return (tx) => {
92
+ tx.moveCall({
93
+ target: this.#target("apply_share"),
94
+ arguments: [partner(tx, options.partner), tx.object.clock()],
95
+ });
96
+ };
97
+ }
98
+ /** `apply_cap`: anyone applies the proposed managing cap once its notice has passed. */
99
+ applyCap(options) {
100
+ return (tx) => {
101
+ tx.moveCall({
102
+ target: this.#target("apply_cap"),
103
+ arguments: [partner(tx, options.partner), tx.object.clock()],
104
+ });
105
+ };
106
+ }
107
+ /** `cancel_share` (`PartnerAdmin`): discards the proposed share, even a ready one. */
108
+ cancelShare(options) {
109
+ return (tx) => {
110
+ tx.moveCall({
111
+ target: this.#target("cancel_share"),
112
+ arguments: [
113
+ partner(tx, options.partner),
114
+ tx.object(options.adminWitness),
115
+ ],
116
+ });
117
+ };
118
+ }
119
+ /** `cancel_cap` (`PartnerAdmin`): discards the proposed managing cap, even a ready one. */
120
+ cancelCap(options) {
121
+ return (tx) => {
122
+ tx.moveCall({
123
+ target: this.#target("cancel_cap"),
124
+ arguments: [
125
+ partner(tx, options.partner),
126
+ tx.object(options.adminWitness),
127
+ ],
128
+ });
129
+ };
130
+ }
131
+ /** `set_recipient`: the partner's applied cap sets where it is paid, at once. */
83
132
  setRecipient(options) {
84
133
  const recipient = normalizeSuiAddress(options.recipient);
85
134
  return (tx) => {
@@ -89,7 +138,6 @@ export class PartnersCalls {
89
138
  partner(tx, options.partner),
90
139
  tx.object(options.partnerCap),
91
140
  tx.pure.address(recipient),
92
- tx.object.clock(),
93
141
  ],
94
142
  });
95
143
  };
@@ -127,6 +175,22 @@ export class PartnersTransactions {
127
175
  scheduleCap(options) {
128
176
  return this.#asPartnerAdmin(options.adminCapId, (adminWitness) => this.call.scheduleCap({ ...options, adminWitness }));
129
177
  }
178
+ applyShare(options) {
179
+ const tx = new Transaction();
180
+ tx.add(this.call.applyShare(options));
181
+ return tx;
182
+ }
183
+ applyCap(options) {
184
+ const tx = new Transaction();
185
+ tx.add(this.call.applyCap(options));
186
+ return tx;
187
+ }
188
+ cancelShare(options) {
189
+ return this.#asPartnerAdmin(options.adminCapId, (adminWitness) => this.call.cancelShare({ ...options, adminWitness }));
190
+ }
191
+ cancelCap(options) {
192
+ return this.#asPartnerAdmin(options.adminCapId, (adminWitness) => this.call.cancelCap({ ...options, adminWitness }));
193
+ }
130
194
  setRecipient(options) {
131
195
  const tx = new Transaction();
132
196
  tx.add(this.call.setRecipient({ ...options, partnerCap: options.partnerCapId }));
@@ -1 +1 @@
1
- {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,wBAAwB,GACzB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAMnF,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAQ9E,8CAA8C;AAC9C,MAAM,OAAO,aAAa;IACf,UAAU,CAAqB;IAC/B,KAAK,CAAa;IAE3B,YAAY,UAA8B;QACxC,IAAI,CAAC,UAAU,GAAG;YAChB,SAAS,EAAE,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC;YACrD,KAAK,EAAE,wBAAwB,CAAC,UAAU,CAAC,KAAK,CAAC;SAClD,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,gEAAgE;IAChE,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,gCAAgC,CAAC;IACtE,CAAC;IAED,+CAA+C;IAC/C,MAAM,CAAC,OAA6C;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACvB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,oFAAoF;IACpF,MAAM;QACJ,OAAO,CAAC,EAAe,EAAqB,EAAE,CAC5C,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,OAKR;QACC,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClE,OAAO,CAAC,EAAe,EAAQ,EAAE;YAC/B,EAAE,CAAC,QAAQ,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBAChC,SAAS,EAAE;oBACT,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC/B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;oBACjB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC1B,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;iBACtB;aACF,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,yFAAyF;IACzF,aAAa,CAAC,OAIb;QACC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClE,OAAO,CAAC,EAAe,EAAQ,EAAE;YAC/B,EAAE,CAAC,QAAQ,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBACtC,SAAS,EAAE;oBACT,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;oBAC5B,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC/B,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACrB,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;iBAClB;aACF,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,6FAA6F;IAC7F,WAAW,CAAC,OAIX;QACC,MAAM,KAAK,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,EAAe,EAAQ,EAAE;YAC/B,EAAE,CAAC,QAAQ,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;gBACpC,SAAS,EAAE;oBACT,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;oBAC5B,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;oBAC/B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;oBACjB,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;iBAClB;aACF,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,YAAY,CAAC,OAIZ;QACC,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,CAAC,EAAe,EAAQ,EAAE;YAC/B,EAAE,CAAC,QAAQ,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;gBACrC,SAAS,EAAE;oBACT,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC;oBAC5B,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;oBAC7B,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;oBAC1B,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE;iBAClB;aACF,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,OAA+C;QACxD,OAAO,CAAC,EAAe,EAAQ,EAAE;YAC/B,EAAE,CAAC,QAAQ,CAAC;gBACV,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;gBACnC,SAAS,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,YAAoB;QAC1B,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,qBAAqB,YAAY,EAAE,CAAC;IACzE,CAAC;CACF;AAED,MAAM,OAAO,oBAAoB;IACtB,IAAI,CAAgB;IAE7B,YAAY,UAA8B;QACxC,IAAI,CAAC,IAAI,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,wDAAwD;IACxD,MAAM,CAAC,OAA8B;QACnC,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAClE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,QAAQ,CAAC,OAKR;QACC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE,CAC/D,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,CAAC,CACjD,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,OAIb;QACC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE,CAC/D,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,CAAC,CACtD,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,OAIX;QACC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,YAAY,EAAE,EAAE,CAC/D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,CAAC,CACpD,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,OAIZ;QACC,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7B,EAAE,CAAC,GAAG,CACJ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CACzE,CAAC;QACF,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,UAAU,CAAC,OAAiC;QAC1C,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7B,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,eAAe,CACb,UAAkB,EAClB,IAE8B;QAE9B,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACxE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,SAAS,OAAO,CACd,EAAe,EACf,SAAsC;IAEtC,OAAO,EAAE,CAAC,eAAe,CACvB,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAC3D,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"transactions.js","sourceRoot":"","sources":["../src/transactions.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interest-protocol/blast-partners-sdk",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Blast partners SDK",
5
5
  "type": "module",
6
6
  "repository": {
@@ -49,8 +49,8 @@
49
49
  "access": "public"
50
50
  },
51
51
  "dependencies": {
52
- "@interest-protocol/blast-admin-sdk": "0.1.0",
53
- "@interest-protocol/blast-core": "0.1.0"
52
+ "@interest-protocol/blast-admin-sdk": "0.2.0",
53
+ "@interest-protocol/blast-core": "0.2.0"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@mysten/sui": "^2.26.2"
package/src/events.ts CHANGED
@@ -1,4 +1,14 @@
1
- import { suiObjectIdBcs, u64Bcs } from "@interest-protocol/blast-core/bcs";
1
+ import type {
2
+ DecodedDelayedEvent,
3
+ DelayedKeySpecs,
4
+ } from "@interest-protocol/blast-admin-sdk/events";
5
+ import { decodeDelayedEvent } from "@interest-protocol/blast-admin-sdk/events";
6
+ import {
7
+ addressBcs,
8
+ suiObjectIdBcs,
9
+ u64Bcs,
10
+ unitKeyBcs,
11
+ } from "@interest-protocol/blast-core/bcs";
2
12
  import type { SuiEventPosition } from "@interest-protocol/blast-core/events";
3
13
  import {
4
14
  normalizeSuiEventPosition,
@@ -11,24 +21,53 @@ import {
11
21
  normalizeSuiAddress,
12
22
  parseStructTag,
13
23
  } from "@mysten/sui/utils";
14
- import { partnerTermsBcs } from "./state.ts";
15
24
 
16
25
  /** The `blast_partners` events, in Move field order. */
17
26
  export const partnerEventBcs = {
18
- /** After every change, registration included: the partner's complete terms. */
27
+ /**
28
+ * At registration and on every recipient change: the partner's recipient.
29
+ * Share and cap terms are `blast_admin::delayed` events (`partnerDelayedKeys`).
30
+ */
19
31
  PartnerUpdated: bcs.struct("PartnerUpdated", {
20
32
  partner_id: suiObjectIdBcs,
21
- ...partnerTermsBcs,
33
+ recipient: addressBcs,
22
34
  }),
23
35
  /** `amount` of the event's coin type sent to the partner's recipient. */
24
36
  PartnerPaid: bcs.struct("PartnerPaid", {
25
37
  partner_id: suiObjectIdBcs,
26
38
  amount: u64Bcs,
27
39
  }),
40
+ /**
41
+ * `partner_list::add`: the list owned by `parent` (a product configuration's
42
+ * ID) accepts `partner_id` without end.
43
+ */
44
+ PartnerAdded: bcs.struct("PartnerAdded", {
45
+ parent: suiObjectIdBcs,
46
+ partner_id: suiObjectIdBcs,
47
+ }),
48
+ /** `partner_list::remove`: new sales stop naming the partner from `acceptance_ends_at_ms`. */
49
+ PartnerRemoved: bcs.struct("PartnerRemoved", {
50
+ parent: suiObjectIdBcs,
51
+ partner_id: suiObjectIdBcs,
52
+ acceptance_ends_at_ms: u64Bcs,
53
+ }),
54
+ /** `partner_list::destroy`: the list owned by `parent` and its entries are gone. */
55
+ PartnerListDestroyed: bcs.struct("PartnerListDestroyed", {
56
+ parent: suiObjectIdBcs,
57
+ }),
28
58
  };
29
59
 
30
60
  export type PartnerEventKind = keyof typeof partnerEventBcs;
31
61
 
62
+ /** The module each event is defined in. */
63
+ const PARTNER_EVENT_MODULES: Record<PartnerEventKind, string> = {
64
+ PartnerUpdated: "blast_partners",
65
+ PartnerPaid: "blast_partners",
66
+ PartnerAdded: "partner_list",
67
+ PartnerRemoved: "partner_list",
68
+ PartnerListDestroyed: "partner_list",
69
+ };
70
+
32
71
  export type PartnerEventPayloads = {
33
72
  [Kind in PartnerEventKind]: ReturnType<
34
73
  (typeof partnerEventBcs)[Kind]["parse"]
@@ -47,7 +86,10 @@ export type DecodedPartnerEvent = {
47
86
  };
48
87
  }[PartnerEventKind];
49
88
 
50
- /** Decodes one `<partnersPackageId>::blast_partners::<Kind>` event. */
89
+ /**
90
+ * Decodes one `<partnersPackageId>::blast_partners::<Kind>` or
91
+ * `<partnersPackageId>::partner_list::<Kind>` event.
92
+ */
51
93
  export function decodePartnerEvent(
52
94
  event: SuiClientTypes.EventEntry,
53
95
  partnersPackageId: string,
@@ -57,8 +99,8 @@ export function decodePartnerEvent(
57
99
  const [coinType = null, ...extra] = tag.typeParams;
58
100
  if (
59
101
  tag.address !== normalizeSuiAddress(partnersPackageId) ||
60
- tag.module !== "blast_partners" ||
61
102
  !Object.hasOwn(partnerEventBcs, kind) ||
103
+ tag.module !== PARTNER_EVENT_MODULES[kind] ||
62
104
  (coinType === null) === (kind === "PartnerPaid") ||
63
105
  extra.length > 0
64
106
  ) {
@@ -74,6 +116,45 @@ export function decodePartnerEvent(
74
116
  } as DecodedPartnerEvent;
75
117
  }
76
118
 
77
- export function partnerEventId(event: DecodedPartnerEvent): string {
119
+ export function partnerEventId(event: { position: SuiEventPosition }): string {
78
120
  return suiEventId(event.position);
79
121
  }
122
+
123
+ /**
124
+ * `blast_partners` keys of `blast_admin::delayed` settings, each owned by the
125
+ * partner: its share in basis points and its managing cap's ID. Registration
126
+ * emits `DelayedCreated` for both; a proposal changes nothing until
127
+ * `DelayedApplied`.
128
+ */
129
+ export const partnerDelayedKeys = {
130
+ Share: {
131
+ key: "blast_partners::ShareKey",
132
+ family: "setting",
133
+ keyBcs: unitKeyBcs,
134
+ valueBcs: u64Bcs,
135
+ valueType: "u64",
136
+ },
137
+ Cap: {
138
+ key: "blast_partners::CapKey",
139
+ family: "setting",
140
+ keyBcs: unitKeyBcs,
141
+ valueBcs: suiObjectIdBcs,
142
+ valueType: "0x2::object::ID",
143
+ },
144
+ } as const satisfies DelayedKeySpecs;
145
+
146
+ export type DecodedPartnerDelayedEvent = DecodedDelayedEvent<
147
+ typeof partnerDelayedKeys
148
+ >;
149
+
150
+ /** Decodes a `<adminPackageId>::delayed` event keyed by `blast_partners`. */
151
+ export function decodePartnerDelayedEvent(
152
+ event: SuiClientTypes.EventEntry,
153
+ packages: { adminPackageId: string; partnersPackageId: string },
154
+ ): DecodedPartnerDelayedEvent {
155
+ return decodeDelayedEvent(event, {
156
+ adminPackageId: packages.adminPackageId,
157
+ packageId: packages.partnersPackageId,
158
+ keys: partnerDelayedKeys,
159
+ });
160
+ }
package/src/reducer.ts CHANGED
@@ -1,18 +1,43 @@
1
- import type { DecodedPartnerEvent, PartnerEventKind } from "./events.ts";
1
+ import { U64_MAX } from "@interest-protocol/blast-core/integers";
2
+ import type {
3
+ DecodedPartnerDelayedEvent,
4
+ DecodedPartnerEvent,
5
+ PartnerEventKind,
6
+ } from "./events.ts";
2
7
  import { partnerEventBcs, partnerEventId } from "./events.ts";
3
- import type { PartnerTerms } from "./state.ts";
4
8
 
5
- export type PartnerProjection = PartnerTerms & {
9
+ /** A proposed share or cap: it applies only when someone applies it, at or after `readyAtMs`. */
10
+ export type PartnerProposal<T> = { value: T; readyAtMs: bigint };
11
+
12
+ export type PartnerProjection = {
6
13
  partnerId: string;
14
+ /** Null until the partner's `PartnerUpdated`. */
15
+ recipient: string | null;
16
+ /** The applied share in basis points; null until its `DelayedCreated`. */
17
+ shareBps: bigint | null;
18
+ /** The applied managing cap; null until its `DelayedCreated`. */
19
+ capId: string | null;
20
+ pendingShare: PartnerProposal<bigint> | null;
21
+ pendingCap: PartnerProposal<string> | null;
7
22
  /** Everything sent to the partner, by coin type. */
8
23
  paid: Readonly<Record<string, bigint>>;
9
24
  };
10
25
 
11
- /** Partners rebuilt from their events; terms match `PartnerState` once replayed. */
26
+ /**
27
+ * Partners rebuilt from their events and their `blast_admin::delayed` events
28
+ * (`decodePartnerDelayedEvent`); terms match `PartnerState` once replayed.
29
+ */
12
30
  export type PartnersEventProjection = {
13
31
  appliedEventIds: Readonly<Record<string, true>>;
32
+ /** Counts `blast_partners` events only. */
14
33
  eventCounts: Readonly<Record<PartnerEventKind, number>>;
15
34
  partners: Readonly<Record<string, PartnerProjection>>;
35
+ /**
36
+ * Each `PartnerList` by parent (the product configuration's ID): every
37
+ * partner it named and the millisecond its acceptance ends (`U64_MAX`
38
+ * while accepted without end). A destroyed list is removed.
39
+ */
40
+ lists: Readonly<Record<string, Readonly<Record<string, bigint>>>>;
16
41
  };
17
42
 
18
43
  export function createPartnersEventProjection(): PartnersEventProjection {
@@ -22,37 +47,59 @@ export function createPartnersEventProjection(): PartnersEventProjection {
22
47
  Object.keys(partnerEventBcs).map((kind) => [kind, 0]),
23
48
  ) as Record<PartnerEventKind, number>,
24
49
  partners: {},
50
+ lists: {},
25
51
  };
26
52
  }
27
53
 
28
54
  /** Applies one event once; replaying an applied event returns `state` unchanged. */
29
55
  export function reducePartnerEvent(
30
56
  state: PartnersEventProjection,
31
- event: DecodedPartnerEvent,
57
+ event: DecodedPartnerEvent | DecodedPartnerDelayedEvent,
32
58
  ): PartnersEventProjection {
33
59
  const eventId = partnerEventId(event);
34
60
  if (state.appliedEventIds[eventId]) return state;
61
+ const applied = { ...state.appliedEventIds, [eventId]: true as const };
62
+ if (event.source === "delayed") {
63
+ const partnerId = event.payload.parent;
64
+ return withPartner(
65
+ { ...state, appliedEventIds: applied },
66
+ reduceTerms(state.partners[partnerId] ?? empty(partnerId), event),
67
+ );
68
+ }
35
69
  const next: PartnersEventProjection = {
36
70
  ...state,
37
- appliedEventIds: { ...state.appliedEventIds, [eventId]: true },
71
+ appliedEventIds: applied,
38
72
  eventCounts: {
39
73
  ...state.eventCounts,
40
74
  [event.kind]: state.eventCounts[event.kind] + 1,
41
75
  },
42
76
  };
77
+ if (event.kind === "PartnerListDestroyed") {
78
+ const { [event.payload.parent]: _, ...lists } = state.lists;
79
+ return { ...next, lists };
80
+ }
81
+ if (event.kind === "PartnerAdded" || event.kind === "PartnerRemoved") {
82
+ const { parent, partner_id } = event.payload;
83
+ const acceptanceEndsAtMs =
84
+ event.kind === "PartnerAdded"
85
+ ? U64_MAX
86
+ : event.payload.acceptance_ends_at_ms;
87
+ return {
88
+ ...next,
89
+ lists: {
90
+ ...state.lists,
91
+ [parent]: { ...state.lists[parent], [partner_id]: acceptanceEndsAtMs },
92
+ },
93
+ };
94
+ }
43
95
  const partnerId = event.payload.partner_id;
44
96
  const current = state.partners[partnerId];
45
- if (event.kind === "PartnerUpdated") {
46
- const { recipient, share_bps, cap_id } = event.payload;
97
+ if (event.kind === "PartnerUpdated")
47
98
  return withPartner(next, {
48
- partnerId,
49
- recipient,
50
- shareBps: share_bps,
51
- capId: cap_id,
52
- paid: current?.paid ?? {},
99
+ ...(current ?? empty(partnerId)),
100
+ recipient: event.payload.recipient,
53
101
  });
54
- }
55
- // A partner is registered, with an update, before it can be paid.
102
+ // A partner is registered before it can be paid.
56
103
  if (!current) return next;
57
104
  const coinType = event.coinType;
58
105
  return withPartner(next, {
@@ -64,6 +111,46 @@ export function reducePartnerEvent(
64
111
  });
65
112
  }
66
113
 
114
+ /** Applied and proposed terms; readiness alone changes nothing. */
115
+ function reduceTerms(
116
+ partner: PartnerProjection,
117
+ event: DecodedPartnerDelayedEvent,
118
+ ): PartnerProjection {
119
+ const [applied, pending] =
120
+ event.name === "Share"
121
+ ? (["shareBps", "pendingShare"] as const)
122
+ : (["capId", "pendingCap"] as const);
123
+ switch (event.kind) {
124
+ case "DelayedCreated":
125
+ case "DelayedApplied":
126
+ return { ...partner, [applied]: event.payload.value, [pending]: null };
127
+ case "DelayedScheduled":
128
+ return {
129
+ ...partner,
130
+ [pending]: {
131
+ value: event.payload.value,
132
+ readyAtMs: event.payload.ready_at_ms,
133
+ },
134
+ };
135
+ case "DelayedCancelled":
136
+ return { ...partner, [pending]: null };
137
+ default:
138
+ return partner;
139
+ }
140
+ }
141
+
142
+ function empty(partnerId: string): PartnerProjection {
143
+ return {
144
+ partnerId,
145
+ recipient: null,
146
+ shareBps: null,
147
+ capId: null,
148
+ pendingShare: null,
149
+ pendingCap: null,
150
+ paid: {},
151
+ };
152
+ }
153
+
67
154
  function withPartner(
68
155
  state: PartnersEventProjection,
69
156
  partner: PartnerProjection,