import { JWTPayload } from "jose";
import { Resource } from "../resources";
type TokenHandoffParams = {
    code: string;
    clientId: string;
    authCallbackUrl: string;
    verifier: string;
};
type TokenHandoffPayload = {
    access_token: string;
    expires_in: number;
    id_token: string;
    refresh_token: string;
    error?: {
        error?: string;
        error_description?: string;
    };
};
export declare const tokenHandoff: import("@reduxjs/toolkit").AsyncThunk<TokenHandoffPayload, TokenHandoffParams, {
    state?: unknown;
    dispatch?: import("redux").Dispatch;
    extra?: unknown;
    rejectValue?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
type RefreshTokenPayload = {
    access_token: string;
    expires_in: number;
    id_token: string;
    refresh_token: string;
};
export declare const refreshTokens: import("@reduxjs/toolkit").AsyncThunk<RefreshTokenPayload, string, {
    state?: unknown;
    dispatch?: import("redux").Dispatch;
    extra?: unknown;
    rejectValue?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export declare const setIsAutoAuthenticating: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, string>;
type FetchPermissionsPayload = {
    result: string[][];
};
type FetchPermissionsParams = {
    resources: Resource[];
    authzUrl: string;
};
export declare const fetchResourcesPermissions: import("@reduxjs/toolkit").AsyncThunk<FetchPermissionsPayload, FetchPermissionsParams, {
    state?: unknown;
    dispatch?: import("redux").Dispatch;
    extra?: unknown;
    rejectValue?: unknown;
    serializedErrorType?: unknown;
    pendingMeta?: unknown;
    fulfilledMeta?: unknown;
    rejectedMeta?: unknown;
}>;
export type AuthSliceState = {
    loading: boolean;
    hasAttempted: boolean;
    isHandingOffCodeForToken: boolean;
    handoffError: string;
    isRefreshingTokens: boolean;
    tokensRefreshError: string;
    isAutoAuthenticating: boolean;
    resourcePermissions: {
        [name: string]: {
            isFetching: boolean;
            hasAttempted: boolean;
            error: string;
            permissions: string[];
        };
    };
    sessionExpiry?: number;
    idToken?: string;
    idTokenContents?: JWTPayload;
    accessToken?: string;
    refreshToken?: string;
};
export declare const authSlice: import("@reduxjs/toolkit").Slice<AuthSliceState, {
    signOut: (state: import("immer/dist/internal").WritableDraft<AuthSliceState>) => void;
}, "auth">;
export declare const signOut: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"auth/signOut">;
declare const _default: import("redux").Reducer<AuthSliceState>;
export default _default;
