import { BackoffOptions } from "exponential-backoff";
import { GcpAuthenticatedIdentity } from "../creds/identity.js";
export declare const API_CALL_DELAY = 1000;
export declare const BACKOFF_OPTIONS: BackoffOptions;
export interface IamBinding {
    role: string;
    members: string[];
}
export interface IamPolicy {
    version?: number;
    bindings?: IamBinding[];
    etag?: string;
}
export interface RoleUpdateResult {
    newlyAddedRoles: string[];
    failedRoles: string[];
}
export declare abstract class BaseGcpIamManager {
    protected initialized: boolean;
    protected readonly identity: GcpAuthenticatedIdentity;
    protected userEmail: string | undefined;
    constructor(identity: GcpAuthenticatedIdentity);
    initialize(): Promise<void>;
    protected abstract initializeSpecific(): Promise<void>;
    protected abstract formatResourceName(resourceId: string): string;
    abstract ensurePermissions(): Promise<void>;
}
