{"version":3,"file":"getBackgroundEvents.mjs","sourceRoot":"","sources":["../../src/permitted/getBackgroundEvents.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,6BAA6B;AAQtD,OAAO,EAAE,cAAc,EAAE,gCAAsB;AAU/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,cAAc,EAAE,oCAAoC;IACpD,WAAW,EAAE,CAAC,oCAAoC,EAAE,uBAAuB,CAAC;CAO7E,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,KAAK,UAAU,oCAAoC,CACjD,GAAwD,EACxD,GAAsD,EACtD,KAAc,EACd,GAA6B,EAC7B,MAAa,EACb,SAA8D;IAE9D,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IAEvB,IACE,CAAC,SAAS,CAAC,IAAI,CACb,oCAAoC,EACpC,MAAM,EACN,cAAc,CAAC,OAAO,CACvB,EACD,CAAC;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC;QACH,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,EAAE,CAAC;AACf,CAAC","sourcesContent":["import type {\n  JsonRpcEngineEndCallback,\n  MethodHandler,\n} from '@metamask/json-rpc-engine';\nimport type { Messenger } from '@metamask/messenger';\nimport type { PermissionControllerHasPermissionAction } from '@metamask/permission-controller';\nimport { providerErrors } from '@metamask/rpc-errors';\nimport type {\n  GetBackgroundEventsParams,\n  GetBackgroundEventsResult,\n  SnapId,\n} from '@metamask/snaps-sdk';\nimport { type PendingJsonRpcResponse } from '@metamask/utils';\n\nimport { SnapEndowments } from '../endowments';\nimport type {\n  CronjobControllerGetAction,\n  JsonRpcRequestWithOrigin,\n} from '../types';\n\nexport type GetBackgroundEventsMethodActions =\n  | PermissionControllerHasPermissionAction\n  | CronjobControllerGetAction;\n\n/**\n * Get the scheduled background events for the Snap.\n *\n * @example\n * ```ts\n * const events = await snap.request({\n *   method: 'snap_getBackgroundEvents',\n * });\n * console.log(events);\n * // [\n * //   {\n * //     id: 'event-1',\n * //     scheduledAt: 1672531200000,\n * //     snapId: 'npm:example-snap',\n * //     date: 1672531200000,\n * //     request: {\n * //       method: 'example_method',\n * //       params: { example: 'data' },\n * //     },\n * //   },\n * //   ...,\n * // ]\n * ```\n */\nexport const getBackgroundEventsHandler = {\n  implementation: getGetBackgroundEventsImplementation,\n  actionNames: ['PermissionController:hasPermission', 'CronjobController:get'],\n} satisfies MethodHandler<\n  never,\n  GetBackgroundEventsMethodActions,\n  GetBackgroundEventsParams,\n  GetBackgroundEventsResult,\n  { origin: SnapId }\n>;\n\n/**\n * The `snap_getBackgroundEvents` method implementation.\n *\n * @param req - The JSON-RPC request object.\n * @param res - The JSON-RPC response object.\n * @param _next - The `json-rpc-engine` \"next\" callback.\n * Not used by this function.\n * @param end - The `json-rpc-engine` \"end\" callback.\n * @param _hooks - The RPC method hooks. Not used by this function.\n * @param messenger - The messenger used to call controller actions.\n * @returns An array of background events.\n */\nasync function getGetBackgroundEventsImplementation(\n  req: JsonRpcRequestWithOrigin<GetBackgroundEventsParams>,\n  res: PendingJsonRpcResponse<GetBackgroundEventsResult>,\n  _next: unknown,\n  end: JsonRpcEngineEndCallback,\n  _hooks: never,\n  messenger: Messenger<string, GetBackgroundEventsMethodActions>,\n): Promise<void> {\n  const { origin } = req;\n\n  if (\n    !messenger.call(\n      'PermissionController:hasPermission',\n      origin,\n      SnapEndowments.Cronjob,\n    )\n  ) {\n    return end(providerErrors.unauthorized());\n  }\n  try {\n    res.result = messenger.call('CronjobController:get', origin);\n  } catch (error) {\n    return end(error);\n  }\n\n  return end();\n}\n"]}