import APIKey from '../credential/APIKey';
import BasicAuth from '../credential/BasicAuth';
import OAuth from '../credential/OAuth';
import BearerToken from '../credential/BearerToken';
declare enum CredentialType {
    apiKey = "apiKey",
    oAuth = "oAuth",
    basicAuth = "basicAuth",
    bearerToken = "bearerToken"
}
interface IIdentityManager {
    allAPIKeys: APIKey[];
    allOAuths: OAuth[];
    allBasicAuths: BasicAuth[];
    allBearerTokens: BearerToken[];
    defaultAPIKey?: APIKey;
    defaultOAuth?: OAuth;
    defaultBasicAuth?: BasicAuth;
    defaultBearerToken?: BearerToken;
    defaultCredentialType?: CredentialType | keyof typeof CredentialType;
    defaultCredential?: APIKey | OAuth | BasicAuth | BearerToken;
    registers(credentials: (APIKey | BasicAuth | OAuth | BearerToken)[]): void;
}
declare class IdentityManager implements IIdentityManager {
    get allAPIKeys(): APIKey[];
    get allOAuths(): OAuth[];
    get allBasicAuths(): BasicAuth[];
    get allBearerTokens(): BearerToken[];
    private _defaultAPIKey?;
    get defaultAPIKey(): APIKey | undefined;
    private _defaultOAuth?;
    get defaultOAuth(): OAuth | undefined;
    private _defaultBasicAuth?;
    get defaultBasicAuth(): BasicAuth | undefined;
    private _defaultBearerToken?;
    get defaultBearerToken(): BearerToken | undefined;
    private _defaultCredentialType?;
    get defaultCredentialType(): IIdentityManager['defaultCredentialType'] | undefined;
    set defaultCredentialType(value: IIdentityManager['defaultCredentialType'] | undefined);
    get defaultCredential(): APIKey | OAuth | BasicAuth | BearerToken | undefined;
    private _apiKeys;
    private _oAuths;
    private _basicAuths;
    private _bearerTokens;
    setDefaultAPIKey(key?: string): void;
    setDefaultOAuth(appId?: string): void;
    setDefaultBasicAuth(auth?: string | BasicAuth): void;
    setDefaultBearerToken(auth?: string | BearerToken): void;
    setDefaultCredential(credential?: APIKey | OAuth | BasicAuth | BearerToken): void;
    getAPIKey(key: string): APIKey;
    registerAPIKeys(apiKeys: APIKey[]): void;
    destroyAPIKeys(keys?: string[]): void;
    getOAuth(appId: string): OAuth;
    registerOAuths(oAuths: OAuth[]): void;
    destroyOAuths(appIds?: string[]): Promise<unknown>;
    getBasicAuth(username: string): BasicAuth;
    registerBasicAuths(basicAuths: BasicAuth[]): void;
    destroyBasicAuths(auths?: string[] | BasicAuth[]): void;
    getBearerToken(token: string): BearerToken;
    registerBearerTokens(bearerTokens: BearerToken[]): void;
    destroyBearerTokens(auths?: string[] | BearerToken[]): void;
    private _credentials;
    private _credentialsIndexes;
    registers(credentials: (APIKey | BasicAuth | OAuth | BearerToken)[]): void;
    destroys(credentials?: (APIKey | BasicAuth | OAuth | BearerToken)[]): void;
}
export default IdentityManager;
export { CredentialType };
