import { GenericContainer, StartedTestContainer, AbstractStartedContainer } from 'testcontainers';
import { ClientSecret, KeycloakClient, KeycloakRealm, KeycloakUser } from './types';
export declare class KeycloakContainer extends GenericContainer {
    private waitingLog;
    private adminUsername;
    private adminPassword;
    constructor(image?: string);
    withWaitingLog(log: string): void;
    withAdminUsername(username: string): this;
    withAdminPassword(password: string): this;
    start(): Promise<StartedKeycloakContainer>;
}
export declare class StartedKeycloakContainer extends AbstractStartedContainer {
    private readonly adminUsername;
    private readonly adminPassword;
    private KCADM;
    private SERVER;
    constructor(startedTestContainer: StartedTestContainer, adminUsername: string, adminPassword: string);
    getAdminUsername(): string;
    getAdminPassword(): string;
    private runCmd;
    /**
     * Start an authenticated session on this keycloak server
     * @params realmName th3 realm name you want to config
     * @params user the user who starting this session, usually the username of admin
     * @params user password, usually is the password of admin
     */
    configCredentials(realmName: string, user: string, password: string): Promise<string>;
    createRealm(realmName: string, enabled?: boolean): Promise<string>;
    getRealm(realmName: string): Promise<KeycloakRealm>;
    createUser(realmName: string, username: string, firstName: string, lastName: string, enabled?: boolean): Promise<string>;
    getUserById(realmName: string, userId: string): Promise<KeycloakUser>;
    getUserIdByUsername(realmName: string, username: string): Promise<string>;
    setUserPassword(realmName: string, username: string, password: string): Promise<string>;
    createClient(realmName: string, clientId: string, clientSecret: string, redirectUris?: Array<string>, webOrigins?: Array<string>, directAccessGrantsEnabled?: boolean, enabled?: boolean): Promise<string>;
    getCidByClientId(realmName: string, clientId: string): Promise<string>;
    getClientByCid(realmName: string, cid: string): Promise<KeycloakClient>;
    getClientSecretByCid(realmName: string, cid: string): Promise<ClientSecret>;
    getAccessToken(realmName: string, username: string, password: string, clientId: string, clientSecret: string): Promise<string>;
    getIdToken(realmName: string, username: string, password: string, clientId: string, clientSecret: string): Promise<string>;
}
