API documentation of Agoric SDK / Exports / @agoric/smart-wallet / smartWallet
Module: smartWallet 
Table of contents 
Type Aliases 
- BrandDescriptor
 - BrandDescriptorRegistry
 - BridgeAction
 - CurrentWalletRecord
 - ExecuteOfferAction
 - ExecutorPowers
 - ImmutableState
 - MutableState
 - OfferId
 - OfferSpec
 - PurseRecord
 - SharedParams
 - SmartWallet
 - State
 - TryExitOfferAction
 - UniqueParams
 - UpdateRecord
 
Variables 
Functions 
Type Aliases 
BrandDescriptor 
Ƭ BrandDescriptor: Object
For use by clients to describe brands to users. Includes displayInfo to save a remote call.
Type declaration 
| Name | Type | 
|---|---|
brand | Brand | 
displayInfo | DisplayInfo | 
issuer | Issuer | 
petname | types | 
Defined in 
BrandDescriptorRegistry 
Ƭ BrandDescriptorRegistry: Pick<MapStore<Brand, BrandDescriptor>, "has" | "get" | "values">
Defined in 
BridgeAction 
Ƭ BridgeAction: ExecuteOfferAction | TryExitOfferAction
Defined in 
CurrentWalletRecord 
Ƭ CurrentWalletRecord: Object
Type declaration 
| Name | Type | 
|---|---|
liveOffers | [OfferId, offers][] | 
offerToPublicSubscriberPaths | [offerId: string, publicTopics: Object][] | 
offerToUsedInvitation | [offerId: string, usedInvitation: Amount][] | 
purses | { balance: Amount ; brand: Brand }[] | 
Defined in 
ExecuteOfferAction 
Ƭ ExecuteOfferAction: Object
Type declaration 
| Name | Type | 
|---|---|
method | "executeOffer" | 
offer | OfferSpec | 
Defined in 
ExecutorPowers 
Ƭ ExecutorPowers: Object
Type declaration 
| Name | Type | 
|---|---|
invitationFromSpec | ERef<Invitation> | 
logger | { error: (...args: any[]) => void ; info: (...args: any[]) => void } | 
logger.error | (...args: any[]) => void | 
logger.info | (...args: any[]) => void | 
makeOfferWatcher | MakeOfferWatcher | 
Defined in 
ImmutableState 
Ƭ ImmutableState: Readonly<UniqueParams & { currentRecorderKit: RecorderKit ; liveOfferPayments: MapStore<OfferId, MapStore<Brand, Payment>> ; liveOfferSeats: MapStore<OfferId, UserSeat<unknown>> ; liveOffers: MapStore<OfferId, offers> ; offerToInvitationMakers: MapStore<string, types> ; offerToPublicSubscriberPaths: MapStore<string, Record<string, string>> ; offerToUsedInvitation: MapStore<string, Amount<"set">> ; paymentQueues: MapStore<Brand, Payment[]> ; purseBalances: MapStore<Purse, Amount> ; updateRecorderKit: RecorderKit }>
Defined in 
MutableState 
Ƭ MutableState: Object
Defined in 
OfferId 
Ƭ OfferId: number | string
Defined in 
OfferSpec 
Ƭ OfferSpec: Object
Type declaration 
| Name | Type | 
|---|---|
id | OfferId | 
invitationSpec | invitations | 
offerArgs? | unknown | 
proposal | Proposal | 
Defined in 
PurseRecord 
Ƭ PurseRecord: BrandDescriptor & { purse: Purse }
Defined in 
SharedParams 
Ƭ SharedParams: Object
Type declaration 
| Name | Type | 
|---|---|
agoricNames | ERef<index> | 
invitationBrand | Brand<"set"> | 
invitationDisplayInfo | DisplayInfo | 
invitationIssuer | Issuer<"set"> | 
publicMarshaller | Marshaller | 
registry | BrandDescriptorRegistry | 
secretWalletFactoryKey | any | 
zoe | ERef<ZoeService> | 
Defined in 
SmartWallet 
Ƭ SmartWallet: Awaited<ReturnType<ReturnType<typeof prepareSmartWallet>>>
Defined in 
State 
Ƭ State: ImmutableState & MutableState
brandPurses is precious and closely held. defined as late as possible to reduce its scope.
offerToInvitationMakersis precious and closely held.offerToPublicSubscriberPathsis precious and closely held.purseBalancesis a cache of what we've received from purses. Held so we can publish all balances on change.
Defined in 
TryExitOfferAction 
Ƭ TryExitOfferAction: Object
Type declaration 
| Name | Type | 
|---|---|
method | "tryExitOffer" | 
offerId | OfferId | 
Defined in 
UniqueParams 
Ƭ UniqueParams: Object
Type declaration 
| Name | Type | 
|---|---|
address | string | 
bank | ERef<Bank> | 
currentStorageNode | StorageNode | 
invitationPurse | Purse<"set"> | 
walletStorageNode | StorageNode | 
Defined in 
UpdateRecord 
Ƭ UpdateRecord: { status: offers ; updated: "offerStatus" } | { currentAmount: Amount ; updated: "balance" } | { status: { error: string } ; updated: "walletAction" }
Record of an update to the state of this wallet.
Client is responsible for coalescing updates into a current state. See coalesceUpdates utility.
The reason for this burden on the client is that publishing the full history of offers with each change is untenable.
balance update supports forward-compatibility for more than one purse per brand. An additional key will be needed to disambiguate. For now the brand in the amount suffices.
Defined in 
Variables 
BRAND_TO_PURSES_KEY 
• Const BRAND_TO_PURSES_KEY: "brandToPurses"
Defined in 
Functions 
prepareSmartWallet 
▸ prepareSmartWallet(baggage, shared): (uniqueWithoutChildNodes: Omit<UniqueParams, "currentStorageNode" | "walletStorageNode"> & { walletStorageNode: ERef<StorageNode> }) => Promise<Guarded<{ getCurrentSubscriber: () => Subscriber<CurrentWalletRecord> ; getDepositFacet: () => Guarded<{ receive: (payment: Payment<AssetKind>) => Promise<Amount<AssetKind>> }> ; getOffersFacet: () => Guarded<{ executeOffer: (offerSpec: OfferSpec) => Promise<void> ; tryExitOffer: (offerId: OfferId) => Promise<void> }> ; getPublicTopics: () => { current: { description: string = 'Current state of wallet'; storagePath: Promise<string> ; subscriber: Subscriber<CurrentWalletRecord> = currentRecorderKit.subscriber } ; updates: { description: string = 'Changes to wallet'; storagePath: Promise<string> ; subscriber: Subscriber<UpdateRecord> = updateRecorderKit.subscriber } } ; getUpdatesSubscriber: () => Subscriber<UpdateRecord> ; handleBridgeAction: (actionCapData: CapData<null | string>, canSpend?: boolean) => Promise<void> ; repairWalletForIncarnation2: (key: any) => void }>>
Parameters 
| Name | Type | 
|---|---|
baggage | Baggage | 
shared | SharedParams | 
Returns 
fn
▸ (uniqueWithoutChildNodes): Promise<Guarded<{ getCurrentSubscriber: () => Subscriber<CurrentWalletRecord> ; getDepositFacet: () => Guarded<{ receive: (payment: Payment<AssetKind>) => Promise<Amount<AssetKind>> }> ; getOffersFacet: () => Guarded<{ executeOffer: (offerSpec: OfferSpec) => Promise<void> ; tryExitOffer: (offerId: OfferId) => Promise<void> }> ; getPublicTopics: () => { current: { description: string = 'Current state of wallet'; storagePath: Promise<string> ; subscriber: Subscriber<CurrentWalletRecord> = currentRecorderKit.subscriber } ; updates: { description: string = 'Changes to wallet'; storagePath: Promise<string> ; subscriber: Subscriber<UpdateRecord> = updateRecorderKit.subscriber } } ; getUpdatesSubscriber: () => Subscriber<UpdateRecord> ; handleBridgeAction: (actionCapData: CapData<null | string>, canSpend?: boolean) => Promise<void> ; repairWalletForIncarnation2: (key: any) => void }>>
Parameters 
| Name | Type | 
|---|---|
uniqueWithoutChildNodes | Omit<UniqueParams, "currentStorageNode" | "walletStorageNode"> & { walletStorageNode: ERef<StorageNode> } | 
Returns 
Promise<Guarded<{ getCurrentSubscriber: () => Subscriber<CurrentWalletRecord> ; getDepositFacet: () => Guarded<{ receive: (payment: Payment<AssetKind>) => Promise<Amount<AssetKind>> }> ; getOffersFacet: () => Guarded<{ executeOffer: (offerSpec: OfferSpec) => Promise<void> ; tryExitOffer: (offerId: OfferId) => Promise<void> }> ; getPublicTopics: () => { current: { description: string = 'Current state of wallet'; storagePath: Promise<string> ; subscriber: Subscriber<CurrentWalletRecord> = currentRecorderKit.subscriber } ; updates: { description: string = 'Changes to wallet'; storagePath: Promise<string> ; subscriber: Subscriber<UpdateRecord> = updateRecorderKit.subscriber } } ; getUpdatesSubscriber: () => Subscriber<UpdateRecord> ; handleBridgeAction: (actionCapData: CapData<null | string>, canSpend?: boolean) => Promise<void> ; repairWalletForIncarnation2: (key: any) => void }>>