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