{"version":3,"file":"KeyringPublicClient.mjs","sourceRoot":"","sources":["../src/KeyringPublicClient.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,OAAO,EAAE,gBAAgB,EAAE,8BAA8B;AAIzD,OAAO,EAAE,aAAa,EAAE,4BAAwB;AAahD;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,gBAAgB,CAAC,aAAa;IAC9B,gBAAgB,CAAC,UAAU;IAC3B,gBAAgB,CAAC,aAAa;IAC9B,gBAAgB,CAAC,aAAa;IAC9B,gBAAgB,CAAC,aAAa;IAC9B,gBAAgB,CAAC,YAAY;IAC7B,gBAAgB,CAAC,mBAAmB;IACpC,gBAAgB,CAAC,UAAU;IAC3B,gBAAgB,CAAC,cAAc;IAC/B,gBAAgB,CAAC,aAAa;IAC9B,gBAAgB,CAAC,YAAY;CACrB,CAAC;AASX;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAK9B;;;;OAIG;IACH,YAAY,MAAc;QAPjB,8CAAuB;QAQ9B,uBAAA,IAAI,+BAAW,IAAI,aAAa,CAAC,MAAM,CAAC,MAAA,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA8B;QAChD,OAAO,uBAAA,IAAI,mCAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,OAAO,uBAAA,IAAI,mCAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,uBAAA,IAAI,mCAAQ,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,uBAAA,IAAI,mCAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,OAAO,uBAAA,IAAI,mCAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,OAAO,uBAAA,IAAI,mCAAQ,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAuB;QACzC,OAAO,uBAAA,IAAI,mCAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,IAA2B;QAC1D,OAAO,uBAAA,IAAI,mCAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,OAAO,uBAAA,IAAI,mCAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,EAAU,EAAE,MAAgB;QACpD,OAAO,uBAAA,IAAI,mCAAQ,CAAC,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,OAAO,uBAAA,IAAI,mCAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;CACF","sourcesContent":["import type {\n  KeyringAccount,\n  KeyringAccountData,\n  KeyringRequest,\n} from '@metamask/keyring-api';\nimport { KeyringRpcMethod } from '@metamask/keyring-api';\nimport type { Json } from '@metamask/utils';\n\nimport type { Sender } from './KeyringClient';\nimport { KeyringClient } from './KeyringClient';\n\n/**\n * Convert a tuple to a union.\n */\ntype TupleToUnion<Tuple extends readonly unknown[]> = Tuple[number];\n\n/**\n * Extract the method name from a RPC method name.\n */\ntype KeyringRpcMethodToMethodName<RpcMethod extends string> =\n  RpcMethod extends `keyring_${infer Method}` ? Method : never;\n\n/**\n * Public methods list.\n */\nexport const KeyringPublicRpcMethod = [\n  KeyringRpcMethod.CreateAccount,\n  KeyringRpcMethod.GetAccount,\n  KeyringRpcMethod.UpdateAccount,\n  KeyringRpcMethod.DeleteAccount,\n  KeyringRpcMethod.ExportAccount,\n  KeyringRpcMethod.ListAccounts,\n  KeyringRpcMethod.FilterAccountChains,\n  KeyringRpcMethod.GetRequest,\n  KeyringRpcMethod.ApproveRequest,\n  KeyringRpcMethod.RejectRequest,\n  KeyringRpcMethod.ListRequests,\n] as const;\n\n/**\n * Union of all public methods.\n */\ntype KeyringPublicMethod = KeyringRpcMethodToMethodName<\n  TupleToUnion<typeof KeyringPublicRpcMethod>\n>;\n\n/**\n * A client that can be used by companion dapp. Only some keyring methods are\n * available with this client.\n */\nexport class KeyringPublicClient\n  implements Pick<KeyringClient, KeyringPublicMethod>\n{\n  readonly #client: KeyringClient;\n\n  /**\n   * Create a new instance of `KeyringPublicClient`.\n   *\n   * @param sender - The `Sender` instance to use to send requests to the snap.\n   */\n  constructor(sender: Sender) {\n    this.#client = new KeyringClient(sender);\n  }\n\n  async createAccount(options?: Record<string, Json>): Promise<KeyringAccount> {\n    return this.#client.createAccount(options);\n  }\n\n  async deleteAccount(id: string): Promise<void> {\n    return this.#client.deleteAccount(id);\n  }\n\n  async listAccounts(): Promise<KeyringAccount[]> {\n    return this.#client.listAccounts();\n  }\n\n  async getAccount(id: string): Promise<KeyringAccount> {\n    return this.#client.getAccount(id);\n  }\n\n  async getRequest(id: string): Promise<KeyringRequest> {\n    return this.#client.getRequest(id);\n  }\n\n  async listRequests(): Promise<KeyringRequest[]> {\n    return this.#client.listRequests();\n  }\n\n  async updateAccount(account: KeyringAccount): Promise<void> {\n    return this.#client.updateAccount(account);\n  }\n\n  async approveRequest(id: string, data?: Record<string, Json>): Promise<void> {\n    return this.#client.approveRequest(id, data);\n  }\n\n  async rejectRequest(id: string): Promise<void> {\n    return this.#client.rejectRequest(id);\n  }\n\n  async filterAccountChains(id: string, chains: string[]): Promise<string[]> {\n    return this.#client.filterAccountChains(id, chains);\n  }\n\n  async exportAccount(id: string): Promise<KeyringAccountData> {\n    return this.#client.exportAccount(id);\n  }\n}\n"]}