UNPKG

opnet

Version:

The perfect library for building Bitcoin-based applications.

53 lines (52 loc) 1.93 kB
import { Address } from '@btc-vision/transaction'; import { CallResult } from '../../../../contracts/CallResult.js'; import { OPNetEvent } from '../../../../contracts/OPNetEvent.js'; import { IOP20SContract } from '../opnet/IOP20SContract.js'; export type OracleAddedEvent = { readonly oracle: Address; readonly addedBy: Address; }; export type OracleRemovedEvent = { readonly oracle: Address; readonly removedBy: Address; }; export type PriceSubmittedEvent = { readonly oracle: Address; readonly price: bigint; readonly blockNumber: bigint; }; export type PriceAggregatedEvent = { readonly medianPrice: bigint; readonly oracleCount: number; readonly blockNumber: bigint; }; export type AddOracle = CallResult<{}, [OPNetEvent<OracleAddedEvent>]>; export type RemoveOracle = CallResult<{}, [OPNetEvent<OracleRemovedEvent>]>; export type SubmitPrice = CallResult<{}, [OPNetEvent<PriceSubmittedEvent>]>; export type AggregatePrice = CallResult<{}, [OPNetEvent<PriceAggregatedEvent>]>; export type OracleCount = CallResult<{ count: bigint; }, []>; export type MinOracles = CallResult<{ min: bigint; }, []>; export type IsOracleActive = CallResult<{ active: boolean; }, []>; export type OracleSubmission = CallResult<{ price: bigint; }, []>; export type AdminMultiOracleStable = CallResult<{ admin: Address; }, []>; export interface IMultiOracleStablecoinContract extends IOP20SContract { addOracle(oracle: Address): Promise<AddOracle>; removeOracle(oracle: Address): Promise<RemoveOracle>; submitPrice(price: bigint): Promise<SubmitPrice>; aggregatePrice(oracles: Address[]): Promise<AggregatePrice>; oracleCount(): Promise<OracleCount>; minOracles(): Promise<MinOracles>; isOracleActive(oracle: Address): Promise<IsOracleActive>; oracleSubmission(oracle: Address): Promise<OracleSubmission>; admin(): Promise<AdminMultiOracleStable>; }