import { LevelDown as LevelDOWN } from "leveldown";
import { IActiveTopics } from "./pipeProc";
import { IRangeResult } from "./getRange";
export interface IProc {
    [index: string]: string | number | undefined;
    name: string;
    topic: string;
    status: string;
    createdAt: number;
    lastClaimedRange: string;
    previousClaimedRange: string;
    lastAckedRange: string;
    lastClaimedAt: number;
    lastAckedAt: number;
    offset: string;
    reclaims: number;
    maxReclaims: number;
    reclaimTimeout: number;
    onMaxReclaimsReached: string;
}
export declare function proc(db: LevelDOWN, activeProcs: IProc[], activeTopics: IActiveTopics, options: {
    name: string;
    topic: string;
    offset: string;
    count: number;
    maxReclaims: number;
    reclaimTimeout: number;
    onMaxReclaimsReached: string;
}, callback: (err?: Error | null, log?: IRangeResult | IRangeResult[]) => void): void;
export declare function getAvailableProc(db: LevelDOWN, activeProcs: IProc[], activeTopics: IActiveTopics, procList: {
    name: string;
    topic: string;
    offset: string;
    count: number;
    maxReclaims: number;
    reclaimTimeout: number;
    onMaxReclaimsReached: string;
}[], callback: (err?: Error | null, result?: {
    procName: string;
    log?: IRangeResult | IRangeResult[];
}) => void): void;
export declare function createProc(db: LevelDOWN, options: {
    name: string;
    topic: string;
    offset: string;
    count: number;
    maxReclaims: number;
    reclaimTimeout: number;
    onMaxReclaimsReached: string;
}): import("./transaction").ITransaction<IProc>;
