@agoric/smart-wallet 0.5.4-other-dev-8f8782b.0 → 0.5.4-other-dev-3eb1a1d.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.
Files changed (41) hide show
  1. package/package.json +35 -26
  2. package/src/index.d.ts +2 -0
  3. package/src/index.d.ts.map +1 -0
  4. package/src/index.js +2 -0
  5. package/src/invitations.d.ts +14 -10
  6. package/src/invitations.d.ts.map +1 -1
  7. package/src/invitations.js +35 -32
  8. package/src/marshal-contexts.d.ts +44 -41
  9. package/src/marshal-contexts.d.ts.map +1 -1
  10. package/src/marshal-contexts.js +68 -61
  11. package/src/offerWatcher.d.ts +52 -0
  12. package/src/offerWatcher.d.ts.map +1 -0
  13. package/src/offerWatcher.js +329 -0
  14. package/src/offers.d.ts +7 -31
  15. package/src/offers.d.ts.map +1 -1
  16. package/src/offers.js +9 -183
  17. package/src/proposals/upgrade-wallet-factory2-proposal.d.ts +23 -0
  18. package/src/proposals/upgrade-wallet-factory2-proposal.d.ts.map +1 -0
  19. package/src/proposals/upgrade-wallet-factory2-proposal.js +60 -0
  20. package/src/proposals/upgrade-walletFactory-proposal.d.ts +1 -1
  21. package/src/proposals/upgrade-walletFactory-proposal.d.ts.map +1 -1
  22. package/src/proposals/upgrade-walletFactory-proposal.js +46 -23
  23. package/src/smartWallet.d.ts +101 -66
  24. package/src/smartWallet.d.ts.map +1 -1
  25. package/src/smartWallet.js +576 -216
  26. package/src/typeGuards.d.ts +1 -1
  27. package/src/types-index.d.ts +2 -0
  28. package/src/types-index.js +2 -0
  29. package/src/types.d.ts +35 -41
  30. package/src/types.d.ts.map +1 -0
  31. package/src/types.ts +90 -0
  32. package/src/utils.d.ts +17 -14
  33. package/src/utils.d.ts.map +1 -1
  34. package/src/utils.js +19 -6
  35. package/src/walletFactory.d.ts +24 -78
  36. package/src/walletFactory.d.ts.map +1 -1
  37. package/src/walletFactory.js +61 -37
  38. package/CHANGELOG.md +0 -180
  39. package/src/payments.d.ts +0 -20
  40. package/src/payments.d.ts.map +0 -1
  41. package/src/payments.js +0 -89
@@ -1,16 +1,18 @@
1
1
  export const BRAND_TO_PURSES_KEY: "brandToPurses";
