UNPKG

@metamask/ocap-kernel

Version:
136 lines 8.09 kB
import type { KernelDatabase, KVStore, VatStore } from "@metamask/kernel-store"; import type { KRef, VatId } from "../types.cjs"; /** * Create a new KernelStore object wrapped around a raw kernel database. The * resulting object provides a variety of operations for accessing various * kernel-relevent persistent data structure abstractions on their own terms, * without burdening the kernel with the particular details of how they are * represented in storage. It is our hope that these operations may be later * reimplemented on top of a more sophisticated database layer that can realize * them more directly (and thus, one hopes, more efficiently) without requiring * the kernel itself to be any the wiser. * * @param kdb - The kernel database this store is based on. * @returns A KernelStore object that maps various persistent kernel data * structures onto `kdb`. */ export declare function makeKernelStore(kdb: KernelDatabase): { makeVatStore: (vatID: string) => VatStore; deleteVat: (vatId: VatId) => void; clear: () => void; reset: () => void; kv: KVStore; addSubcluster: (config: import("../types.cjs").ClusterConfig) => import("../types.cjs").SubclusterId; getSubcluster: (subclusterId: import("../types.cjs").SubclusterId) => import("../types.cjs").Subcluster | undefined; getSubclusters: () => import("../types.cjs").Subcluster[]; deleteSubcluster: (subclusterId: import("../types.cjs").SubclusterId) => void; addSubclusterVat: (subclusterId: import("../types.cjs").SubclusterId, vatId: VatId) => void; getSubclusterVats: (subclusterId: import("../types.cjs").SubclusterId) => VatId[]; deleteSubclusterVat: (subclusterId: import("../types.cjs").SubclusterId, vatId: VatId) => void; getVatSubcluster: (vatId: VatId) => import("../types.cjs").SubclusterId; clearEmptySubclusters: () => void; removeVatFromSubcluster: (vatId: VatId) => void; startCrank: () => void; createCrankSavepoint: (name: string) => void; rollbackCrank: (savepoint: string) => void; endCrank: () => void; releaseAllSavepoints: () => void; pinObject: (kref: KRef) => void; unpinObject: (kref: KRef) => void; getPinnedObjects: () => KRef[]; isObjectPinned: (kref: KRef) => boolean; translateRefKtoV: (vatId: VatId, kref: KRef, importIfNeeded: boolean) => import("../types.cjs").VRef; translateCapDataKtoV: (vatId: VatId, capdata: import("@endo/marshal").CapData<KRef>) => import("@endo/marshal").CapData<import("../types.cjs").VRef>; translateMessageKtoV: (vatId: VatId, message: import("../types.cjs").Message) => import("../types.cjs").Message; translateSyscallVtoK: (vatId: VatId, vso: import("@agoric/swingset-liveslots").VatSyscallObject) => import("@agoric/swingset-liveslots").VatSyscallObject; deleteEndpoint: (endpointId: import("../types.cjs").EndpointId) => void; getAllVatRecords: () => Generator<{ vatID: VatId; vatConfig: import("../types.cjs").VatConfig; }>; getVatConfig: (vatID: VatId) => import("../types.cjs").VatConfig; setVatConfig: (vatID: VatId, vatConfig: import("../types.cjs").VatConfig) => void; deleteVatConfig: (vatID: VatId) => void; getVatIDs: () => VatId[]; importsKernelSlot: (vatID: VatId, kernelSlot: KRef) => boolean; getImporters: (koid: KRef) => VatId[]; getTerminatedVats: () => VatId[]; markVatAsTerminated: (vatID: VatId) => void; forgetTerminatedVat: (vatID: VatId) => void; isVatTerminated: (vatID: VatId) => boolean; cleanupTerminatedVat: (vatID: VatId) => import("./types.cjs").VatCleanupWork; nextTerminatedVatCleanup: () => boolean; exportFromVat: (vatId: VatId, vref: import("../types.cjs").VRef) => KRef; isVatActive: (vatID: VatId) => boolean; addCListEntry: (endpointId: import("../types.cjs").EndpointId, kref: KRef, eref: import("../types.cjs").ERef) => void; hasCListEntry: (endpointId: import("../types.cjs").EndpointId, slot: string) => boolean; deleteCListEntry: (endpointId: import("../types.cjs").EndpointId, kref: KRef, eref: import("../types.cjs").ERef) => void; allocateErefForKref: (endpointId: import("../types.cjs").EndpointId, kref: KRef) => import("../types.cjs").ERef; erefToKref: (endpointId: import("../types.cjs").EndpointId, eref: import("../types.cjs").ERef) => KRef | undefined; krefToEref: (endpointId: import("../types.cjs").EndpointId, kref: KRef) => import("../types.cjs").ERef | undefined; forgetEref: (endpointId: import("../types.cjs").EndpointId, eref: import("../types.cjs").ERef) => void; forgetKref: (endpointId: import("../types.cjs").EndpointId, kref: KRef) => void; krefsToExistingErefs: (endpointId: import("../types.cjs").EndpointId, krefs: KRef[]) => import("../types.cjs").ERef[]; getReachableFlag: (endpointId: import("../types.cjs").EndpointId, kref: KRef) => boolean; getReachableAndVatSlot: (endpointId: import("../types.cjs").EndpointId, kref: KRef) => { isReachable: boolean; vatSlot: string; }; clearReachableFlag: (endpointId: import("../types.cjs").EndpointId, kref: KRef) => void; getGCActions: () => Set<import("../types.cjs").GCAction>; setGCActions: (actions: Set<import("../types.cjs").GCAction>) => void; addGCActions: (newActions: import("../types.cjs").GCAction[]) => void; scheduleReap: (vatId: VatId) => void; nextReapAction: () => import("../types.cjs").RunQueueItemBringOutYourDead | undefined; retireKernelObjects: (koids: KRef[]) => void; collectGarbage: () => void; setRevoked: (koId: KRef, revoked: boolean) => void; revoke: (koId: KRef) => void; isRevoked: (koId: KRef) => boolean; initKernelPromise: () => [KRef, import("../types.cjs").KernelPromise]; getKernelPromise: (kpid: KRef) => import("../types.cjs").KernelPromise; deleteKernelPromise: (kpid: KRef) => void; getNextPromiseId: () => KRef; addPromiseSubscriber: (vatId: VatId, kpid: KRef) => void; setPromiseDecider: (kpid: KRef, vatId: VatId) => void; resolveKernelPromise: (kpid: KRef, rejected: boolean, value: import("@endo/marshal").CapData<KRef>) => void; enqueuePromiseMessage: (kpid: KRef, message: import("../types.cjs").Message) => void; getKernelPromiseMessageQueue: (kpid: KRef) => import("../types.cjs").Message[]; getPromisesByDecider: (decider: VatId) => Generator<string>; getKpidsToRetire: (origKpid: KRef, origValue: import("@endo/marshal").CapData<KRef>) => KRef[]; initKernelObject: (owner: import("../types.cjs").EndpointId) => KRef; getOwner: (koId: KRef, throwIfUnknown?: boolean) => import("../types.cjs").EndpointId | undefined; getRootObject: (vatId: VatId) => KRef | undefined; isRootObject: (kref: KRef, vatId: VatId) => boolean; deleteKernelObject: (koId: KRef) => void; getNextObjectId: () => KRef; getObjectRefCount: (kref: KRef) => { reachable: number; recognizable: number; }; setObjectRefCount: (kref: KRef, counts: { reachable: number; recognizable: number; }) => void; getRefCount: (kref: KRef) => number; kernelRefExists: (kref: KRef) => boolean; incRefCount: (kref: KRef) => number; decRefCount: (kref: KRef) => number; incrementRefCount: (kref: KRef, tag: string, { isExport, onlyRecognizable, }?: { isExport?: boolean; onlyRecognizable?: boolean; }) => void; decrementRefCount: (kref: KRef, tag: string, { isExport, onlyRecognizable, }?: { isExport?: boolean; onlyRecognizable?: boolean; }) => boolean; getQueueLength: (queueName: string) => number; enqueueRun: (message: import("../types.cjs").RunQueueItem) => void; dequeueRun: () => import("../types.cjs").RunQueueItem | undefined; runQueueLength: () => number; getNextVatId: () => VatId; getNextRemoteId: () => import("../types.cjs").RemoteId; initEndpoint: (endpointId: import("../types.cjs").EndpointId) => void; }; export type KernelStore = ReturnType<typeof makeKernelStore>; //# sourceMappingURL=index.d.cts.map