import { EventEmitter } from 'events';
import { NextFunction, Request, RequestHandler, Response } from 'express';
import { XuiLogger } from '../../common';
import { S2SConfig } from './s2sConfig.interface';
import { S2SToken } from './s2sToken.interface';
export declare class S2SAuth extends EventEmitter {
    protected readonly router: import("express-serve-static-core").Router;
    protected s2sConfig: S2SConfig;
    protected store: {
        [key: string]: S2SToken;
    };
    protected logger: XuiLogger;
    constructor(logger?: XuiLogger);
    /**
     * This must be called with a suitable configuration before attempting to use the middleware, or else it will not
     * have valid parameter values to generate the S2S token.
     *
     * @param s2sConfig The S2SConfig containing microservice name, S2S endpoint URL, and S2S secret
     * @param store The cache for storing S2S tokens, indexed by microservice name
     */
    configure: (s2sConfig: S2SConfig, store?: {
        [key: string]: S2SToken;
    }) => RequestHandler;
    s2sHandler: (req: Request, res: Response, next: NextFunction) => Promise<void>;
    validateCache: () => boolean;
    getToken: () => S2SToken;
    deleteCachedToken: () => void;
    private generateToken;
    private postS2SLease;
    serviceTokenGenerator: () => Promise<string>;
    /**
     * Get all the events that this strategy emits
     * @return string[]
     */
    getEvents: () => string[];
}
export declare const s2s: S2SAuth;
//# sourceMappingURL=s2s.class.d.ts.map