{"version":3,"file":"nes-client-CoAReozA.mjs","names":[],"sources":["../src/nes/nes-client.ts"],"sourcesContent":["/* SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD */\n/* SPDX-License-Identifier: Apache-2.0 */\n\nimport {\n  callServiceFunction,\n  closeService,\n  isServiceAvailable,\n  openService,\n  resolveHost,\n  type ServiceClientOptions,\n  type ServiceHandle,\n} from '../common/service-rpc.ts';\nimport type { NesConfig, NesGamepadState, NesState } from './nes-types.ts';\n\n/** Registered name (`helper::Nes::get_name()`). */\nexport const NES_SERVICE_NAME = 'NES';\n\n/** RPC function names (`helper::Nes::FunctionId`). */\nexport const NES_FUNCTIONS = {\n  Load: 'Load',\n  Start: 'Start',\n  Pause: 'Pause',\n  Resume: 'Resume',\n  Stop: 'Stop',\n  Reset: 'Reset',\n  Save: 'Save',\n  SetGamepadState: 'SetGamepadState',\n  GetState: 'GetState',\n} as const;\n\nexport type NesClientOptions = ServiceClientOptions;\n\nexport { type ServiceHandle as NesHandle };\n\nexport function isNesAvailable(options?: NesClientOptions): boolean {\n  return isServiceAvailable(NES_SERVICE_NAME, options);\n}\n\nexport function openNes(options?: NesClientOptions): ServiceHandle {\n  return openService(NES_SERVICE_NAME, options);\n}\n\nexport function closeNes(handle: ServiceHandle, options?: NesClientOptions): void {\n  closeService(handle, options);\n}\n\nfunction callNes<T>(\n  handle: ServiceHandle,\n  functionName: string,\n  params: Record<string, unknown>,\n  options?: NesClientOptions,\n): T {\n  return callServiceFunction<T>(resolveHost(options), handle, functionName, params);\n}\n\nexport function loadNes(\n  handle: ServiceHandle,\n  config: NesConfig,\n  options?: NesClientOptions,\n): void {\n  callNes<void>(handle, NES_FUNCTIONS.Load, { Config: config }, options);\n}\n\nexport function startNes(handle: ServiceHandle, options?: NesClientOptions): void {\n  callNes<void>(handle, NES_FUNCTIONS.Start, {}, options);\n}\n\nexport function pauseNes(handle: ServiceHandle, options?: NesClientOptions): void {\n  callNes<void>(handle, NES_FUNCTIONS.Pause, {}, options);\n}\n\nexport function resumeNes(handle: ServiceHandle, options?: NesClientOptions): void {\n  callNes<void>(handle, NES_FUNCTIONS.Resume, {}, options);\n}\n\nexport function stopNes(handle: ServiceHandle, options?: NesClientOptions): void {\n  callNes<void>(handle, NES_FUNCTIONS.Stop, {}, options);\n}\n\nexport function resetNes(handle: ServiceHandle, options?: NesClientOptions): void {\n  callNes<void>(handle, NES_FUNCTIONS.Reset, {}, options);\n}\n\nexport function saveNes(handle: ServiceHandle, options?: NesClientOptions): void {\n  callNes<void>(handle, NES_FUNCTIONS.Save, {}, options);\n}\n\nexport function setNesGamepadState(\n  handle: ServiceHandle,\n  state: NesGamepadState,\n  options?: NesClientOptions,\n): void {\n  callNes<void>(handle, NES_FUNCTIONS.SetGamepadState, { State: state }, options);\n}\n\nexport function getNesState(handle: ServiceHandle, options?: NesClientOptions): NesState {\n  return callNes<NesState>(handle, NES_FUNCTIONS.GetState, {}, options);\n}\n"],"mappings":";;;AAeA,MAAa,mBAAmB;;AAGhC,MAAa,gBAAgB;CAC3B,MAAM;CACN,OAAO;CACP,OAAO;CACP,QAAQ;CACR,MAAM;CACN,OAAO;CACP,MAAM;CACN,iBAAiB;CACjB,UAAU;AACZ;AAMA,SAAgB,eAAe,SAAqC;CAClE,OAAO,mBAAA,OAAqC,OAAO;AACrD;AAEA,SAAgB,QAAQ,SAA2C;CACjE,OAAO,YAAA,OAA8B,OAAO;AAC9C;AAEA,SAAgB,SAAS,QAAuB,SAAkC;CAChF,aAAa,QAAQ,OAAO;AAC9B;AAEA,SAAS,QACP,QACA,cACA,QACA,SACG;CACH,OAAO,oBAAuB,YAAY,OAAO,GAAG,QAAQ,cAAc,MAAM;AAClF;AAEA,SAAgB,QACd,QACA,QACA,SACM;CACN,QAAc,QAAQ,cAAc,MAAM,EAAE,QAAQ,OAAO,GAAG,OAAO;AACvE;AAEA,SAAgB,SAAS,QAAuB,SAAkC;CAChF,QAAc,QAAQ,cAAc,OAAO,CAAC,GAAG,OAAO;AACxD;AAEA,SAAgB,SAAS,QAAuB,SAAkC;CAChF,QAAc,QAAQ,cAAc,OAAO,CAAC,GAAG,OAAO;AACxD;AAEA,SAAgB,UAAU,QAAuB,SAAkC;CACjF,QAAc,QAAQ,cAAc,QAAQ,CAAC,GAAG,OAAO;AACzD;AAEA,SAAgB,QAAQ,QAAuB,SAAkC;CAC/E,QAAc,QAAQ,cAAc,MAAM,CAAC,GAAG,OAAO;AACvD;AAEA,SAAgB,SAAS,QAAuB,SAAkC;CAChF,QAAc,QAAQ,cAAc,OAAO,CAAC,GAAG,OAAO;AACxD;AAEA,SAAgB,QAAQ,QAAuB,SAAkC;CAC/E,QAAc,QAAQ,cAAc,MAAM,CAAC,GAAG,OAAO;AACvD;AAEA,SAAgB,mBACd,QACA,OACA,SACM;CACN,QAAc,QAAQ,cAAc,iBAAiB,EAAE,OAAO,MAAM,GAAG,OAAO;AAChF;AAEA,SAAgB,YAAY,QAAuB,SAAsC;CACvF,OAAO,QAAkB,QAAQ,cAAc,UAAU,CAAC,GAAG,OAAO;AACtE"}