import { z } from 'zod';
import type { SkipReason } from '../../../types';
import type { PackageDependency } from '../types';
export interface BasePackageDep extends PackageDependency {
    depType: string;
    depName: string;
}
export interface OverridePackageDep extends BasePackageDep {
    bazelDepSkipReason: SkipReason;
}
export type BazelModulePackageDep = BasePackageDep | OverridePackageDep;
export declare function overrideToPackageDependency(override: OverridePackageDep): PackageDependency;
export declare const RuleToBazelModulePackageDep: z.ZodUnion<[z.ZodEffects<z.ZodObject<{
    type: z.ZodLiteral<"record">;
    isComplete: z.ZodBoolean;
    children: z.ZodObject<{
        rule: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            isComplete: z.ZodLiteral<true>;
            value: z.ZodLiteral<"bazel_dep">;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: "bazel_dep";
            isComplete: true;
        }, {
            type: "string";
            value: "bazel_dep";
            isComplete: true;
        }>;
        name: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            value: z.ZodString;
            isComplete: z.ZodLiteral<true>;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: string;
            isComplete: true;
        }, {
            type: "string";
            value: string;
            isComplete: true;
        }>;
        version: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            value: z.ZodString;
            isComplete: z.ZodLiteral<true>;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: string;
            isComplete: true;
        }, {
            type: "string";
            value: string;
            isComplete: true;
        }>;
    }, "strip", z.ZodTypeAny, {
        name: {
            type: "string";
            value: string;
            isComplete: true;
        };
        version: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "bazel_dep";
            isComplete: true;
        };
    }, {
        name: {
            type: "string";
            value: string;
            isComplete: true;
        };
        version: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "bazel_dep";
            isComplete: true;
        };
    }>;
}, "strip", z.ZodTypeAny, {
    type: "record";
    children: {
        name: {
            type: "string";
            value: string;
            isComplete: true;
        };
        version: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "bazel_dep";
            isComplete: true;
        };
    };
    isComplete: boolean;
}, {
    type: "record";
    children: {
        name: {
            type: "string";
            value: string;
            isComplete: true;
        };
        version: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "bazel_dep";
            isComplete: true;
        };
    };
    isComplete: boolean;
}>, BasePackageDep, {
    type: "record";
    children: {
        name: {
            type: "string";
            value: string;
            isComplete: true;
        };
        version: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "bazel_dep";
            isComplete: true;
        };
    };
    isComplete: boolean;
}>, z.ZodEffects<z.ZodObject<{
    type: z.ZodLiteral<"record">;
    isComplete: z.ZodBoolean;
    children: z.ZodObject<{
        rule: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            isComplete: z.ZodLiteral<true>;
            value: z.ZodLiteral<"git_override">;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: "git_override";
            isComplete: true;
        }, {
            type: "string";
            value: "git_override";
            isComplete: true;
        }>;
        module_name: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            value: z.ZodString;
            isComplete: z.ZodLiteral<true>;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: string;
            isComplete: true;
        }, {
            type: "string";
            value: string;
            isComplete: true;
        }>;
        remote: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            value: z.ZodString;
            isComplete: z.ZodLiteral<true>;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: string;
            isComplete: true;
        }, {
            type: "string";
            value: string;
            isComplete: true;
        }>;
        commit: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            value: z.ZodString;
            isComplete: z.ZodLiteral<true>;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: string;
            isComplete: true;
        }, {
            type: "string";
            value: string;
            isComplete: true;
        }>;
    }, "strip", z.ZodTypeAny, {
        commit: {
            type: "string";
            value: string;
            isComplete: true;
        };
        remote: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "git_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    }, {
        commit: {
            type: "string";
            value: string;
            isComplete: true;
        };
        remote: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "git_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    }>;
}, "strip", z.ZodTypeAny, {
    type: "record";
    children: {
        commit: {
            type: "string";
            value: string;
            isComplete: true;
        };
        remote: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "git_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    };
    isComplete: boolean;
}, {
    type: "record";
    children: {
        commit: {
            type: "string";
            value: string;
            isComplete: true;
        };
        remote: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "git_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    };
    isComplete: boolean;
}>, OverridePackageDep, {
    type: "record";
    children: {
        commit: {
            type: "string";
            value: string;
            isComplete: true;
        };
        remote: {
            type: "string";
            value: string;
            isComplete: true;
        };
        rule: {
            type: "string";
            value: "git_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    };
    isComplete: boolean;
}>, z.ZodEffects<z.ZodObject<{
    type: z.ZodLiteral<"record">;
    isComplete: z.ZodBoolean;
    children: z.ZodObject<{
        rule: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            isComplete: z.ZodLiteral<true>;
            value: z.ZodEnum<["archive_override", "local_path_override"]>;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: "archive_override" | "local_path_override";
            isComplete: true;
        }, {
            type: "string";
            value: "archive_override" | "local_path_override";
            isComplete: true;
        }>;
        module_name: z.ZodObject<{
            type: z.ZodLiteral<"string">;
            value: z.ZodString;
            isComplete: z.ZodLiteral<true>;
        }, "strip", z.ZodTypeAny, {
            type: "string";
            value: string;
            isComplete: true;
        }, {
            type: "string";
            value: string;
            isComplete: true;
        }>;
    }, "strip", z.ZodTypeAny, {
        rule: {
            type: "string";
            value: "archive_override" | "local_path_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    }, {
        rule: {
            type: "string";
            value: "archive_override" | "local_path_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    }>;
}, "strip", z.ZodTypeAny, {
    type: "record";
    children: {
        rule: {
            type: "string";
            value: "archive_override" | "local_path_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    };
    isComplete: boolean;
}, {
    type: "record";
    children: {
        rule: {
            type: "string";
            value: "archive_override" | "local_path_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    };
    isComplete: boolean;
}>, OverridePackageDep, {
    type: "record";
    children: {
        rule: {
            type: "string";
            value: "archive_override" | "local_path_override";
            isComplete: true;
        };
        module_name: {
            type: "string";
            value: string;
            isComplete: true;
        };
    };
    isComplete: boolean;
}>]>;
export declare function processModulePkgDeps(packageDeps: BazelModulePackageDep[]): PackageDependency[];
export declare function toPackageDependencies(packageDeps: BazelModulePackageDep[]): PackageDependency[];
