@metamask/ocap-kernel
Version:
OCap kernel core components
58 lines • 2.01 kB
JavaScript
import { tuple, literal, array, string, union, boolean } from "@metamask/superstruct";
import { CapDataStruct, MessageStruct, VatOneResolutionStruct } from "../../types.mjs";
const SendStruct = tuple([literal('send'), string(), MessageStruct]);
const SubscribeStruct = tuple([literal('subscribe'), string()]);
const ResolveStruct = tuple([
literal('resolve'),
array(VatOneResolutionStruct),
]);
const ExitStruct = tuple([literal('exit'), boolean(), CapDataStruct]);
const DropImportsStruct = tuple([literal('dropImports'), array(string())]);
const RetireImportsStruct = tuple([literal('retireImports'), array(string())]);
const RetireExportsStruct = tuple([literal('retireExports'), array(string())]);
const AbandonExportsStruct = tuple([
literal('abandonExports'),
array(string()),
]);
// These are bogus, but are needed to keep TypeScript happy
const CallNowStruct = tuple([
literal('callNow'),
string(),
string(),
CapDataStruct,
]);
const VatstoreGetStruct = tuple([literal('vatstoreGet'), string()]);
const VatstoreGetNextKeyStruct = tuple([
literal('vatstoreGetNextKey'),
string(),
]);
const VatstoreSetStruct = tuple([literal('vatstoreSet'), string(), string()]);
const VatstoreDeleteStruct = tuple([literal('vatstoreDelete'), string()]);
const VatSyscallParamsStruct = union([
SendStruct,
SubscribeStruct,
ResolveStruct,
ExitStruct,
DropImportsStruct,
RetireImportsStruct,
RetireExportsStruct,
AbandonExportsStruct,
// These are bogus, but are needed to keep TypeScript happy
CallNowStruct,
VatstoreGetStruct,
VatstoreGetNextKeyStruct,
VatstoreSetStruct,
VatstoreDeleteStruct,
]);
export const vatSyscallSpec = {
method: 'syscall',
params: VatSyscallParamsStruct,
};
export const vatSyscallHandler = {
...vatSyscallSpec,
hooks: { handleSyscall: true },
implementation: ({ handleSyscall }, params) => {
handleSyscall(params);
},
};
//# sourceMappingURL=vat-syscall.mjs.map