export = Strategy;
/**
 * @typedef {Object} UniqueOktaStrategyOptions
 * @property {string} audience audience is the Okta Domain, e.g. `https://example.okta.com`,
 * `https://example.oktapreview.com`
 * @property {string | undefined} authServerID authServerID is the authorization server ID. If it is defined, the token
 * URL might be something like `https://example.okta.com/oauth2/authServerID/v1/token`
 * @property {string | undefined} idp idp is the Identity Provider (id). This is an optional field. it's a 20 character
 * alphanumeric string, e.g. `qOp8aaJmCEhvep5Il6ZJ`  (generated example)
 * @property {boolean | undefined} passReqToCallback With this option enabled, `req` will be passed as the first argument to the
 * verify callback.
 * @property {'code'} response_type Set this to 'code'
 */
/**
 * @typedef {UniqueOktaStrategyOptions & Omit<import("passport-oauth2")._StrategyOptionsBase, "authorizationURL" | "tokenURL">} OktaStrategyOptions
 */
/**
 * @extends OAuth2Strategy
 */
declare class Strategy extends OAuth2Strategy {
    /**
     * @param {OktaStrategyOptions | undefined} options
     * @param {import("passport-oauth2").VerifyFunction | import("passport-oauth2").VerifyFunctionWithRequest} verify
     */
    constructor(options: OktaStrategyOptions | undefined, verify: import("passport-oauth2").VerifyFunction | import("passport-oauth2").VerifyFunctionWithRequest);
    _userInfoUrl: string;
    _idp: string;
    _state: any;
    /**
     * Retrieve user profile from Okta.
     * Further references at http://developer.okta.com/docs/api/resources/oidc.html#get-user-information
     *
     * This function constructs a normalized profile, with the following properties:
     *
     *   - `provider`         always set to `okta`
     *   - `id`
     *   - `username`
     *   - `displayName`
     *
     * @param {String} accessToken
     * @param {Function} done
     * @api protected
     */
    userProfile(accessToken: string, done: Function): void;
    /**
     * Return extra Okta-specific parameters to be included in the authorization
     * request.
     *
     * @param {Object} option
     * @return {Object}
     * @api protected
     */
    authorizationParams(option: any): any;
}
declare namespace Strategy {
    export { UniqueOktaStrategyOptions, OktaStrategyOptions };
}
import OAuth2Strategy = require("passport-oauth2");
type OktaStrategyOptions = UniqueOktaStrategyOptions & Omit<import("passport-oauth2")._StrategyOptionsBase, "authorizationURL" | "tokenURL">;
type UniqueOktaStrategyOptions = {
    /**
     * audience is the Okta Domain, e.g. `https://example.okta.com`,
     * `https://example.oktapreview.com`
     */
    audience: string;
    /**
     * authServerID is the authorization server ID. If it is defined, the token
     * URL might be something like `https://example.okta.com/oauth2/authServerID/v1/token`
     */
    authServerID: string | undefined;
    /**
     * idp is the Identity Provider (id). This is an optional field. it's a 20 character
     * alphanumeric string, e.g. `qOp8aaJmCEhvep5Il6ZJ`  (generated example)
     */
    idp: string | undefined;
    /**
     * With this option enabled, `req` will be passed as the first argument to the
     * verify callback.
     */
    passReqToCallback: boolean | undefined;
    /**
     * Set this to 'code'
     */
    response_type: 'code';
};
//# sourceMappingURL=oauth2.d.ts.map