"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var deprecier_1 = require("./deprecier");
var old_version_deprecier_1 = require("./old-version-deprecier");
var rule_applier_1 = require("./rule-applier");
var package_info_retriever_1 = require("./package-info-retriever");
var authentifier_1 = require("./authentifier");
var version_for_message_finder_1 = __importDefault(require("./version-for-message-finder"));
var configuration_loader_1 = __importDefault(require("./configuration-loader"));
var deprecate_all_1 = require("./rules/deprecate-all");
var support_latest_1 = require("./rules/support-latest");
var support_prerelease_if_not_released_1 = require("./rules/support-prerelease-if-not-released");
var list_active_versions_1 = __importDefault(require("./list-active-versions"));
var deprecier_state_1 = require("./deprecier-state");
var node_fetch_1 = __importDefault(require("node-fetch"));
var execa_1 = __importDefault(require("execa"));
var npm_1 = require("./npm");
var npm_api_1 = require("./npm-api");
var npm = new npm_1.Npm(execa_1.default);
var oldVersionDeprecier = new old_version_deprecier_1.OldVersionDeprecier(new package_info_retriever_1.PackageInfoRetriever(new npm_api_1.NpmApi(node_fetch_1.default), npm), new rule_applier_1.RuleApplier(new version_for_message_finder_1.default()), new deprecier_1.Deprecier(npm), new authentifier_1.Authentifier(npm), new configuration_loader_1.default({
    deprecateAll: deprecate_all_1.deprecateAll,
    supportLatest: support_latest_1.supportLatest,
    supportPreReleaseIfNotReleased: support_prerelease_if_not_released_1.supportPreReleaseIfNotReleased,
}), list_active_versions_1.default, npm, new deprecier_state_1.DeprecierState());
module.exports = {
    verifyConditions: oldVersionDeprecier.verifyConditions.bind(oldVersionDeprecier),
    prepare: oldVersionDeprecier.prepare.bind(oldVersionDeprecier),
    publish: oldVersionDeprecier.publish.bind(oldVersionDeprecier),
};