2
- export function prepareSmartWallet(baggage: MapStore<string, unknown>, shared: SharedParams): (uniqueWithoutChildNodes: Omit<UniqueParams, "currentStorageNode" | "walletStorageNode"> & {
2
+ export function prepareSmartWallet(baggage: import("@agoric/vat-data").Baggage, shared: SharedParams): (uniqueWithoutChildNodes: Omit<UniqueParams, "currentStorageNode" | "walletStorageNode"> & {
3
3
  walletStorageNode: ERef<StorageNode>;
4
- }) => Promise<{
4
+ }) => Promise<import("@endo/exo").Guarded<{
5
5
  /**
6
- * Umarshals the actionCapData and delegates to the appropriate action handler.
6
+ * Umarshals the actionCapData and delegates to the appropriate action
7
+ * handler.
7
8
  *
8
- * @param {import('@endo/marshal').CapData<string>} actionCapData of type BridgeAction
9
+ * @param {import('@endo/marshal').CapData<string | null>} actionCapData
10
+ * of type BridgeAction
9
11
  * @param {boolean} [canSpend]
10
12
  * @returns {Promise<void>}
11
13
  */
12
- handleBridgeAction(actionCapData: import('@endo/marshal').CapData<string>, canSpend?: boolean | undefined): Promise<void>;
13
- getDepositFacet(): {
14
+ handleBridgeAction(actionCapData: import("@endo/marshal").CapData<string | null>, canSpend?: boolean | undefined): Promise<void>;
15
+ getDepositFacet(): import("@endo/exo").Guarded<{
14
16
  /**
15
17
  * Put the assets from the payment into the appropriate purse.
16
18
  *
@@ -18,153 +20,186 @@ export function prepareSmartWallet(baggage: MapStore<string, unknown>, shared: S
18
20
  *
19
21
  * @param {Payment} payment
20
22
  * @returns {Promise<Amount>}
21
- * @throws if there's not yet a purse, though the payment is held to try again when there is
23
+ * @throws if there's not yet a purse, though the payment is held to try
24
+ * again when there is
22
25
  */
23
26
  receive(payment: Payment): Promise<Amount>;
24
- };
25
- getOffersFacet(): {
27
+ }>;
28
+ getOffersFacet(): import("@endo/exo").Guarded<{
26
29
  /**
27
- * Take an offer description provided in capData, augment it with payments and call zoe.offer()
30
+ * Take an offer description provided in capData, augment it with
31
+ * payments and call zoe.offer()
28
32
  *
29
- * @param {import('./offers.js').OfferSpec} offerSpec
30
- * @returns {Promise<void>} after the offer has been both seated and exited by Zoe.
31
- * @throws if any parts of the offer can be determined synchronously to be invalid
33
+ * @param {OfferSpec} offerSpec
34
+ * @returns {Promise<void>} after the offer has been both seated and
35
+ * exited by Zoe.
36
+ * @throws if any parts of the offer can be determined synchronously to
37
+ * be invalid
32
38
  */
33
- executeOffer(offerSpec: import('./offers.js').OfferSpec): Promise<void>;
39
+ executeOffer(offerSpec: OfferSpec): Promise<void>;
34
40
  /**
35
41
  * Take an offer's id, look up its seat, try to exit.
36
42
  *
37
- * @param {import('./offers.js').OfferId} offerId
43
+ * @param {OfferId} offerId
38
44
  * @returns {Promise<void>}
39
45
  * @throws if the seat can't be found or E(seatRef).tryExit() fails.
40
46
  */
41
- tryExitOffer(offerId: import('./offers.js').OfferId): Promise<void>;
42
- };
47
+ tryExitOffer(offerId: OfferId): Promise<void>;
48
+ }>;
43
49
  /** @deprecated use getPublicTopics */
44
- getCurrentSubscriber(): Subscriber<CurrentWalletRecord>;
50
+ getCurrentSubscriber(): globalThis.Subscriber<CurrentWalletRecord>;
45
51
  /** @deprecated use getPublicTopics */
46
- getUpdatesSubscriber(): Subscriber<UpdateRecord>;
52
+ getUpdatesSubscriber(): globalThis.Subscriber<UpdateRecord>;
47
53
  getPublicTopics(): {
48
54
  current: {
49
55
  description: string;
50
- subscriber: Subscriber<CurrentWalletRecord>;
56
+ subscriber: globalThis.Subscriber<CurrentWalletRecord>;
51
57
  storagePath: Promise<string>;
52
58
  };
53
59
  updates: {
54
60
  description: string;
55
- subscriber: Subscriber<UpdateRecord>;
61
+ subscriber: globalThis.Subscriber<UpdateRecord>;
56
62
  storagePath: Promise<string>;
57
63
  };
58
64
  };
59
- }>;
65
+ }>>;
66
+ export type OfferId = number | string;
67
+ export type OfferSpec = {
68
+ id: OfferId;
69
+ invitationSpec: import("./invitations").InvitationSpec;
70
+ proposal: Proposal;
71
+ offerArgs?: any;
72
+ };
73
+ export type ExecutorPowers = {
74
+ logger: {
75
+ info: (...args: any[]) => void;
76
+ error: (...args: any[]) => void;
77
+ };
78
+ makeOfferWatcher: import("./offerWatcher.js").MakeOfferWatcher;
79
+ invitationFromSpec: ERef<Invitation>;
80
+ };
60
81
  export type ExecuteOfferAction = {
61
- method: 'executeOffer';
62
- offer: import('./offers.js').OfferSpec;
82
+ method: "executeOffer";
83
+ offer: OfferSpec;
63
84
  };
