import { AbstractControl } from '@angular/forms'; import * as i0 from '@angular/core'; import { Signal, TemplateRef, InputSignal } from '@angular/core'; import { SkeletonAdapterComponent, Schema, TSchemaConfig, ISkeletonizerColorSchema, SkeletonAbstractComponent as SkeletonAbstractComponent$1 } from '@skeletonizer/utils'; declare module '@skeletonizer/utils' { interface ISchemaLeafTypes { angularAbstractControl: AbstractControl; angularSignal: Signal; } } declare class SkeletonizerSkeletonComponent extends SkeletonAdapterComponent { readonly templateRef: TemplateRef<{ $implicit: Schema | Scope; }>; readonly showSkeleton: InputSignal; readonly scope: InputSignal; readonly configInput: InputSignal>; readonly colorSchema: InputSignal; constructor(); static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵcmp: i0.ɵɵComponentDeclaration, "skeletonizer-skeleton", never, { "showSkeleton": { "alias": "showSkeleton"; "required": true; "isSignal": true; }; "scope": { "alias": "scope"; "required": true; "isSignal": true; }; "configInput": { "alias": "config"; "required": true; "isSignal": true; }; "colorSchema": { "alias": "colorSchema"; "required": false; "isSignal": true; }; }, {}, ["templateRef"], never, true, never>; } type TAbstractComponent = { [K in keyof SkeletonAbstractComponent$1]: K extends 'proxy' ? SkeletonAbstractComponent$1[K] : Signal[K]>; }; /** * Angular-specific abstract component for skeletonizer. * Every Angular component that uses Skeletonizer should extend this class. * * This version uses Angular signals for reactive state management. * * @template T - The type of the data model for the skeletonized part of the component */ declare abstract class SkeletonAbstractComponent implements TAbstractComponent { /** * Configuration for the skeleton schema. * Defines how the skeleton data should be generated. */ abstract skeletonConfig: Signal>; /** * Signal that controls whether the skeleton is shown or the actual content. * Use `.set()` to update the value if using WritableSignal. */ abstract showSkeleton: Signal; /** * Proxy method for type-safe access to properties/methods within the skeletonized part of the view. * * When accessing component properties/methods from within the skeletonized template, * they should be accessed via this proxy method. This ensures: * - All accessed properties/methods are part of the skeleton schema * - TypeScript understands the correct type of each property/method * * @param scope - Either the skeleton schema or the actual scope object * @returns The unwrapped scope object with proper typing * * @example * ```html * *
{{ proxy(context).userName }}
*
* ``` */ proxy(scope: T | Schema): T; } export { SkeletonAbstractComponent, SkeletonizerSkeletonComponent };