{"version":3,"file":"rabet.module.mjs","sources":["../../src/modules/rabet.module.ts"],"sourcesContent":["import { ModuleInterface, ModuleType, WalletNetwork } from '../types';\nimport { parseError } from '../utils';\n\ndeclare const window: Window &\n  typeof globalThis & {\n    rabet?: {\n      connect: () => Promise<{ publicKey: string }>;\n      sign: (xdr: string, network: RabetNetwork) => Promise<{ xdr: string }>;\n    };\n  };\n\nexport const RABET_ID = 'rabet';\n\nexport class RabetModule implements ModuleInterface {\n  moduleType: ModuleType = ModuleType.HOT_WALLET;\n\n  productId: string = RABET_ID;\n  productName: string = 'Rabet';\n  productUrl: string = 'https://rabet.io/';\n  productIcon: string = 'https://stellar.creit.tech/wallet-icons/rabet.png';\n\n  async isAvailable(): Promise<boolean> {\n    return typeof window !== 'undefined' && !!window.rabet;\n  }\n\n  async getAddress(): Promise<{ address: string }> {\n    const runChecks = async () => {\n      if (!(await this.isAvailable())) {\n        throw new Error('Rabet is not installed');\n      }\n    };\n\n    return runChecks()\n      .then(() => window.rabet!.connect())\n      .then(({ publicKey }) => ({ address: publicKey }))\n      .catch(e => {\n        throw parseError(e);\n      });\n  }\n\n  async signTransaction(\n    xdr: string,\n    opts?: {\n      networkPassphrase?: string;\n      address?: string;\n      path?: string;\n      submit?: boolean;\n      submitUrl?: string;\n    }\n  ): Promise<{ signedTxXdr: string; signerAddress?: string }> {\n    const runChecks = async () => {\n      if (!(await this.isAvailable())) {\n        throw new Error('Rabet is not installed');\n      }\n\n      if (\n        opts?.address &&\n        opts.networkPassphrase !== WalletNetwork.PUBLIC &&\n        opts.networkPassphrase !== WalletNetwork.TESTNET\n      ) {\n        throw new Error(`Rabet doesn't support the network: ${opts.networkPassphrase}`);\n      }\n\n      if (opts?.address) {\n        console.warn(`Rabet doesn't allow specifying the network that should be used, we skip the value`);\n      }\n    };\n\n    const sign = async () =>\n      window.rabet!.sign(\n        xdr,\n        opts?.networkPassphrase === WalletNetwork.PUBLIC ? RabetNetwork.PUBLIC : RabetNetwork.TESTNET\n      );\n\n    return runChecks()\n      .then(sign)\n      .then(result => ({ signedTxXdr: result?.xdr }))\n      .catch(e => {\n        throw parseError(e);\n      });\n  }\n\n  async signAuthEntry(): Promise<{ signedAuthEntry: string; signerAddress?: string }> {\n    throw {\n      code: -3,\n      message: 'Rabet does not support the \"signAuthEntry\" function',\n    };\n  }\n\n  async signMessage(): Promise<{ signedMessage: string; signerAddress?: string }> {\n    throw {\n      code: -3,\n      message: 'Rabet does not support the \"signMessage\" function',\n    };\n  }\n\n  async getNetwork(): Promise<{ network: string; networkPassphrase: string }> {\n    throw {\n      code: -3,\n      message: 'Rabet does not support the \"getNetwork\" function',\n    };\n  }\n}\n\nexport enum RabetNetwork {\n  PUBLIC = 'mainnet',\n  TESTNET = 'testnet',\n}\n"],"names":["RabetNetwork"],"mappings":"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"}