"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.onServerShutdown = exports.onServerShutdownRequested = exports.onServerMainBootstrapDone = exports.onServerBootstrap = exports.onAppBootstrap = void 0;
exports.AutoConstruct = AutoConstruct;
exports.isAutoConstructProvider = isAutoConstructProvider;
const events_1 = require("../events");
exports.onAppBootstrap = new events_1.EventToken('app.bootstrap');
exports.onServerBootstrap = new events_1.EventToken('server.bootstrap');
exports.onServerMainBootstrapDone = new events_1.EventToken('server.main-bootstrap-done');
exports.onServerShutdownRequested = new events_1.EventToken('server.shutdown-requested');
exports.onServerShutdown = new events_1.EventToken('server.shutdown');
const AutoConstructSymbol = Symbol('AutoConstruct');
function AutoConstruct() {
    return target => {
        target[AutoConstructSymbol] = true;
    };
}
function isAutoConstructProvider(value) {
    return typeof value === 'function' && !!value[AutoConstructSymbol];
}
//# sourceMappingURL=lifecycle.js.map