// generated by diplomat-tool
import type { TimeZoneInfo } from "./TimeZoneInfo"
import type { UtcOffset } from "./UtcOffset"
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";



/**
 * See the [Rust documentation for `TimeZone`](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZone.html) for more information.
 */
export class TimeZone {
    /** @internal */
    get ffiValue(): pointer;
    /** @internal */
    constructor();


    /**
     * The unknown time zone.
     *
     * See the [Rust documentation for `unknown`](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZoneInfo.html#method.unknown) for more information.
     */
    static unknown(): TimeZone;

    /**
     * Whether the time zone is the unknown zone.
     *
     * See the [Rust documentation for `is_unknown`](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZone.html#method.is_unknown) for more information.
     */
    isUnknown(): boolean;

    /**
     * Construct a {@link TimeZone} from an IANA time zone ID.
     *
     * See the [Rust documentation for `from_iana_id`](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZone.html#method.from_iana_id) for more information.
     */
    static createFromIanaId(ianaId: string): TimeZone;

    /**
     * Construct a {@link TimeZone} from a Windows time zone ID and region.
     *
     * See the [Rust documentation for `from_windows_id`](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZone.html#method.from_windows_id) for more information.
     */
    static createFromWindowsId(windowsId: string, region: string): TimeZone;

    /**
     * Construct a {@link TimeZone} from the platform-specific ID.
     *
     * See the [Rust documentation for `from_system_id`](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZone.html#method.from_system_id) for more information.
     */
    static createFromSystemId(id: string, region: string): TimeZone;

    /**
     * Creates a time zone from a BCP-47 string.
     *
     * Returns the unknown time zone if the string is not a valid BCP-47 subtag.
     *
     * Additional information: [1](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZone.html)
     */
    static createFromBcp47(id: string): TimeZone;

    /**
     * See the [Rust documentation for `with_offset`](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZone.html#method.with_offset) for more information.
     */
    withOffset(offset: UtcOffset): TimeZoneInfo;

    /**
     * See the [Rust documentation for `without_offset`](https://docs.rs/icu/2.2.0/icu/time/struct.TimeZone.html#method.without_offset) for more information.
     */
    withoutOffset(): TimeZoneInfo;
}