import * as t from "io-ts";
import * as express from "express";
import { SamlConfig } from "passport-saml";
import * as PassportSaml from "passport-saml";
import { IExtendedCacheProvider } from "./redis_cache_provider";
import { PreValidateResponseDoneCallbackT, PreValidateResponseT, XmlAuthorizeTamperer } from "./spid";
export declare class CustomSamlClient<T extends Record<string, unknown>> extends PassportSaml.SAML {
    private readonly config;
    private readonly extededCacheProvider;
    private readonly requestMapper?;
    private readonly tamperAuthorizeRequest?;
    private readonly preValidateResponse?;
    private readonly doneCb?;
    constructor(config: SamlConfig, extededCacheProvider: IExtendedCacheProvider<T>, requestMapper?: ((req: express.Request) => t.Validation<T>) | undefined, tamperAuthorizeRequest?: XmlAuthorizeTamperer | undefined, preValidateResponse?: PreValidateResponseT<T> | undefined, doneCb?: PreValidateResponseDoneCallbackT<T> | undefined);
    /**
     * Custom version of `validatePostResponse` which checks
     * the response XML to satisfy SPID protocol constrains
     */
    validatePostResponse(body: {
        readonly SAMLResponse: string;
    }, callback: (err: Error, profile?: unknown, loggedOut?: boolean) => void): void;
    /**
     * Custom version of `generateAuthorizeRequest` which tampers
     * the generated XML to satisfy SPID protocol constrains
     */
    generateAuthorizeRequest(req: express.Request, isPassive: boolean, isHttpPostBinding: boolean, callback: (err: Error, xml?: string) => void): void;
}
