@creit.tech/stellar-wallets-kit
Version:
A kit to handle all Stellar Wallets at once
1 lines • 5.83 kB
Source Map (JSON)
{"version":3,"file":"hana.module.mjs","sources":["../../src/modules/hana.module.ts"],"sourcesContent":["import { ModuleInterface, ModuleType } from '../types';\nimport { parseError } from '../utils';\n\ninterface SignTransactionProps {\n xdr: string;\n accountToSign?: string;\n networkPassphrase?: string;\n}\n\ninterface SignBlobProps {\n blob: string;\n accountToSign: string;\n}\n\ninterface SignAuthEntryProps {\n xdr: string;\n accountToSign?: string;\n}\n\ninterface SignMessageProps {\n message: string;\n accountToSign?: string;\n}\n\ndeclare const window: Window & {\n hanaWallet?: {\n stellar?: {\n getPublicKey(): Promise<string>;\n signTransaction({ xdr, accountToSign, networkPassphrase }: SignTransactionProps): Promise<string>;\n signBlob({ blob, accountToSign }: SignBlobProps): Promise<string>;\n signAuthEntry({ xdr, accountToSign }: SignAuthEntryProps): Promise<string>;\n signMessage({ message, accountToSign }: SignMessageProps): Promise<string>;\n };\n };\n};\n\nexport const HANA_ID = 'hana';\n\nexport class HanaModule implements ModuleInterface {\n moduleType: ModuleType = ModuleType.HOT_WALLET;\n\n productId: string = HANA_ID;\n productName: string = 'Hana Wallet';\n productUrl: string = 'https://hanawallet.io/';\n productIcon: string = 'https://stellar.creit.tech/wallet-icons/hana.png';\n\n async runChecks(): Promise<void> {\n if (!(await this.isAvailable())) {\n throw new Error('Hana Wallet is not installed');\n }\n }\n\n async isAvailable(): Promise<boolean> {\n return typeof window !== 'undefined' && !!window.hanaWallet?.stellar;\n }\n\n async getAddress(): Promise<{ address: string }> {\n return this.runChecks()\n .then(() => window.hanaWallet!.stellar!.getPublicKey())\n .then(address => ({ address }))\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 return this.runChecks()\n .then(() =>\n window.hanaWallet!.stellar!.signTransaction({\n xdr,\n accountToSign: opts?.address,\n networkPassphrase: opts?.networkPassphrase,\n })\n )\n .then(signedTxXdr => ({ signedTxXdr, signerAddress: opts?.address }))\n .catch(e => {\n throw parseError(e);\n });\n }\n\n async signAuthEntry(\n authEntry: string,\n opts?: {\n networkPassphrase?: string;\n address?: string;\n path?: string;\n }\n ): Promise<{ signedAuthEntry: string; signerAddress?: string }> {\n return this.runChecks()\n .then(() =>\n window.hanaWallet!.stellar!.signAuthEntry({\n xdr: authEntry,\n accountToSign: opts?.address,\n })\n )\n .then(signedAuthEntry => ({ signedAuthEntry, signerAddress: opts?.address }))\n .catch(e => {\n throw parseError(e);\n });\n }\n\n async signMessage(\n message: string,\n opts?: {\n address?: string;\n }\n ): Promise<{ signedMessage: string; signerAddress?: string }> {\n return this.runChecks()\n .then(() =>\n window.hanaWallet!.stellar!.signMessage({\n message,\n accountToSign: opts?.address,\n })\n )\n .then(signedMessage => ({ signedMessage, signerAddress: opts?.address }))\n .catch(e => {\n throw parseError(e);\n });\n }\n\n async getNetwork(): Promise<{ network: string; networkPassphrase: string }> {\n throw {\n code: -3,\n message: 'Hana does not support the \"getNetwork\" function',\n };\n }\n}\n"],"names":[],"mappings":"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"}