import ClientResponse from '../Contracts/ClientResponse'; import GuardInterface from '../Contracts/Guard'; import Products from '../Contracts/Products'; import Recommendation from '../Contracts/Recommendation'; import Storage from '../Storage'; import Trending from '../Trending'; declare abstract class Guard implements GuardInterface { /** * * * @type {Products} */ protected products: Products; /** * * * @type {Storage} */ protected storage: Storage; /** * * * @param {Products} products * @param {Storage} storage * @return {Promise} */ boot(products: Products, storage: Storage): this; /** * * * @param {ClientResponse} response * @return {boolean} */ abstract check(response: ClientResponse): boolean; /** * * * @param {Recommendation} recommendation * @return {Trending | null} */ abstract contingency(recommendation: Recommendation): Trending | null; /** * * * @return {boolean} */ abstract retry(): boolean; } export default Guard;