import type { KeycloakTokenParsed } from 'keycloak-js';
import { KeycloakInstance } from './keycloak';
export interface KeycloakState {
    keycloak: KeycloakInstance;
    isAuthenticated: boolean;
    hasFailed: boolean;
    error: Error;
    isPending: boolean;
    token: string;
    decodedToken: KeycloakTokenParsed;
    username: string;
    userId: string;
    roles: string[];
    resourceRoles: Record<string, string[]>;
}
export declare const state: {
    keycloak: {
        authenticated?: boolean;
        subject?: string;
        responseMode?: import("keycloak-js").KeycloakResponseMode;
        responseType?: import("keycloak-js").KeycloakResponseType;
        flow?: import("keycloak-js").KeycloakFlow;
        realmAccess?: {
            roles: string[];
        };
        resourceAccess?: import("keycloak-js").KeycloakResourceAccess;
        token?: string;
        tokenParsed?: {
            [x: string]: any;
            iss?: string;
            sub?: string;
            aud?: string;
            exp?: number;
            iat?: number;
            auth_time?: number;
            nonce?: string;
            acr?: string;
            amr?: string;
            azp?: string;
            session_state?: string;
            realm_access?: {
                roles: string[];
            };
            resource_access?: import("keycloak-js").KeycloakResourceAccess;
        };
        refreshToken?: string;
        refreshTokenParsed?: {
            [x: string]: any;
            iss?: string;
            sub?: string;
            aud?: string;
            exp?: number;
            iat?: number;
            auth_time?: number;
            nonce?: string;
            acr?: string;
            amr?: string;
            azp?: string;
            session_state?: string;
            realm_access?: {
                roles: string[];
            };
            resource_access?: import("keycloak-js").KeycloakResourceAccess;
        };
        idToken?: string;
        idTokenParsed?: {
            [x: string]: any;
            iss?: string;
            sub?: string;
            aud?: string;
            exp?: number;
            iat?: number;
            auth_time?: number;
            nonce?: string;
            acr?: string;
            amr?: string;
            azp?: string;
            session_state?: string;
            realm_access?: {
                roles: string[];
            };
            resource_access?: import("keycloak-js").KeycloakResourceAccess;
        };
        timeSkew?: number;
        didInitialize: boolean;
        loginRequired?: boolean;
        authServerUrl?: string;
        realm?: string;
        clientId?: string;
        redirectUri?: string;
        sessionId?: string;
        profile?: {
            id?: string;
            username?: string;
            email?: string;
            firstName?: string;
            lastName?: string;
            enabled?: boolean;
            emailVerified?: boolean;
            totp?: boolean;
            createdTimestamp?: number;
            attributes?: Record<string, unknown>;
        };
        userInfo?: {};
        onReady?: (authenticated?: boolean) => void;
        onAuthSuccess?: () => void;
        onAuthError?: (errorData: import("keycloak-js").KeycloakError) => void;
        onAuthRefreshSuccess?: () => void;
        onAuthRefreshError?: () => void;
        onAuthLogout?: () => void;
        onTokenExpired?: () => void;
        onActionUpdate?: (status: "success" | "cancelled" | "error", action?: string) => void;
        init: (initOptions?: import("keycloak-js").KeycloakInitOptions) => Promise<boolean>;
        login: (options?: import("keycloak-js").KeycloakLoginOptions) => Promise<void>;
        logout: (options?: import("keycloak-js").KeycloakLogoutOptions) => Promise<void>;
        register: (options?: import("keycloak-js").KeycloakRegisterOptions) => Promise<void>;
        accountManagement: () => Promise<void>;
        createLoginUrl: (options?: import("keycloak-js").KeycloakLoginOptions) => Promise<string>;
        createLogoutUrl: (options?: import("keycloak-js").KeycloakLogoutOptions) => string;
        createRegisterUrl: (options?: import("keycloak-js").KeycloakRegisterOptions) => Promise<string>;
        createAccountUrl: (options?: import("keycloak-js").KeycloakAccountOptions) => string;
        isTokenExpired: (minValidity?: number) => boolean;
        updateToken: (minValidity?: number) => Promise<boolean>;
        clearToken: () => void;
        hasRealmRole: (role: string) => boolean;
        hasResourceRole: (role: string, resource?: string) => boolean;
        loadUserProfile: () => Promise<import("keycloak-js").KeycloakProfile>;
        loadUserInfo: () => Promise<{}>;
    };
    isAuthenticated: boolean;
    hasFailed: boolean;
    error: Error;
    isPending: boolean;
    token: string;
    decodedToken: {
        [x: string]: any;
        iss?: string;
        sub?: string;
        aud?: string;
        exp?: number;
        iat?: number;
        auth_time?: number;
        nonce?: string;
        acr?: string;
        amr?: string;
        azp?: string;
        session_state?: string;
        realm_access?: {
            roles: string[];
        };
        resource_access?: import("keycloak-js").KeycloakResourceAccess;
    };
    username: string;
    userId: string;
    roles: string[];
    resourceRoles: Record<string, string[]>;
};
export declare const setKeycloak: (value: KeycloakInstance) => void;
export declare const setToken: (token: string, tokenParsed: KeycloakTokenParsed) => void;
interface ErrorString {
    error: string;
}
type ErrorLike = Error | ErrorString | string;
export declare const hasFailed: (value: boolean, err: ErrorLike) => void;
export declare const isPending: (value: boolean) => void;
export declare const isAuthenticated: (value: boolean) => void;
export {};
