import * as _angular_core from '@angular/core';
import { NumberInput } from '@angular/cdk/coercion';

/**
 * Type of skeleton visualization.
 * - `'rectangle'` - Rectangular skeleton with rounded corners
 * - `'circle'` - Circular skeleton
 * - `'text'` - Multi-line text skeleton
 * - `null` - No predefined shape, allows custom SVG projection
 */
type SkeletonType = 'rectangle' | 'circle' | 'text' | null;
/**
 * Skeleton component for displaying loading placeholders with animated pulse effect.
 */
declare class SkeletonComponent {
    /**
     * Whether the skeleton displays animated pulse effect.
     *
     * @type {boolean}
     * @default true
     */
    readonly animated: _angular_core.InputSignal<boolean>;
    /**
     * Type of the skeleton visualization.
     *
     * Available types:
     * - `'rectangle'` - Rectangular skeleton with rounded corners
     * - `'circle'` - Circular skeleton
     * - `'text'` - Multi-line text skeleton
     * - `null` - No predefined shape, allows custom SVG projection
     *
     * @default null
     */
    readonly type: _angular_core.InputSignal<SkeletonType>;
    /**
     * Number of lines when type is `'text'`. Last line is 60% width if more than 1 line.
     *
     * Accepts numbers or coercible number values (e.g., `'3'` will be coerced to `3`).
     *
     * @type {number}
     * @default 3
     */
    readonly textLines: _angular_core.InputSignalWithTransform<number, NumberInput>;
    /**
     * Width of skeleton.
     *
     * Accepts any valid CSS width value (e.g., `'100px'`, `'50%'`, `'10rem'`).
     * Auto-calculated for text and circle types if not provided.
     *
     * @type {string | null}
     * @default null
     */
    readonly width: _angular_core.InputSignal<string | null>;
    /**
     * Height of skeleton.
     *
     * Accepts any valid CSS height value (e.g., `'100px'`, `'50%'`, `'10rem'`).
     * Auto-calculated for text and circle types if not provided.
     *
     * @type {string | null}
     * @default null
     */
    readonly height: _angular_core.InputSignal<string | null>;
    /**
     * Vertical spacing between text lines in pixels.
     * Used for positioning lines in SVG and calculating total height.
     * @hidden
     */
    protected readonly LINE_SPACING = 20;
    /**
     * Computed dimensions (width and height) based on skeleton type.
     * @hidden
     */
    protected readonly dimensions: _angular_core.Signal<{
        width: string | null;
        height: string | null;
    }>;
    /**
     * Computed width value from dimensions.
     * @hidden
     */
    protected readonly computedWidth: _angular_core.Signal<string | null>;
    /**
     * Computed height value from dimensions.
     * @hidden
     */
    protected readonly computedHeight: _angular_core.Signal<string | null>;
    /**
     * Unique ID for SVG mask element.
     * @hidden
     */
    protected readonly svgMaskId: string;
    /**
     * Computed array of line widths for text type.
     * Last line is 60% width when there are multiple lines.
     * @hidden
     */
    protected readonly textLineWidths: _angular_core.Signal<("100%" | "60%")[]>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SkeletonComponent, "fd-skeleton", never, { "animated": { "alias": "animated"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "textLines": { "alias": "textLines"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
}

/**
 * @deprecated
 * Use direct `SkeletonComponent` import.
 */
declare class SkeletonModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SkeletonModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SkeletonModule, never, [typeof SkeletonComponent], [typeof SkeletonComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<SkeletonModule>;
}

export { SkeletonComponent, SkeletonModule };
export type { SkeletonType };
