@agoric/smart-wallet 0.5.4-other-dev-8f8782b.0 → 0.5.4-other-dev-fbe72e7.0.fbe72e7

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 (40) hide show
  1. package/package.json +43 -29
  2. package/src/index.d.ts +2 -0
  3. package/src/index.d.ts.map +1 -0
  4. package/src/index.js +6 -0
  5. package/src/invitations.d.ts +14 -10
  6. package/src/invitations.d.ts.map +1 -1
  7. package/src/invitations.js +39 -33
  8. package/src/marshal-contexts.d.ts +45 -41
  9. package/src/marshal-contexts.d.ts.map +1 -1
  10. package/src/marshal-contexts.js +69 -61
  11. package/src/offerWatcher.d.ts +54 -0
  12. package/src/offerWatcher.d.ts.map +1 -0
  13. package/src/offerWatcher.js +343 -0
  14. package/src/offers.d.ts +60 -30
  15. package/src/offers.d.ts.map +1 -1
  16. package/src/offers.js +38 -182
  17. package/src/proposals/upgrade-wallet-factory2-proposal.js +61 -0
  18. package/src/proposals/upgrade-walletFactory-proposal.js +46 -23
  19. package/src/smartWallet.d.ts +132 -68
  20. package/src/smartWallet.d.ts.map +1 -1
  21. package/src/smartWallet.js +718 -217
  22. package/src/typeGuards.d.ts +1 -1
  23. package/src/typeGuards.js +29 -1
  24. package/src/types-index.d.ts +2 -0
  25. package/src/types-index.js +2 -0
  26. package/src/types.d.ts +36 -41
  27. package/src/types.d.ts.map +1 -0
  28. package/src/types.ts +90 -0
  29. package/src/utils.d.ts +17 -14
  30. package/src/utils.d.ts.map +1 -1
  31. package/src/utils.js +19 -6
  32. package/src/walletFactory.d.ts +24 -78
  33. package/src/walletFactory.d.ts.map +1 -1
  34. package/src/walletFactory.js +64 -37
  35. package/CHANGELOG.md +0 -180
  36. package/src/payments.d.ts +0 -20
  37. package/src/payments.d.ts.map +0 -1
  38. package/src/payments.js +0 -89
  39. package/src/proposals/upgrade-walletFactory-proposal.d.ts +0 -17
  40. package/src/proposals/upgrade-walletFactory-proposal.d.ts.map +0 -1
@@ -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): 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,215 @@ 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
+ getInvokeFacet(): import("@endo/exo").Guarded<{
29
+ /**
30
+ * @param {InvokeEntryMessage} message
31
+ */
32
+ invokeEntry(message: InvokeEntryMessage): Promise<void>;
33
+ }>;
34
+ getOffersFacet(): import("@endo/exo").Guarded<{
26
35
  /**
27
- * Take an offer description provided in capData, augment it with payments and call zoe.offer()
36
+ * Take an offer description provided in capData, augment it with
37
+ * payments and call zoe.offer()
28
38
  *
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
39
+ * @param {OfferSpec} offerSpec
40
+ * @returns {Promise<void>} after the offer has been both seated and
41
+ * exited by Zoe.
42
+ * @throws if any parts of the offer can be determined synchronously to
43
+ * be invalid
32
44
  */
33
- executeOffer(offerSpec: import('./offers.js').OfferSpec): Promise<void>;
45
+ executeOffer(offerSpec: OfferSpec): Promise<void>;
34
46
  /**
35
47
  * Take an offer's id, look up its seat, try to exit.
36
48
  *
37
- * @param {import('./offers.js').OfferId} offerId
49
+ * @param {OfferId} offerId
38
50
  * @returns {Promise<void>}
39
51
  * @throws if the seat can't be found or E(seatRef).tryExit() fails.
40
52
  */
41
- tryExitOffer(offerId: import('./offers.js').OfferId): Promise<void>;
42
- };
53
+ tryExitOffer(offerId: OfferId): Promise<void>;
54
+ }>;
43
55
  /** @deprecated use getPublicTopics */
44
- getCurrentSubscriber(): Subscriber<CurrentWalletRecord>;
56
+ getCurrentSubscriber(): globalThis.Subscriber<CurrentWalletRecord>;
45
57
  /** @deprecated use getPublicTopics */
46
- getUpdatesSubscriber(): Subscriber<UpdateRecord>;
58
+ getUpdatesSubscriber(): globalThis.Subscriber<UpdateRecord>;
47
59
  getPublicTopics(): {
48
60
  current: {
49
61
  description: string;
50
- subscriber: Subscriber<CurrentWalletRecord>;
62
+ subscriber: globalThis.Subscriber<CurrentWalletRecord>;
51
63
  storagePath: Promise<string>;
52
64
  };
53
65
  updates: {
54
66
  description: string;
55
- subscriber: Subscriber<UpdateRecord>;
67
+ subscriber: globalThis.Subscriber<UpdateRecord>;
56
68
  storagePath: Promise<string>;
57
69
  };
58
70
  };
