All files / src/contracts/prices sample-run.ts

12.5% Statements 2/16
0% Branches 0/1
0% Functions 0/3
12.5% Lines 2/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 493x               3x                                                                                
import { BigNumber, BigNumberish } from "ethers";
import { ContractParamsProvider } from "../ContractParamsProvider";
import { IContractConnector } from "../IContractConnector";
import { IPriceFeedContractAdapter } from "./IPriceFeedContractAdapter";
import { IPricesContractAdapter } from "./IPricesContractAdapter";
 
/* eslint-disable @typescript-eslint/restrict-template-expressions */
 
export async function sampleRun(
  paramsProvider: ContractParamsProvider,
  pricesConnector: IContractConnector<IPricesContractAdapter>,
  ethFeedConnector: IContractConnector<IPriceFeedContractAdapter>,
  refreshStateCallback = async () => {}
) {
  const pricesAdapter = await pricesConnector.getAdapter();
  const coreValues = await pricesAdapter.getPricesFromPayload(paramsProvider);
  console.log(`Core values: ${coreValues}`);
 
  const deployHash = (await pricesAdapter.writePricesFromPayloadToContract(
    paramsProvider
  )) as string;
 
  await pricesConnector.waitForTransaction(deployHash);
 
  await refreshStateCallback();
  console.log(`Block number: ${await pricesConnector.getBlockNumber()}`);
 
  const values = await pricesAdapter.readPricesFromContract(paramsProvider);
 
  console.log(`Values read from contract: ${values.map(convertValue)}`);
  console.log(
    `Timestamp read from contract: ${await pricesAdapter.readTimestampFromContract()}`
  );
 
  const feedAdapter = await ethFeedConnector.getAdapter();
 
  const { value, timestamp } = await feedAdapter.getPriceAndTimestamp();
 
  console.log(
    `ETH price: $${convertValue(value)} - ${
      (Date.now() - timestamp) / 1000
    } s. ago`
  );
}
 
function convertValue(v: BigNumberish) {
  return BigNumber.from(v).toNumber() / 10 ** 8;
}