import { SkeletonLayoutMetadata } from './types';
import * as i0 from "@angular/core";
/**
 * `val-skeleton-layout`
 *
 * Skeleton de página **preset-driven**. En vez de que cada vista componga
 * átomos `val-skeleton` a mano, declara una shape y este organism arma el
 * placeholder completo. Estándar único para loading states en todo el factory.
 *
 * Presets: `form` · `list` · `article` · `cards` · `detail` · `hero`.
 *
 * Extender = agregar un valor a `SkeletonLayoutPreset` + un `@case` acá.
 * Los consumers no cambian.
 *
 * @example
 * ```html
 * @if (loading()) {
 *   <val-skeleton-layout [props]="{ preset: 'form', rows: 3, showAvatar: true }" />
 * } @else {
 *   ...contenido real...
 * }
 * ```
 */
export declare class SkeletonLayoutComponent {
    private readonly props_;
    set props(value: SkeletonLayoutMetadata | undefined);
    /** Props con defaults aplicados. */
    readonly resolved: import("@angular/core").Signal<SkeletonLayoutMetadata>;
    /** Shimmer on/off — default on. */
    readonly anim: import("@angular/core").Signal<boolean>;
    /** Array `[0..rows)` para los `@for`. rows del prop o default del preset. */
    readonly rowsArray: import("@angular/core").Signal<number[]>;
    /** `grid-template-columns` para el preset cards. */
    readonly gridColumns: import("@angular/core").Signal<string>;
    static ɵfac: i0.ɵɵFactoryDeclaration<SkeletonLayoutComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SkeletonLayoutComponent, "val-skeleton-layout", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
}