59
- }>;
71
+ }>>;
72
+ export type ExecutorPowers = {
73
+ logger: {
74
+ info: (...args: any[]) => void;
75
+ error: (...args: any[]) => void;
76
+ };
77
+ makeOfferWatcher: import("./offerWatcher.js").MakeOfferWatcher;
78
+ invitationFromSpec: ERef<Invitation>;
79
+ };
60
80
  export type ExecuteOfferAction = {
61
- method: 'executeOffer';
62
- offer: import('./offers.js').OfferSpec;
81
+ method: "executeOffer";
82
+ offer: OfferSpec;
63
83
  };
64
84
  export type TryExitOfferAction = {
65
- method: 'tryExitOffer';
66
- offerId: import('./offers.js').OfferId;
85
+ method: "tryExitOffer";
86
+ offerId: OfferId;
67
87
  };
68
- export type BridgeAction = ExecuteOfferAction | TryExitOfferAction;
88
+ export type InvokeStoreEntryAction = {
89
+ /**
90
+ * BridgeAction discriminator
91
+ */
92
+ method: "invokeEntry";
93
+ /**
94
+ * object method call to make
95
+ */
96
+ message: InvokeEntryMessage;
97
+ };
98
+ export type BridgeAction = ExecuteOfferAction | TryExitOfferAction | InvokeStoreEntryAction;
69
99
  /**
70
- * Purses is an array to support a future requirement of multiple purses per brand.
100
+ * Purses is an array to support a future requirement of multiple purses per
101
+ * brand.
71
102
  *
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.
103
+ * Each map is encoded as an array of entries because a Map doesn't serialize
104
+ * directly. We also considered having a vstorage key for each offer but for now
105
+ * are sticking with this design.
74
106
  *
75
107
  * 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)
108
+ *
109
+ * - Reserializes previously written results when a new result is added
110
+ * - Optimizes reads though writes are on-chain (~100 machines) and reads are
111
+ * off-chain (to 1 machine)
78
112
  *
79
113
  * 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
114
  *
83
- * This design should be revisited if ever batch querying across vstorage keys become cheaper or reads be paid.
115
+ * - Reading all offer results happens much more (>100) often than storing a new
116
+ * offer result
117
+ * - Reserialization and writes are paid in execution gas, whereas reads are not
118
+ *
119
+ * This design should be revisited if ever batch querying across vstorage keys
120
+ * become cheaper or reads be paid.
84
121
  */
85
122
  export type CurrentWalletRecord = {
86
- purses: Array<{
123
+ purses: {
87
124
  brand: Brand;
88
125
  balance: Amount;
89
- }>;
90
- offerToUsedInvitation: Array<[offerId: string, usedInvitation: Amount]>;
126
+ }[];
127
+ offerToUsedInvitation: [offerId: string, usedInvitation: Amount][];
91
128
  offerToPublicSubscriberPaths: [offerId: string, publicTopics: {
92
129
  [subscriberName: string]: string;
93
130
  }][];
94
- liveOffers: Array<[import('./offers.js').OfferId, import('./offers.js').OfferStatus]>;
131
+ liveOffers: [OfferId, OfferStatus][];
95
132
  };
96
133
  /**
97
134
  * Record of an update to the state of this wallet.
98
135
  *
99
- * Client is responsible for coalescing updates into a current state. See `coalesceUpdates` utility.
136
+ * Client is responsible for coalescing updates into a current state. See
137
+ * `coalesceUpdates` utility.
100
138
  *
101
- * The reason for this burden on the client is that publishing
102
- * the full history of offers with each change is untenable.
139
+ * The reason for this burden on the client is that publishing the full history
140
+ * of offers with each change is untenable.
103
141
  *
104
142
  * `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.
143
+ * brand. An additional key will be needed to disambiguate. For now the brand
144
+ * in the amount suffices.
107
145
  */
108
146
  export type UpdateRecord = {
109
- updated: 'offerStatus';
110
- status: import('./offers.js').OfferStatus;
147
+ updated: "offerStatus";
148
+ status: OfferStatus;
111
149
  } | {
112
- updated: 'balance';
150
+ updated: "balance";
113
151
  currentAmount: Amount;
114
152
  } | {
115
- updated: 'walletAction';
153
+ updated: "walletAction";
116
154
  status: {
117
155
  error: string;
118
156
  };
157
+ } | {
158
+ updated: "invocation";
159
+ id: string | number;
160
+ error?: string;
161
+ result?: {
162
+ name?: string;
163
+ passStyle: string;
164
+ };
119
165
  };
