Emit Oracle Price Message in Rates Adapter

This commit is contained in:
Jim Hamill
2025-08-10 02:23:09 +00:00
parent 44d35ac562
commit a927a5649f
2 changed files with 13 additions and 3 deletions
+3 -1
View File
@@ -11,7 +11,9 @@ export type RatesEventMap = {
};
};
export abstract class BaseRates extends EventEmitter<RatesEventMap> {
export abstract class BaseRates<
T extends RatesEventMap = RatesEventMap,
> extends EventEmitter<T> {
/** Starts the given rates adapter so that it will emit events on price updates. */
public abstract start(): Promise<void>;
+10 -2
View File
@@ -5,10 +5,17 @@ import {
OraclePriceMessage,
} from '@generalprotocols/oracle-client';
import { BaseRates } from './index.js';
import { type RatesEventMap, BaseRates } from './index.js';
// Add the Oracle Price Message to our Events for this Adapter.
export type RatesOracleEventMap = RatesEventMap & {
rateUpdated: {
oraclePriceMessage: OraclePriceMessage;
};
};
// TODO: Add RatesHistorical trait since Oracles can provide historical rates.
export class RatesOracle extends BaseRates {
export class RatesOracle extends BaseRates<RatesOracleEventMap> {
/**
* Create a new rates oracle.
*
@@ -153,6 +160,7 @@ export class RatesOracle extends BaseRates {
numeratorUnitCode: oracle.SOURCE_NUMERATOR_UNIT_CODE,
denominatorUnitCode: oracle.SOURCE_DENOMINATOR_UNIT_CODE,
price: priceValue,
oraclePriceMessage: message,
});
}
}