UNPKG

wallet-storage-client

Version:
121 lines 4.74 kB
import { sdk, table } from "../index.client"; /** * This is the minimal interface required for a WalletStorageProvider to export data to another provider. */ export interface StorageSyncReader { isAvailable(): boolean; makeAvailable(): Promise<table.Settings>; destroy(): Promise<void>; getSettings(): table.Settings; findUserByIdentityKey(key: string): Promise<table.User | undefined>; findSyncStates(args: sdk.FindSyncStatesArgs): Promise<table.SyncState[]>; findCertificateFields(args: sdk.FindCertificateFieldsArgs): Promise<table.CertificateField[]>; findCertificates(args: sdk.FindCertificatesArgs): Promise<table.Certificate[]>; findCommissions(args: sdk.FindCommissionsArgs): Promise<table.Commission[]>; findOutputBaskets(args: sdk.FindOutputBasketsArgs): Promise<table.OutputBasket[]>; findOutputs(args: sdk.FindOutputsArgs): Promise<table.Output[]>; findOutputTags(args: sdk.FindOutputTagsArgs): Promise<table.OutputTag[]>; findTransactions(args: sdk.FindTransactionsArgs): Promise<table.Transaction[]>; findTxLabels(args: sdk.FindTxLabelsArgs): Promise<table.TxLabel[]>; getProvenTxsForUser(args: sdk.FindForUserSincePagedArgs): Promise<table.ProvenTx[]>; getProvenTxReqsForUser(args: sdk.FindForUserSincePagedArgs): Promise<table.ProvenTxReq[]>; getTxLabelMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<table.TxLabelMap[]>; getOutputTagMapsForUser(args: sdk.FindForUserSincePagedArgs): Promise<table.OutputTagMap[]>; getSyncChunk(args: RequestSyncChunkArgs): Promise<SyncChunk>; } /** * success: Last sync of this user from this storage was successful. * * error: Last sync protocol operation for this user to this storage threw and error. * * identified: Configured sync storage has been identified but not sync'ed. * * unknown: Sync protocol state is unknown. */ export type SyncStatus = 'success' | 'error' | 'identified' | 'updated' | 'unknown'; export type SyncProtocolVersion = '0.1.0'; export interface RequestSyncChunkArgs { /** * The storageIdentityKey of the storage supplying the update SyncChunk data. */ fromStorageIdentityKey: string; /** * The storageIdentityKey of the storage consuming the update SyncChunk data. */ toStorageIdentityKey: string; /** * The identity of whose data is being requested */ identityKey: string; /** * The max updated_at time received from the storage service receiving the request. * Will be undefiend if this is the first request or if no data was previously sync'ed. * * `since` must include items if 'updated_at' is greater or equal. Thus, when not undefined, a sync request should always return at least one item already seen. */ since?: Date; /** * A rough limit on how large the response should be. * The item that exceeds the limit is included and ends adding more items. */ maxRoughSize: number; /** * The maximum number of items (records) to be returned. */ maxItems: number; /** * For each entity in dependency order, the offset at which to start returning items * from `since`. * * The entity order is: * 0 ProvenTxs * 1 ProvenTxReqs * 2 OutputBaskets * 3 TxLabels * 4 OutputTags * 5 Transactions * 6 TxLabelMaps * 7 Commissions * 8 Outputs * 9 OutputTagMaps * 10 Certificates * 11 CertificateFields */ offsets: { name: string; offset: number; }[]; } /** * Result received from remote `WalletStorage` in response to a `RequestSyncChunkArgs` request. * * Each property is undefined if there was no attempt to update it. Typically this is caused by size and count limits on this result. * * If all properties are empty arrays the sync process has received all available new and updated items. */ export interface SyncChunk { fromStorageIdentityKey: string; toStorageIdentityKey: string; userIdentityKey: string; user?: table.User; provenTxs?: table.ProvenTx[]; provenTxReqs?: table.ProvenTxReq[]; outputBaskets?: table.OutputBasket[]; txLabels?: table.TxLabel[]; outputTags?: table.OutputTag[]; transactions?: table.Transaction[]; txLabelMaps?: table.TxLabelMap[]; commissions?: table.Commission[]; outputs?: table.Output[]; outputTagMaps?: table.OutputTagMap[]; certificates?: table.Certificate[]; certificateFields?: table.CertificateField[]; } export interface ProcessSyncChunkResult { done: boolean; maxUpdated_at: Date | undefined; updates: number; inserts: number; error?: sdk.WalletError; } //# sourceMappingURL=StorageSyncReader.d.ts.map