import { Client } from "azure-kusto-data";
import { TableClient } from "@azure/data-tables";
export declare enum ResourceType {
    Queue = 0,
    Container = 1,
    Table = 2
}
export declare class ResourceURI {
    readonly uri: string;
    readonly accountName: string;
    readonly resourceType: ResourceType;
    constructor(uri: string, accountName: string, resourceType: ResourceType);
}
export declare class IngestClientResources {
    readonly securedReadyForAggregationQueues: ResourceURI[] | null;
    readonly failedIngestionsQueues: ResourceURI[] | null;
    readonly successfulIngestionsQueues: ResourceURI[] | null;
    readonly containers: ResourceURI[] | null;
    readonly statusTables: ResourceURI[] | null;
    constructor(securedReadyForAggregationQueues?: ResourceURI[] | null, failedIngestionsQueues?: ResourceURI[] | null, successfulIngestionsQueues?: ResourceURI[] | null, containers?: ResourceURI[] | null, statusTables?: ResourceURI[] | null);
    valid(): boolean;
}
export declare class ResourceManager {
    readonly kustoClient: Client;
    readonly isBrowser: boolean;
    readonly refreshPeriod: number;
    refreshPeriodOnError: number;
    ingestClientResources: IngestClientResources | null;
    ingestClientResourcesLastUpdate: number | null;
    authorizationContext: string | null;
    authorizationContextLastUpdate: number | null;
    private baseSleepTimeSecs;
    private baseJitterSecs;
    private rankedStorageAccountSet;
    constructor(kustoClient: Client, isBrowser?: boolean);
    refreshIngestClientResources(): Promise<IngestClientResources>;
    getIngestClientResourcesFromService(): Promise<IngestClientResources>;
    getResourceByName(table: {
        rows: () => any;
    }, resourceName: string, resourceType: ResourceType): ResourceURI[];
    pupulateStorageAccounts(): void;
    groupResourcesByStorageAccount(resources: ResourceURI[]): Map<string, ResourceURI[]>;
    getRankedAndShuffledStorageAccounts(resources: ResourceURI[]): ResourceURI[][];
    getRoundRobinRankedAndShuffledResources(resources: ResourceURI[]): ResourceURI[];
    refreshAuthorizationContext(): Promise<string>;
    tryRefresh(isAuthContextFetch: boolean): Promise<Error | null>;
    getAuthorizationContextFromService(): Promise<string>;
    getIngestionQueues(): Promise<ResourceURI[] | null>;
    getFailedIngestionsQueues(): Promise<ResourceURI[] | null>;
    getSuccessfulIngestionsQueues(): Promise<ResourceURI[] | null>;
    getContainers(): Promise<ResourceURI[] | null>;
    getAuthorizationContext(): Promise<string>;
    getStatusTables(): Promise<ResourceURI[] | null>;
    createStatusTable(): Promise<TableClient>;
    close(): void;
    reportResourceUsageResult(accountName: string, success: boolean): void;
}
export declare const createStatusTableClient: (uri: string) => TableClient;
export default ResourceManager;
//# sourceMappingURL=resourceManager.d.ts.map