import { Base, Type } from './type';
import { IFormatProvider } from './type';
import { CompareOptions } from './string';
export declare const enum CalendarWeekRule {
    FirstDay = 0,
    FirstFullWeek = 1,
    FirstFourDayWeek = 2
}
export declare let CalendarWeekRule_$type: Type;
export declare class Calendar extends Base {
    eras(): number[];
    getEra(time: Date): number;
    getDayOfMonth(time: Date): number;
    getDaysInMonth(year: number, month: number, era: number): number;
    getDaysInYear(year: number, era: number): number;
    getMonth(time: Date): number;
    getYear(time: Date): number;
    toDateTime(year: number, month: number, day: number, hour: number, minute: number, second: number, millisecond: number, era: number): Date;
    addMonths(time: Date, months: number): Date;
    addYears(time: Date, years: number): Date;
    static $t: Type;
}
export declare class CompareInfo extends Base {
    compare1(string1: string, offset1: number, length1: number, string2: string, offset2: number, length2: number, options: CompareOptions): number;
    compare4(string1: string, string2: string): number;
    compare5(string1: string, string2: string, options: CompareOptions): number;
    indexOf1(source: string, value: string): number;
    indexOf3(source: string, value: string, options: CompareOptions): number;
    indexOf6(source: string, value: string, startIndex: number, options: CompareOptions): number;
    indexOf5(source: string, value: string, options: CompareOptions): number;
    referenceEquals(a: CompareInfo, b: CompareInfo): boolean;
    static $t: Type;
}
export declare class DateTimeFormat extends Base {
    private _cultureName;
    private _isInvariant;
    constructor(cultureName: string, isInvariant: boolean);
    clone(): DateTimeFormat;
    private _dateSeparator;
    get dateSeparator(): string;
    set dateSeparator(value: string);
    private _timeSeparator;
    get timeSeparator(): string;
    set timeSeparator(value: string);
    private _longDatePattern;
    get longDatePattern(): string;
    set longDatePattern(value: string);
    private _shortDatePattern;
    get shortDatePattern(): string;
    set shortDatePattern(value: string);
    private _shortTimePattern;
    get shortTimePattern(): string;
    set shortTimePattern(value: string);
    private _monthNames;
    get monthNames(): string[];
    set monthNames(value: string[]);
    static $t: Type;
}
export declare class NumberFormatInfo extends Base {
    constructor(cultureName: string, isInvariant: boolean);
    private _cultureName;
    private _isInvariant;
    clone(): NumberFormatInfo;
    private _currencySymbol;
    get currencySymbol(): string;
    set currencySymbol(value: string);
    private _nativeDigits;
    get nativeDigits(): string[];
    private _negativeSign;
    get negativeSign(): string;
    set negativeSign(value: string);
    private _percentSymbol;
    set percentSymbol(value: string);
    get percentSymbol(): string;
    private _positiveSign;
    get positiveSign(): string;
    set positiveSign(value: string);
    private _numberDecimalSeparator;
    set numberDecimalSeparator(value: string);
    get numberDecimalSeparator(): string;
    private _numberGroupSeparator;
    set numberGroupSeparator(value: string);
    get numberGroupSeparator(): string;
    private _numberGroupSizes;
    set numberGroupSizes(value: number[]);
    get numberGroupSizes(): number[];
    static $t: Type;
}
export declare class Thread extends Base {
    private static _currentThread;
    static get currentThread(): Thread;
    private _currentCulture;
    get currentCulture(): CultureInfo;
    set currentCulture(value: CultureInfo);
    static $t: Type;
}
export declare class CultureInfo extends Base implements IFormatProvider {
    private _name;
    private _isInvariant;
    constructor(name: string);
    clone(): CultureInfo;
    get compareInfo(): CompareInfo;
    getFormat<T>($t: Type): DateTimeFormat | NumberFormatInfo;
    get name(): string;
    get calendar(): Calendar;
    private _dateTimeFormat;
    get dateTimeFormat(): DateTimeFormat;
    set dateTimeFormat(value: DateTimeFormat);
    private _numberFormat;
    get numberFormat(): NumberFormatInfo;
    set numberFormat(value: NumberFormatInfo);
    get twoLetterISOLanguageName(): string;
    static getCultureInfo(lcid: string | number): CultureInfo;
    static get currentCulture(): CultureInfo;
    private static _cachedInvariant;
    static get invariantCulture(): CultureInfo;
    static $t: Type;
}
