export interface Lock {
    Key?: string;
    LastModified?: Date;
}
/**
 * Checks all locks and removes those older than five minutes. Returns a count
 * of locks that are not older than configured retention period or 5 minutes.
 *
 * @param {object} bucket - The AWS S3 bucket with the locks to check
 * @param {Array} locks - The list of locks in the bucket
 * @param {number} retentionTimeInSeconds - lock retention time in seconds, default is 300
 * @returns {integer} - Number of locks remaining in bucket
 */
export declare function checkOldLocks(bucket: string, locks?: Lock[], retentionTimeInSeconds?: number): Promise<number>;
/**
 * Counts the number of locks in a bucket.
 *
 * @param {object} bucket - The AWS S3 bucket to check
 * @param {string} providerName - The provider name
 * @param {number} retentionTimeInSeconds - lock retention time in seconds, default is 300
 * @returns {integer} - Number of current locks in the bucket
 */
export declare function countLock(bucket: string, providerName: string, retentionTimeInSeconds?: number): Promise<number>;
export declare function removeLock(bucket: string, providerName: string, granuleId: string): Promise<void>;
/**
 *
 * @param {string} bucket - system bucket to place the lock files
 * @param {object} provider - provider object
 * @param {string} provider.id - provider id
 * @param {number} provider.globalConnectionLimit - provider globalConnectionLimit
 * @param {number} provider.maxDownloadTime - provider maxDownloadTime for a granule
 * @param {string} granuleId - id of downloading granule
 * @param {number} counter - retry counter
 * @returns {Promise<boolean>}
 */
export declare function proceed(bucket: string, provider: {
    id: string;
    globalConnectionLimit?: number;
    maxDownloadTime?: number;
}, granuleId: string, counter?: number): Promise<boolean>;
//# sourceMappingURL=lock.d.ts.map