64
85
  export type TryExitOfferAction = {
65
- method: 'tryExitOffer';
66
- offerId: import('./offers.js').OfferId;
86
+ method: "tryExitOffer";
87
+ offerId: OfferId;
67
88
  };
68
89
  export type BridgeAction = ExecuteOfferAction | TryExitOfferAction;
69
90
  /**
70
- * Purses is an array to support a future requirement of multiple purses per brand.
91
+ * Purses is an array to support a future requirement of multiple purses per
92
+ * brand.
71
93
  *
72
- * Each map is encoded as an array of entries because a Map doesn't serialize directly.
73
- * We also considered having a vstorage key for each offer but for now are sticking with this design.
94
+ * Each map is encoded as an array of entries because a Map doesn't serialize
95
+ * directly. We also considered having a vstorage key for each offer but for now
96
+ * are sticking with this design.
74
97
  *
75
98
  * Cons
76
- * - Reserializes previously written results when a new result is added
77
- * - Optimizes reads though writes are on-chain (~100 machines) and reads are off-chain (to 1 machine)
99
+ *
100
+ * - Reserializes previously written results when a new result is added
101
+ * - Optimizes reads though writes are on-chain (~100 machines) and reads are
102
+ * off-chain (to 1 machine)
78
103
  *
79
104
  * Pros
80
- * - Reading all offer results happens much more (>100) often than storing a new offer result
81
- * - Reserialization and writes are paid in execution gas, whereas reads are not
82
105
  *
83
- * This design should be revisited if ever batch querying across vstorage keys become cheaper or reads be paid.
106
+ * - Reading all offer results happens much more (>100) often than storing a new
107
+ * offer result
108
+ * - Reserialization and writes are paid in execution gas, whereas reads are not
109
+ *
110
+ * This design should be revisited if ever batch querying across vstorage keys
111
+ * become cheaper or reads be paid.
84
112
  */
85
113
  export type CurrentWalletRecord = {
86
- purses: Array<{
114
+ purses: {
87
115
  brand: Brand;
88
116
  balance: Amount;
89
- }>;
90
- offerToUsedInvitation: Array<[offerId: string, usedInvitation: Amount]>;
117
+ }[];
118
+ offerToUsedInvitation: [offerId: string, usedInvitation: Amount][];
91
119
  offerToPublicSubscriberPaths: [offerId: string, publicTopics: {
92
120
  [subscriberName: string]: string;
93
121
  }][];
94
- liveOffers: Array<[import('./offers.js').OfferId, import('./offers.js').OfferStatus]>;
122
+ liveOffers: [OfferId, OfferStatus][];
95
123
  };
96
124
  /**
97
125
  * Record of an update to the state of this wallet.
98
126
  *
99
- * Client is responsible for coalescing updates into a current state. See `coalesceUpdates` utility.
127
+ * Client is responsible for coalescing updates into a current state. See
128
+ * `coalesceUpdates` utility.
100
129
  *
101
- * The reason for this burden on the client is that publishing
102
- * the full history of offers with each change is untenable.
130
+ * The reason for this burden on the client is that publishing the full history
131
+ * of offers with each change is untenable.
103
132
  *
104
133
  * `balance` update supports forward-compatibility for more than one purse per
105
- * brand. An additional key will be needed to disambiguate. For now the brand in
106
- * the amount suffices.
134
+ * brand. An additional key will be needed to disambiguate. For now the brand
135
+ * in the amount suffices.
107
136
  */
108
137
  export type UpdateRecord = {
109
- updated: 'offerStatus';
110
- status: import('./offers.js').OfferStatus;
138
+ updated: "offerStatus";
139
+ status: OfferStatus;
111
140
  } | {
112
- updated: 'balance';
141
+ updated: "balance";
113
142
  currentAmount: Amount;
114
143
  } | {
115
- updated: 'walletAction';
144
+ updated: "walletAction";
116
145
  status: {
117
146
  error: string;
118
147
  };
119
148
  };
120
149
  /**
121
- * For use by clients to describe brands to users. Includes `displayInfo` to save a remote call.
150
+ * For use by clients to describe brands to users. Includes `displayInfo` to
151
+ * save a remote call.
122
152
  */
