import { formatOffset, parseZoneInfo } from "../impl/util.js";
import Zone from "../zone.js";
let singleton = null;
/**
 * Represents the local zone for this JavaScript environment.
 * @implements {Zone}
 */
export default class SystemZone extends Zone {
    /**
     * Get a singleton instance of the local zone
     * @return {SystemZone}
     */
    static get instance() {
        if (singleton === null) {
            singleton = new SystemZone();
        }
        return singleton;
    }
    /** @override **/
    get type() {
        return "system";
    }
    /** @override **/
    get name() {
        return new Intl.DateTimeFormat().resolvedOptions().timeZone;
    }
    /** @override **/
    get isUniversal() {
        return false;
    }
    /** @override **/
    offsetName(ts, { format, locale }) {
        return parseZoneInfo(ts, format, locale);
    }
    /** @override **/
    formatOffset(ts, format) {
        return formatOffset(this.offset(ts), format);
    }
    /** @override **/
    offset(ts) {
        return -new Date(ts).getTimezoneOffset();
    }
    /** @override **/
    equals(otherZone) {
        return otherZone.type === "system";
    }
    /** @override **/
    get isValid() {
        return true;
    }
}
//# sourceMappingURL=systemZone.js.map