UNPKG

@sky-mavis/smart-order-router

Version:
63 lines 5.15 kB
import { TradeType } from '@uniswap/sdk-core'; import { CacheMode } from './model'; /** * Abstract class for a RouteCachingProvider. * Defines the base methods of how to interact with this interface, but not the implementation of how to cache. */ export class IRouteCachingProvider { constructor() { /** * Final implementation of the public `getCachedRoute` method, this is how code will interact with the implementation * * @public * @readonly * @param chainId * @param amount * @param quoteToken * @param tradeType * @param protocols * @param blockNumber */ this.getCachedRoute = async ( // Defined as a readonly member instead of a regular function to make it final. chainId, amount, quoteToken, tradeType, protocols, blockNumber, optimistic = false) => { if ((await this.getCacheMode(chainId, amount, quoteToken, tradeType, protocols)) == CacheMode.Darkmode) { return undefined; } const cachedRoute = await this._getCachedRoute(chainId, amount, quoteToken, tradeType, protocols, blockNumber, optimistic); return this.filterExpiredCachedRoutes(cachedRoute, blockNumber, optimistic); }; /** * Final implementation of the public `setCachedRoute` method. * This method will set the blockToLive in the CachedRoutes object before calling the internal method to insert in cache. * * @public * @readonly * @param cachedRoutes The route to cache. * @returns Promise<boolean> Indicates if the route was inserted into cache. */ this.setCachedRoute = async ( // Defined as a readonly member instead of a regular function to make it final. cachedRoutes, amount) => { if ((await this.getCacheModeFromCachedRoutes(cachedRoutes, amount)) == CacheMode.Darkmode) { return false; } cachedRoutes.blocksToLive = await this._getBlocksToLive(cachedRoutes, amount); return this._setCachedRoute(cachedRoutes, amount); }; } /** * Returns the CacheMode for the given cachedRoutes and amount * * @param cachedRoutes * @param amount */ getCacheModeFromCachedRoutes(cachedRoutes, amount) { const quoteToken = cachedRoutes.tradeType == TradeType.EXACT_INPUT ? cachedRoutes.tokenOut : cachedRoutes.tokenIn; return this.getCacheMode(cachedRoutes.chainId, amount, quoteToken, cachedRoutes.tradeType, cachedRoutes.protocolsCovered); } filterExpiredCachedRoutes(cachedRoutes, blockNumber, optimistic) { return (cachedRoutes === null || cachedRoutes === void 0 ? void 0 : cachedRoutes.notExpired(blockNumber, optimistic)) ? cachedRoutes : undefined; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtY2FjaGluZy1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvY2FjaGluZy9yb3V0ZS9yb3V0ZS1jYWNoaW5nLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBbUMsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUdwQzs7O0dBR0c7QUFDSCxNQUFNLE9BQWdCLHFCQUFxQjtJQUEzQztRQUNFOzs7Ozs7Ozs7OztXQVdHO1FBQ2EsbUJBQWMsR0FBRyxLQUFLO1FBQ3BDLCtFQUErRTtRQUMvRSxPQUFlLEVBQ2YsTUFBZ0MsRUFDaEMsVUFBaUIsRUFDakIsU0FBb0IsRUFDcEIsU0FBcUIsRUFDckIsV0FBbUIsRUFDbkIsVUFBVSxHQUFHLEtBQUssRUFDaUIsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RHLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUM1QyxPQUFPLEVBQ1AsTUFBTSxFQUNOLFVBQVUsRUFDVixTQUFTLEVBQ1QsU0FBUyxFQUNULFdBQVcsRUFDWCxVQUFVLENBQ1gsQ0FBQztZQUVGLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDOUUsQ0FBQyxDQUFDO1FBRUY7Ozs7Ozs7O1dBUUc7UUFDYSxtQkFBYyxHQUFHLEtBQUs7UUFDcEMsK0VBQStFO1FBQy9FLFlBQTBCLEVBQzFCLE1BQWdDLEVBQ2QsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDekYsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELFlBQVksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTlFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDO0lBMkZKLENBQUM7SUF6RkM7Ozs7O09BS0c7SUFDSSw0QkFBNEIsQ0FDakMsWUFBMEIsRUFDMUIsTUFBZ0M7UUFFaEMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBRWxILE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FDdEIsWUFBWSxDQUFDLE9BQU8sRUFDcEIsTUFBTSxFQUNOLFVBQVUsRUFDVixZQUFZLENBQUMsU0FBUyxFQUN0QixZQUFZLENBQUMsZ0JBQWdCLENBQzlCLENBQUM7SUFDSixDQUFDO0lBcUJTLHlCQUF5QixDQUNqQyxZQUFzQyxFQUN0QyxXQUFtQixFQUNuQixVQUFtQjtRQUVuQixPQUFPLENBQUEsWUFBWSxhQUFaLFlBQVksdUJBQVosWUFBWSxDQUFFLFVBQVUsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RGLENBQUM7Q0EyQ0YifQ==