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 49 | 3x 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;
}
|