{"version":3,"file":"modeClient.mjs","names":[],"sources":["../../src/schemas/modeClient.ts"],"sourcesContent":["import type {\n  MinorModeActionResponse,\n  MinorModeArguments,\n  MinorModeCatalogService,\n  MinorModeCatalogSnapshot,\n  MinorModeInvokeOptions,\n  MinorModeRecord,\n  MinorModeRegistrationRef,\n} from './mode.ts';\n\n/** Read-only facade used by UI and voice surfaces over the injected service. */\nexport interface MinorModeCatalogClient {\n  getSnapshot(): MinorModeCatalogSnapshot;\n  list(): MinorModeRecord[];\n  subscribe(listener: () => void): () => void;\n  invoke(\n    mode: MinorModeRegistrationRef,\n    actionId: string,\n    argumentsValue?: MinorModeArguments,\n    options?: MinorModeInvokeOptions,\n  ): Promise<MinorModeActionResponse>;\n}\n\nexport function createMinorModeCatalogClient(catalog: MinorModeCatalogService): MinorModeCatalogClient {\n  return {\n    getSnapshot: () => catalog.getSnapshot(),\n    list: () => catalog.list(),\n    subscribe: (listener) => catalog.subscribe(listener),\n    invoke: (mode, actionId, argumentsValue = {}, options = {}) =>\n      catalog.invoke(\n        {\n          operationId: `minor-mode:${crypto.randomUUID()}`,\n          mode: structuredClone(mode),\n          actionId,\n          arguments: structuredClone(argumentsValue),\n        },\n        'doom/minor-mode-client',\n        options.signal,\n      ),\n  };\n}\n"],"mappings":"AAuBA,SAAgB,EAA6B,EAA0D,CACrG,MAAO,CACL,gBAAmB,EAAQ,YAAY,EACvC,SAAY,EAAQ,KAAK,EACzB,UAAY,GAAa,EAAQ,UAAU,CAAQ,EACnD,QAAS,EAAM,EAAU,EAAiB,CAAC,EAAG,EAAU,CAAC,IACvD,EAAQ,OACN,CACE,YAAa,cAAc,OAAO,WAAW,IAC7C,KAAM,gBAAgB,CAAI,EAC1B,WACA,UAAW,gBAAgB,CAAc,CAC3C,EACA,yBACA,EAAQ,MACV,CACJ,CACF"}