import { Target } from "./types";
import { PayloadRepository } from "@octokit/webhooks";
export interface LockStore {
    lock(key: string, handler: () => {}): Promise<void>;
    lockEnv(repoId: number, env: string): Promise<void>;
    unlockEnv(repoId: number, env: string): Promise<void>;
    isLockedEnv(repoId: number, env: string): Promise<boolean>;
}
export interface Watch {
    repository: PayloadRepository;
    id: string;
    target: string;
    targetVal: Target;
    sha: string;
    ref: string;
}
export interface WatchStore {
    addWatch(repoId: number, watch: Watch): Promise<void>;
    delWatch(repoId: number, watch: Watch): Promise<void>;
    listWatchBySha(repoId: number, sha: string): Promise<Watch[]>;
}
export declare class InMemStore implements LockStore, WatchStore {
    private locks;
    private watches;
    clear(): void;
    addWatch(repoId: number, watch: Watch): Promise<void>;
    delWatch(repoId: number, watch: Watch): Promise<void>;
    listWatchBySha(repoId: number, sha: string): Promise<Watch[]>;
    lockEnv(repoId: number, env: string): Promise<void>;
    unlockEnv(repoId: number, env: string): Promise<void>;
    isLockedEnv(repoId: number, env: string): Promise<boolean>;
    lock(key: string, handler: () => Promise<void>): Promise<void>;
}
