import { ComponentLike } from '@glint/template'; import { ComponentReturn, DirectInvokable, NamedArgs } from '@glint/template/-private/integration'; type RequireAtLeastOne = Pick> & { [K in Keys]-?: Required> & Partial>>; }[Keys]; type LinkToArgs = RequireAtLeastOne< { route?: string; model?: unknown; models?: unknown[]; query?: Record; disabled?: boolean; activeClass?: string; 'current-when'?: string | boolean; preventDefault?: boolean; replace?: boolean; tagName?: string; }, 'route' | 'model' | 'models' | 'query' >; type LinkToReturn = ComponentReturn<{ default: [] }, HTMLAnchorElement>; export type LinkToKeyword = DirectInvokable<{ // `{{link-to}}` classic invocation (route: string, ...params: Array): LinkToReturn; // `` invocation, but accessed via `'link-to'` e.g. with `{{component}}` (named: NamedArgs): LinkToReturn; }>; export type LinkToComponent = ComponentLike<{ Args: LinkToArgs; Blocks: { default: [] }; Element: HTMLAnchorElement; }>;