UNPKG

@infibridge/celo-sdk-base

Version:

EthersJS wrapper for Celo Blockchain. Based on https://github.com/celo-tools/celo-ethers-wrapper with small modifications.

61 lines 4.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CeloProvider = void 0; const ethers_1 = require("ethers"); const CeloTransactionsWrapper_1 = require("./CeloTransactionsWrapper"); class CeloProvider extends ethers_1.providers.JsonRpcProvider { constructor(url, network) { super(url, network); // Override certain block formatting properties that don't exist on Celo blocks // Reaches into https://github.com/ethers-io/ethers.js/blob/master/packages/providers/src.ts/formatter.ts const blockFormat = this.formatter.formats.block; blockFormat.gasLimit = () => ethers_1.BigNumber.from(0); blockFormat.nonce = () => ''; blockFormat.difficulty = () => 0; } /** * Override to parse transaction correctly * https://github.com/ethers-io/ethers.js/blob/master/packages/providers/src.ts/base-provider.ts */ async sendTransaction(signedTransaction) { await this.getNetwork(); const signedTx = await Promise.resolve(signedTransaction); const hexTx = ethers_1.utils.hexlify(signedTx); const tx = (0, CeloTransactionsWrapper_1.parseCeloTransaction)(signedTx); try { const hash = await this.perform('sendTransaction', { signedTransaction: hexTx, }); return this._wrapTransaction(tx, hash); } catch (error) { error.transaction = tx; error.transactionHash = tx.hash; throw error; } } /** * Override to handle alternative gas currencies * getGasPrice in https://github.com/ethers-io/ethers.js/blob/master/packages/providers/src.ts/base-provider.ts */ async getGasPrice(feeCurrencyAddress) { await this.getNetwork(); const params = feeCurrencyAddress ? { feeCurrencyAddress } : {}; return ethers_1.BigNumber.from(await this.perform('getGasPrice', params)); } /** * Override to handle alternative gas currencies * prepareRequest in https://github.com/ethers-io/ethers.js/blob/master/packages/providers/src.ts/json-rpc-provider.ts */ prepareRequest(method, params) { if (method === 'getGasPrice') { const param = params.feeCurrencyAddress ? [params.feeCurrencyAddress] : []; return ['eth_gasPrice', param]; } return super.prepareRequest(method, params); } } exports.CeloProvider = CeloProvider; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2Vsb1Byb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0NlbG9Qcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBb0Q7QUFDcEQsdUVBQWdFO0FBRWhFLE1BQWEsWUFBYSxTQUFRLGtCQUFTLENBQUMsZUFBZTtJQUN2RCxZQUNJLEdBQW1DLEVBQ25DLE9BQThCO1FBRTlCLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFFbkIsK0VBQStFO1FBQy9FLHlHQUF5RztRQUN6RyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUE7UUFDaEQsV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxrQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUM5QyxXQUFXLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQTtRQUM1QixXQUFXLENBQUMsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGVBQWUsQ0FDakIsaUJBQTJDO1FBRTNDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pELE1BQU0sS0FBSyxHQUFHLGNBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBQSw4Q0FBb0IsRUFBQyxRQUFRLENBQUMsQ0FBQTtRQUN6QyxJQUFJO1lBQ0EsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFO2dCQUMvQyxpQkFBaUIsRUFBRSxLQUFLO2FBQzNCLENBQUMsQ0FBQTtZQUNGLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQTtTQUN6QztRQUFDLE9BQU8sS0FBVSxFQUFFO1lBQ2pCLEtBQUssQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFBO1lBQ3RCLEtBQUssQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQTtZQUMvQixNQUFNLEtBQUssQ0FBQTtTQUNkO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsa0JBQTJCO1FBQ3pDLE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUMvRCxPQUFPLGtCQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsY0FBYyxDQUFDLE1BQVcsRUFBRSxNQUFXO1FBQ25DLElBQUksTUFBTSxLQUFLLGFBQWEsRUFBRTtZQUMxQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsa0JBQWtCO2dCQUNuQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7Z0JBQzdCLENBQUMsQ0FBQyxFQUFFLENBQUE7WUFDUixPQUFPLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFBO1NBQ2pDO1FBRUQsT0FBTyxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0NBQ0o7QUE5REQsb0NBOERDIn0=