opnet
Version:
The perfect library for building Bitcoin-based applications.
53 lines (52 loc) • 1.93 kB
TypeScript
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>;
}