{"version":3,"file":"KeyringSnapRpcClient.cjs","sourceRoot":"","sources":["../src/KeyringSnapRpcClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,mEAA4D;AAE5D;;;GAGG;AACH,MAAa,aAAa;IAKxB;;;;;OAKG;IACH,YAAY,MAAc,EAAE,QAAgC;QAVnD,wCAAgB;QAEhB,0CAAkC;QASzC,uBAAA,IAAI,yBAAW,MAAM,MAAA,CAAC;QACtB,uBAAA,IAAI,2BAAa,QAAQ,MAAA,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,OAAuB;QAChC,OAAO,uBAAA,IAAI,+BAAU,CAAC,OAAO,CAAC;YAC5B,MAAM,EAAE,sBAAsB;YAC9B,MAAM,EAAE;gBACN,MAAM,EAAE,uBAAA,IAAI,6BAAQ;gBACpB,OAAO;aACR;SACF,CAAkB,CAAC;IACtB,CAAC;CACF;AA/BD,sCA+BC;;AAED;;;GAGG;AACH,MAAa,oBAAqB,SAAQ,yCAAmB;IAC3D;;;;;OAKG;IACH,YAAY,MAAc,EAAE,QAAgC;QAC1D,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7C,CAAC;CACF;AAVD,oDAUC","sourcesContent":["import type { JsonRpcRequest } from '@metamask/keyring-utils';\nimport type { MetaMaskInpageProvider } from '@metamask/providers';\nimport type { Json } from '@metamask/utils';\n\nimport type { Sender } from './KeyringClient';\nimport { KeyringPublicClient } from './KeyringPublicClient';\n\n/**\n * Implementation of the `Sender` interface that can be used to send requests\n * to a snap through the snap JSON-RPC API.\n */\nexport class SnapRpcSender implements Sender {\n  readonly #origin: string;\n\n  readonly #provider: MetaMaskInpageProvider;\n\n  /**\n   * Create a new instance of `SnapRpcSender`.\n   *\n   * @param origin - The caller's origin.\n   * @param provider - The `MetaMaskInpageProvider` instance to use.\n   */\n  constructor(origin: string, provider: MetaMaskInpageProvider) {\n    this.#origin = origin;\n    this.#provider = provider;\n  }\n\n  /**\n   * Send a request to the snap and return the response.\n   *\n   * @param request - The JSON-RPC request to send to the snap.\n   * @returns A promise that resolves to the response of the request.\n   */\n  async send(request: JsonRpcRequest): Promise<Json> {\n    return this.#provider.request({\n      method: 'wallet_invokeKeyring',\n      params: {\n        snapId: this.#origin,\n        request,\n      },\n    }) as Promise<Json>;\n  }\n}\n\n/**\n * A client that allows the communication with a snap through the snap\n * JSON-RPC API to call keyring methods.\n */\nexport class KeyringSnapRpcClient extends KeyringPublicClient {\n  /**\n   * Create a new instance of `KeyringSnapRpcClient`.\n   *\n   * @param origin - Caller's origin.\n   * @param provider - The `MetaMaskInpageProvider` instance to use.\n   */\n  constructor(origin: string, provider: MetaMaskInpageProvider) {\n    super(new SnapRpcSender(origin, provider));\n  }\n}\n"]}