/**
 * Access token type.
 *
 * @see [Section 7.1](https://tools.ietf.org/html/rfc6749#section-7.1)
 */
export type TokenType = 'bearer' | 'mac';
/**
 * A hint about the type of the token submitted for revocation. If not included then the server should attempt to deduce the token type.
 *
 * @see [Section 2.1](https://tools.ietf.org/html/rfc7009#section-2.1)
 */
export declare enum TokenTypeHint {
    /**
     * Access token.
     *
     * [Section 1.4](https://tools.ietf.org/html/rfc6749#section-1.4)
     */
    AccessToken = "access_token",
    /**
     * Refresh token.
     *
     * [Section 1.5](https://tools.ietf.org/html/rfc6749#section-1.5)
     */
    RefreshToken = "refresh_token"
}
/**
 * Config used to request a token refresh, revocation, or code exchange.
 */
export type TokenRequestConfig = {
    /**
     * A unique string representing the registration information provided by the client.
     * The client identifier is not a secret; it is exposed to the resource owner and shouldn't be used
     * alone for client authentication.
     *
     * The client identifier is unique to the authorization server.
     *
     * [Section 2.2](https://tools.ietf.org/html/rfc6749#section-2.2)
     */
    clientId: string;
    /**
     * Client secret supplied by an auth provider.
     * There is no secure way to store this on the client.
     *
     * [Section 2.3.1](https://tools.ietf.org/html/rfc6749#section-2.3.1)
     */
    clientSecret?: string;
    /**
     * Extra query params that'll be added to the query string.
     */
    extraParams?: Record<string, string>;
    /**
     * Extra HTTP header params that'll be added to the HTTP header of requests.
     */
    extraHeaders?: Record<string, string>;
    /**
     * List of strings to request access to.
     *
     * [Section 3.3](https://tools.ietf.org/html/rfc6749#section-3.3)
     */
    scopes?: string[];
};
/**
 * Config used to exchange an authorization code for an access token.
 *
 * @see [Section 4.1.3](https://tools.ietf.org/html/rfc6749#section-4.1.3)
 */
export type AccessTokenRequestConfig = TokenRequestConfig & {
    /**
     * The authorization code received from the authorization server.
     */
    code: string;
    /**
     * If the `redirectUri` parameter was included in the `AuthRequest`, then it must be supplied here as well.
     *
     * [Section 3.1.2](https://tools.ietf.org/html/rfc6749#section-3.1.2)
     */
    redirectUri: string;
};
/**
 * Config used to request a token refresh, or code exchange.
 *
 * @see [Section 6](https://tools.ietf.org/html/rfc6749#section-6)
 */
export type RefreshTokenRequestConfig = TokenRequestConfig & {
    /**
     * The refresh token issued to the client.
     */
    refreshToken?: string;
};
/**
 * Config used to revoke a token.
 *
 * @see [Section 2.1](https://tools.ietf.org/html/rfc7009#section-2.1)
 */
export type RevokeTokenRequestConfig = Partial<TokenRequestConfig> & {
    /**
     * The token that the client wants to get revoked.
     *
     * [Section 3.1](https://tools.ietf.org/html/rfc6749#section-3.1)
     */
    token: string;
    /**
     * A hint about the type of the token submitted for revocation.
     *
     * [Section 3.2](https://tools.ietf.org/html/rfc6749#section-3.2)
     */
    tokenTypeHint?: TokenTypeHint;
};
/**
 * Grant type values used in dynamic client registration and auth requests.
 *
 * @see [Appendix A.10](https://tools.ietf.org/html/rfc6749#appendix-A.10)
 */
export declare enum GrantType {
    /**
     * Used for exchanging an authorization code for one or more tokens.
     *
     * [Section 4.1.3](https://tools.ietf.org/html/rfc6749#section-4.1.3)
     */
    AuthorizationCode = "authorization_code",
    /**
     * Used when obtaining an access token.
     *
     * [Section 4.2](https://tools.ietf.org/html/rfc6749#section-4.2)
     */
    Implicit = "implicit",
    /**
     * Used when exchanging a refresh token for a new token.
     *
     * [Section 6](https://tools.ietf.org/html/rfc6749#section-6)
     */
    RefreshToken = "refresh_token",
    /**
     * Used for client credentials flow.
     *
     * [Section 4.4.2](https://tools.ietf.org/html/rfc6749#section-4.4.2)
     */
    ClientCredentials = "client_credentials"
}
/**
 * Object returned from the server after a token response.
 */
export type ServerTokenResponseConfig = {
    access_token: string;
    token_type?: TokenType;
    expires_in?: number;
    refresh_token?: string;
    scope?: string;
    id_token?: string;
    issued_at?: number;
};
export type TokenResponseConfig = {
    /**
     * The access token issued by the authorization server.
     *
     * [Section 4.2.2](https://tools.ietf.org/html/rfc6749#section-4.2.2)
     */
    accessToken: string;
    /**
     * The type of the token issued. Value is case insensitive.
     *
     * [Section 7.1](https://tools.ietf.org/html/rfc6749#section-7.1)
     */
    tokenType?: TokenType;
    /**
     * The lifetime in seconds of the access token.
     *
     * For example, the value `3600` denotes that the access token will
     * expire in one hour from the time the response was generated.
     *
     * If omitted, the authorization server should provide the
     * expiration time via other means or document the default value.
     *
     * [Section 4.2.2](https://tools.ietf.org/html/rfc6749#section-4.2.2)
     */
    expiresIn?: number;
    /**
     * The refresh token, which can be used to obtain new access tokens using the same authorization grant.
     *
     * [Section 5.1](https://tools.ietf.org/html/rfc6749#section-5.1)
     */
    refreshToken?: string;
    /**
     * The scope of the access token. Only required if it's different to the scope that was requested by the client.
     *
     * [Section 3.3](https://tools.ietf.org/html/rfc6749#section-3.3)
     */
    scope?: string;
    /**
     * Required if the "state" parameter was present in the client
     * authorization request.  The exact value received from the client.
     *
     * [Section 4.2.2](https://tools.ietf.org/html/rfc6749#section-4.2.2)
     */
    state?: string;
    /**
     * ID Token value associated with the authenticated session.
     *
     * [TokenResponse](https://openid.net/specs/openid-connect-core-1_0.html#TokenResponse)
     */
    idToken?: string;
    /**
     * Time in seconds when the token was received by the client.
     */
    issuedAt?: number;
};
//# sourceMappingURL=TokenRequest.types.d.ts.map