120
166
  /**
121
- * For use by clients to describe brands to users. Includes `displayInfo` to save a remote call.
167
+ * For use by clients to describe brands to users. Includes `displayInfo` to
168
+ * save a remote call.
122
169
  */
123
170
  export type BrandDescriptor = {
124
171
  brand: Brand;
125
172
  displayInfo: DisplayInfo;
126
173
  issuer: Issuer;
127
- petname: import('./types').Petname;
174
+ petname: import("./types.js").Petname;
128
175
  };
129
- export type RemotePurse = import('./types').RemotePurse;
130
176
  export type UniqueParams = {
131
177
  address: string;
132
- bank: ERef<import('@agoric/vats/src/vat-bank').Bank>;
178
+ bank: ERef<import("@agoric/vats/src/vat-bank.js").Bank>;
133
179
  currentStorageNode: StorageNode;
134
- invitationPurse: Purse<'set'>;
180
+ invitationPurse: Purse<"set", InvitationDetails>;
135
181
  walletStorageNode: StorageNode;
136
182
  };
137
- export type BrandDescriptorRegistry = Pick<MapStore<Brand, BrandDescriptor>, 'has' | 'get' | 'values'>;
183
+ export type BrandDescriptorRegistry = Pick<MapStore<Brand, BrandDescriptor>, "has" | "get" | "values">;
138
184
  export type SharedParams = {
139
- agoricNames: ERef<import('@agoric/vats').NameHub>;
185
+ agoricNames: ERef<import("@agoric/vats").NameHub>;
140
186
  registry: BrandDescriptorRegistry;
141
- invitationIssuer: Issuer<'set'>;
142
- invitationBrand: Brand<'set'>;
187
+ invitationIssuer: Issuer<"set">;
188
+ invitationBrand: Brand<"set">;
143
189
  invitationDisplayInfo: DisplayInfo;
144
190
  publicMarshaller: Marshaller;
145
191
  zoe: ERef<ZoeService>;
146
192
  };
147
193
  /**
148
- * - `brandPurses` is precious and closely held. defined as late as possible to reduce its scope.
194
+ * - `brandPurses` is precious
195
+ * and closely held. defined as late as possible to reduce its scope.
196
+ *
149
197
  * - `offerToInvitationMakers` is precious and closely held.
150
198
  * - `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.
199
+ * - `purseBalances` is a cache of what we've received from purses. Held so we can
200
+ * publish all balances on change.
152
201
  */
153
202
  export type State = ImmutableState & MutableState;
154
203
  export type ImmutableState = Readonly<UniqueParams & {
155
- paymentQueues: MapStore<Brand, Array<Payment>>;
156
- offerToInvitationMakers: MapStore<string, import('./types').InvitationMakers>;
204
+ paymentQueues: MapStore<Brand, Payment[]>;
205
+ offerToInvitationMakers: MapStore<string, import("./types.js").InvitationMakers>;
157
206
  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>>;
207
+ offerToUsedInvitation: MapStore<string, Amount<"set">>;
208
+ purseBalances: MapStore<Purse, Amount>;
209
+ updateRecorderKit: import("@agoric/zoe/src/contractSupport/recorder.js").RecorderKit<UpdateRecord>;
210
+ currentRecorderKit: import("@agoric/zoe/src/contractSupport/recorder.js").RecorderKit<CurrentWalletRecord>;
211
+ liveOffers: MapStore<OfferId, OfferStatus>;
212
+ liveOfferSeats: MapStore<OfferId, UserSeat<unknown>>;
213
+ liveOfferPayments: MapStore<OfferId, MapStore<Brand, Payment>>;
214
+ myStore: MapStore;
164
215
  }>;
165
216
  export type PurseRecord = BrandDescriptor & {
166
217
  purse: Purse;
167
218
  };
168
219
  export type MutableState = {};
169
- export type SmartWallet = Awaited<ReturnType<ReturnType<typeof prepareSmartWallet>>>;
220
+ export type SmartWallet = EReturn<EReturn<typeof prepareSmartWallet>>;
221
+ import type { Payment } from '@agoric/ertp';
222
+ import type { Amount } from '@agoric/ertp';
223
+ import type { InvokeEntryMessage } from './offers.js';
224
+ import type { OfferSpec } from './offers.js';
225
+ import type { OfferId } from './offers.js';
226
+ import type { Brand } from '@agoric/ertp';
227
+ import type { OfferStatus } from './offers.js';
228
+ import type { Issuer } from '@agoric/ertp';
229
+ import type { InvitationDetails } from '@agoric/zoe';
230
+ import type { Purse } from '@agoric/ertp';
231
+ import type { MapStore } from '@agoric/store';
232
+ import type { UserSeat } from '@agoric/zoe';
233
+ import type { EReturn } from '@endo/far';
170
234
  //# 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":"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"}