{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/handlers/types.ts"],"names":[],"mappings":"AA8BA,MAAM,CAAN,IAAY,WAsBX;AAtBD,WAAY,WAAW;IACrB,4CAA6B,CAAA;IAC7B,0CAA2B,CAAA;IAC3B,8CAA+B,CAAA;IAC/B,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;IACrB,wCAAyB,CAAA;IACzB,4CAA6B,CAAA;IAC7B,oDAAqC,CAAA;IACrC,wCAAyB,CAAA;IACzB,gDAAiC,CAAA;IACjC,0CAA2B,CAAA;IAC3B,gDAAiC,CAAA;IACjC,wDAAyC,CAAA;IACzC,gEAAiD,CAAA;IACjD,wDAAyC,CAAA;IACzC,sDAAuC,CAAA;IACvC,kDAAmC,CAAA;IACnC,oDAAqC,CAAA;AACvC,CAAC,EAtBW,WAAW,KAAX,WAAW,QAsBtB","sourcesContent":["import type { SNAP_EXPORTS } from './exports';\n\nexport type SnapRpcHookArgs = {\n  origin: string;\n  handler: HandlerType;\n  request: Record<string, unknown>;\n};\n\n/**\n * Utility type for getting the handler function type from a handler type.\n */\nexport type HandlerFunction<Type extends SnapHandler> =\n  Type['validator'] extends (snapExport: unknown) => snapExport is infer Handler\n    ? Handler\n    : never;\n\n/**\n * All the function-based handlers that a snap can implement.\n */\nexport type SnapFunctionExports = {\n  [Key in keyof typeof SNAP_EXPORTS]?: HandlerFunction<\n    (typeof SNAP_EXPORTS)[Key]\n  >;\n};\n\n/**\n * All handlers that a snap can implement.\n */\nexport type SnapExports = SnapFunctionExports;\n\nexport enum HandlerType {\n  OnRpcRequest = 'onRpcRequest',\n  OnSignature = 'onSignature',\n  OnTransaction = 'onTransaction',\n  OnCronjob = 'onCronjob',\n  OnInstall = 'onInstall',\n  OnUpdate = 'onUpdate',\n  OnStart = 'onStart',\n  OnActive = 'onActive',\n  OnInactive = 'onInactive',\n  OnNameLookup = 'onNameLookup',\n  OnKeyringRequest = 'onKeyringRequest',\n  OnHomePage = 'onHomePage',\n  OnSettingsPage = 'onSettingsPage',\n  OnUserInput = 'onUserInput',\n  OnAssetsLookup = 'onAssetsLookup',\n  OnAssetsConversion = 'onAssetsConversion',\n  OnAssetHistoricalPrice = 'onAssetHistoricalPrice',\n  OnAssetsMarketData = 'onAssetsMarketData',\n  OnProtocolRequest = 'onProtocolRequest',\n  OnClientRequest = 'onClientRequest',\n  OnWebSocketEvent = 'onWebSocketEvent',\n}\n\nexport type SnapHandler = {\n  /**\n   * The type of handler.\n   */\n  type: HandlerType;\n\n  /**\n   * Whether the handler is required, i.e., whether the request will fail if the\n   * handler is called, but the snap does not export it.\n   *\n   * This is primarily used for the lifecycle handlers, which are optional.\n   */\n  required: boolean;\n\n  /**\n   * Validate the given snap export. This should return a type guard for the\n   * handler type.\n   *\n   * @param snapExport - The export to validate.\n   * @returns Whether the export is valid.\n   */\n  validator: (snapExport: unknown) => boolean;\n};\n"]}