// Type definitions for Sugar v2.0.6 // Project: https://sugarjs.com/ // Definitions by: Andrew Plummer declare namespace sugarjs { type SugarDefaultChainable = Array.Chainable & Date.Chainable & Function.Chainable & Number.Chainable & Object.Chainable & RegExp.Chainable & String.Chainable; type NativeConstructor = ArrayConstructor | DateConstructor | FunctionConstructor | NumberConstructor | ObjectConstructor | RegExpConstructor | StringConstructor | BooleanConstructor | ErrorConstructor; interface Locale { addFormat(src:string, to?: Array): void; getDuration(ms: number): string; getFirstDayOfWeek(): number; getFirstDayOfWeekYear(): number; getMonthName(n: number): string; getWeekdayName(n: number): string; } interface ExtendOptions { methods?: Array; except?: Array; namespaces?: Array; enhance?: boolean; enhanceString?: boolean; enhanceArray?: boolean; objectPrototype?: boolean; } interface Sugar { (opts?: ExtendOptions): Sugar; createNamespace(name: string): SugarNamespace; extend(opts?: ExtendOptions): Sugar; Array: Array.Constructor; Date: Date.Constructor; Function: Function.Constructor; Number: Number.Constructor; Object: Object.Constructor; RegExp: RegExp.Constructor; String: String.Constructor; } interface Range { clamp(el: T): T; clone(): sugarjs.Range; contains(el: T): boolean; days(): number; every(amount: string|number, everyFn?: (el: T, i: number, r: sugarjs.Range) => void): T[]; hours(): number; intersect(range: sugarjs.Range): sugarjs.Range; isValid(): boolean; milliseconds(): number; minutes(): number; months(): number; seconds(): number; span(): number; toArray(): T[]; toString(): string; union(range: sugarjs.Range): sugarjs.Range; weeks(): number; years(): number; } interface SugarNamespace { alias(toName: string, from: string|Function): this; alias(toName: string, fn: undefined): this; defineInstance(methods: Object): this; defineInstance(methodName: string, methodFn: Function): this; defineInstanceAndStatic(methods: Object): this; defineInstanceAndStatic(methodName: string, methodFn: Function): this; defineInstancePolyfill(methods: Object): this; defineInstancePolyfill(methodName: string, methodFn: Function): this; defineInstanceWithArguments(methods: Object): this; defineInstanceWithArguments(methodName: string, methodFn: Function): this; defineStatic(methods: Object): this; defineStatic(methodName: string, methodFn: Function): this; defineStaticPolyfill(methods: Object): this; defineStaticPolyfill(methodName: string, methodFn: Function): this; defineStaticWithArguments(methods: Object): this; defineStaticWithArguments(methodName: string, methodFn: Function): this; extend(opts?: ExtendOptions): this; } namespace Array { type mapFn = (el: T, i: number, arr: T[]) => U; type sortMapFn = (el: T) => U; type searchFn = (el: T, i: number, arr: T[]) => boolean; type Chainable = ChainableBase & Object.ChainableBase; interface ArrayOptions { sortIgnore?: RegExp; sortIgnoreCase?: boolean; sortNatural?: boolean; sortOrder?: string; sortEquivalents?: Object; sortCollate?: Function; } interface Constructor extends SugarNamespace { (obj?: number|ArrayLike, clone?: boolean): Chainable; new(obj?: number|ArrayLike, clone?: boolean): Chainable; construct(n: number, indexMapFn: (i: number) => T): T[]; create(obj?: number|ArrayLike, clone?: boolean): T[]; add(instance: T[], item: T|T[], index?: number): T[]; append(instance: T[], item: T|T[], index?: number): T[]; at(instance: T[], index: number|number[], loop?: boolean): T; average(instance: T[], map?: string|mapFn): number; clone(instance: T[]): T[]; compact(instance: T[], all?: boolean): T[]; count(instance: T[], search: T|searchFn, context?: any): number; every(instance: T[], search: T|searchFn, context?: any): boolean; everyFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; everyFromIndex(instance: T[], startIndex: number, ...args: any[]): T; exclude(instance: T[], search: T|searchFn): T[]; filter(instance: T[], search: T|searchFn, context?: any): T[]; filterFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; filterFromIndex(instance: T[], startIndex: number, ...args: any[]): T; find(instance: T[], search: T|searchFn, context?: any): T; findFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; findFromIndex(instance: T[], startIndex: number, ...args: any[]): T; findIndex(instance: T[], search: T|searchFn, context?: any): number; findIndexFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; findIndexFromIndex(instance: T[], startIndex: number, ...args: any[]): T; first(instance: T[], num?: number): T; flatten(instance: T[], limit?: number): T[]; forEachFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; forEachFromIndex(instance: T[], startIndex: number, ...args: any[]): T; from(instance: T[], index: number): T[]; groupBy(instance: T[], map: string|mapFn, groupFn?: (arr: T[], key: string, obj: Object) => void): Object; inGroups(instance: T[], num: number, padding?: any): T[]; inGroupsOf(instance: T[], num: number, padding?: any): T[]; insert(instance: T[], item: T|T[], index?: number): T[]; intersect(instance: T[], arr: T[]): T[]; isEmpty(instance: T[]): boolean; isEqual(instance: T[], arr: T[]): boolean; last(instance: T[], num?: number): T; least(instance: T[], all?: boolean, map?: string|mapFn): T[]; least(instance: T[], map?: string|mapFn): T[]; map(instance: T[], map: string|mapFn, context?: any): U[]; mapFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; mapFromIndex(instance: T[], startIndex: number, ...args: any[]): T; max(instance: T[], all?: boolean, map?: string|mapFn): T; max(instance: T[], map?: string|mapFn): T; median(instance: T[], map?: string|mapFn): number; min(instance: T[], all?: boolean, map?: string|mapFn): T; min(instance: T[], map?: string|mapFn): T; most(instance: T[], all?: boolean, map?: string|mapFn): T[]; most(instance: T[], map?: string|mapFn): T[]; none(instance: T[], search: T|searchFn, context?: any): boolean; reduceFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; reduceFromIndex(instance: T[], startIndex: number, ...args: any[]): T; reduceRightFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; reduceRightFromIndex(instance: T[], startIndex: number, ...args: any[]): T; remove(instance: T[], search: T|searchFn): T[]; removeAt(instance: T[], start: number, end?: number): T[]; sample(instance: T[], num?: number, remove?: boolean): T; shuffle(instance: T[]): T[]; some(instance: T[], search: T|searchFn, context?: any): boolean; someFromIndex(instance: T[], startIndex: number, loop?: boolean, ...args: any[]): T; someFromIndex(instance: T[], startIndex: number, ...args: any[]): T; sortBy(instance: T[], map?: string|sortMapFn, desc?: boolean): T[]; subtract(instance: T[], item: T|T[]): T[]; sum(instance: T[], map?: string|mapFn): number; to(instance: T[], index: number): T[]; union(instance: T[], arr: T[]): T[]; unique(instance: T[], map?: string|mapFn): T[]; zip(instance: T[], ...args: any[]): T[]; getOption(name: string): T; setOption(name: string, value: any): void; setOption(options: ArrayOptions): void; } interface ChainableBase { raw: RawValue; valueOf: () => RawValue; toString: () => string; add(item: T|T[], index?: number): SugarDefaultChainable; append(item: T|T[], index?: number): SugarDefaultChainable; at(index: number|number[], loop?: boolean): SugarDefaultChainable; average(map?: string|mapFn): SugarDefaultChainable; clone(): SugarDefaultChainable; compact(all?: boolean): SugarDefaultChainable; count(search: T|searchFn, context?: any): SugarDefaultChainable; every(search: T|searchFn, context?: any): SugarDefaultChainable; everyFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; everyFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; exclude(search: T|searchFn): SugarDefaultChainable; filter(search: T|searchFn, context?: any): SugarDefaultChainable; filterFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; filterFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; find(search: T|searchFn, context?: any): SugarDefaultChainable; findFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; findFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; findIndex(search: T|searchFn, context?: any): SugarDefaultChainable; findIndexFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; findIndexFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; first(num?: number): SugarDefaultChainable; flatten(limit?: number): SugarDefaultChainable; forEachFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; forEachFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; from(index: number): SugarDefaultChainable; groupBy(map: string|mapFn, groupFn?: (arr: T[], key: string, obj: Object) => SugarDefaultChainable): SugarDefaultChainable; inGroups(num: number, padding?: any): SugarDefaultChainable; inGroupsOf(num: number, padding?: any): SugarDefaultChainable; insert(item: T|T[], index?: number): SugarDefaultChainable; intersect(arr: T[]): SugarDefaultChainable; isEmpty(): SugarDefaultChainable; isEqual(arr: T[]): SugarDefaultChainable; last(num?: number): SugarDefaultChainable; least(all?: boolean, map?: string|mapFn): SugarDefaultChainable; least(map?: string|mapFn): SugarDefaultChainable; map(map: string|mapFn, context?: any): SugarDefaultChainable; mapFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; mapFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; max(all?: boolean, map?: string|mapFn): SugarDefaultChainable; max(map?: string|mapFn): SugarDefaultChainable; median(map?: string|mapFn): SugarDefaultChainable; min(all?: boolean, map?: string|mapFn): SugarDefaultChainable; min(map?: string|mapFn): SugarDefaultChainable; most(all?: boolean, map?: string|mapFn): SugarDefaultChainable; most(map?: string|mapFn): SugarDefaultChainable; none(search: T|searchFn, context?: any): SugarDefaultChainable; reduceFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; reduceFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; reduceRightFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; reduceRightFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; remove(search: T|searchFn): SugarDefaultChainable; removeAt(start: number, end?: number): SugarDefaultChainable; sample(num?: number, remove?: boolean): SugarDefaultChainable; shuffle(): SugarDefaultChainable; some(search: T|searchFn, context?: any): SugarDefaultChainable; someFromIndex(startIndex: number, loop?: boolean, ...args: any[]): SugarDefaultChainable; someFromIndex(startIndex: number, ...args: any[]): SugarDefaultChainable; sortBy(map?: string|sortMapFn, desc?: boolean): SugarDefaultChainable; subtract(item: T|T[]): SugarDefaultChainable; sum(map?: string|mapFn): SugarDefaultChainable; to(index: number): SugarDefaultChainable; union(arr: T[]): SugarDefaultChainable; unique(map?: string|mapFn): SugarDefaultChainable; zip(...args: any[]): SugarDefaultChainable; concat(...items: (T | T[])[]): SugarDefaultChainable; concat(...items: T[][]): SugarDefaultChainable; copyWithin(target: number, start: number, end?: number): SugarDefaultChainable; every(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): SugarDefaultChainable; fill(value: T, start?: number, end?: number): SugarDefaultChainable; filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): SugarDefaultChainable; find(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): SugarDefaultChainable; findIndex(predicate: (value: T, index: number, obj: Array) => boolean, thisArg?: any): SugarDefaultChainable; forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): SugarDefaultChainable; indexOf(searchElement: T, fromIndex?: number): SugarDefaultChainable; join(separator?: string): SugarDefaultChainable; lastIndexOf(searchElement: T, fromIndex?: number): SugarDefaultChainable; map(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): SugarDefaultChainable; pop(): SugarDefaultChainable; push(...items: T[]): SugarDefaultChainable; reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): SugarDefaultChainable; reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): SugarDefaultChainable; reduceRight(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue?: T): SugarDefaultChainable; reduceRight(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): SugarDefaultChainable; reverse(): SugarDefaultChainable; shift(): SugarDefaultChainable; slice(start?: number, end?: number): SugarDefaultChainable; some(callbackfn: (value: T, index: number, array: T[]) => boolean, thisArg?: any): SugarDefaultChainable; sort(compareFn?: (a: T, b: T) => number): SugarDefaultChainable; splice(start: number): SugarDefaultChainable; splice(start: number, deleteCount: number, ...items: T[]): SugarDefaultChainable; toLocaleString(): SugarDefaultChainable; unshift(...items: T[]): SugarDefaultChainable; } } namespace Date { type Chainable = ChainableBase & Object.ChainableBase; interface DateOptions { newDateInternal: Function; } interface DateCreateOptions { locale?: string; past?: boolean; future?: boolean; fromUTC?: boolean; setUTC?: boolean; clone?: boolean; params?: Object; } interface Constructor extends SugarNamespace { (d?: string|number|Date, options?: DateCreateOptions): Chainable; new(d?: string|number|Date, options?: DateCreateOptions): Chainable; addLocale(localeCode: string, def: Object): Locale; create(d?: string|number|Date, options?: DateCreateOptions): Date; getAllLocaleCodes(): string[]; getAllLocales(): Array; getLocale(localeCode?: string): Locale; range(start?: string|Date, end?: string|Date): Range; removeLocale(localeCode: string): Locale; setLocale(localeCode: string): Locale; addDays(instance: Date, n: number, reset?: boolean): Date; addHours(instance: Date, n: number, reset?: boolean): Date; addMilliseconds(instance: Date, n: number, reset?: boolean): Date; addMinutes(instance: Date, n: number, reset?: boolean): Date; addMonths(instance: Date, n: number, reset?: boolean): Date; addSeconds(instance: Date, n: number, reset?: boolean): Date; addWeeks(instance: Date, n: number, reset?: boolean): Date; addYears(instance: Date, n: number, reset?: boolean): Date; advance(instance: Date, set: string|Object, reset?: boolean): Date; advance(instance: Date, milliseconds: number): Date; advance(instance: Date, year: number, month: number, day?: number, hour?: number, minute?: number, second?: number, millliseconds?: undefined): Date; beginningOfDay(instance: Date, localeCode?: string): Date; beginningOfISOWeek(instance: Date): Date; beginningOfMonth(instance: Date, localeCode?: string): Date; beginningOfWeek(instance: Date, localeCode?: string): Date; beginningOfYear(instance: Date, localeCode?: string): Date; clone(instance: Date): Date; daysAgo(instance: Date): number; daysFromNow(instance: Date): number; daysInMonth(instance: Date): number; daysSince(instance: Date, d: string|number|Date, options?: DateCreateOptions): number; daysUntil(instance: Date, d?: string|number|Date, options?: DateCreateOptions): number; endOfDay(instance: Date, localeCode?: string): Date; endOfISOWeek(instance: Date): Date; endOfMonth(instance: Date, localeCode?: string): Date; endOfWeek(instance: Date, localeCode?: string): Date; endOfYear(instance: Date, localeCode?: string): Date; format(instance: Date, f?: string, localeCode?: string): string; full(instance: Date, localeCode?: string): string; get(instance: Date, d: string|number|Date, options?: DateCreateOptions): Date; getISOWeek(instance: Date): number; getUTCOffset(instance: Date, iso?: boolean): string; getUTCWeekday(instance: Date): number; getWeekday(instance: Date): number; hoursAgo(instance: Date): number; hoursFromNow(instance: Date): number; hoursSince(instance: Date, d: string|number|Date, options?: DateCreateOptions): number; hoursUntil(instance: Date, d?: string|number|Date, options?: DateCreateOptions): number; is(instance: Date, d: string|number|Date, margin?: number): boolean; isAfter(instance: Date, d: string|number|Date, margin?: number): boolean; isBefore(instance: Date, d: string|number|Date, margin?: number): boolean; isBetween(instance: Date, d1: string|number|Date, d2: string|number|Date, margin?: number): boolean; isFriday(instance: Date): boolean; isFuture(instance: Date): boolean; isLastMonth(instance: Date, localeCode?: string): boolean; isLastWeek(instance: Date, localeCode?: string): boolean; isLastYear(instance: Date, localeCode?: string): boolean; isLeapYear(instance: Date): boolean; isMonday(instance: Date): boolean; isNextMonth(instance: Date, localeCode?: string): boolean; isNextWeek(instance: Date, localeCode?: string): boolean; isNextYear(instance: Date, localeCode?: string): boolean; isPast(instance: Date): boolean; isSaturday(instance: Date): boolean; isSunday(instance: Date): boolean; isThisMonth(instance: Date, localeCode?: string): boolean; isThisWeek(instance: Date, localeCode?: string): boolean; isThisYear(instance: Date, localeCode?: string): boolean; isThursday(instance: Date): boolean; isToday(instance: Date): boolean; isTomorrow(instance: Date): boolean; isTuesday(instance: Date): boolean; isUTC(instance: Date): boolean; isValid(instance: Date): boolean; isWednesday(instance: Date): boolean; isWeekday(instance: Date): boolean; isWeekend(instance: Date): boolean; isYesterday(instance: Date): boolean; iso(instance: Date): string; long(instance: Date, localeCode?: string): string; medium(instance: Date, localeCode?: string): string; millisecondsAgo(instance: Date): number; millisecondsFromNow(instance: Date): number; millisecondsSince(instance: Date, d: string|number|Date, options?: DateCreateOptions): number; millisecondsUntil(instance: Date, d?: string|number|Date, options?: DateCreateOptions): number; minutesAgo(instance: Date): number; minutesFromNow(instance: Date): number; minutesSince(instance: Date, d: string|number|Date, options?: DateCreateOptions): number; minutesUntil(instance: Date, d?: string|number|Date, options?: DateCreateOptions): number; monthsAgo(instance: Date): number; monthsFromNow(instance: Date): number; monthsSince(instance: Date, d: string|number|Date, options?: DateCreateOptions): number; monthsUntil(instance: Date, d?: string|number|Date, options?: DateCreateOptions): number; relative(instance: Date, localeCode?: string, relativeFn?: (num: number, unit: number, ms: number, loc: Locale) => string): string; relative(instance: Date, relativeFn?: (num: number, unit: number, ms: number, loc: Locale) => string): string; relativeTo(instance: Date, d: string|number|Date, localeCode?: string): string; reset(instance: Date, unit?: string, localeCode?: string): Date; rewind(instance: Date, set: string|Object, reset?: boolean): Date; rewind(instance: Date, milliseconds: number): Date; rewind(instance: Date, year: number, month: number, day?: number, hour?: number, minute?: number, second?: number, millliseconds?: undefined): Date; secondsAgo(instance: Date): number; secondsFromNow(instance: Date): number; secondsSince(instance: Date, d: string|number|Date, options?: DateCreateOptions): number; secondsUntil(instance: Date, d?: string|number|Date, options?: DateCreateOptions): number; set(instance: Date, set: Object, reset?: boolean): Date; set(instance: Date, milliseconds: number): Date; set(instance: Date, year: number, month: number, day?: number, hour?: number, minute?: number, second?: number, millliseconds?: undefined): Date; setISOWeek(instance: Date, num: number): void; setUTC(instance: Date, on?: boolean): Date; setWeekday(instance: Date, dow: number): void; short(instance: Date, localeCode?: string): string; weeksAgo(instance: Date): number; weeksFromNow(instance: Date): number; weeksSince(instance: Date, d: string|number|Date, options?: DateCreateOptions): number; weeksUntil(instance: Date, d?: string|number|Date, options?: DateCreateOptions): number; yearsAgo(instance: Date): number; yearsFromNow(instance: Date): number; yearsSince(instance: Date, d: string|number|Date, options?: DateCreateOptions): number; yearsUntil(instance: Date, d?: string|number|Date, options?: DateCreateOptions): number; getOption(name: string): T; setOption(name: string, value: any): void; setOption(options: DateOptions): void; } interface ChainableBase { raw: RawValue; valueOf: () => RawValue; toString: () => string; addDays(n: number, reset?: boolean): SugarDefaultChainable; addHours(n: number, reset?: boolean): SugarDefaultChainable; addMilliseconds(n: number, reset?: boolean): SugarDefaultChainable; addMinutes(n: number, reset?: boolean): SugarDefaultChainable; addMonths(n: number, reset?: boolean): SugarDefaultChainable; addSeconds(n: number, reset?: boolean): SugarDefaultChainable; addWeeks(n: number, reset?: boolean): SugarDefaultChainable; addYears(n: number, reset?: boolean): SugarDefaultChainable; advance(set: string|Object, reset?: boolean): SugarDefaultChainable; advance(milliseconds: number): SugarDefaultChainable; advance(year: number, month: number, day?: number, hour?: number, minute?: number, second?: number, millliseconds?: undefined): SugarDefaultChainable; beginningOfDay(localeCode?: string): SugarDefaultChainable; beginningOfISOWeek(): SugarDefaultChainable; beginningOfMonth(localeCode?: string): SugarDefaultChainable; beginningOfWeek(localeCode?: string): SugarDefaultChainable; beginningOfYear(localeCode?: string): SugarDefaultChainable; clone(): SugarDefaultChainable; daysAgo(): SugarDefaultChainable; daysFromNow(): SugarDefaultChainable; daysInMonth(): SugarDefaultChainable; daysSince(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; daysUntil(d?: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; endOfDay(localeCode?: string): SugarDefaultChainable; endOfISOWeek(): SugarDefaultChainable; endOfMonth(localeCode?: string): SugarDefaultChainable; endOfWeek(localeCode?: string): SugarDefaultChainable; endOfYear(localeCode?: string): SugarDefaultChainable; format(f?: string, localeCode?: string): SugarDefaultChainable; full(localeCode?: string): SugarDefaultChainable; get(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; getISOWeek(): SugarDefaultChainable; getUTCOffset(iso?: boolean): SugarDefaultChainable; getUTCWeekday(): SugarDefaultChainable; getWeekday(): SugarDefaultChainable; hoursAgo(): SugarDefaultChainable; hoursFromNow(): SugarDefaultChainable; hoursSince(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; hoursUntil(d?: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; is(d: string|number|Date, margin?: number): SugarDefaultChainable; isAfter(d: string|number|Date, margin?: number): SugarDefaultChainable; isBefore(d: string|number|Date, margin?: number): SugarDefaultChainable; isBetween(d1: string|number|Date, d2: string|number|Date, margin?: number): SugarDefaultChainable; isFriday(): SugarDefaultChainable; isFuture(): SugarDefaultChainable; isLastMonth(localeCode?: string): SugarDefaultChainable; isLastWeek(localeCode?: string): SugarDefaultChainable; isLastYear(localeCode?: string): SugarDefaultChainable; isLeapYear(): SugarDefaultChainable; isMonday(): SugarDefaultChainable; isNextMonth(localeCode?: string): SugarDefaultChainable; isNextWeek(localeCode?: string): SugarDefaultChainable; isNextYear(localeCode?: string): SugarDefaultChainable; isPast(): SugarDefaultChainable; isSaturday(): SugarDefaultChainable; isSunday(): SugarDefaultChainable; isThisMonth(localeCode?: string): SugarDefaultChainable; isThisWeek(localeCode?: string): SugarDefaultChainable; isThisYear(localeCode?: string): SugarDefaultChainable; isThursday(): SugarDefaultChainable; isToday(): SugarDefaultChainable; isTomorrow(): SugarDefaultChainable; isTuesday(): SugarDefaultChainable; isUTC(): SugarDefaultChainable; isValid(): SugarDefaultChainable; isWednesday(): SugarDefaultChainable; isWeekday(): SugarDefaultChainable; isWeekend(): SugarDefaultChainable; isYesterday(): SugarDefaultChainable; iso(): SugarDefaultChainable; long(localeCode?: string): SugarDefaultChainable; medium(localeCode?: string): SugarDefaultChainable; millisecondsAgo(): SugarDefaultChainable; millisecondsFromNow(): SugarDefaultChainable; millisecondsSince(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; millisecondsUntil(d?: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; minutesAgo(): SugarDefaultChainable; minutesFromNow(): SugarDefaultChainable; minutesSince(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; minutesUntil(d?: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; monthsAgo(): SugarDefaultChainable; monthsFromNow(): SugarDefaultChainable; monthsSince(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; monthsUntil(d?: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; relative(localeCode?: string, relativeFn?: (num: number, unit: number, ms: number, loc: Locale) => SugarDefaultChainable): SugarDefaultChainable; relative(relativeFn?: (num: number, unit: number, ms: number, loc: Locale) => SugarDefaultChainable): SugarDefaultChainable; relativeTo(d: string|number|Date, localeCode?: string): SugarDefaultChainable; reset(unit?: string, localeCode?: string): SugarDefaultChainable; rewind(set: string|Object, reset?: boolean): SugarDefaultChainable; rewind(milliseconds: number): SugarDefaultChainable; rewind(year: number, month: number, day?: number, hour?: number, minute?: number, second?: number, millliseconds?: undefined): SugarDefaultChainable; secondsAgo(): SugarDefaultChainable; secondsFromNow(): SugarDefaultChainable; secondsSince(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; secondsUntil(d?: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; set(set: Object, reset?: boolean): SugarDefaultChainable; set(milliseconds: number): SugarDefaultChainable; set(year: number, month: number, day?: number, hour?: number, minute?: number, second?: number, millliseconds?: undefined): SugarDefaultChainable; setISOWeek(num: number): SugarDefaultChainable; setUTC(on?: boolean): SugarDefaultChainable; setWeekday(dow: number): SugarDefaultChainable; short(localeCode?: string): SugarDefaultChainable; weeksAgo(): SugarDefaultChainable; weeksFromNow(): SugarDefaultChainable; weeksSince(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; weeksUntil(d?: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; yearsAgo(): SugarDefaultChainable; yearsFromNow(): SugarDefaultChainable; yearsSince(d: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; yearsUntil(d?: string|number|Date, options?: DateCreateOptions): SugarDefaultChainable; getDate(): SugarDefaultChainable; getDay(): SugarDefaultChainable; getFullYear(): SugarDefaultChainable; getHours(): SugarDefaultChainable; getMilliseconds(): SugarDefaultChainable; getMinutes(): SugarDefaultChainable; getMonth(): SugarDefaultChainable; getSeconds(): SugarDefaultChainable; getTime(): SugarDefaultChainable; getTimezoneOffset(): SugarDefaultChainable; getUTCDate(): SugarDefaultChainable; getUTCDay(): SugarDefaultChainable; getUTCFullYear(): SugarDefaultChainable; getUTCHours(): SugarDefaultChainable; getUTCMilliseconds(): SugarDefaultChainable; getUTCMinutes(): SugarDefaultChainable; getUTCMonth(): SugarDefaultChainable; getUTCSeconds(): SugarDefaultChainable; setDate(date: number): SugarDefaultChainable; setFullYear(year: number, month?: number, date?: number): SugarDefaultChainable; setHours(hours: number, min?: number, sec?: number, ms?: number): SugarDefaultChainable; setMilliseconds(ms: number): SugarDefaultChainable; setMinutes(min: number, sec?: number, ms?: number): SugarDefaultChainable; setMonth(month: number, date?: number): SugarDefaultChainable; setSeconds(sec: number, ms?: number): SugarDefaultChainable; setTime(time: number): SugarDefaultChainable; setUTCDate(date: number): SugarDefaultChainable; setUTCFullYear(year: number, month?: number, date?: number): SugarDefaultChainable; setUTCHours(hours: number, min?: number, sec?: number, ms?: number): SugarDefaultChainable; setUTCMilliseconds(ms: number): SugarDefaultChainable; setUTCMinutes(min: number, sec?: number, ms?: number): SugarDefaultChainable; setUTCMonth(month: number, date?: number): SugarDefaultChainable; setUTCSeconds(sec: number, ms?: number): SugarDefaultChainable; toDateString(): SugarDefaultChainable; toISOString(): SugarDefaultChainable; toJSON(key?: any): SugarDefaultChainable; toLocaleDateString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): SugarDefaultChainable; toLocaleDateString(): SugarDefaultChainable; toLocaleString(): SugarDefaultChainable; toLocaleString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): SugarDefaultChainable; toLocaleTimeString(): SugarDefaultChainable; toLocaleTimeString(locales?: string | string[], options?: Intl.DateTimeFormatOptions): SugarDefaultChainable; toTimeString(): SugarDefaultChainable; toUTCString(): SugarDefaultChainable; } } namespace Function { type Chainable = ChainableBase & Object.ChainableBase; interface Constructor extends SugarNamespace { (raw?: Function): Chainable; new(raw?: Function): Chainable; after(instance: Function, n: number): Function; cancel(instance: Function): Function; debounce(instance: Function, ms?: number): Function; delay(instance: Function, ms?: number, ...args: any[]): Function; every(instance: Function, ms?: number, ...args: any[]): Function; lazy(instance: Function, ms?: number, immediate?: boolean, limit?: number): Function; lock(instance: Function, n?: number): Function; memoize(instance: Function, hashFn?: string|Function, limit?: number): Function; once(instance: Function): Function; partial(instance: Function, ...args: any[]): Function; throttle(instance: Function, ms?: number): Function; } interface ChainableBase { raw: RawValue; valueOf: () => RawValue; toString: () => string; after(n: number): SugarDefaultChainable; cancel(): SugarDefaultChainable; debounce(ms?: number): SugarDefaultChainable; delay(ms?: number, ...args: any[]): SugarDefaultChainable; every(ms?: number, ...args: any[]): SugarDefaultChainable; lazy(ms?: number, immediate?: boolean, limit?: number): SugarDefaultChainable; lock(n?: number): SugarDefaultChainable; memoize(hashFn?: string|Function, limit?: number): SugarDefaultChainable; once(): SugarDefaultChainable; partial(...args: any[]): SugarDefaultChainable; throttle(ms?: number): SugarDefaultChainable; apply(thisArg: any, argArray?: any): SugarDefaultChainable; bind(thisArg: any, ...argArray: any[]): SugarDefaultChainable; call(thisArg: any, ...argArray: any[]): SugarDefaultChainable; } } namespace Number { type Chainable = ChainableBase & Object.ChainableBase; interface NumberOptions { decimal: string; thousands: string; } interface Constructor extends SugarNamespace { (raw?: number): Chainable; new(raw?: number): Chainable; random(n1?: number, n2?: number): number; range(start?: number, end?: number): Range; abbr(instance: number, precision?: number): string; abs(instance: number): number; acos(instance: number): number; asin(instance: number): number; atan(instance: number): number; bytes(instance: number, precision?: number, binary?: boolean, units?: string): string; cap(instance: number, max?: number): number; ceil(instance: number, precision?: number): number; chr(instance: number): string; clamp(instance: number, start?: number, end?: number): number; cos(instance: number): number; day(instance: number): number; dayAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; dayAgo(instance: number): Date; dayBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; dayFromNow(instance: number): Date; days(instance: number): number; daysAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; daysAgo(instance: number): Date; daysBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; daysFromNow(instance: number): Date; downto(instance: number, num: number, step?: number, everyFn?: (el: T, i: number, r: Range) => void): T[]; downto(instance: number, num: number, everyFn?: (el: T, i: number, r: Range) => void): T[]; duration(instance: number, localeCode?: string): string; exp(instance: number): number; floor(instance: number, precision?: number): number; format(instance: number, place?: number): string; hex(instance: number, pad?: number): string; hour(instance: number): number; hourAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; hourAgo(instance: number): Date; hourBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; hourFromNow(instance: number): Date; hours(instance: number): number; hoursAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; hoursAgo(instance: number): Date; hoursBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; hoursFromNow(instance: number): Date; isEven(instance: number): boolean; isInteger(instance: number): boolean; isMultipleOf(instance: number, num: number): boolean; isOdd(instance: number): boolean; log(instance: number, base?: number): number; metric(instance: number, precision?: number, units?: string): string; millisecond(instance: number): number; millisecondAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; millisecondAgo(instance: number): Date; millisecondBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; millisecondFromNow(instance: number): Date; milliseconds(instance: number): number; millisecondsAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; millisecondsAgo(instance: number): Date; millisecondsBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; millisecondsFromNow(instance: number): Date; minute(instance: number): number; minuteAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; minuteAgo(instance: number): Date; minuteBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; minuteFromNow(instance: number): Date; minutes(instance: number): number; minutesAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; minutesAgo(instance: number): Date; minutesBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; minutesFromNow(instance: number): Date; month(instance: number): number; monthAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; monthAgo(instance: number): Date; monthBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; monthFromNow(instance: number): Date; months(instance: number): number; monthsAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; monthsAgo(instance: number): Date; monthsBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; monthsFromNow(instance: number): Date; ordinalize(instance: number): string; pad(instance: number, place?: number, sign?: boolean, base?: number): string; pow(instance: number): number; round(instance: number, precision?: number): number; second(instance: number): number; secondAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; secondAgo(instance: number): Date; secondBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; secondFromNow(instance: number): Date; seconds(instance: number): number; secondsAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; secondsAgo(instance: number): Date; secondsBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; secondsFromNow(instance: number): Date; sin(instance: number): number; sqrt(instance: number): number; tan(instance: number): number; times(instance: number, indexMapFn: (i: number) => any): T; toNumber(instance: number): number; upto(instance: number, num: number, step?: number, everyFn?: (el: T, i: number, r: Range) => void): T[]; upto(instance: number, num: number, everyFn?: (el: T, i: number, r: Range) => void): T[]; week(instance: number): number; weekAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; weekAgo(instance: number): Date; weekBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; weekFromNow(instance: number): Date; weeks(instance: number): number; weeksAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; weeksAgo(instance: number): Date; weeksBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; weeksFromNow(instance: number): Date; year(instance: number): number; yearAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; yearAgo(instance: number): Date; yearBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; yearFromNow(instance: number): Date; years(instance: number): number; yearsAfter(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; yearsAgo(instance: number): Date; yearsBefore(instance: number, d: string|number|Date, options?: Date.DateCreateOptions): Date; yearsFromNow(instance: number): Date; getOption(name: string): T; setOption(name: string, value: any): void; setOption(options: NumberOptions): void; } interface ChainableBase { raw: RawValue; valueOf: () => RawValue; toString: () => string; abbr(precision?: number): SugarDefaultChainable; abs(): SugarDefaultChainable; acos(): SugarDefaultChainable; asin(): SugarDefaultChainable; atan(): SugarDefaultChainable; bytes(precision?: number, binary?: boolean, units?: string): SugarDefaultChainable; cap(max?: number): SugarDefaultChainable; ceil(precision?: number): SugarDefaultChainable; chr(): SugarDefaultChainable; clamp(start?: number, end?: number): SugarDefaultChainable; cos(): SugarDefaultChainable; day(): SugarDefaultChainable; dayAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; dayAgo(): SugarDefaultChainable; dayBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; dayFromNow(): SugarDefaultChainable; days(): SugarDefaultChainable; daysAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; daysAgo(): SugarDefaultChainable; daysBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; daysFromNow(): SugarDefaultChainable; downto(num: number, step?: number, everyFn?: (el: T, i: number, r: Range) => SugarDefaultChainable): SugarDefaultChainable; downto(num: number, everyFn?: (el: T, i: number, r: Range) => SugarDefaultChainable): SugarDefaultChainable; duration(localeCode?: string): SugarDefaultChainable; exp(): SugarDefaultChainable; floor(precision?: number): SugarDefaultChainable; format(place?: number): SugarDefaultChainable; hex(pad?: number): SugarDefaultChainable; hour(): SugarDefaultChainable; hourAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; hourAgo(): SugarDefaultChainable; hourBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; hourFromNow(): SugarDefaultChainable; hours(): SugarDefaultChainable; hoursAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; hoursAgo(): SugarDefaultChainable; hoursBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; hoursFromNow(): SugarDefaultChainable; isEven(): SugarDefaultChainable; isInteger(): SugarDefaultChainable; isMultipleOf(num: number): SugarDefaultChainable; isOdd(): SugarDefaultChainable; log(base?: number): SugarDefaultChainable; metric(precision?: number, units?: string): SugarDefaultChainable; millisecond(): SugarDefaultChainable; millisecondAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; millisecondAgo(): SugarDefaultChainable; millisecondBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; millisecondFromNow(): SugarDefaultChainable; milliseconds(): SugarDefaultChainable; millisecondsAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; millisecondsAgo(): SugarDefaultChainable; millisecondsBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; millisecondsFromNow(): SugarDefaultChainable; minute(): SugarDefaultChainable; minuteAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; minuteAgo(): SugarDefaultChainable; minuteBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; minuteFromNow(): SugarDefaultChainable; minutes(): SugarDefaultChainable; minutesAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; minutesAgo(): SugarDefaultChainable; minutesBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; minutesFromNow(): SugarDefaultChainable; month(): SugarDefaultChainable; monthAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; monthAgo(): SugarDefaultChainable; monthBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; monthFromNow(): SugarDefaultChainable; months(): SugarDefaultChainable; monthsAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; monthsAgo(): SugarDefaultChainable; monthsBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; monthsFromNow(): SugarDefaultChainable; ordinalize(): SugarDefaultChainable; pad(place?: number, sign?: boolean, base?: number): SugarDefaultChainable; pow(): SugarDefaultChainable; round(precision?: number): SugarDefaultChainable; second(): SugarDefaultChainable; secondAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; secondAgo(): SugarDefaultChainable; secondBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; secondFromNow(): SugarDefaultChainable; seconds(): SugarDefaultChainable; secondsAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; secondsAgo(): SugarDefaultChainable; secondsBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; secondsFromNow(): SugarDefaultChainable; sin(): SugarDefaultChainable; sqrt(): SugarDefaultChainable; tan(): SugarDefaultChainable; times(indexMapFn: (i: number) => SugarDefaultChainable): SugarDefaultChainable; toNumber(): SugarDefaultChainable; upto(num: number, step?: number, everyFn?: (el: T, i: number, r: Range) => SugarDefaultChainable): SugarDefaultChainable; upto(num: number, everyFn?: (el: T, i: number, r: Range) => SugarDefaultChainable): SugarDefaultChainable; week(): SugarDefaultChainable; weekAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; weekAgo(): SugarDefaultChainable; weekBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; weekFromNow(): SugarDefaultChainable; weeks(): SugarDefaultChainable; weeksAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; weeksAgo(): SugarDefaultChainable; weeksBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; weeksFromNow(): SugarDefaultChainable; year(): SugarDefaultChainable; yearAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; yearAgo(): SugarDefaultChainable; yearBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; yearFromNow(): SugarDefaultChainable; years(): SugarDefaultChainable; yearsAfter(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; yearsAgo(): SugarDefaultChainable; yearsBefore(d: string|number|Date, options?: Date.DateCreateOptions): SugarDefaultChainable; yearsFromNow(): SugarDefaultChainable; toExponential(fractionDigits?: number): SugarDefaultChainable; toFixed(fractionDigits?: number): SugarDefaultChainable; toLocaleString(locales?: string | string[], options?: Intl.NumberFormatOptions): SugarDefaultChainable; toPrecision(precision?: number): SugarDefaultChainable; } } namespace Object { type resolveFn = (key: string, targetVal: T, sourceVal: T, target: Object, source: Object) => boolean; type searchFn = (key: string, val: T, obj: Object) => boolean; type mapFn = (val: T, key: string, obj: Object) => U; type Chainable = ChainableBase; interface QueryStringParseOptions { deep?: boolean; auto?: boolean; transform?: (key: string, val: T, obj: Object) => U; separator?: string; } interface QueryStringOptions { deep?: boolean; prefix?: string; transform?: (key: string, val: T, obj: Object) => U; separator?: string; } interface ObjectMergeOptions { deep?: boolean; hidden?: boolean; descriptor?: boolean; resolve?: boolean|resolveFn; } interface Constructor extends SugarNamespace { (raw?: Object): Chainable; new(raw?: Object): Chainable; fromQueryString(str: string, options?: QueryStringParseOptions): Object; add(instance: Object, obj: Object, options?: ObjectMergeOptions): Object; addAll(instance: Object, sources: Array, options?: ObjectMergeOptions): Object; average(instance: Object, map?: string|mapFn): number; clone(instance: Object, deep?: boolean): Object; count(instance: Object, search: T|searchFn): number; defaults(instance: Object, sources: Array, options?: ObjectMergeOptions): Object; every(instance: Object, search: T|searchFn): boolean; exclude(instance: Object, search: T|searchFn): Object; filter(instance: Object, search: T|searchFn): T[]; find(instance: Object, search: T|searchFn): boolean; forEach(instance: Object, eachFn: (val: T, key: string, obj: Object) => void): Object; get(instance: Object, key: string, inherited?: boolean): T; has(instance: Object, key: string, inherited?: boolean): boolean; intersect(instance: Object, obj: Object): Object; invert(instance: Object, multi?: boolean): Object; isArguments(instance: Object): boolean; isArray(instance: any): instance is Array; isBoolean(instance: any): instance is boolean; isDate(instance: any): instance is Date; isEmpty(instance: Object): boolean; isEqual(instance: Object, obj: Object): boolean; isError(instance: any): instance is Error; isFunction(instance: any): instance is Function; isMap(instance: any): instance is Map; isNumber(instance: any): instance is number; isObject(instance: Object): boolean; isRegExp(instance: any): instance is RegExp; isSet(instance: any): instance is Set; isString(instance: any): instance is string; keys(instance: Object): T[]; least(instance: Object, all?: boolean, map?: string|mapFn): T; least(instance: Object, map?: string|mapFn): T; map(instance: Object, map: string|mapFn): Object; max(instance: Object, all?: boolean, map?: string|mapFn): T; max(instance: Object, map?: string|mapFn): T; median(instance: Object, map?: string|mapFn): number; merge(instance: Object, source: Object, options?: ObjectMergeOptions): Object; mergeAll(instance: Object, sources: Array, options?: ObjectMergeOptions): Object; min(instance: Object, all?: boolean, map?: string|mapFn): T; min(instance: Object, map?: string|mapFn): T; most(instance: Object, all?: boolean, map?: string|mapFn): T; most(instance: Object, map?: string|mapFn): T; none(instance: Object, search: T|searchFn): boolean; reduce(instance: Object, reduceFn: (acc: T, val: T, key: string, obj: Object) => void, init?: any): T; reject(instance: Object, find: string|RegExp|Array|Object): Object; remove(instance: Object, search: T|searchFn): Object; select(instance: Object, find: string|RegExp|Array|Object): Object; set(instance: Object, key: string, val: T): Object; size(instance: Object): number; some(instance: Object, search: T|searchFn): boolean; subtract(instance: Object, obj: Object): Object; sum(instance: Object, map?: string|mapFn): number; tap(instance: Object, tapFn: (obj: Object) => any): Object; toQueryString(instance: Object, options?: QueryStringOptions): Object; values(instance: Object): T[]; } interface ChainableBase { raw: RawValue; valueOf: () => RawValue; toString: () => string; add(obj: Object, options?: ObjectMergeOptions): SugarDefaultChainable; addAll(sources: Array, options?: ObjectMergeOptions): SugarDefaultChainable; average(map?: string|mapFn): SugarDefaultChainable; clone(deep?: boolean): SugarDefaultChainable; count(search: T|searchFn): SugarDefaultChainable; defaults(sources: Array, options?: ObjectMergeOptions): SugarDefaultChainable; every(search: T|searchFn): SugarDefaultChainable; exclude(search: T|searchFn): SugarDefaultChainable; filter(search: T|searchFn): SugarDefaultChainable; find(search: T|searchFn): SugarDefaultChainable; forEach(eachFn: (val: T, key: string, obj: Object) => SugarDefaultChainable): SugarDefaultChainable; get(key: string, inherited?: boolean): SugarDefaultChainable; has(key: string, inherited?: boolean): SugarDefaultChainable; intersect(obj: Object): SugarDefaultChainable; invert(multi?: boolean): SugarDefaultChainable; isArguments(): SugarDefaultChainable; isArray(): SugarDefaultChainable; isBoolean(): SugarDefaultChainable; isDate(): SugarDefaultChainable; isEmpty(): SugarDefaultChainable; isEqual(obj: Object): SugarDefaultChainable; isError(): SugarDefaultChainable; isFunction(): SugarDefaultChainable; isMap(): SugarDefaultChainable; isNumber(): SugarDefaultChainable; isObject(): SugarDefaultChainable; isRegExp(): SugarDefaultChainable; isSet(): SugarDefaultChainable; isString(): SugarDefaultChainable; keys(): SugarDefaultChainable; least(all?: boolean, map?: string|mapFn): SugarDefaultChainable; least(map?: string|mapFn): SugarDefaultChainable; map(map: string|mapFn): SugarDefaultChainable; max(all?: boolean, map?: string|mapFn): SugarDefaultChainable; max(map?: string|mapFn): SugarDefaultChainable; median(map?: string|mapFn): SugarDefaultChainable; merge(source: Object, options?: ObjectMergeOptions): SugarDefaultChainable; mergeAll(sources: Array, options?: ObjectMergeOptions): SugarDefaultChainable; min(all?: boolean, map?: string|mapFn): SugarDefaultChainable; min(map?: string|mapFn): SugarDefaultChainable; most(all?: boolean, map?: string|mapFn): SugarDefaultChainable; most(map?: string|mapFn): SugarDefaultChainable; none(search: T|searchFn): SugarDefaultChainable; reduce(reduceFn: (acc: T, val: T, key: string, obj: Object) => SugarDefaultChainable, init?: any): SugarDefaultChainable; reject(find: string|RegExp|Array|Object): SugarDefaultChainable; remove(search: T|searchFn): SugarDefaultChainable; select(find: string|RegExp|Array|Object): SugarDefaultChainable; set(key: string, val: T): SugarDefaultChainable; size(): SugarDefaultChainable; some(search: T|searchFn): SugarDefaultChainable; subtract(obj: Object): SugarDefaultChainable; sum(map?: string|mapFn): SugarDefaultChainable; tap(tapFn: (obj: Object) => SugarDefaultChainable): SugarDefaultChainable; toQueryString(options?: QueryStringOptions): SugarDefaultChainable; values(): SugarDefaultChainable; } } namespace RegExp { type Chainable = ChainableBase & Object.ChainableBase; interface Constructor extends SugarNamespace { (raw?: RegExp): Chainable; new(raw?: RegExp): Chainable; escape(str?: string): string; addFlags(instance: RegExp, flags: string): RegExp; getFlags(instance: RegExp): string; removeFlags(instance: RegExp, flags: string): RegExp; setFlags(instance: RegExp, flags: string): RegExp; } interface ChainableBase { raw: RawValue; valueOf: () => RawValue; toString: () => string; addFlags(flags: string): SugarDefaultChainable; getFlags(): SugarDefaultChainable; removeFlags(flags: string): SugarDefaultChainable; setFlags(flags: string): SugarDefaultChainable; exec(string: string): SugarDefaultChainable; test(string: string): SugarDefaultChainable; } } namespace String { type replaceFn = (tag: string, inner: string, attr: string, outer: string) => string; type Chainable = ChainableBase & Object.ChainableBase; interface Constructor extends SugarNamespace { (raw?: string): Chainable; new(raw?: string): Chainable; range(start?: string, end?: string): Range; at(instance: string, index: number|Array, loop?: boolean): T; camelize(instance: string, upper?: boolean): string; capitalize(instance: string, lower?: boolean, all?: boolean): string; chars(instance: string, eachCharFn?: (char: string, i: number, arr: Array) => void): T[]; codes(instance: string, eachCodeFn?: (code: number, i: number, str: string) => void): T[]; compact(instance: string): string; dasherize(instance: string): string; decodeBase64(instance: string): string; encodeBase64(instance: string): string; escapeHTML(instance: string): string; escapeURL(instance: string, param?: boolean): string; first(instance: string, n?: number): string; forEach(instance: string, search?: string|RegExp, eachFn?: (match: string, i: number, arr: Array) => void): T[]; forEach(instance: string, eachFn: (match: string, i: number, arr: Array) => void): T[]; format(instance: string, ...args: any[]): string; from(instance: string, index?: number): string; hankaku(instance: string, mode?: string): string; hasArabic(instance: string): boolean; hasCyrillic(instance: string): boolean; hasDevanagari(instance: string): boolean; hasGreek(instance: string): boolean; hasHan(instance: string): boolean; hasHangul(instance: string): boolean; hasHebrew(instance: string): boolean; hasHiragana(instance: string): boolean; hasKana(instance: string): boolean; hasKanji(instance: string): boolean; hasKatakana(instance: string): boolean; hasLatin(instance: string): boolean; hasThai(instance: string): boolean; hiragana(instance: string, all?: boolean): string; humanize(instance: string): string; insert(instance: string, str: string, index?: number): string; isArabic(instance: string): boolean; isBlank(instance: string): boolean; isCyrillic(instance: string): boolean; isDevanagari(instance: string): boolean; isEmpty(instance: string): boolean; isGreek(instance: string): boolean; isHan(instance: string): boolean; isHangul(instance: string): boolean; isHebrew(instance: string): boolean; isHiragana(instance: string): boolean; isKana(instance: string): boolean; isKanji(instance: string): boolean; isKatakana(instance: string): boolean; isLatin(instance: string): boolean; isThai(instance: string): boolean; katakana(instance: string): string; last(instance: string, n?: number): string; lines(instance: string, eachLineFn?: (line: string, i: number, arr: Array) => void): T[]; pad(instance: string, num: number, padding?: string): string; padLeft(instance: string, num: number, padding?: string): string; padRight(instance: string, num: number, padding?: string): string; parameterize(instance: string): string; pluralize(instance: string, num?: number): string; remove(instance: string, f: string|RegExp): string; removeAll(instance: string, f: string|RegExp): string; removeTags(instance: string, tag?: string, replace?: string|replaceFn): string; replaceAll(instance: string, f: string|RegExp, ...args: any[]): string; reverse(instance: string): string; shift(instance: string, n: number): T[]; singularize(instance: string): string; spacify(instance: string): string; stripTags(instance: string, tag?: string, replace?: string|replaceFn): string; titleize(instance: string): string; to(instance: string, index?: number): string; toNumber(instance: string, base?: number): number; trimLeft(instance: string): string; trimRight(instance: string): string; truncate(instance: string, length: number, from?: string, ellipsis?: string): string; truncateOnWord(instance: string, length: number, from?: string, ellipsis?: string): string; underscore(instance: string): string; unescapeHTML(instance: string): string; unescapeURL(instance: string, partial?: boolean): string; words(instance: string, eachWordFn?: (word: string, i: number, arr: Array) => void): T[]; zenkaku(instance: string, mode?: string): string; addAcronym(src: string): void; addHuman(src: string|RegExp, human: string): void; addPlural(singular: string, plural?: string): void; } interface ChainableBase { raw: RawValue; valueOf: () => RawValue; toString: () => string; at(index: number|Array, loop?: boolean): SugarDefaultChainable; camelize(upper?: boolean): SugarDefaultChainable; capitalize(lower?: boolean, all?: boolean): SugarDefaultChainable; chars(eachCharFn?: (char: string, i: number, arr: Array) => SugarDefaultChainable): SugarDefaultChainable; codes(eachCodeFn?: (code: number, i: number, str: string) => SugarDefaultChainable): SugarDefaultChainable; compact(): SugarDefaultChainable; dasherize(): SugarDefaultChainable; decodeBase64(): SugarDefaultChainable; encodeBase64(): SugarDefaultChainable; escapeHTML(): SugarDefaultChainable; escapeURL(param?: boolean): SugarDefaultChainable; first(n?: number): SugarDefaultChainable; forEach(search?: string|RegExp, eachFn?: (match: string, i: number, arr: Array) => SugarDefaultChainable): SugarDefaultChainable; forEach(eachFn: (match: string, i: number, arr: Array) => SugarDefaultChainable): SugarDefaultChainable; format(...args: any[]): SugarDefaultChainable; from(index?: number): SugarDefaultChainable; hankaku(mode?: string): SugarDefaultChainable; hasArabic(): SugarDefaultChainable; hasCyrillic(): SugarDefaultChainable; hasDevanagari(): SugarDefaultChainable; hasGreek(): SugarDefaultChainable; hasHan(): SugarDefaultChainable; hasHangul(): SugarDefaultChainable; hasHebrew(): SugarDefaultChainable; hasHiragana(): SugarDefaultChainable; hasKana(): SugarDefaultChainable; hasKanji(): SugarDefaultChainable; hasKatakana(): SugarDefaultChainable; hasLatin(): SugarDefaultChainable; hasThai(): SugarDefaultChainable; hiragana(all?: boolean): SugarDefaultChainable; humanize(): SugarDefaultChainable; insert(str: string, index?: number): SugarDefaultChainable; isArabic(): SugarDefaultChainable; isBlank(): SugarDefaultChainable; isCyrillic(): SugarDefaultChainable; isDevanagari(): SugarDefaultChainable; isEmpty(): SugarDefaultChainable; isGreek(): SugarDefaultChainable; isHan(): SugarDefaultChainable; isHangul(): SugarDefaultChainable; isHebrew(): SugarDefaultChainable; isHiragana(): SugarDefaultChainable; isKana(): SugarDefaultChainable; isKanji(): SugarDefaultChainable; isKatakana(): SugarDefaultChainable; isLatin(): SugarDefaultChainable; isThai(): SugarDefaultChainable; katakana(): SugarDefaultChainable; last(n?: number): SugarDefaultChainable; lines(eachLineFn?: (line: string, i: number, arr: Array) => SugarDefaultChainable): SugarDefaultChainable; pad(num: number, padding?: string): SugarDefaultChainable; padLeft(num: number, padding?: string): SugarDefaultChainable; padRight(num: number, padding?: string): SugarDefaultChainable; parameterize(): SugarDefaultChainable; pluralize(num?: number): SugarDefaultChainable; remove(f: string|RegExp): SugarDefaultChainable; removeAll(f: string|RegExp): SugarDefaultChainable; removeTags(tag?: string, replace?: string|replaceFn): SugarDefaultChainable; replaceAll(f: string|RegExp, ...args: any[]): SugarDefaultChainable; reverse(): SugarDefaultChainable; shift(n: number): SugarDefaultChainable; singularize(): SugarDefaultChainable; spacify(): SugarDefaultChainable; stripTags(tag?: string, replace?: string|replaceFn): SugarDefaultChainable; titleize(): SugarDefaultChainable; to(index?: number): SugarDefaultChainable; toNumber(base?: number): SugarDefaultChainable; trimLeft(): SugarDefaultChainable; trimRight(): SugarDefaultChainable; truncate(length: number, from?: string, ellipsis?: string): SugarDefaultChainable; truncateOnWord(length: number, from?: string, ellipsis?: string): SugarDefaultChainable; underscore(): SugarDefaultChainable; unescapeHTML(): SugarDefaultChainable; unescapeURL(partial?: boolean): SugarDefaultChainable; words(eachWordFn?: (word: string, i: number, arr: Array) => SugarDefaultChainable): SugarDefaultChainable; zenkaku(mode?: string): SugarDefaultChainable; anchor(name: string): SugarDefaultChainable; big(): SugarDefaultChainable; blink(): SugarDefaultChainable; bold(): SugarDefaultChainable; charAt(pos: number): SugarDefaultChainable; charCodeAt(index: number): SugarDefaultChainable; codePointAt(pos: number): SugarDefaultChainable; concat(...strings: string[]): SugarDefaultChainable; endsWith(searchString: string, endPosition?: number): SugarDefaultChainable; fixed(): SugarDefaultChainable; fontcolor(color: string): SugarDefaultChainable; fontsize(size: number): SugarDefaultChainable; fontsize(size: string): SugarDefaultChainable; includes(searchString: string, position?: number): SugarDefaultChainable; indexOf(searchString: string, position?: number): SugarDefaultChainable; italics(): SugarDefaultChainable; lastIndexOf(searchString: string, position?: number): SugarDefaultChainable; link(url: string): SugarDefaultChainable; localeCompare(that: string): SugarDefaultChainable; localeCompare(that: string, locales?: string | string[], options?: Intl.CollatorOptions): SugarDefaultChainable; match(regexp: RegExp): SugarDefaultChainable; match(regexp: string): SugarDefaultChainable; normalize(form?: string): SugarDefaultChainable; normalize(form: "NFC" | "NFD" | "NFKC" | "NFKD"): SugarDefaultChainable; repeat(count: number): SugarDefaultChainable; replace(searchValue: string, replaceValue: string): SugarDefaultChainable; replace(searchValue: string, replacer: (substring: string, ...args: any[]) => string): SugarDefaultChainable; replace(searchValue: RegExp, replaceValue: string): SugarDefaultChainable; replace(searchValue: RegExp, replacer: (substring: string, ...args: any[]) => string): SugarDefaultChainable; search(regexp: RegExp): SugarDefaultChainable; search(regexp: string): SugarDefaultChainable; slice(start?: number, end?: number): SugarDefaultChainable; small(): SugarDefaultChainable; split(separator: string, limit?: number): SugarDefaultChainable; split(separator: RegExp, limit?: number): SugarDefaultChainable; startsWith(searchString: string, position?: number): SugarDefaultChainable; strike(): SugarDefaultChainable; sub(): SugarDefaultChainable; substr(from: number, length?: number): SugarDefaultChainable; substring(start: number, end?: number): SugarDefaultChainable; sup(): SugarDefaultChainable; toLocaleLowerCase(): SugarDefaultChainable; toLocaleUpperCase(): SugarDefaultChainable; toLowerCase(): SugarDefaultChainable; toUpperCase(): SugarDefaultChainable; trim(): SugarDefaultChainable; } } } declare module "sugar" { const Sugar: sugarjs.Sugar; export = Sugar; } declare var Sugar: sugarjs.Sugar;