UNPKG

@roochnetwork/rooch-sdk-kit

Version:
140 lines (135 loc) 6.05 kB
// src/wallet/onekey.ts import { BitcoinAddress as BitcoinAddress2, str, bytes } from "@roochnetwork/rooch-sdk"; // src/wallet/wallet.ts import { Signer } from "@roochnetwork/rooch-sdk"; var Wallet = class extends Signer { /** * Checks if the wallet is installed. * @returns A promise that resolves to true if the wallet is installed, otherwise false. */ async checkInstalled() { for (let i = 1; i < 10 && !this.getTarget(); i += 1) { await new Promise((resolve) => setTimeout(resolve, 100 * i)); } return Promise.resolve(this.getTarget() !== void 0); } }; // src/wallet/bitcoin.ts import { Authenticator, BitcoinSignMessage, Secp256k1PublicKey, fromHEX } from "@roochnetwork/rooch-sdk"; var BitcoinWallet = class extends Wallet { async signTransaction(input) { const message = new BitcoinSignMessage(input.hashData(), input.getInfo() || ""); return Authenticator.bitcoin(message, this, "raw"); } getPublicKey() { if (!this.publicKey) { throw Error("Please connect your wallet first"); } return new Secp256k1PublicKey(fromHEX(this.publicKey)); } getRoochAddress() { if (!this.currentAddress) { throw Error("Please connect your wallet first"); } return this.currentAddress.genRoochAddress(); } getBitcoinAddress() { if (!this.currentAddress) { throw Error("Please connect your wallet first"); } return this.currentAddress; } getKeyScheme() { return "Secp256k1"; } normalize_recovery_id(v) { let normalizeV = v - 27 - 4; if (normalizeV < 0) { normalizeV = normalizeV + 4; } return normalizeV; } switchAccount() { throw new Error("Method not implemented."); } getChain() { return "bitcoin"; } }; // src/wallet/types.ts var All_NETWORK = ["testnet", "livenet"]; // src/wallet/onekey.ts var OnekeyWallet = class extends BitcoinWallet { getName() { return "OneKey"; } getIcon(theme) { if (theme === "dark") { return "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzIgMTQ0QzEyMS43MDYgMTQ0IDE0NCAxMjEuNzA2IDE0NCA3MkMxNDQgMjIuMjk0NCAxMjEuNzA2IDAgNzIgMEMyMi4yOTQ0IDAgMCAyMi4yOTQ0IDAgNzJDMCAxMjEuNzA2IDIyLjI5NDQgMTQ0IDcyIDE0NFpNNTguNDc1MyAzMC41MzA1SDc4LjUwNTNWNjMuNTM4MUg2Ni4wODY1VjQxLjE1NjJINTQuOTYxM0w1OC40NzUzIDMwLjUzMDVaTTcyLjAwMDQgMTEzLjQ2OUM4NC42MTY0IDExMy40NjkgOTQuODQzNyAxMDMuMjQyIDk0Ljg0MzcgOTAuNjI2MUM5NC44NDM3IDc4LjAxMDEgODQuNjE2NCA2Ny43ODI4IDcyLjAwMDQgNjcuNzgyOEM1OS4zODQ0IDY3Ljc4MjggNDkuMTU3MSA3OC4wMTAxIDQ5LjE1NzEgOTAuNjI2MUM0OS4xNTcxIDEwMy4yNDIgNTkuMzg0NCAxMTMuNDY5IDcyLjAwMDQgMTEzLjQ2OVpNNzIuMDAwNCAxMDMuMDk5Qzc4Ljg4ODkgMTAzLjA5OSA4NC40NzMxIDk3LjUxNDUgODQuNDczMSA5MC42MjZDODQuNDczMSA4My43Mzc1IDc4Ljg4ODkgNzguMTUzMyA3Mi4wMDA0IDc4LjE1MzNDNjUuMTExOSA3OC4xNTMzIDU5LjUyNzYgODMuNzM3NSA1OS41Mjc2IDkwLjYyNkM1OS41Mjc2IDk3LjUxNDUgNjUuMTExOSAxMDMuMDk5IDcyLjAwMDQgMTAzLjA5OVoiIGZpbGw9ImJsYWNrIiBzdHlsZT0iZmlsbDpibGFjaztmaWxsLW9wYWNpdHk6MTsiLz4KPC9zdmc+Cg=="; } return "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQ0IiBoZWlnaHQ9IjE0NCIgdmlld0JveD0iMCAwIDE0NCAxNDQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNzIgMTQ0QzEyMS43MDYgMTQ0IDE0NCAxMjEuNzA2IDE0NCA3MkMxNDQgMjIuMjk0NCAxMjEuNzA2IDAgNzIgMEMyMi4yOTQ0IDAgMCAyMi4yOTQ0IDAgNzJDMCAxMjEuNzA2IDIyLjI5NDQgMTQ0IDcyIDE0NFpNNTguNDc1MyAzMC41MzA1SDc4LjUwNTNWNjMuNTM4MUg2Ni4wODY1VjQxLjE1NjJINTQuOTYxM0w1OC40NzUzIDMwLjUzMDVaTTcyLjAwMDQgMTEzLjQ2OUM4NC42MTY0IDExMy40NjkgOTQuODQzNyAxMDMuMjQyIDk0Ljg0MzcgOTAuNjI2MUM5NC44NDM3IDc4LjAxMDEgODQuNjE2NCA2Ny43ODI4IDcyLjAwMDQgNjcuNzgyOEM1OS4zODQ0IDY3Ljc4MjggNDkuMTU3MSA3OC4wMTAxIDQ5LjE1NzEgOTAuNjI2MUM0OS4xNTcxIDEwMy4yNDIgNTkuMzg0NCAxMTMuNDY5IDcyLjAwMDQgMTEzLjQ2OVpNNzIuMDAwNCAxMDMuMDk5Qzc4Ljg4ODkgMTAzLjA5OSA4NC40NzMxIDk3LjUxNDUgODQuNDczMSA5MC42MjZDODQuNDczMSA4My43Mzc1IDc4Ljg4ODkgNzguMTUzMyA3Mi4wMDA0IDc4LjE1MzNDNjUuMTExOSA3OC4xNTMzIDU5LjUyNzYgODMuNzM3NSA1OS41Mjc2IDkwLjYyNkM1OS41Mjc2IDk3LjUxNDUgNjUuMTExOSAxMDMuMDk5IDcyLjAwMDQgMTAzLjA5OVoiIGZpbGw9IiM0NEQ2MkMiIHN0eWxlPSJmaWxsOiM0NEQ2MkM7ZmlsbDpjb2xvcihkaXNwbGF5LXAzIDAuMjY2NyAwLjgzOTIgMC4xNzI1KTtmaWxsLW9wYWNpdHk6MTsiLz4KPC9zdmc+Cg=="; } getDescription() { return "OneKey Wallet"; } getInstallUrl() { return "https://chromewebstore.google.com/detail/onekey/jnmbobjmhlngoefaiojfljckilhhlhcj"; } async sign(msg) { const msgStr = str("utf8", msg); const sign = await this.getTarget().signMessage(msgStr); return bytes("base64", sign).subarray(1); } getTarget() { return window.$onekey?.btc; } async connect() { let addresses = await this.getTarget().getAccounts(); if (!addresses || addresses.length === 0) { await this.getTarget().requestAccounts(); return this.connect(); } let publicKey = await this.getTarget().getPublicKey(); this.address = addresses.map((item) => new BitcoinAddress2(item)); this.currentAddress = this.address[0]; this.publicKey = publicKey; return this.address; } // TODO: onekey provider switch api, But it doesn't work. switchNetwork(_) { throw Error("onekey not support switch network!"); } getNetwork() { return this.getTarget().getNetwork(); } getSupportNetworks() { return All_NETWORK; } onAccountsChanged(callback) { this.getTarget().on("accountsChanged", callback); } removeAccountsChanged(callback) { this.getTarget().removeListener("accountsChanged", callback); } onNetworkChanged(callback) { this.getTarget().on("networkChanged", callback); } removeNetworkChanged(callback) { this.getTarget().removeListener("networkChanged", callback); } sendBtc(input) { return this.getTarget().sendBitcoin(input.toAddress, input.satoshis, input.options); } getBalance() { return this.getTarget().getBalance(); } }; export { OnekeyWallet }; //# sourceMappingURL=onekey.js.map