import { type TokenCredential } from "@azure/identity";
export declare const AuthMode: {
    readonly Application: "application";
    readonly Delegated: "delegated";
    readonly Composite: "composite";
};
export type AuthMode = (typeof AuthMode)[keyof typeof AuthMode];
export declare const CredentialType: {
    readonly Application: "application";
    readonly Delegated: "delegated";
};
export type CredentialType = (typeof CredentialType)[keyof typeof CredentialType];
export interface ApplicationAuthRequest {
    readonly mode: typeof AuthMode.Application;
}
export interface DelegatedAuthRequest {
    readonly mode: typeof AuthMode.Delegated;
    readonly accessToken: string;
}
export interface CompositeAuthRequest {
    readonly mode: typeof AuthMode.Composite;
    readonly accessToken: string;
}
export type AuthRequest = ApplicationAuthRequest | DelegatedAuthRequest | CompositeAuthRequest;
export interface CredentialProvider {
    getCredential(authType: CredentialType): Promise<TokenCredential>;
}
export interface ClientFactory<TClient, TOptions = void> {
    createClient(credentialProvider: CredentialProvider, options?: TOptions): Promise<TClient>;
    getClientFingerprint?(options?: TOptions): string | undefined;
}
export declare const ApplicationAuthStrategy: {
    readonly Cli: "cli";
    readonly ManagedIdentity: "mi";
    readonly Chain: "chain";
};
export type ApplicationAuthStrategy = (typeof ApplicationAuthStrategy)[keyof typeof ApplicationAuthStrategy];
//# sourceMappingURL=types.d.ts.map