import { KeycloakInstance } from 'keycloak-js';
import { LoginResult } from './Security';
import { Api } from '../api/Api';
import { WindowMode } from '../models/WindowMode';
import { PopupResult } from '../popup/PopupResult';
import { PopupSigner } from '../signer/PopupSigner';
import { Signer, SignMethod } from '../signer/Signer';
import { Flows } from './Flows';
import { PopupOptions } from '../popup/Popup';
export declare class ArkaneConnect {
    api: Api;
    signUsing: WindowMode;
    flows: Flows;
    windowMode: WindowMode;
    useOverlayWithPopup: boolean;
    _bearerTokenProvider: () => string;
    private clientId;
    private auth?;
    private loginResult?;
    constructor(clientId: string, options?: ConstructorOptions);
    checkAuthenticated(): Promise<AuthenticationResult>;
    logout(options?: AuthenticationOptions): Promise<void>;
    addOnTokenRefreshCallback(tokenRefreshCallback?: (token: string) => void): void;
    createSigner(windowMode?: WindowMode, popupOptions?: PopupOptions): Signer;
    isPopupSigner(signer: Signer): signer is PopupSigner;
    authenticate(options?: AuthenticationOptions): Promise<AuthenticationResult>;
    manageWallets(chain: string, options?: {
        redirectUri?: string;
        correlationID?: string;
        windowMode?: WindowMode;
    }): Promise<PopupResult | void>;
    linkWallets(options?: {
        redirectUri?: string;
        correlationID?: string;
        windowMode?: WindowMode;
    }): Promise<PopupResult | void>;
    _afterAuthenticationForFlowUse(loginResult: LoginResult): AuthenticationResult;
    private afterAuthentication;
}
export interface AuthenticationResult {
    auth?: KeycloakInstance;
    isAuthenticated: boolean;
    authenticated: (onAuthenticated: (auth: KeycloakInstance) => void) => AuthenticationResult;
    notAuthenticated: (onNotAuthenticated: (auth?: KeycloakInstance) => void) => AuthenticationResult;
}
export interface ConstructorOptions {
    chains?: string[];
    environment?: string;
    windowMode?: WindowMode;
    signUsing?: SignMethod;
    bearerTokenProvider?: () => string;
    useOverlayWithPopup?: boolean;
}
export interface AuthenticationOptions {
    redirectUri?: string;
    windowMode?: WindowMode;
    closePopup?: boolean;
    idpHint?: string;
}