123
153
  export type BrandDescriptor = {
124
154
  brand: Brand;
125
155
  displayInfo: DisplayInfo;
126
156
  issuer: Issuer;
127
- petname: import('./types').Petname;
157
+ petname: import("./types.js").Petname;
128
158
  };
129
- export type RemotePurse = import('./types').RemotePurse;
130
159
  export type UniqueParams = {
131
160
  address: string;
132
- bank: ERef<import('@agoric/vats/src/vat-bank').Bank>;
161
+ bank: ERef<import("@agoric/vats/src/vat-bank.js").Bank>;
133
162
  currentStorageNode: StorageNode;
134
- invitationPurse: Purse<'set'>;
163
+ invitationPurse: Purse<"set", InvitationDetails>;
135
164
  walletStorageNode: StorageNode;
136
165
  };
137
- export type BrandDescriptorRegistry = Pick<MapStore<Brand, BrandDescriptor>, 'has' | 'get' | 'values'>;
166
+ export type BrandDescriptorRegistry = Pick<MapStore<Brand, BrandDescriptor>, "has" | "get" | "values">;
138
167
  export type SharedParams = {
139
- agoricNames: ERef<import('@agoric/vats').NameHub>;
168
+ agoricNames: ERef<import("@agoric/vats").NameHub>;
140
169
  registry: BrandDescriptorRegistry;
141
- invitationIssuer: Issuer<'set'>;
142
- invitationBrand: Brand<'set'>;
170
+ invitationIssuer: Issuer<"set">;
171
+ invitationBrand: Brand<"set">;
143
172
  invitationDisplayInfo: DisplayInfo;
144
173
  publicMarshaller: Marshaller;
145
174
  zoe: ERef<ZoeService>;
146
175
  };
147
176
  /**
148
- * - `brandPurses` is precious and closely held. defined as late as possible to reduce its scope.
177
+ * - `brandPurses` is precious
178
+ * and closely held. defined as late as possible to reduce its scope.
179
+ *
149
180
  * - `offerToInvitationMakers` is precious and closely held.
150
181
  * - `offerToPublicSubscriberPaths` is precious and closely held.
151
- * - `purseBalances` is a cache of what we've received from purses. Held so we can publish all balances on change.
182
+ * - `purseBalances` is a cache of what we've received from purses. Held so we can
183
+ * publish all balances on change.
152
184
  */
153
185
  export type State = ImmutableState & MutableState;
154
186
  export type ImmutableState = Readonly<UniqueParams & {
155
- paymentQueues: MapStore<Brand, Array<Payment>>;
156
- offerToInvitationMakers: MapStore<string, import('./types').InvitationMakers>;
187
+ paymentQueues: MapStore<Brand, Payment[]>;
188
+ offerToInvitationMakers: MapStore<string, import("./types.js").InvitationMakers>;
157
189
  offerToPublicSubscriberPaths: MapStore<string, Record<string, string>>;
158
- offerToUsedInvitation: MapStore<string, Amount>;
159
- purseBalances: MapStore<RemotePurse, Amount>;
160
- updateRecorderKit: import('@agoric/zoe/src/contractSupport/recorder.js').RecorderKit<UpdateRecord>;
161
- currentRecorderKit: import('@agoric/zoe/src/contractSupport/recorder.js').RecorderKit<CurrentWalletRecord>;
162
- liveOffers: MapStore<import('./offers.js').OfferId, import('./offers.js').OfferStatus>;
163
- liveOfferSeats: WeakMapStore<import('./offers.js').OfferId, UserSeat<unknown>>;
190
+ offerToUsedInvitation: MapStore<string, Amount<"set">>;
191
+ purseBalances: MapStore<Purse, Amount>;
192
+ updateRecorderKit: import("@agoric/zoe/src/contractSupport/recorder.js").RecorderKit<UpdateRecord>;
193
+ currentRecorderKit: import("@agoric/zoe/src/contractSupport/recorder.js").RecorderKit<CurrentWalletRecord>;
194
+ liveOffers: MapStore<OfferId, OfferStatus>;
195
+ liveOfferSeats: MapStore<OfferId, UserSeat<unknown>>;
196
+ liveOfferPayments: MapStore<OfferId, MapStore<Brand, Payment>>;
164
197
  }>;
