UNPKG

@kaiachain/ethers-ext

Version:
112 lines (111 loc) 5 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Web3Provider = exports.JsonRpcProvider = void 0; const providers_1 = require("@ethersproject/providers"); const js_ext_core_1 = require("@kaiachain/js-ext-core"); // @ts-ignore: package @kaiachain/web3rpc has no .d.ts file. const web3rpc = __importStar(require("@kaiachain/web3rpc")); const signer_js_1 = require("./signer.js"); /* eslint-disable no-multi-spaces */ class JsonRpcProvider extends providers_1.JsonRpcProvider { constructor(url, network) { super(url, network); const send = (method, params) => { return this.send(method, params); }; const { AdminApi, DebugApi, GovernanceApi, KlayApi, NetApi, PersonalApi, TxpoolApi } = web3rpc; this.admin = (0, js_ext_core_1.asyncOpenApi)(send, AdminApi); this.debug = (0, js_ext_core_1.asyncOpenApi)(send, DebugApi); this.governance = (0, js_ext_core_1.asyncOpenApi)(send, GovernanceApi); this.klay = (0, js_ext_core_1.asyncOpenApi)(send, KlayApi); this.kaia = (0, js_ext_core_1.asyncOpenApi)(send, KlayApi); this.net = (0, js_ext_core_1.asyncOpenApi)(send, NetApi); this.personal = (0, js_ext_core_1.asyncOpenApi)(send, PersonalApi); this.txpool = (0, js_ext_core_1.asyncOpenApi)(send, TxpoolApi); } } exports.JsonRpcProvider = JsonRpcProvider; class Web3Provider extends providers_1.Web3Provider { constructor(provider, network) { super(provider, network); const send = async (method, params = []) => { if (method === "wallet_switchEthereumChain") { method = "wallet_switchKlaytnChain"; } if (method === "wallet_addEthereumChain") { method = "wallet_addKlaytnChain"; } if (provider?.request) { return provider.request({ method, params }); } else if (provider?.send) { return provider.send(method, params); } else if (provider?.sendAsync && provider?.isMobile) { if (method === "eth_requestAccounts" || method == "eth_accounts" || method == "kaia_accounts") { return provider?.enable(); } else { return new Promise((resolve, reject) => { provider.sendAsync({ method, params }, (err, result) => { if (err) { reject(err); } else { resolve(result?.result || ""); } }); }); } } else { throw new Error("Provider does not support sendAsync or send methods"); } }; this.send = send; const { AdminApi, DebugApi, GovernanceApi, KlayApi, NetApi, PersonalApi, TxpoolApi } = web3rpc; this.admin = (0, js_ext_core_1.asyncOpenApi)(send, AdminApi); this.debug = (0, js_ext_core_1.asyncOpenApi)(send, DebugApi); this.governance = (0, js_ext_core_1.asyncOpenApi)(send, GovernanceApi); this.klay = (0, js_ext_core_1.asyncOpenApi)(send, KlayApi); this.kaia = (0, js_ext_core_1.asyncOpenApi)(send, KlayApi); this.net = (0, js_ext_core_1.asyncOpenApi)(send, NetApi); this.personal = (0, js_ext_core_1.asyncOpenApi)(send, PersonalApi); this.txpool = (0, js_ext_core_1.asyncOpenApi)(send, TxpoolApi); } getSigner(addressOrIndex) { return new signer_js_1.JsonRpcSigner(this, addressOrIndex); } send(method, params) { return this.send(method, params); } listAccounts() { return this.send("eth_accounts", []).then((accounts) => { return accounts; }); } } exports.Web3Provider = Web3Provider;