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 50 51 52 53 54 55 56 57 | 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.map(convertValue)}`);
const deployHash = (await pricesAdapter.writePricesFromPayloadToContract(
paramsProvider
)) as string;
await pricesConnector.waitForTransaction(deployHash);
console.log(`Values written to contract with ${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)}`);
const readTimestamp = await pricesAdapter.readTimestampFromContract();
console.log(
`Timestamp read from contract: ${readTimestamp} (${describeTimestamp(readTimestamp)})`
);
Iif (!ethFeedConnector) {
return;
}
const feedAdapter = await ethFeedConnector.getAdapter();
const { value, timestamp } = await feedAdapter.getPriceAndTimestamp();
console.log(
`ETH price: $${convertValue(value)} (${describeTimestamp(timestamp)})`
);
}
function convertValue(v: BigNumberish) {
return BigNumber.from(v).toNumber() / 10 ** 8;
}
function describeTimestamp(timestamp: number) {
return `${(Date.now() - timestamp) / 1000} sec. ago`;
}
|