import { HttpClient } from '@angular/common/http';
import { Actions } from '@ngrx/effects';
import { Store } from '@ngrx/store';
import { ClaimMap, StoreTokenConstructor, TokenEscalator, TokenExtractor } from '@terminus/ngx-tools/jwt';
import { Observable, Observer } from 'rxjs';
export interface EscalateToken<CM = ClaimMap> extends Partial<StoreTokenConstructor<CM>> {
    authorizeUrl: Observable<string>;
    tokenName: Extract<keyof CM, string>;
}
export declare class TokenEscalatorMock<CM = ClaimMap> implements TokenEscalator<CM> {
    actions$: Actions;
    store: Store<any>;
    http: HttpClient;
    tokenExtractor: TokenExtractor<CM>;
    escalators: {
        [idx: string]: Observer<any>;
    };
    requestsForToken: {
        [idx: string]: string[];
    };
    static forTestBed(): {
        provide: typeof TokenEscalator;
        useFactory: typeof tokenEscalatorFactory;
    };
    /**
     * deprecated Please use the correctly spelled function `simulateEscalationRequest`
     *
     * @param tokenName
     */
    simulateEsclationRequest(tokenName: Extract<keyof CM, string>): void;
    simulateEscalationRequest(tokenName: Extract<keyof CM, string>): void;
    escalateToken({ tokenName, authorizeUrl, isDefaultToken }: EscalateToken<CM>): Observable<any>;
    constructor(actions$: Actions, store: Store<any>, http: HttpClient, tokenExtractor: TokenExtractor<CM>);
}
/**
 * Return mock
 */
export declare function tokenEscalatorFactory(): TokenEscalatorMock<ClaimMap>;
