/**
 * OpenAPI spec version: 1.0
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs';
import { Configuration } from '../configuration';
import { AccessToken } from '../model/accessToken';
export declare class OcAuthService {
    protected httpClient: HttpClient;
    protected authPath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    constructor(httpClient: HttpClient, configuration: Configuration);
    /**
     * @description this workflow is most approprivate for client apps where user is a human, ie a registered user
     *
     * @param username of the user logging in
     * @param password of the user logging in
     * @param clientID of the application the user is logging into
     * @param scope roles being requested - space delimited string or array
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    Login(username: string, password: string, clientID: string, scope: string | string[], observe?: 'body', reportProgress?: boolean): Observable<AccessToken>;
    Login(username: string, password: string, clientID: string, scope: string | string[], observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<AccessToken>>;
    Login(username: string, password: string, clientID: string, scope: string | string[], observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<AccessToken>>;
    /**
     * @description similar to login except client secret is also required, adding another level of security
     *
     * @param clientSecret of the application
     * @param username of the user logging in
     * @param password of the user logging in
     * @param clientID of the application the user is logging into
     * @param scope roles being requested - space delimited string or array
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    ElevatedLogin(clientSecret: string, username: string, password: string, clientID: string, scope: string | string[], observe?: 'body', reportProgress?: boolean): Observable<AccessToken>;
    ElevatedLogin(clientSecret: string, username: string, password: string, clientID: string, scope: string | string[], observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<AccessToken>>;
    ElevatedLogin(clientSecret: string, username: string, password: string, clientID: string, scope: string | string[], observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<AccessToken>>;
    /**
     * @description this workflow is best suited for a backend system
     *
     * @param clientSecret of the application
     * @param clientID of the application the user is logging into
     * @param scope roles being requested - space delimited string or array
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    ClientCredentials(clientSecret: string, clientID: string, scope: string | string[], observe?: 'body', reportProgress?: boolean): Observable<AccessToken>;
    ClientCredentials(clientSecret: string, clientID: string, scope: string | string[], observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<AccessToken>>;
    ClientCredentials(clientSecret: string, clientID: string, scope: string | string[], observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<AccessToken>>;
    /**
     * @description extend your users' session by getting a new access token with a refresh token. refresh tokens must be enabled in the dashboard
     *
     * @param refreshToken of the application
     * @param clientID of the application the user is logging into
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    RefreshToken(refreshToken: string, clientID: string, observe?: 'body', reportProgress?: boolean): Observable<AccessToken>;
    RefreshToken(refreshToken: string, clientID: string, observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<AccessToken>>;
    RefreshToken(refreshToken: string, clientID: string, observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<AccessToken>>;
    /**
     * @description allow users to browse your catalog without signing in - must have anonymous template user set in dashboard
     *
     * @param clientID of the application the user is logging into
     * @param scope roles being requested - space delimited string or array
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    Anonymous(clientID: string, scope: string | string[], observe?: 'body', reportProgress?: boolean): Observable<AccessToken>;
    Anonymous(clientID: string, scope: string | string[], observe?: 'response', reportProgress?: boolean): Observable<HttpResponse<AccessToken>>;
    Anonymous(clientID: string, scope: string | string[], observe?: 'events', reportProgress?: boolean): Observable<HttpEvent<AccessToken>>;
}
