@agoric/zoe
Version:
Zoe: the Smart Contract Framework for Offer Enforcement
111 lines • 4.68 kB
TypeScript
export type ParsableNumber = bigint | number | string;
export type OraclePriceSubmission = Readonly<ParsableNumber | {
data: ParsableNumber;
}>;
export type Price = ParsableNumber | Ratio;
export type PriceAggregatorContract = ContractOf<typeof start>;
/**
* @deprecated use fluxAggregator
*
* This contract aggregates price values from a set of oracles and provides a
* PriceAuthority for their median. This naive method is game-able and so this module
* is a stub until we complete what is now in `fluxAggregatorKit.js`.
*
* @param {ZCF<{
* timer: import('@agoric/time').TimerService,
* POLL_INTERVAL: bigint,
* brandIn: Brand<'nat'>,
* brandOut: Brand<'nat'>,
* unitAmountIn: Amount<'nat'>,
* }>} zcf
* @param {{
* marshaller: Marshaller,
* quoteMint?: ERef<Mint<'set', PriceDescription>>,
* storageNode: ERef<StorageNode>,
* }} privateArgs
*/
export function start(zcf: ZCF<{
timer: import("@agoric/time").TimerService;
POLL_INTERVAL: bigint;
brandIn: Brand<"nat">;
brandOut: Brand<"nat">;
unitAmountIn: Amount<"nat">;
}>, privateArgs: {
marshaller: Marshaller;
quoteMint?: ERef<Mint<"set", PriceDescription>>;
storageNode: ERef<StorageNode>;
}): Promise<{
creatorFacet: {
/**
* An "oracle invitation" is an invitation to be able to submit data to
* include in the priceAggregator's results.
*
* The offer result from this invitation is a OracleAdmin, which can be used
* directly to manage the price submissions as well as to terminate the
* relationship.
*
* @param {Instance | string} [oracleKey]
*/
makeOracleInvitation: (oracleKey?: Instance | string) => Promise<Invitation<{
admin: OracleAdmin<Price>;
invitationMakers: {
PushPrice: (price: ParsableNumber) => Promise<Invitation<void>>;
};
}, {
notifier?: globalThis.Notifier<OraclePriceSubmission> | undefined;
scaleValueOut?: number | undefined;
} | undefined>>;
/** @param {OracleKey} oracleKey */
deleteOracle: (oracleKey: OracleKey) => Promise<void>;
/**
* @param {Instance | string} [oracleInstance]
* @param {OracleQuery} [query]
* @returns {Promise<OracleAdmin<Price>>}
*/
initOracle: (oracleInstance?: Instance | string, query?: OracleQuery) => Promise<OracleAdmin<Price>>;
} & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
/**
* An "oracle invitation" is an invitation to be able to submit data to
* include in the priceAggregator's results.
*
* The offer result from this invitation is a OracleAdmin, which can be used
* directly to manage the price submissions as well as to terminate the
* relationship.
*
* @param {Instance | string} [oracleKey]
*/
makeOracleInvitation: (oracleKey?: Instance | string) => Promise<Invitation<{
admin: OracleAdmin<Price>;
invitationMakers: {
PushPrice: (price: ParsableNumber) => Promise<Invitation<void>>;
};
}, {
notifier?: globalThis.Notifier<OraclePriceSubmission> | undefined;
scaleValueOut?: number | undefined;
} | undefined>>;
/** @param {OracleKey} oracleKey */
deleteOracle: (oracleKey: OracleKey) => Promise<void>;
/**
* @param {Instance | string} [oracleInstance]
* @param {OracleQuery} [query]
* @returns {Promise<OracleAdmin<Price>>}
*/
initOracle: (oracleInstance?: Instance | string, query?: OracleQuery) => Promise<OracleAdmin<Price>>;
}>;
publicFacet: {
getPriceAuthority(): import("@agoric/zoe/tools/types.js").PriceAuthority;
getSubscriber: () => globalThis.StoredSubscriber<unknown>;
/** Diagnostic tool */
getRoundCompleteNotifier(): Promise<globalThis.Notifier<any>>;
} & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
getPriceAuthority(): import("@agoric/zoe/tools/types.js").PriceAuthority;
getSubscriber: () => globalThis.StoredSubscriber<unknown>;
/** Diagnostic tool */
getRoundCompleteNotifier(): Promise<globalThis.Notifier<any>>;
}>;
}>;
import type { ContractOf } from '../zoeService/utils.js';
import type { ZCF } from '@agoric/zoe';
import type { PriceDescription } from '@agoric/zoe/tools/types.js';
import type { Invitation } from '@agoric/zoe';
//# sourceMappingURL=priceAggregator.d.ts.map