UNPKG

@celo-tools/celo-ethers-wrapper

Version:

A minimal wrapper to make Ethers.JS compatible with the Celo network.

69 lines 4.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getConversionRateFromCeloToToken = void 0; const ethers_1 = require("ethers"); const consts_1 = require("../consts"); const MINIMAL_ORACLE_INTERFACE = [ { constant: true, inputs: [ { internalType: "address", name: "token", type: "address", }, ], name: "medianRate", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, { internalType: "uint256", name: "", type: "uint256", }, ], payable: false, stateMutability: "view", type: "function", }, ]; const MINIMAL_REGISTRY_ABI = [ { constant: true, inputs: [ { internalType: "string", name: "identifier", type: "string", }, ], name: "getAddressForString", outputs: [ { internalType: "address", name: "", type: "address", }, ], payable: false, stateMutability: "view", type: "function", }, ]; async function getConversionRateFromCeloToToken(tokenAddress, wallet) { const registry = new ethers_1.Contract(consts_1.CELO_REGISTRY_ADDRESS, MINIMAL_REGISTRY_ABI, wallet); const oracleAddress = await registry.getAddressForString("SortedOracles"); const oracle = new ethers_1.Contract(oracleAddress, MINIMAL_ORACLE_INTERFACE, wallet); const [numerator, denominator] = await oracle.medianRate(tokenAddress); // The function docs for the Contract are confusing but in ContractKit the Sorted orcles wrapper // defines numerator as the amount of the token and denominiator as equvalent value in CELO // https://github.com/celo-org/developer-tooling/blob/master/packages/sdk/contractkit/src/wrappers/SortedOracles.ts#L80 // https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/stability/SortedOracles.sol return [numerator, denominator]; } exports.getConversionRateFromCeloToToken = getConversionRateFromCeloToToken; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29yZUNvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9Db3JlQ29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQWtDO0FBRWxDLHNDQUFrRDtBQUVsRCxNQUFNLHdCQUF3QixHQUFHO0lBQy9CO1FBQ0UsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxZQUFZLEVBQUUsU0FBUztnQkFDdkIsSUFBSSxFQUFFLE9BQU87Z0JBQ2IsSUFBSSxFQUFFLFNBQVM7YUFDaEI7U0FDRjtRQUNELElBQUksRUFBRSxZQUFZO1FBQ2xCLE9BQU8sRUFBRTtZQUNQO2dCQUNFLFlBQVksRUFBRSxTQUFTO2dCQUN2QixJQUFJLEVBQUUsRUFBRTtnQkFDUixJQUFJLEVBQUUsU0FBUzthQUNoQjtZQUNEO2dCQUNFLFlBQVksRUFBRSxTQUFTO2dCQUN2QixJQUFJLEVBQUUsRUFBRTtnQkFDUixJQUFJLEVBQUUsU0FBUzthQUNoQjtTQUNGO1FBQ0QsT0FBTyxFQUFFLEtBQUs7UUFDZCxlQUFlLEVBQUUsTUFBTTtRQUN2QixJQUFJLEVBQUUsVUFBVTtLQUNqQjtDQUNGLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHO0lBQzNCO1FBQ0UsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUU7WUFDTjtnQkFDRSxZQUFZLEVBQUUsUUFBUTtnQkFDdEIsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLElBQUksRUFBRSxRQUFRO2FBQ2Y7U0FDRjtRQUNELElBQUksRUFBRSxxQkFBcUI7UUFDM0IsT0FBTyxFQUFFO1lBQ1A7Z0JBQ0UsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLElBQUksRUFBRSxFQUFFO2dCQUNSLElBQUksRUFBRSxTQUFTO2FBQ2hCO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsS0FBSztRQUNkLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCLElBQUksRUFBRSxVQUFVO0tBQ2pCO0NBQ0YsQ0FBQztBQUVLLEtBQUssVUFBVSxnQ0FBZ0MsQ0FDcEQsWUFBb0IsRUFDcEIsTUFBa0I7SUFFbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxpQkFBUSxDQUMzQiw4QkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLE1BQU0sQ0FDUCxDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsTUFBTSxRQUFRLENBQUMsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFMUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxpQkFBUSxDQUFDLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUU3RSxNQUFNLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxHQUM1QixNQUFNLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsaUdBQWlHO0lBQ2pHLDJGQUEyRjtJQUMzRix1SEFBdUg7SUFDdkgsZ0hBQWdIO0lBQ2hILE9BQU8sQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQXJCRCw0RUFxQkMifQ==