UNPKG

@agoric/zoe

Version:

Zoe: the Smart Contract Framework for Offer Enforcement

117 lines • 6.72 kB
export function prepareRecorder(baggage: import("@agoric/vat-data").Baggage, marshaller: ERef<Marshaller>): (publisher: globalThis.Publisher<unknown>, storageNode: import("@endo/eventual-send").DataOnly<globalThis.StorageNode> & import("@endo/eventual-send").RemotableBrand<import("@endo/eventual-send").DataOnly<globalThis.StorageNode>, globalThis.StorageNode>, valueShape?: TypedPattern<any> | undefined) => import("@endo/exo").Guarded<{ getStorageNode(): import("@endo/eventual-send").DataOnly<globalThis.StorageNode> & import("@endo/eventual-send").RemotableBrand<import("@endo/eventual-send").DataOnly<globalThis.StorageNode>, globalThis.StorageNode>; /** * Memoizes the remote call to the storage node * * @returns {Promise<string>} */ getStoragePath(): Promise<string>; /** * Marshalls before writing to storage or publisher to help ensure the two streams match. * * @param {any} value * @returns {Promise<void>} */ write(value: any): Promise<void>; /** * Like `write` but prevents future writes and terminates the publisher. * * @param {any} value * @returns {Promise<void>} */ writeFinal(value: any): Promise<void>; }>; export function defineRecorderKit({ makeRecorder, makeDurablePublishKit }: { makeRecorder: MakeRecorder; makeDurablePublishKit: ReturnType<typeof prepareDurablePublishKit>; }): <T>(storageNode: StorageNode | Awaited<import("@endo/far").FarRef<StorageNode>>, valueShape?: TypedPattern<T> | undefined) => RecorderKit<T>; export function defineERecorderKit({ makeRecorder, makeDurablePublishKit }: { makeRecorder: MakeRecorder; makeDurablePublishKit: ReturnType<typeof prepareDurablePublishKit>; }): <T>(storageNodeP: ERef<StorageNode>, valueShape?: TypedPattern<T> | undefined) => EventualRecorderKit<T>; export function prepareRecorderKit(baggage: import("@agoric/vat-data").Baggage, marshaller: ERef<Marshaller>): <T>(storageNode: StorageNode | Awaited<import("@endo/far").FarRef<StorageNode>>, valueShape?: TypedPattern<T> | undefined) => RecorderKit<T>; export function prepareRecorderKitMakers(baggage: import("@agoric/vat-data").Baggage, marshaller: ERef<Marshaller>): { makeDurablePublishKit: <T>(options?: Parameters<(options?: { valueDurability?: "mandatory" | undefined; }) => import("@agoric/notifier").DurablePublishKitState>[0]) => PublishKit<T>; makeRecorder: (publisher: globalThis.Publisher<unknown>, storageNode: import("@endo/eventual-send").DataOnly<globalThis.StorageNode> & import("@endo/eventual-send").RemotableBrand<import("@endo/eventual-send").DataOnly<globalThis.StorageNode>, globalThis.StorageNode>, valueShape?: TypedPattern<any> | undefined) => import("@endo/exo").Guarded<{ getStorageNode(): import("@endo/eventual-send").DataOnly<globalThis.StorageNode> & import("@endo/eventual-send").RemotableBrand<import("@endo/eventual-send").DataOnly<globalThis.StorageNode>, globalThis.StorageNode>; /** * Memoizes the remote call to the storage node * * @returns {Promise<string>} */ getStoragePath(): Promise<string>; /** * Marshalls before writing to storage or publisher to help ensure the two streams match. * * @param {any} value * @returns {Promise<void>} */ write(value: any): Promise<void>; /** * Like `write` but prevents future writes and terminates the publisher. * * @param {any} value * @returns {Promise<void>} */ writeFinal(value: any): Promise<void>; }>; makeRecorderKit: <T>(storageNode: StorageNode | Awaited<import("@endo/far").FarRef<StorageNode>>, valueShape?: TypedPattern<T> | undefined) => RecorderKit<T>; makeERecorderKit: <T>(storageNodeP: ERef<StorageNode>, valueShape?: TypedPattern<T> | undefined) => EventualRecorderKit<T>; }; export function prepareMockRecorderKitMakers(): { storageNode: globalThis.StorageNode & { countSetValueCalls: () => number; }; makeDurablePublishKit: <T>(options?: Parameters<(options?: { valueDurability?: "mandatory" | undefined; }) => import("@agoric/notifier").DurablePublishKitState>[0]) => PublishKit<T>; makeRecorder: (publisher: globalThis.Publisher<unknown>, storageNode: import("@endo/eventual-send").DataOnly<globalThis.StorageNode> & import("@endo/eventual-send").RemotableBrand<import("@endo/eventual-send").DataOnly<globalThis.StorageNode>, globalThis.StorageNode>, valueShape?: TypedPattern<any> | undefined) => import("@endo/exo").Guarded<{ getStorageNode(): import("@endo/eventual-send").DataOnly<globalThis.StorageNode> & import("@endo/eventual-send").RemotableBrand<import("@endo/eventual-send").DataOnly<globalThis.StorageNode>, globalThis.StorageNode>; /** * Memoizes the remote call to the storage node * * @returns {Promise<string>} */ getStoragePath(): Promise<string>; /** * Marshalls before writing to storage or publisher to help ensure the two streams match. * * @param {any} value * @returns {Promise<void>} */ write(value: any): Promise<void>; /** * Like `write` but prevents future writes and terminates the publisher. * * @param {any} value * @returns {Promise<void>} */ writeFinal(value: any): Promise<void>; }>; makeRecorderKit: <T>(storageNode: StorageNode | Awaited<import("@endo/far").FarRef<StorageNode>>, valueShape?: TypedPattern<T> | undefined) => RecorderKit<T>; makeERecorderKit: <T>(storageNodeP: ERef<StorageNode>, valueShape?: TypedPattern<T> | undefined) => EventualRecorderKit<T>; }; export namespace RecorderKitShape { let recorder: import("@endo/patterns").Matcher; let subscriber: import("@endo/patterns").Matcher; } export type Recorder<T> = { getStorageNode(): Awaited<import("@endo/far").FarRef<StorageNode>>; getStoragePath(): Promise<string>; write(value: T): Promise<void>; writeFinal(value: T): Promise<void>; }; export type RecorderKit<T> = Pick<PublishKit<T>, "subscriber"> & { recorder: Recorder<T>; }; export type EventualRecorderKit<T> = Pick<PublishKit<T>, "subscriber"> & { recorderP: ERef<Recorder<T>>; }; export type MakeRecorder = ReturnType<typeof prepareRecorder>; export type MakeRecorderKit = ReturnType<typeof defineRecorderKit>; export type MakeERecorderKit = ReturnType<typeof defineERecorderKit>; import type { TypedPattern } from '@agoric/internal'; import { prepareDurablePublishKit } from '@agoric/notifier'; //# sourceMappingURL=recorder.d.ts.map