{"version":3,"file":"vat-syscall.mjs","sourceRoot":"","sources":["../../../src/rpc/vat-syscall/vat-syscall.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACR,8BAA8B;AAG/B,OAAO,EACL,aAAa,EACb,aAAa,EACb,sBAAsB,EACvB,wBAAuB;AAExB,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AACrE,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAChE,MAAM,aAAa,GAAG,KAAK,CAAC;IAC1B,OAAO,CAAC,SAAS,CAAC;IAClB,KAAK,CAAC,sBAAsB,CAAC;CAC9B,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;AACtE,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/E,MAAM,oBAAoB,GAAG,KAAK,CAAC;IACjC,OAAO,CAAC,gBAAgB,CAAC;IACzB,KAAK,CAAC,MAAM,EAAE,CAAC;CAChB,CAAC,CAAC;AACH,2DAA2D;AAC3D,MAAM,aAAa,GAAG,KAAK,CAAC;IAC1B,OAAO,CAAC,SAAS,CAAC;IAClB,MAAM,EAAE;IACR,MAAM,EAAE;IACR,aAAa;CACd,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACpE,MAAM,wBAAwB,GAAG,KAAK,CAAC;IACrC,OAAO,CAAC,oBAAoB,CAAC;IAC7B,MAAM,EAAE;CACT,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC9E,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAE1E,MAAM,sBAAsB,GAAG,KAAK,CAAC;IACnC,UAAU;IACV,eAAe;IACf,aAAa;IACb,UAAU;IACV,iBAAiB;IACjB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,2DAA2D;IAC3D,aAAa;IACb,iBAAiB;IACjB,wBAAwB;IACxB,iBAAiB;IACjB,oBAAoB;CACrB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAkD;IAC3E,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,sBAAsB;CACtB,CAAC;AAQX,MAAM,CAAC,MAAM,iBAAiB,GAK1B;IACF,GAAG,cAAc;IACjB,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;IAC9B,cAAc,EAAE,CAAC,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE;QAC5C,aAAa,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACO,CAAC","sourcesContent":["import type { Handler, MethodSpec } from '@metamask/kernel-rpc-methods';\nimport {\n  tuple,\n  literal,\n  array,\n  string,\n  union,\n  boolean,\n} from '@metamask/superstruct';\nimport type { Infer } from '@metamask/superstruct';\n\nimport {\n  CapDataStruct,\n  MessageStruct,\n  VatOneResolutionStruct,\n} from '../../types.ts';\n\nconst SendStruct = tuple([literal('send'), string(), MessageStruct]);\nconst SubscribeStruct = tuple([literal('subscribe'), string()]);\nconst ResolveStruct = tuple([\n  literal('resolve'),\n  array(VatOneResolutionStruct),\n]);\nconst ExitStruct = tuple([literal('exit'), boolean(), CapDataStruct]);\nconst DropImportsStruct = tuple([literal('dropImports'), array(string())]);\nconst RetireImportsStruct = tuple([literal('retireImports'), array(string())]);\nconst RetireExportsStruct = tuple([literal('retireExports'), array(string())]);\nconst AbandonExportsStruct = tuple([\n  literal('abandonExports'),\n  array(string()),\n]);\n// These are bogus, but are needed to keep TypeScript happy\nconst CallNowStruct = tuple([\n  literal('callNow'),\n  string(),\n  string(),\n  CapDataStruct,\n]);\nconst VatstoreGetStruct = tuple([literal('vatstoreGet'), string()]);\nconst VatstoreGetNextKeyStruct = tuple([\n  literal('vatstoreGetNextKey'),\n  string(),\n]);\nconst VatstoreSetStruct = tuple([literal('vatstoreSet'), string(), string()]);\nconst VatstoreDeleteStruct = tuple([literal('vatstoreDelete'), string()]);\n\nconst VatSyscallParamsStruct = union([\n  SendStruct,\n  SubscribeStruct,\n  ResolveStruct,\n  ExitStruct,\n  DropImportsStruct,\n  RetireImportsStruct,\n  RetireExportsStruct,\n  AbandonExportsStruct,\n  // These are bogus, but are needed to keep TypeScript happy\n  CallNowStruct,\n  VatstoreGetStruct,\n  VatstoreGetNextKeyStruct,\n  VatstoreSetStruct,\n  VatstoreDeleteStruct,\n]);\n\ntype VatSyscallParams = Infer<typeof VatSyscallParamsStruct>;\n\nexport const vatSyscallSpec: MethodSpec<'syscall', VatSyscallParams, void> = {\n  method: 'syscall',\n  params: VatSyscallParamsStruct,\n} as const;\n\nexport type HandleSyscall = (params: VatSyscallParams) => void;\n\ntype SyscallHooks = {\n  handleSyscall: HandleSyscall;\n};\n\nexport const vatSyscallHandler: Handler<\n  'syscall',\n  VatSyscallParams,\n  void,\n  SyscallHooks\n> = {\n  ...vatSyscallSpec,\n  hooks: { handleSyscall: true },\n  implementation: ({ handleSyscall }, params) => {\n    handleSyscall(params);\n  },\n} as const;\n"]}