import { EventEmitter } from 'events';
import { ClientConfig } from 'aws-sdk';
import { Cluster, Capacity as ClusterCapacity } from './lib/models/Cluster';
export interface ConsumerClusterOpts {
    streamName: string;
    tableName: string;
    awsConfig: ClientConfig;
    dynamoEndpoint?: string;
    localDynamo: Boolean;
    kinesisEndpoint?: string;
    localKinesis: Boolean;
    localKinesisPort?: string;
    capacity: ClusterCapacity;
    startingIteratorType?: string;
    logLevel?: string;
    numRecords?: number;
    timeBetweenReads?: number;
}
export declare class ConsumerCluster extends EventEmitter {
    cluster: Cluster;
    private opts;
    private logger;
    private kinesis;
    private isShuttingDownFromError;
    private externalNetwork;
    private consumers;
    private consumerIds;
    private lastGarbageCollectedAt;
    private endpoints;
    constructor(pathToConsumer: string, opts: ConsumerClusterOpts);
    private init();
    private getKinesisEndpoint();
    private getDynamoEndpoint();
    serveHttp(port: string | number): void;
    private consumeAvailableShard(shardId, leaseCounter);
    private updateNetwork();
    private shouldTryToAcquireMoreShards();
    private hasTooManyShards();
    private fetchAvailableShard();
    private spawn(shardId, leaseCounter);
    private addConsumer(consumer);
    private killConsumer(callback);
    private killConsumerById(id, callback);
    private killAllConsumers(callback);
    private loopFetchExternalNetwork();
    private fetchExternalNetwork(callback);
    private loopReportClusterToNetwork();
    private reportClusterToNetwork(callback);
    private garbageCollectClusters();
    private logAndEmitError(err, desc?);
}
