import type { RequestArgs } from "./resources/agent.js";
import { AttackDetection } from "./resources/attackDetection.js";
import { AuthenticationManagement } from "./resources/authenticationManagement.js";
import { Cache } from "./resources/cache.js";
import { ClientPolicies } from "./resources/clientPolicies.js";
import { Clients } from "./resources/clients.js";
import { ClientScopes } from "./resources/clientScopes.js";
import { Components } from "./resources/components.js";
import { Groups } from "./resources/groups.js";
import { IdentityProviders } from "./resources/identityProviders.js";
import { Realms } from "./resources/realms.js";
import { Organizations } from "./resources/organizations.js";
import { Roles } from "./resources/roles.js";
import { ServerInfo } from "./resources/serverInfo.js";
import { Users } from "./resources/users.js";
import { UserStorageProvider } from "./resources/userStorageProvider.js";
import { WhoAmI } from "./resources/whoAmI.js";
import { Credentials } from "./utils/auth.js";
export interface TokenProvider {
    getAccessToken: () => Promise<string | undefined>;
}
export interface ConnectionConfig {
    baseUrl?: string;
    realmName?: string;
    requestOptions?: RequestInit;
    requestArgOptions?: Pick<RequestArgs, "catchNotFound">;
}
export declare class KeycloakAdminClient {
    #private;
    users: Users;
    userStorageProvider: UserStorageProvider;
    groups: Groups;
    roles: Roles;
    organizations: Organizations;
    clients: Clients;
    realms: Realms;
    clientScopes: ClientScopes;
    clientPolicies: ClientPolicies;
    identityProviders: IdentityProviders;
    components: Components;
    serverInfo: ServerInfo;
    whoAmI: WhoAmI;
    attackDetection: AttackDetection;
    authenticationManagement: AuthenticationManagement;
    cache: Cache;
    baseUrl: string;
    realmName: string;
    scope?: string;
    accessToken?: string;
    refreshToken?: string;
    constructor(connectionConfig?: ConnectionConfig);
    auth(credentials: Credentials): Promise<void>;
    registerTokenProvider(provider: TokenProvider): void;
    setAccessToken(token: string): void;
    getAccessToken(): Promise<string | undefined>;
    getRequestOptions(): RequestInit | undefined;
    getGlobalRequestArgOptions(): Pick<RequestArgs, "catchNotFound"> | undefined;
    setConfig(connectionConfig: ConnectionConfig): void;
}
