import { Template } from 'cloudform-types';
import { Diff as DeepDiff } from 'deep-diff';
type Diff = DeepDiff<DiffableProject, DiffableProject>;
export type DiffRule = (diff: Diff, currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export type ProjectRule = (diffs: Diff[], currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
interface DiffableProject {
    stacks: {
        [stackName: string]: Template;
    };
    root: Template;
}
export declare const sanityCheckProject: (currentCloudBackendDir: string, buildDirectory: string, rootStackName: string, diffRules: DiffRule[], projectRule: ProjectRule[]) => Promise<void>;
export declare const sanityCheckDiffs: (diffs: Diff[], current: DiffableProject, next: DiffableProject, diffRules: DiffRule[], projectRules: ProjectRule[]) => void;
export declare const getCantEditKeySchemaRule: (iterativeUpdatesEnabled?: boolean) => (diff: DeepDiff<DiffableProject, DiffableProject>) => void;
export declare const getCantAddLSILaterRule: (iterativeUpdatesEnabled?: boolean) => (diff: DeepDiff<DiffableProject, DiffableProject>) => void;
export declare const cantEditGSIKeySchemaRule: (diff: DeepDiff<DiffableProject, DiffableProject>, currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export declare const cantAddAndRemoveGSIAtSameTimeRule: (diff: DeepDiff<DiffableProject, DiffableProject>, currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export declare const cantBatchMutateGSIAtUpdateTimeRule: (diff: DeepDiff<DiffableProject, DiffableProject>, currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export declare const cantMutateMultipleGSIAtUpdateTimeRule: (diffs: Diff[], currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export declare const getCantEditLSIKeySchemaRule: (iterativeUpdatesEnabled?: boolean) => (diff: DeepDiff<DiffableProject, DiffableProject>, currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export declare const getCantRemoveLSILater: (iterativeUpdatesEnabled?: boolean) => (diff: DeepDiff<DiffableProject, DiffableProject>, currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export declare const cantHaveMoreThan500ResourcesRule: (diffs: Diff[], currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export declare const cantRemoveTableAfterCreation: (_: DeepDiff<DiffableProject, DiffableProject>, currentBuild: DiffableProject, nextBuild: DiffableProject) => void;
export {};
//# sourceMappingURL=sanity-check.d.ts.map