import EmberArray from '@ember/array'; declare module "@glimmer/component" { type UnknownConfig = Record; export default class Component extends BaseComponent< Args > { constructor(owner: unknown, args: Args) { super(...arguments); this.args = args; } args: Args; willDestroy: () => void; toString: () => string; } } declare module "@ember/component" { type UnknownConfig = Record; export function setComponentTemplate(Template: T, Klass: U): U; export default class Component extends BaseComponent< Args > { constructor(owner: unknown, args: Args = { }) { super(...arguments); this.args = args; } static extend(args) { return class ExtendedComponent extends Component { } } args: Args; willDestroy: () => void; toString: () => string; } } declare module "@ember/component/helper" { export function helper(Helper: T): T; export default class Helper extends Function { }; } declare module "@ember/modifier" { export function setModifierManager(Manager: T, Modifier: U): U; } declare module "ember-modifier" { export function modifier(Modifier: T): T; export default class Modifier extends Function { }; } declare module "ember-typed-templates" { type PropType = TObj[TProp]; type Unpromisify = T extends PromiseLike ? R : T; type YieldHelper = ( items?: [A?, B?, C?, D?, E?], hash?: { to?: string } ) => [A, B, C, D, E]; type EachHelper = | EmberArray>([items]: [A], hash?) => [T, number]; type EachInHelper = ([items]: [T]) => [A,PropType]; type LetHelper = ( items: [A, B?, C?, D?, E?], hash? ) => [A, B, C, D, E]; type AbstractHelper = ([items]: T[], hash?) => T; export type AbstractBlockHelper = ([items]: ArrayLike[], hash?) => [T]; type HashHelper = (items: any[], hash: T) => T; type ArrayHelper = (items?: ArrayLike, hash?) => ArrayLike; type AnyFn = (...args) => any; type OnModifer = ([event, handler]: [string, Function], hash?) => void; type FnHelper = AnyFn; type ConcatHelper = (...args: any[]) => string; type AndHelper = (items: [A, B, C?, D?, E?]) => boolean; type EventCatcherHelper = ( items?: [A?, B?, C?, D?, E?] ) => AnyFn; // ember-async-await-helper type AsyncAwaitHelper = ( params: [T], hash?: { onReject: ((reason: any) => void) | null } ) => [Unpromisify] function TIfHeper([a, b, c]: [T, U?, Y?], hash?) { return !!a ? b : c; } function TUnlessHeper([a, b, c]: [T, U?, Y?], hash?) { return !TIfHeper(a,b,c, hash); } export interface GlobalRegistry { ["each"]: EachHelper; ["each-in"]: EachInHelper; ["let"]: LetHelper; ["hash"]: HashHelper; ["array"]: ArrayHelper; ["if"]: typeof TIfHeper; ["unless"]: typeof TUnlessHeper; ["on"]: OnModifer; ["fn"]: FnHelper; ["has-block"]: YieldHelper; ["yield"]: YieldHelper; ["outlet"]: YieldHelper; ["concat"]: ConcatHelper; ["prevent-default"]: EventCatcherHelper; ["toggle"]: (props: [keyof T, T]) => Function; ["includes"]: (props: [T, T[]]) => boolean; ["chunk"]: (props: [T[], number]) => Array; ["sort-by"]: (props: [...string, T]) => T; ["filter-by"]: >(props: [K, B, T[]]) => T[]; ["drop"]: (props: [number, T[]]) => T[]; ["take"]: (props: [number, T[]]) => T[]; ["get"]: (props: [K, T]) => T[K]; ["eq"]: (props: [any, any]) => boolean; ["gt"]: (props: [number, number]) => boolean; ["gte"]: (props: [number, number]) => boolean; ["lt"]: (props: [number, number]) => boolean; ["lte"]: (props: [number, number]) => boolean; ["optional"]: (props: [ Function | undefined | void | false ]) => Function; ["stop-propagation"]: EventCatcherHelper; ["lazy-mount"]: (params?, hash?) => [{ isLoading: boolean; error: any }]; ["v-get"]: ([ctx, prop, propTwo]: [any, any, any?], hash?) => any; ["did-insert"]: (params: [ Function, ...any], hash?: any) => void; ["did-update"]: (params: [ Function, ...any], hash?: any) => void; ["will-destroy"]: (params: [ Function, ...any], hash?: any) => void; ["and"]: AndHelper; ["async-await"]: AsyncAwaitHelper; } }