165
198
  export type PurseRecord = BrandDescriptor & {
166
199
  purse: Purse;
167
200
  };
168
201
  export type MutableState = {};
169
202
  export type SmartWallet = Awaited<ReturnType<ReturnType<typeof prepareSmartWallet>>>;
203
+ import type { OfferId } from './offers.js';
204
+ import type { OfferStatus } from './offers.js';
170
205
  //# sourceMappingURL=smartWallet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"smartWallet.d.ts","sourceRoot":"","sources":["smartWallet.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smartWallet.d.ts","sourceRoot":"","sources":["smartWallet.js"],"names":[],"mappings":"AA4PA,kDAAmD;AAiB5C,4CAHI,OAAO,kBAAkB,EAAE,OAAO,UAClC,YAAY,6BAi1BV,IAAI,CACV,YAAY,EAChB,oBAAwB,GAAG,mBAAmB,CAC3C,GAAG;IACF,iBAAiB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;CACtC;IAzGE;;;;;;;;OAQG;sCAJQ,OAAO,eAAe,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,mCAG5C,OAAO,CAAC,IAAI,CAAC;;QApR1B;;;;;;;;;WASG;yBAJQ,OAAO,GACL,OAAO,CAAC,MAAM,CAAC;;;QA8H5B;;;;;;;;;WASG;gCALQ,SAAS,GACP,OAAO,CAAC,IAAI,CAAC;QA0G1B;;;;;;WAMG;8BAHQ,OAAO,GACL,OAAO,CAAC,IAAI,CAAC;;IAkF1B,sCAAsC;;IAKtC,sCAAsC;;;;;;;;;;;;;;IAyD7C;sBA1jCa,MAAM,GAAG,MAAM;wBAGhB;IACR,EAAE,EAAE,OAAO,CAAC;IACZ,cAAc,EAAE,OAAO,eAAe,EAAE,cAAc,CAAC;IACvD,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;6BAIS;IACR,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;QAC/B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;KACjC,CAAC;IACF,gBAAgB,EAAE,OAAO,mBAAmB,EAAE,gBAAgB,CAAC;IAC/D,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;CACtC;iCAIS;IACR,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;CAClB;iCAIS;IACR,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;2BAMU,kBAAkB,GAAG,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;kCAyBxC;IACR,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,qBAAqB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC;IACnE,4BAA4B,EAAE,CAC5B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE;QAAE,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CACnD,EAAE,CAAC;IACJ,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;CACtC;;;;;;;;;;;;;;2BAIS;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GACrD;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,OAAO,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;;;;;8BAehD;IACR,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,YAAY,EAAE,OAAO,CAAC;CACvC;2BAMS;IACR,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC,OAAO,8BAA8B,EAAE,IAAI,CAAC,CAAC;IACxD,kBAAkB,EAAE,WAAW,CAAC;IAChC,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACjD,iBAAiB,EAAE,WAAW,CAAC;CAChC;sCAGS,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,CAAC;2BAGhE;IACR,WAAW,EAAE,IAAI,CAAC,OAAO,cAAc,EAAE,OAAO,CAAC,CAAC;IAClD,QAAQ,EAAE,uBAAuB,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,qBAAqB,EAAE,WAAW,CAAC;IACnC,gBAAgB,EAAE,UAAU,CAAC;IAC7B,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;CACvB;;;;;;;;;;oBAGS,cAAc,GAAG,YAAY;6BAS7B,QAAQ,CAChB,YAAY,GAAG;IACb,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,uBAAuB,EAAE,QAAQ,CACvC,MAAc,EACd,OAAe,YAAY,EAAE,gBAAgB,CACtC,CAAC;IACF,4BAA4B,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvE,qBAAqB,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,aAAa,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,iBAAiB,EAAE,OAAO,6CAA6C,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACnG,kBAAkB,EAAE,OAAO,6CAA6C,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAC3G,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3C,cAAc,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACrD,iBAAiB,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;CAChE,CACF;0BAGS,eAAe,GAAG;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE;2BAElC,EAAE;0BAg6BD,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;6BAtkChC,aAAa;iCAAb,aAAa"}