/**
 * @private
 */
import Zone from "../zone.js";
import IANAZone from "../zones/IANAZone.js";
import FixedOffsetZone from "../zones/fixedOffsetZone.js";
import InvalidZone from "../zones/invalidZone.js";
import { isUndefined, isString, isNumber } from "./util.js";
import SystemZone from "../zones/systemZone.js";
export function normalizeZone(input, defaultZone) {
    let offset;
    if (isUndefined(input) || input === null) {
        return defaultZone;
    }
    else if (input instanceof Zone) {
        return input;
    }
    else if (isString(input)) {
        const lowered = input.toLowerCase();
        if (lowered === "default")
            return defaultZone;
        else if (lowered === "local" || lowered === "system")
            return SystemZone.instance;
        else if (lowered === "utc" || lowered === "gmt")
            return FixedOffsetZone.utcInstance;
        else
            return FixedOffsetZone.parseSpecifier(lowered) || IANAZone.create(input);
    }
    else if (isNumber(input)) {
        return FixedOffsetZone.instance(input);
    }
    else if (typeof input === "object" && "offset" in input && typeof input.offset === "function") {
        // This is dumb, but the instanceof check above doesn't seem to really work
        // so we're duck checking it
        return input;
    }
    else {
        return new InvalidZone(input);
    }
}
//# sourceMappingURL=zoneUtil.js.map