import * as i0 from '@angular/core';
import { OnInit, OnChanges, EventEmitter, SimpleChanges, PipeTransform, OnDestroy, Signal, InjectionToken, ModuleWithProviders, ElementRef, AfterViewInit, TemplateRef, AfterContentInit, QueryList, InputSignal, WritableSignal, ComponentRef } from '@angular/core';
import * as i1 from '@angular/common';
import { KeyValuePipe } from '@angular/common';
import { Subscription, Observable } from 'rxjs';
import * as i2 from '@angular/router';
import { NavigationExtras, IsActiveMatchOptions } from '@angular/router';
import * as i2$1 from '@angular/forms';
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors, FormGroup } from '@angular/forms';
import * as _angular_platform_browser from '@angular/platform-browser';

/**
 * Base class for all ControlValueAccessor classes defined in Forms package. Contains common logic and utility functions.
 * Le type de `value` est : T | undefined, undefined par défaut. Par exemple si on manipule un input de type number, celui-ci
 * sera initialisé à undefined par défaut.
 */
declare abstract class DefaultValueAccessorComponent<T> implements ControlValueAccessor {
    /**
     * Permet de désactiver le champ.
     */
    disabled: boolean;
    private _value;
    get value(): T | undefined;
    /**
     * La valeur gérée par le champ de formulaire.
     */
    set value(value: T | undefined);
    /**
     * Writes a new value to the element.
     * This method is called by the forms API to write to the view when programmatic changes from model to view are requested.
     *
     * @internal
     */
    writeValue(value: T | undefined): void;
    /**
     * Registers a callback function that is called when the control's value changes in the UI.
     * When the value changes in the UI, call the registered function to allow the forms API to update itself:
     * host: {
     *    '(change)': '_onChange($event.target.value)'
     * }
     *  @internal
     */
    registerOnChange(fn: (_: any) => void): void;
    /**
     * Registers a callback function that is called by the forms API on initialization to update the form model on blur.
     * On blur (or equivalent), your class should call the registered function to allow the forms API to update itself:
     * host: {
     *    '(blur)': '_onTouched()'
     * }
     *  @internal
     */
    registerOnTouched(fn: () => void): void;
    /** @internal */
    onBlur(): void;
    /**
     * Function that is called by the forms API when the control status changes to or from 'DISABLED'.
     * Depending on the status, it enables or disables the appropriate DOM element.
     *
     * @internal
     */
    setDisabledState?(isDisabled: boolean): void;
    /** @internal */
    fnOnChange: (_: T | undefined) => void;
    /** @internal */
    fnOnTouched: () => void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DefaultValueAccessorComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DefaultValueAccessorComponent<any>, "ng-component", never, { "disabled": { "alias": "disabled"; "required": false; }; "value": { "alias": "value"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Ce composant est le contrôle abstrait des contrôles Dsfr possédant un id, un name et un label.
 */
declare abstract class DefaultControlComponent<T> extends DefaultValueAccessorComponent<T> implements OnInit {
    ariaControls?: string;
    /**
     * Attribut `id` du champ, généré automatiquement par défaut.
     */
    inputId?: string;
    /**
     * Texte(s) de description additionnel(s).
     */
    hint?: string | string[];
    /**
     *  Libellé du champ.
     */
    label?: string;
    /**
     * Sera utilisé pour positionner un attribut `name` sur le champ de formulaire.
     */
    name?: string;
    /**
     * Message d'erreur, quand il est présent les couleurs du contrôle changent.
     * @deprecated (since 1.12) utiliser message/messageSeverity à la place
     */
    error: i0.InputSignal<string | undefined>;
    /**
     * Message de validation, quand il est présent les couleurs du contrôle changent.
     * @deprecated (since 1.12) utiliser message/messageSeverity à la place
     */
    valid: i0.InputSignal<string | undefined>;
    /**
     * Message d'information lié au composant.
     */
    message: i0.InputSignal<string | string[] | undefined>;
    /**
     * Représente la sévérité du message.
     */
    messageSeverity: i0.InputSignal<"info" | "error" | "valid" | "warning" | "success" | undefined>;
    /** Attribut aria-describedby référençant une description supplémentaire optionnelle */
    ariaDescribedBy: i0.InputSignal<string | undefined>;
    /** @internal */
    messageViewModel: i0.Signal<string | string[] | undefined>;
    /** @internal */
    severityViewModel: i0.Signal<"info" | "error" | "valid" | "warning" | "success" | undefined>;
    /** @internal */
    combinedAriaDescribedBy: i0.Signal<string | null>;
    /**
     * @deprecated since 1.11, l'id sur un label ne sera plus utilisé en 2.0
     * @internal
     */
    labelId?: string;
    /** @internal */
    messagesGroupId: string;
    private _id;
    /**
     * Cet attribut doit être utilisé en tant que propriété et non en attribut, ex. `[id]="'monid'"`.
     *
     * @deprecated since 1.5, utiliser `inputId` à la place.
     */
    set id(value: string);
    /** @internal */
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DefaultControlComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DefaultControlComponent<any>, "ng-component", never, { "ariaControls": { "alias": "ariaControls"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "label": { "alias": "label"; "required": false; }; "name": { "alias": "name"; "required": false; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "valid": { "alias": "valid"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "messageSeverity": { "alias": "messageSeverity"; "required": false; "isSignal": true; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Décrit un badge dans un groupe de badges.
 */
interface DsfrBadge {
    /**
     * Libellé du badge.
     */
    label: string;
    /**
     * Niveau d'alerte. Optionnel.
     */
    severity?: DsfrBadgeSeverity;
    /**
     * Permet de ne pas afficher l'icône de sévérité, affichée par défaut.
     */
    noIcon?: boolean;
    /**
     * Cette propriété est ignorée : la taille des badges dans un groupe est liée au groupe.
     *
     * @deprecated (since 1.9) use `DsfrBadgesGroupComponent#small` instead
     */
    size?: DsfrBadgeSize;
    /**
     * Classe personnalisée pour la couleur du badge.
     */
    customClass?: string;
}
/**
 * Définit les différent niveaux de sévérité supportés par le DSFR.
 */
declare enum DsfrBadgeSeverityConst {
    NEW = "new",
    INFO = "info",
    SUCCESS = "success",
    WARNING = "warning",
    ERROR = "error"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrBadgeSeverityConst}.
 */
type DsfrBadgeSeverity = `${DsfrBadgeSeverityConst}` | 'NEW' | 'SUCCESS' | 'INFO' | 'WARNING' | 'ERROR';
/**
 * Définit les tailles de badge supportées par le DSFR.
 */
declare enum DsfrBadgeSizeConst {
    /**
     * Petite taille.
     */
    SM = "SM",
    /**
     * Taille normale (par défaut).
     */
    MD = "MD"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrBadgeSeverityConst}.
 */
type DsfrBadgeSize = `${DsfrBadgeSizeConst}`;

declare class DsfrBadgeComponent {
    /** Label du badge, obligatoire. */
    label: string;
    /**
     * L'icône de sévérité n'est pas affiché si `true` (`false` par défaut).
     * Attention seuls les badges dits "système" peuvent avoir une icône, les badges "custom" ne le peuvent pas.
     */
    noIcon: boolean;
    /**
     * Taille du badge, optionnel, `MD` par défaut.
     */
    badgeSize: DsfrBadgeSize;
    /** Classe personnalisée pour la couleur du badge. Correspond à une classe du type `fr-badge--blue-cumulus`. */
    customClass?: string;
    /** @internal */
    private _severity;
    /**
     * Taille du badge, optionnel, `MD` par défaut.
     *
     * @deprecated since(1.15.0) utiliser 'badgeSize' à la place
     */
    get size(): DsfrBadgeSize;
    get severity(): DsfrBadgeSeverity | undefined;
    /**
     * Taille du badge, optionnel, `MD` par défaut.
     *
     * @deprecated since(1.15.0) utiliser 'badgeSize' à la place
     */
    set size(value: DsfrBadgeSize);
    /** Niveau d'alerte, optionnel. */
    set severity(value: DsfrBadgeSeverity | undefined);
    /** @internal */
    getClasses(): Record<string, boolean>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrBadgeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrBadgeComponent, "dsfr-badge", never, { "label": { "alias": "label"; "required": true; }; "noIcon": { "alias": "noIcon"; "required": false; }; "badgeSize": { "alias": "badgeSize"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "size": { "alias": "size"; "required": false; }; "severity": { "alias": "severity"; "required": false; }; }, {}, never, never, true, never>;
}

declare class DsfrBadgeModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrBadgeModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrBadgeModule, never, [typeof i1.CommonModule, typeof DsfrBadgeComponent], [typeof DsfrBadgeComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrBadgeModule>;
}

/**
 *  Décrit l'événement émis lors d'une sélection d'un tag (si l'id est renseigné).
 *
 * @since 1.4.0
 */
interface DsfrTagEvent {
    /**
     * L'identifiant du tag.
     */
    id: string;
    /**
     * Le libellé du tag.
     */
    label: string;
    /**
     * La valeur de l'hyperlien (exclusif avec `route`).
     */
    link: string;
    /**
     * La valeur de la route (exclusif avec `link`).
     */
    route: string;
    /**
     * Indique l'état de sélection.
     */
    selected: boolean;
}
/**
 * Décrit le modèle de présentation d'un Tag.
 */
interface DsfrTag extends Omit<DsfrNavigation, 'linkTarget'> {
    /**
     * ID du tag, optionnel.
     *
     * @since 1.3.2
     */
    id?: string;
    /**
     * Permet de personnaliser la couleur du tag.
     */
    customClass?: string;
    /**
     * Permet d'avoir un tag cliquable disabled.
     *
     * @since 1.3
     */
    disabled?: boolean;
    /**
     * Icône du tag.
     */
    icon?: string;
    /**
     * Libelle du tag.
     */
    label: string;
    /**
     * Lien du tag à renseigner si le mode est 'clickable'.
     */
    link?: string;
    /**
     * Mode spécifique : default / selectable / clickable / deletable.
     */
    mode?: DsfrTagMode;
    /** État selected du tag. */
    selected?: boolean;
    /**
     * Permet de basculer le tag en taille réduite
     */
    small?: boolean;
    /**
     * Attribut aria-label du tag.
     */
    ariaLabel?: string;
    /**
     * Tooltip du tag.
     */
    title?: string;
}
/**
 * Définit les modes d'affichage supporté pour un composant `Tag`.
 */
declare enum DsfrTagModeConst {
    /**
     * Par défaut, le tag ne peut pas changer d'état ni accepter aucun lien.
     */
    DEFAULT = "default",
    /**
     * Un tag cliquable permet de débrancher sur un lien ou un path Angular.
     */
    CLICKABLE = "clickable",
    /**
     * Un tag sélectionnable possède un état de sélection.
     */
    SELECTABLE = "selectable",
    /**
     * Un tag supprimable.
     */
    DELETABLE = "deletable"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrTagModeConst}.
 */
type DsfrTagMode = `${DsfrTagModeConst}`;

declare class DsfrTagComponent implements Omit<DsfrTag, 'title'>, OnChanges {
    /**
     * ID du tag, optionnel.
     */
    tagId?: string;
    /**
     * Permet de personnaliser la couleur du tag, pour les tags sélectionnables uniquement.
     * Il faut donner la classe exacte (ex : `fr-tag--green-emeraude`). cf. [Couleurs](https://www.systeme-de-design.gouv.fr/version-courante/fr/fondamentaux/couleurs-palette#couleurs-illustratives)
     */
    customClass?: string;
    /**
     * Permet d'avoir un tag cliquable disabled.
     *
     * @since 1.3
     */
    disabled: boolean;
    /** Classe de l'icône (cf. DSFR TAG). */
    icon?: string;
    /** Libelle du tag. */
    label: string;
    /** Mode hyperlien externe, exclusif avec les propriétés `route` et `routePath`. */
    link?: string;
    /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */
    linkTarget?: DsfrLinkTarget;
    /**
     * Mode action. La route spécifié sera retransmise dans l'événement lors de la sélection.
     * Usage exclusif avec les propriétés `link` et `routePath`.
     */
    route?: string;
    /** Active la directive RouterLink. Exclusif avec les propriétés `link` et `route`. */
    routePath?: string | string[];
    /** En usage conjint avec routePath (activation RouterLink) : classe utilisée pour la directive routerLink active. */
    routerLinkActive?: string | string[];
    /** En usage conjint avec routePath (activation RouterLink) : valeurs additionnelles de navigation pour le routerLink (queryParams, state etc.) */
    routerLinkExtras?: NavigationExtras;
    /** État d'un tag 'selectable'. */
    selected: boolean;
    /** Taille du tag (small ou médium). */
    small: boolean;
    /** Donne l'attribut title pour les liens. */
    tooltipMessage?: string;
    ariaLabel?: string;
    /**
     * Événement émis suite au click sur un tag, le contenu de l'événement est soit le lien, la route ou à défaut le label du tag.
     * @since 1.4.0, si l'id du tag est renseigné, l'événement émet un objet de type DsfrTagEvent.
     */
    tagSelect: EventEmitter<string | DsfrTagEvent>;
    /** @internal */
    ariaPressed: boolean | undefined;
    /** Mode spécifique : default / selectable / clickable / deletable (les modes exclusifs entre eux). */
    private _mode;
    private _id;
    get mode(): DsfrTagMode | undefined;
    /** Mode spécifique : default / selectable / clickable / deletable (les modes exclusifs entre eux). */
    set mode(value: DsfrTagMode);
    /**
     * Attention en cas d'utilisation de cet attribut, il doit être utilisé en tant que propriété et non en attribut,
     * ex. [id]="'monid'"
     *
     * @deprecated (since 1.5) utiliser tagId.
     */
    set id(value: string);
    /**
     * Activtion du router Angular.
     *
     * routerLink provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0)
     *
     * @deprecated (since 1.11.5) utiliser `routePath` à la place.
     **/
    set routerLink(value: string | string[] | undefined);
    ngOnChanges({ selected }: SimpleChanges): void;
    /**
     * Valeur pour le 'href' dans le template.
     * @internal
     */
    getHrefValue(): string | undefined;
    /**
     * Tag `selectable` : événement `tagSelect()` avec le contenu de du lien ou à défaut son label.
     * @internal
     */
    onSelectable(): void;
    /**
     * Événement (click) sur un lien.
     * @internal
     */
    onClickable(event: Event): void;
    /**
     * Tag `selectable` : événement `tagSelect()` avec le contenu de `link` ou à défaut son `label`.
     * @internal
     */
    onDeletable(): void;
    /** @internal */
    getSelectableClasses(): string[];
    /** @internal */
    getClickableClasses(): string;
    /** @internal */
    getNotClickableClasses(): string[];
    private emitTagSelect;
    private getDefaultClasses;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTagComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTagComponent, "dsfr-tag", never, { "tagId": { "alias": "tagId"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "label": { "alias": "label"; "required": true; }; "link": { "alias": "link"; "required": false; }; "linkTarget": { "alias": "linkTarget"; "required": false; }; "route": { "alias": "route"; "required": false; }; "routePath": { "alias": "routePath"; "required": false; }; "routerLinkActive": { "alias": "routerLinkActive"; "required": false; }; "routerLinkExtras": { "alias": "routerLinkExtras"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "small": { "alias": "small"; "required": false; }; "tooltipMessage": { "alias": "tooltipMessage"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "id": { "alias": "id"; "required": false; }; "routerLink": { "alias": "routerLink"; "required": false; }; }, { "tagSelect": "tagSelect"; }, never, never, true, never>;
    static ngAcceptInputType_disabled: unknown;
}

declare class DsfrLinkComponent implements Omit<DsfrLink, 'active' | 'target'>, OnInit {
    /** Permet d'ajouter un attribut `aria-current` sur le lien.*/
    ariaCurrent?: string;
    /**
     * La propriété ariaLabel définit une valeur de chaîne qui étiquette un élément interactif.
     *
     * @since 1.4.0
     */
    ariaLabel?: string;
    /**
     * Identifie l'élément (ou les éléments) contrôlé par cet élément.
     *
     * @since 1.7.0
     */
    ariaControls?: string;
    /** Pour ajouter des classes CSS custom. Supprimera la classe par défaut 'fr-link' */
    customClass?: string;
    /**
     * Permet de désactiver le composant.
     */
    disabled: boolean;
    /** Classe de l'icône. */
    icon?: string;
    /** Position de l'icône. À droite par défaut. */
    iconPosition: DsfrPosition | undefined;
    /** @since 1.6 */
    linkId?: string;
    /** Texte du lien simple. Sinon utiliser un slot [label].*/
    label: string;
    /** Attribut target du lien. */
    linkTarget?: DsfrLinkTarget;
    /** Path interne. Exclusif avec link et routePath, prioritaire sur link. */
    route?: string;
    /** Path angular géré en tant que directive routerLink. Prioritaire et exclusif avec link et route. */
    routePath?: string | string[];
    /** Classe CSS utilisée pour la directive routerLink active. */
    routerLinkActive?: string | string[];
    /** RouterLink : options additionnelles pour le routerLinkActive (exact). */
    routerLinkActiveOptions?: {
        exact: boolean;
    } | IsActiveMatchOptions;
    /** RouterLink : options additionnelles ppour le routerLink (queryParams, state, etc.) */
    routerLinkExtras?: NavigationExtras;
    /** Taille du lien. */
    linkSize: DsfrSize;
    /** Message du tooltip (attribut title). @since 1.3.0 */
    tooltipMessage?: string;
    /**
     * Transforme un lien en bouton si `button`, `link` par défaut.
     *
     * @since 1.7.0
     */
    mode: 'link' | 'button' | undefined;
    /** Attribut labelledby du lien */
    ariaLabelledBy?: string;
    /** Attribut describedby du lien */
    ariaDescribedBy?: string;
    /**
     * Surcharger le comportement ariaCurrentWhenActive (routerLink). Par défaut "page" si la route est active .
     *
     * @since 1.13.0
     */
    ariaCurrentWhenActive: 'page' | 'step' | 'location' | 'date' | 'time' | true | false | undefined;
    /**
     * Si l'input 'route' est renseigné, sa valeur sera émise lorsque le lien est sélectionné.
     */
    linkSelect: EventEmitter<string>;
    protected externalLink: boolean;
    protected readonly i18n: DsfrI18nService;
    private readonly _sanitizer;
    private _link;
    private _sanitizedLink;
    /** Lien href externe, exclusif avec route et routePath. */
    get link(): string | undefined;
    /**
     * Taille du lien.
     *
     * @deprecated since(1.15.0) utiliser 'linkSize' à la place
     */
    get size(): DsfrSize;
    /** @deprecated (since 1.5) utiliser `linkTarget` à la place. */
    get targetLink(): DsfrLinkTarget | undefined;
    /** Lien href externe, exclusif avec route et routePath. */
    set link(value: string | undefined);
    /**
     * Taille du lien.
     *
     * @deprecated since(1.15.0) utiliser 'linkSize' à la place
     */
    set size(value: DsfrSize);
    /** @deprecated (since 1.5) utiliser `linkTarget` à la place. */
    set targetLink(value: DsfrLinkTarget | undefined);
    /**
     * Activation du router Angular.
     *
     * L'usage de routerLink provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0).
     *
     * @deprecated (since 1.11.5) utiliser `routePath` à la place.
     */
    set routerLink(value: string | string[] | undefined);
    ngOnInit(): void;
    /** @internal */
    getHref(): string | undefined;
    /** @internal */
    hasRouterLink(): boolean;
    /**
     * DsfrLink est partagé par plusieurs composants, 'tag', 'card' et 'tile' à la place d'un simple lien.
     * Cela permet de bénéficier des nombreuses caractéristiques du composant DsfrLink.
     *
     * @since 1.5 Cependant, la classe 'fr-link' ne doit pas cohabiter les classes de ces composants ('fr-tag', ...)
     *
     * @internal
     */
    getClass(): string;
    /** @internal */
    getButtonClasses(): string;
    /** @internal */
    onLink(event: Event): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrLinkComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrLinkComponent, "dsfr-link", never, { "ariaCurrent": { "alias": "ariaCurrent"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaControls": { "alias": "ariaControls"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "linkId": { "alias": "linkId"; "required": false; }; "label": { "alias": "label"; "required": false; }; "linkTarget": { "alias": "linkTarget"; "required": false; }; "route": { "alias": "route"; "required": false; }; "routePath": { "alias": "routePath"; "required": false; }; "routerLinkActive": { "alias": "routerLinkActive"; "required": false; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; }; "routerLinkExtras": { "alias": "routerLinkExtras"; "required": false; }; "linkSize": { "alias": "linkSize"; "required": false; }; "tooltipMessage": { "alias": "tooltipMessage"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "ariaDescribedBy": { "alias": "ariaDescribedBy"; "required": false; }; "ariaCurrentWhenActive": { "alias": "ariaCurrentWhenActive"; "required": false; }; "link": { "alias": "link"; "required": false; }; "size": { "alias": "size"; "required": false; }; "targetLink": { "alias": "targetLink"; "required": false; }; "routerLink": { "alias": "routerLink"; "required": false; }; }, { "linkSelect": "linkSelect"; }, never, ["*"], true, never>;
}

declare class DsfrI18nPipe implements PipeTransform, OnDestroy {
    value: string;
    lastKey: string | null;
    langChangeSub$: Subscription | null;
    private readonly i18nService;
    private readonly cdr;
    transform(jsonPath: string): string;
    ngOnDestroy(): void;
    private dispose;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrI18nPipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<DsfrI18nPipe, "dsfrI18n", true>;
}

declare class DsfrTagModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTagModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrTagModule, never, [typeof i1.CommonModule, typeof DsfrLinkComponent, typeof DsfrI18nPipe, typeof DsfrTagComponent], [typeof DsfrTagComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrTagModule>;
}

/**
 * Définit les différentes couleurs d'arrière-plan supportées par le DSFR.
 */
declare enum DsfrPanelBackgroundConst {
    DEFAULT = "default",
    GREY = "grey",
    TRANSPARENT = "transparent"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrPanelBackgroundConst}.
 */
type DsfrPanelBackground = `${DsfrPanelBackgroundConst}`;
/**
 * Définit les différentes couleurs de bordure supportées par le DSFR.
 */
declare enum DsfrPanelBorderConst {
    DEFAULT = "default",
    NO_BORDER = "no-border",
    SHADOW = "shadow"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrPanelBorderConst}.
 */
type DsfrPanelBorder = `${DsfrPanelBorderConst}`;
/**
 * Définit les différents balisages HTML supportés par la description du panel.
 */
declare enum DsfrPanelDescMarkupConst {
    /**
     * Pour obtenir un conteneur `<DIV>`.
     */
    DIV = "div",
    /**
     * Pour obtenir un conteneur `<P>` par défault.
     */
    P = "p"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrPanelDescMarkupConst}.
 */
type DsfrPanelDescMarkup = `${DsfrPanelDescMarkupConst}`;

declare const DEFAULT_HEADING_LEVEL: DsfrHeadingLevel;
declare abstract class BasePanelComponent implements DsfrNavigation {
    /**
     * La propriété ariaLabel définit une valeur de chaîne qui étiquette un élément interactif.
     *
     * @since 1.7
     */
    ariaLabel?: string;
    /**
     * Permet de positionner des badges (jusqu'à 4 badges maxi) en haut du composant, optionnel.
     *
     * @see DsfrBadge
     */
    badges: DsfrBadge[];
    /**
     * Permet d'avoir un fond gris ou transparent.
     */
    customBackground: DsfrPanelBackground;
    /**
     * Permet d'afficher une ombre ou ne pas mettre de bordure.
     */
    customBorder: DsfrPanelBorder;
    /**
     * Une description optionnelle plein texte. Utiliser descriptionMarkup et le slot sinon.
     */
    description?: string;
    /**
     * Type de balise HTML pour le conteneur de la description. <p> par défaut.
     */
    descriptionMarkup: DsfrPanelDescMarkup;
    /**
     * Permet de désactiver le composant.
     */
    disabled: boolean;
    /**
     * Equivalent à l'attribut html natif 'download'.
     * - true : la fenêtre de téléchargement s'affiche directement,
     * - false : le fichier est ouvert avant d'être téléchargé,
     * - string : nouveau nom de fichier proposé au téléchargement.
     */
    downloadDirect: boolean | string;
    /**
     * Si 'true' (défaut) : le détail du téléchargement est automatiquement renseigné par le script DSFR.
     */
    downloadAssessFile: boolean;
    /**
     * Obligatoire, dans le cas d'un téléchargement si le document n'est pas du même langage que la page courante.
     * Ex : downloadLangCode="en".
     */
    downloadLangCode?: string;
    /**
     * Format du fichier, à renseigner si downloadAssessFile est faux.
     */
    downloadMimeType?: string;
    /**
     * Poids du fichier en octets, à renseigner si downloadAssessFile est faux.
     * */
    downloadSizeBytes?: number;
    /**
     * Permet de désactiver le lien étendu de la carte.
     */
    enlargeLink: boolean;
    /**
     * Titre du composant.
     * Le fait de valoriser cette propriété est prioritaire sur le ng-content [heading].
     * Attention fonctionnellement la présence d'un titre est obligatoire.
     */
    heading?: string;
    /**
     * Le niveau de titre devant être utilisé (tag `h4` par défaut).
     * Cette balise ne produit pas de style, mais de la structure.
     */
    headingLevel: string;
    /**
     * Passe le composant en mode horizontal.
     */
    horizontal: boolean;
    /**
     * Permet de positionner un lien de type href.
     * Sert aussi de lien de téléchargement.
     */
    link?: string;
    /**
     * Permet de positionner une route Angular qui sera récupérée via 'output tileSelect.
     */
    route?: string;
    /**
     * Path angular géré en tant que directive routerLink. Prioritaire et exclusif avec link et route.
     */
    routePath?: string | string[];
    /**
     * Classe CSS utilisée pour la directive routerLink active.
     */
    routerLinkActive?: string | string[];
    /**
     * RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state, etc.)
     */
    routerLinkExtras?: NavigationExtras;
    /**
     * Dimension du composant, 'MD' par défaut ('SM, 'MD' uniquement pour la tuile).
     */
    panelSize: DsfrSize;
    /**
     * Permet d'avoir un bouton à la place d'un lien.
     *
     * @since 1.12
     */
    enlargeButton: boolean;
    /**
     * Attribut target du lien.
     */
    linkTarget?: DsfrLinkTarget;
    private _download;
    private _downloadSizeUnit;
    private _tags;
    private _detailBottom;
    private readonly langService;
    protected constructor();
    get downloadSizeUnit(): DsfrFileSizeUnit;
    get tags(): DsfrTag[];
    get itemLink(): DsfrLink;
    get download(): boolean;
    get detailBottom(): string;
    /**
     * Dimension du composant, 'MD' par défaut ('SM, 'MD' uniquement pour la tuile).
     *
     * @deprecated since(1.15.0) utiliser 'panelSize' à la place
     */
    get size(): DsfrSize;
    /**
     * Dans le cas d'un téléchargement sans l'option 'downloadAssessFile',
     * on crée le détail à l'aide des propriétés 'downloadSizeBytes', 'downloadMimeType'.
     * @internal
     */
    protected get downloadDetail(): string;
    /**
     * Dimension du composant, 'MD' par défaut ('SM, 'MD' uniquement pour la tuile).
     *
     * @deprecated since(1.15.0) utiliser 'panelSize' à la place
     */
    set size(value: DsfrSize);
    /**
     * Transforme le composant classique en composant de téléchargement.
     */
    set download(download: boolean);
    /** Zone de détail se trouvant visuellement sous la description et à côté de l’icône, optionnel.
     * Pour la tuile, on peut passer un slot de sélecteur "detail".
     * En cas de téléchargement le détail est remplacé par les informations du fichier calculées selon downloadAssessFile.
     */
    set detailBottom(value: string);
    /**
     * Force l'unité par défaut qui dépend de la langue du site, en octets (ko, Mo, ...) pour 'fr', en 'bytes' (KB, MB...) pour les autres langues.
     */
    set downloadSizeUnit(value: DsfrFileSizeUnit);
    /**
     * Permet de positionner des tags en haut de la carte (cliquables ou non), optionnel.
     * voir DsfrTag
     */
    set tags(tags: DsfrTag[]);
    /**
     * Activation du router Angular.
     * Provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0)
     *
     * @deprecated (since 1.11.5) utiliser `routePath` à la place.
     */
    set routerLink(value: string | string[] | undefined);
    /** @internal */
    hasLink(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<BasePanelComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BasePanelComponent, "ng-component", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "badges": { "alias": "badges"; "required": false; }; "customBackground": { "alias": "customBackground"; "required": false; }; "customBorder": { "alias": "customBorder"; "required": false; }; "description": { "alias": "description"; "required": false; }; "descriptionMarkup": { "alias": "descriptionMarkup"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "downloadDirect": { "alias": "downloadDirect"; "required": false; }; "downloadAssessFile": { "alias": "downloadAssessFile"; "required": false; }; "downloadLangCode": { "alias": "downloadLangCode"; "required": false; }; "downloadMimeType": { "alias": "downloadMimeType"; "required": false; }; "downloadSizeBytes": { "alias": "downloadSizeBytes"; "required": false; }; "enlargeLink": { "alias": "enlargeLink"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "link": { "alias": "link"; "required": false; }; "route": { "alias": "route"; "required": false; }; "routePath": { "alias": "routePath"; "required": false; }; "routerLinkActive": { "alias": "routerLinkActive"; "required": false; }; "routerLinkExtras": { "alias": "routerLinkExtras"; "required": false; }; "panelSize": { "alias": "panelSize"; "required": false; }; "enlargeButton": { "alias": "enlargeButton"; "required": false; }; "linkTarget": { "alias": "linkTarget"; "required": false; }; "size": { "alias": "size"; "required": false; }; "download": { "alias": "download"; "required": false; }; "detailBottom": { "alias": "detailBottom"; "required": false; }; "downloadSizeUnit": { "alias": "downloadSizeUnit"; "required": false; }; "tags": { "alias": "tags"; "required": false; }; "routerLink": { "alias": "routerLink"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Composant de checkbox sans ControlValueAccessor
 * Pour utilisation d'un composant "light" répété x fois, ex. Table
 */
declare class EduCheckboxLightComponent {
    checkboxClick: EventEmitter<Event>;
    id: i0.InputSignal<string>;
    label: i0.InputSignal<string>;
    tabIndex: i0.InputSignal<number | undefined>;
    disabled: i0.InputSignalWithTransform<boolean, unknown>;
    icon: i0.InputSignal<string | undefined>;
    /**
     * Cache le label visuellement en le laissant disponible aux lecteurs d'écran.
     */
    labelSrOnly: i0.InputSignal<boolean | undefined>;
    selected: i0.InputSignal<boolean | undefined>;
    /**@internal */
    onClick(event: Event): void;
    /**@internal */
    isIndeterminate(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<EduCheckboxLightComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EduCheckboxLightComponent, "edu-checkbox-light, dsfr-ext-checkbox", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "tabIndex": { "alias": "tabIndex"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "labelSrOnly": { "alias": "labelSrOnly"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; }, { "checkboxClick": "checkboxClick"; }, never, ["[label]"], true, never>;
}

/**
 * Décrit un lien d'accès rapide pour accèder à des zones de la page.
 */
interface DsfrAnchorLink {
    /**
     * Libellé du lien.
     */
    label: string;
    /**
     * Lien `href` (exclusif avec `fragment`).
     */
    link?: string;
    /**
     * Valeur du fragment qui serra utilisé avec la directive routerLink Angular.
     *
     * Cette propriété est exclusive avec `link` et `route` et prioritaire sur ces dernières.
     */
    fragment?: string;
    /**
     * Permet de gérer programmatiquement l'action lors d'un click sur un lien d'accès rapide.
     *
     * Cette propriété est prioritaire sur `link`.
     */
    route?: string;
}

/**
 * Définit les différentes positions supportées par le DSFR.
 */
declare enum DsfrPositionConst {
    /**
     * Positionne à gauche.
     */
    LEFT = "left",
    /**
     * Positione à droite.
     */
    RIGHT = "right"
}
/**
 * Type union pour les valeurs de {@link DsfrPositionConst}.
 */
type DsfrPosition = `${DsfrPositionConst}`;

/**
 * Définit les différentes tailles supportées par le DSFR.
 */
declare enum DsfrSizeConst {
    /**
     * Spécifie une taille "réduite".
     */
    SM = "SM",
    /**
     * Spécifie une taille "moyenne".
     */
    MD = "MD",
    /**
     * Spécifie une taille "large".
     */
    LG = "LG"
}
/**
 * Type union pour les valeurs de {@link DsfrSizeConst}.
 */
type DsfrSize = `${DsfrSizeConst}`;

/**
 * Décrit le modèle d'un bouton.
 */
interface DsfrButton {
    /** Libellé du bouton. */
    label?: string;
    /** Type du button, 'button' par défaut. */
    type?: DsfrButtonType;
    /** Message du tooltip (attribut title) du bouton. */
    tooltipMessage?: string;
    /** Style du bouton, 'primary' par défaut. */
    variant?: DsfrButtonVariant;
    /** Taille du bouton, 'MD' par défaut  */
    size?: DsfrSize;
    /** Nom de l'icône. */
    icon?: string;
    /** Position de l'icône définie, 'left' par défaut. */
    iconPosition?: DsfrPosition;
    /** Permet de désactiver le bouton d'action, 'false' par défaut. */
    disabled?: boolean;
    /** Permet de passer le libellé du bouton en majuscules, 'false' par défaut. */
    uppercase?: boolean;
    /** Permet d'activer un visuel dénotant un "chargement" (busy), 'false' par défaut. */
    loader?: boolean;
    /** Permet d'inverser le contraste du marqueur de focus, 'false' par défaut. */
    invertedOutlineContrast?: boolean;
    /**Permet d'identifier le button. */
    id?: string;
    /** [accessibilité] Spécifie le libellé qui sera retranscrit par les narrateurs d'écran. */
    ariaLabel?: string;
    /** [accessibilité] attribut aria-controls utilisé pour la manipulation d'une modale par exemple. */
    ariaControls?: string;
    /** [accessibilité] attribut aria-pressed indiquant l'état du bouton (cas d'un toggle) */
    ariaPressed?: string;
}
/**
 * Définit les types de bouton supportés par le composant `dsfr-button`.
 */
declare enum DsfrButtonTypeConst {
    /**
     * A utiliser pour un bouton de soumission de formulaire.
     */
    SUBMIT = "submit",
    /**
     * A utiliser pour un bouton de réinitialisation de formulaire.
     */
    RESET = "reset",
    /**
     * A utiliser pour un bouton d'action sur la page courante.
     */
    BUTTON = "button"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrButtonTypeConst}.
 *
 * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button
 */
type DsfrButtonType = `${DsfrButtonTypeConst}`;
/**
 * Définit les variantes supportées par le composant `dsfr-button`.
 */
declare enum DsfrButtonVariantConst {
    /**
     * A utiliser pour un bouton primaire.
     */
    PRIMARY = "primary",
    /**
     * A utiliser pour un bouton secondaire.
     */
    SECONDARY = "secondary",
    /**
     * A utiliser pour un bouton tertiaire.
     */
    TERTIARY = "tertiary",
    /**
     * A utiliser pour un bouton tertiaire sans bordure.
     */
    TERTIARY_NO_OUTLINE = "tertiary-no-outline"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrButtonVariantConst}.
 */
type DsfrButtonVariant = `${DsfrButtonVariantConst}`;

/**
 * Définit les niveaux de titre supportés par le DSFR du H2 à H6.
 */
declare enum DsfrHeadingLevelConst {
    /**
     * @deprecated (since 1.8) use `undefined` instead
     */
    NONE = "none",
    /**
     * Niveau de titre H1.
     */
    H1 = "H1",
    /**
     * Niveau de titre H2.
     */
    H2 = "H2",
    /**
     * Niveau de titre H3.
     */
    H3 = "H3",
    /**
     * Niveau de titre H4.
     */
    H4 = "H4",
    /**
     * Niveau de titre H5.
     */
    H5 = "H5",
    /**
     * Niveau de titre H6.
     */
    H6 = "H6"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrHeadingLevelConst}.
 */
type DsfrHeadingLevel = `${DsfrHeadingLevelConst}`;

/**
 * @deprecated (since 1.9.2) utiliser directement une string dénotant la classe CSS DSFR correspondant à l'icône Remix
 */
type DsfrIcon = string | undefined;

/**
 * Définit les différents niveaux de sévérité supportés par le DSFR.
 */
declare enum DsfrSeverityConst {
    /**
     * Spécifie un niveau "information".
     */
    INFO = "info",
    /**
     * Spécifie un niveau "erreur".
     */
    ERROR = "error",
    /**
     * Spécifie un niveau "information" et/ou un état "valide".
     */
    VALID = "valid",
    /**
     * Spécifie un niveau "avertissement".
     */
    WARNING = "warning",
    /**
     * Spécifie un niveau "succès".
     *
     * @deprecated (since 1.13.0) Utiliser {@link VALID} à la place.
     */
    SUCCESS = "success"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrSeverityConst}.
 */
type DsfrSeverity = `${DsfrSeverityConst}`;

/**
 * Décrit le modèle d'un input de type texte.
 */
interface DsfrInputText {
    /**
     * Label du lien.
     */
    label: string;
    /**
     * Attribut name de l'input.
     */
    name: string;
    /**
     * La valeur gérée par le champ de formulaire.
     */
    value: string;
    /**
     * Ajout un icon à droite dans le champ de saisie.
     */
    icon?: string;
    /**
     * Attribut ariaLabel pour legende non visible.
     */
    ariaLabel?: string;
    /**
     * Message d'erreur de l'input.
     * @deprecated use message/messageSeverity instead.
     */
    error?: string;
    /**
     * Message de validation de l'input.
     * @deprecated use message/messageSeverity instead.
     */
    valid?: string;
    /**
     * Text additionel décrivant le champs.
     */
    hint?: string;
    /**
     * Indique que le champs est obligatoite.
     */
    required?: boolean;
    /**
     * Attribut 'id' du champ, généré automatiquement par défaut.
     * */
    id?: string;
    /**
     * Permer de désactiver le champs.
     */
    disabled?: boolean;
    /**
     * Valeur de l'attribut auto-complete.
     */
    autoComplete?: string;
    /**
     * Valeur de l'attribut auto-complete.
     */
    message?: string;
    /**
     * Valeur de l'attribut auto-complete.
     */
    messageSeverity?: DsfrSeverity;
}

/**
 * Définit les valeurs possibles pour l'attribut `target` d'un lien html.
 */
declare enum DsfrLinkTargetConst {
    BLANK = "_blank",
    SELF = "_self",
    PARENT = "_parent",
    TOP = "_top"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrLinkTargetConst}.
 */
type DsfrLinkTarget = `${DsfrLinkTargetConst}`;
/** @deprecated (since 1.4) use {@link DsfrLinkTargetConst} instead */
declare enum DsfrTargetLinkConst {
    BLANK = "_blank",
    SELF = "_self",
    PARENT = "_parent",
    TOP = "_top"
}
/** @deprecated (since 1.4) use {@link DsfrLinkTarget} instead */
type DsfrTargetLink = DsfrLinkTarget;

/**
 * Décrit le modèle d'un lien permettant une navigation.
 */
interface DsfrNavigation {
    /**
     * Lien href externe, exclusif avec route et routerLink.
     */
    link?: string;
    /**
     * Modalité d'ouverture du lien.
     */
    linkTarget?: DsfrLinkTarget;
    /**
     * Définit le path interne. Permet de basculer en mode "action".
     *
     * Exclusif avec les propriétés `link` et `routerLink`.
     */
    route?: string;
    /**
     * Permet d'activer la directive Angular RouterLink en utilisant le path fournit en valeur.
     *
     * Exclusif avec les propriétés `link` et `route`.
     */
    routerLink?: string | string[];
    /**
     * A utiliser <u>obligatoirement</u> en combinaison avec la propriété {@link DsfrLink#routerLink | routerLink}.
     *
     * Permet d'indiquer la ou les classes CSS qui seront positionnées par la directive `RouterLink` sur l'élément actif
     * courant.
     */
    routerLinkActive?: string | string[];
    /**
     * A utiliser <u>obligatoirement</u> en combinaison avec la propriété {@link DsfrLink#routerLink | routerLink}.
     *
     * Permet de configurer comment se détermine la route active.
     */
    routerLinkActiveOptions?: {
        exact: boolean;
    } | IsActiveMatchOptions;
    /**
     * A utiliser <u>obligatoirement</u> en combinaison avec la propriété {@link DsfrLink#routerLink | routerLink}.
     *
     * Permet de configurer les valeurs additionnelles de navigation pour le routerLink (queryParams, state etc.)
     */
    routerLinkExtras?: NavigationExtras;
}

/**
 * Décrit un lien.
 */
interface DsfrLink extends DsfrNavigation {
    /**
     * Positionne `aria-current` à la bonne valeur selon le contexte.
     * Utilisé dans les méga menus du header et le side menu.
     */
    active?: boolean;
    /**
     * La propriété ariaLabel définit une valeur de chaîne qui étiquette un élément interactif.
     *
     * @since 1.7
     */
    ariaLabel?: string;
    /**
     * Identifie l'élément (ou les éléments) contrôlé par cet élément.
     * Fix : Un lien possédant un ariaControls est destiné à ouvrir l'élément désigné par cette valeur.
     * (cela ne respecte pas les recommandations d'accessibilité qui préconise un bouton dans ce cas).
     * Dans ce cas, le lien possède un attribut `data-fr-opened="false"`
     *
     * @since 1.7
     */
    ariaControls?: string;
    /**
     * Permet de positionner une icône sur le lien, à gauche par défaut.
     */
    icon?: string;
    /**
     * Permet de changer la position par défaut de l'icône.
     *
     * @since 1.7.0
     */
    iconPosition?: DsfrPosition;
    /**
     * Label du lien.
     */
    label: string;
    /**
     * Pour ajouter des classes CSS custom.
     *
     * @since 1.7.0
     */
    customClass?: string;
    /**
     * Permet de désactiver le composant.
     *
     * @since 1.7.0
     */
    disabled?: boolean;
    /**
     * Target du lien. Target par défaut de l'application si la propriété est non renseignée.
     *
     * @deprecated since 1.8, use linkTarget instead
     */
    target?: DsfrLinkTarget;
    /**
     * Transforme un lien en bouton si `button`, `link` par défaut.
     *
     * @since 1.7.0
     */
    mode?: 'link' | 'button';
    /**
     * Positionne l'attribut id sur le lien.
     *
     * @since 1.7
     */
    linkId?: string;
    /**
     * Message du tooltip (attribut title).
     *
     * @since 1.7
     */
    tooltipMessage?: string;
}

/**
 * Représentation du bloc marque.
 */
interface DsfrLogo {
    /**
     * Label associé au bloc-marque Marianne (HTML supporté).
     *
     * Respectez la structure avec les <br>.
     * (Ministère, Gouvernement, République Française).
     *
     * Valeur par défaut : 'République<br/>Française',
     */
    label?: string;
    /**
     * L'url du lien 'retour accueil' du logo de la Marianne.
     *
     * @deprecated utiliser la propriété `navigation` à la place
     */
    link?: string;
    /**
     * Le lien 'retour accueil' du logo de la Marianne.
     */
    navigation?: DsfrNavigation;
    /**
     * Le tooltip du logo.
     */
    tooltipMessage?: string;
    /**
     * Le chemin permettant de charger l'image d'illustration.
     */
    imagePath?: string;
    /**
     * L’alternative de l’image doit impérativement être renseignée et reprendre le texte visible dans l’image.
     */
    imageAlt?: string;
    /**
     * Permet de personnaliser le logo avec des classes CSS additionnelles.
     */
    customClass?: string;
}

/**
 * Décrit une option de manière ghénérique (soit un couple libellé + valeur).
 */
interface DsfrOption {
    /**
     * Le libellé de l'option.
     */
    label: string;
    /**
     * La valeur de l'option.
     */
    value?: any;
}

/**
 * Décrit une option dans le contexte du composant `select`.
 */
interface DsfrSelectOption extends DsfrOption {
    /**
     * Désactive l'option.
     */
    disabled?: boolean;
    /**
     * Permet de grouper plusieurs options.
     */
    options?: DsfrSelectOption[];
}
/**
 * Décrit le modèle d'un composant `select`.
 */
interface DsfrSelect {
    /**
     * Le libellé du select.
     */
    label: string;
    /**
     * Le modèle de présentation permettant de transmettre la liste des options.
     */
    options: DsfrSelectOption[];
    /**
     * Attribut name de l'input.
     */
    name: string;
    /**
     * Attribut ariaLabel pour legende non visible.
     */
    ariaLabel?: string;
    /**
     * Message d'erreur de l'input.
     */
    error?: string;
    /**
     * Message de validation de l'input.
     */
    valid?: string;
    /**
     * Text additionel décrivant le champs.
     */
    hint?: string;
    /**
     * Indique que le champs est obligatoite.
     */
    required?: boolean;
    /**
     * Attribut 'id' du champ, généré automatiquement par défaut.
     */
    id?: string;
    /**
     * Permer de désactiver le champs.
     */
    disabled?: boolean;
    /**
     * La valeur gérée par le champ de formulaire.
     */
    value: string;
    /**
     * Permet de personnaliser la première option (non sélectionnable).
     * Cette propriété est positionnée à une valeur par défaut (ex : Sélectionnez une option) internationalisée.
     */
    placeHolder?: string;
}

/**
 * Définit les tailles de texte supportées par le DSFR.
 */
declare enum DsfrTextSizeConst {
    /**
     * Texte très petit.
     */
    XS = "XS",
    /**
     * Texte petit.
     */
    SM = "SM",
    /**
     * Texte moyen.
     */
    MD = "MD",
    /**
     * Texte large.
     */
    LG = "LG",
    /**
     * Texte très grand.
     */
    XL = "XL"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrTextSizeConst}.
 *
 * @see https://www.systeme-de-design.gouv.fr/version-courante/fr/fondamentaux/typographie > Corps de texte - Body
 */
type DsfrTextSize = `${DsfrTextSizeConst}`;

declare class HeadingComponent {
    /** Classe du titre. */
    customClass?: string;
    /** Autoriser l'affichage d'un titre de niveau H1 */
    allowFirstLevel: boolean;
    /** id du titre @since 1.9 */
    headingId?: string;
    /** Le niveau du titre dans la structure. */
    level?: DsfrHeadingLevel | 'P';
    /** Niveau par défaut si 'level' n'est pas renseigné. */
    defaultLevel: DsfrHeadingLevel | 'P';
    protected getLevel(): DsfrHeadingLevel | 'P';
    static ɵfac: i0.ɵɵFactoryDeclaration<HeadingComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<HeadingComponent, "edu-heading", never, { "customClass": { "alias": "customClass"; "required": false; }; "allowFirstLevel": { "alias": "allowFirstLevel"; "required": false; }; "headingId": { "alias": "headingId"; "required": false; }; "level": { "alias": "level"; "required": false; }; "defaultLevel": { "alias": "defaultLevel"; "required": true; }; }, {}, never, ["*"], true, never>;
}

declare class HeadingModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<HeadingModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<HeadingModule, never, [typeof i1.CommonModule, typeof HeadingComponent], [typeof HeadingComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<HeadingModule>;
}

interface DisplayedMessageStatus$1 {
    message: string[] | undefined;
    messageSeverity: DsfrSeverity | undefined;
}
/**
 * InputGroupComponent contient la gestion des messages de l'input
 * @since 1.11.0
 */
declare class InputGroupComponent {
    /**
     * Permet de désactiver le champ.
     */
    disabled: i0.InputSignalWithTransform<boolean, unknown>;
    /**
     * Id de la div affichant les messages d'erreur ou de validation.
     */
    messagesGroupId: i0.InputSignal<string>;
    /**
     * Message(s) d'information(s) lié au composant fourni par l'utilisateur du composant
     */
    message: i0.InputSignal<string | string[] | undefined>;
    /**
     * Représente la sévérité du ou des messages
     */
    messageSeverity: i0.InputSignal<"info" | "error" | "valid" | "warning" | "success" | undefined>;
    /**
     * Message(s) d'information(s) lié au composant correspondant à son système de validation interne
     * @internal
     */
    internalError: i0.InputSignal<string | string[] | undefined>;
    protected readonly DsfrSeverity: typeof DsfrSeverityConst;
    /**
     * Gestion de l'affichage de la combinaison des messages internes et externes du composant.
     */
    protected readonly newMessages: Signal<string[]>;
    /**
     * Gestion de l'affichage dans le cas où le composant serait dans un autre statut qu'en erreur,
     * et qu'une erreur interne se manifeste. Dans ce cas, seules sont affichées les erreurs internes, et le statut
     * affiché du composant est forcé en erreur.
     */
    protected readonly displayedMessageStatus: Signal<DisplayedMessageStatus$1>;
    /** Gestion des classes CSS ajoutées selon la sévérité */
    protected readonly inputGroupSeverityClasses: Signal<string | null>;
    private handleMessagesConcat;
    private toArray;
    static ɵfac: i0.ɵɵFactoryDeclaration<InputGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<InputGroupComponent, "edu-input-group", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "messagesGroupId": { "alias": "messagesGroupId"; "required": true; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "messageSeverity": { "alias": "messageSeverity"; "required": false; "isSignal": true; }; "internalError": { "alias": "internalError"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
}

declare class LinkDownloadComponent {
    /** Classe personnalisée du composant, par exemple, `fr-btn`, `fr-nav__link`, ... */
    customClass?: string;
    /**
     * Option de détail de téléchargement renseigné automatiquement.
     * Si la valeur est 'bytes', l'unité sera en Bytes
     */
    downloadAssessFile: boolean | 'bytes';
    /**
     * Langue courante. hreflang ne sera indiquée que différent de la langue courante.
     */
    langCode: string;
    /**
     * Attribut target du lien.
     *
     * @since 1.12
     */
    linkTarget?: DsfrLinkTarget;
    /** Remplacer le lien par un markup de bouton */
    isButton: boolean;
    /**
     * Propage la valeur de 'route' ou de 'link' (selon le cas) lors du click sur le lien.
     */
    linkSelect: EventEmitter<string>;
    /**
     * Active la version download avec l'attribut download.
     * Permet l'utilisation de `downloadAssessFile` et  `langCode`
     */
    downloadDirect: i0.InputSignal<string | boolean>;
    /** Création du fileName en cas de download direct */
    protected readonly newFileName: i0.Signal<string | null>;
    private readonly _sanitizer;
    private _item;
    private _sanitizedLink;
    get disabled(): boolean;
    get item(): DsfrLink;
    /** Item représentant un lien `<a>` avec ou sans `routerLink`. */
    set item(item: DsfrLink);
    /** @internal */
    getHref(): string | undefined;
    /** @internal */
    onLinkSelect(event: Event): void;
    /** @internal */
    getLinkTarget(item: DsfrLink): DsfrLinkTarget | undefined;
    /** @internal */
    private getLinkClasses;
    static ɵfac: i0.ɵɵFactoryDeclaration<LinkDownloadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LinkDownloadComponent, "edu-link-download", never, { "customClass": { "alias": "customClass"; "required": false; }; "downloadAssessFile": { "alias": "downloadAssessFile"; "required": false; }; "langCode": { "alias": "langCode"; "required": false; }; "linkTarget": { "alias": "linkTarget"; "required": false; }; "isButton": { "alias": "isButton"; "required": false; }; "downloadDirect": { "alias": "downloadDirect"; "required": false; "isSignal": true; }; "item": { "alias": "item"; "required": true; }; }, { "linkSelect": "linkSelect"; }, never, never, true, never>;
}

declare class PictogramComponent {
    /**
     * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.
     */
    artworkDirPath: string;
    /**
     * Chemin relatif à artworkDirPath dénotant le fichier d'illustration à utiliser.
     */
    artworkFilePath?: string;
    /**
     * Détermine l'affichage du pictogramme associé aux téléchargements.
     */
    download: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<PictogramComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PictogramComponent, "edu-pictogram", never, { "artworkDirPath": { "alias": "artworkDirPath"; "required": false; }; "artworkFilePath": { "alias": "artworkFilePath"; "required": false; }; "download": { "alias": "download"; "required": false; }; }, {}, never, never, true, never>;
}

declare class PictogramModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<PictogramModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PictogramModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof PictogramComponent], [typeof PictogramComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PictogramModule>;
}

declare class SvgIconComponent {
    iconPath?: string;
    role: string;
    ariaHidden: boolean;
    alt?: string;
    imageRatio?: DsfrImageRatio;
    static ɵfac: i0.ɵɵFactoryDeclaration<SvgIconComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SvgIconComponent, "edu-svg-icon", never, { "iconPath": { "alias": "iconPath"; "required": false; }; "role": { "alias": "role"; "required": false; }; "ariaHidden": { "alias": "ariaHidden"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; "imageRatio": { "alias": "imageRatio"; "required": false; }; }, {}, never, never, true, never>;
}

declare class SvgIconModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SvgIconModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SvgIconModule, never, [typeof i1.CommonModule, typeof SvgIconComponent], [typeof SvgIconComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SvgIconModule>;
}

/**
 * Structure récursive permettant de représenter un bundle de traductions.
 *
 * Les clés racines permettent d'organiser les libellés par composant.
 *
 * La structure sous-jacente de chaque clé racine permet de représenter l'ensemble des libellés internationalisés du composant.
 */
interface DsfrI18nRecord extends Record<string, DsfrI18nValue> {
}
/**
 * Réprésente une valeur de traduction pour une clé i18n. Un composant pouvant être composé de différentes parties,
 * la valeur peut pointer vers une sous-structure organisant les libellés en fonction des parties du composant.
 */
type DsfrI18nValue = string | string[] | DsfrI18nRecord;
/**
 * Les clés correspondant à tous les composants. On passe par un type union afin de contraindre par type les clés de
 * l'objet décrivant le bundle contenant les libellés des composants officiels du DSFR. On aurait pu définir ses clés
 * directement au niveau de l'interface DsfrI18nBaseBundle mais cela nous emêcherait de définir correctement le type
 * DsfrI18nExtensionBundle qui correspond à un bundle contenant les libellés des composants d'extension. En effet,
 * l'idée du type DsfrI18nExtensionBundle est de prévenir les erreurs de surcharge de libellés existants, on a donc
 * besoin d'un type exprimant un Record<string, DsfrI18nValue> dont les clés NE SONT PAS des clés correspondant à des
 * composants officiels.
 */
type DsfrI18nBaseBundleKeys = 'commons' | 'alert' | 'backtotop' | 'breadcrumb' | 'consent' | 'date' | 'display' | 'email' | 'follow' | 'footer' | 'franceConnect' | 'header' | 'link' | 'login' | 'modal' | 'name' | 'notice' | 'pageResponse' | 'pagination' | 'password' | 'range' | 'response' | 'select' | 'share' | 'sidemenu' | 'stepper' | 'table' | 'tag' | 'tel' | 'toggle' | 'tooltip' | 'transcription' | 'translate' | 'upload';
/**
 * Représente un bundle de traduction pour le slibellés des composants officiels du DSFR.
 */
interface DsfrI18nBaseBundle extends Record<DsfrI18nBaseBundleKeys, DsfrI18nValue> {
}
/**
 * Représente un bundle de traductions génériques contenant à la fois les traductions des composants officiels
 * et potentiellement des traductions relatives des composants d'extensions.
 *
 * C'est cette structure de données qui sera utilisée au niveau du service fournisssant les libellés (DsfrI18nService).
 *
 * Note sur le type union utilisé dans la définition du type :
 */
type DsfrI18nBundle = DsfrI18nBaseBundle | (DsfrI18nBaseBundle & DsfrI18nRecord);
/**
 * Type permettant de contraindre les bundles d'extension. Cela garantit que la structure fournie ne peut écraser les
 * traductions relatives à des composants officiels.
 *
 * Explication : on utilise un type utilitaire Record pour définir un type dont les clés sont des string et les
 * valeurs des string ou des structures JSON puis on ajoute que si la clé appartient aux clés existantes alors le type
 * spécifié est `never` et comme `never` n'est pas un type possible en TS cela provoque une erreur de compilation.
 * Enfin on ajoute le point d'interrogation pour rendre optionnelle cette seconde contrainte sur le type des clés car
 * sinon le compilateur affiche une erreur car il considère que l'objet à assigner doit forcément contenir la totalité
 * des propriétés de DsfrI18nBaseBundle déclarées en type never (commons:never, alert:never, etc.)
 *
 * Compilation OK :
 * const ext: I18nExtensionBundle = { foo: { bar: 'qux' } };
 * Compilation KO :
 * const ext: I18nExtensionBundle = { commons: { bar: 'qux' } };
 */
type DsfrI18nExtensionBundle = Record<string, DsfrI18nValue> & {
    [key in keyof DsfrI18nBaseBundle]?: never;
};

declare const LABELS_BUNDLE_EN: DsfrI18nBaseBundle;

declare const LABELS_BUNDLE_FR: DsfrI18nBaseBundle;

/**
 * Expose les paramètres de configuration de la fonction deepMerge.
 */
interface DsfrI18nMergeOptions {
    conflictStrategy?: 'keep' | 'replace' | 'error';
}
/**
 * Fusionne récursivement deux objets sans perte de propriétés.
 *
 * ⚠️ Contrairement au spread operator `{ ...a, ...b }` :
 * - Le spread réalise une fusion **superficielle** (shallow merge) :
 *   si une propriété est elle-même un objet, elle sera complètement écrasée
 *   par celle du second objet, entraînant la perte de ses sous-propriétés.
 * - Cette fonction `deepMerge` effectue une fusion **profonde** (deep merge) :
 *   les sous-objets sont parcourus récursivement et leurs propriétés sont fusionnées,
 *   de sorte que les propriétés existantes sont conservées sauf si elles sont
 *   explicitement remplacées par `toMerge`.
 *
 *  Exemple :
 *
 *  ```ts
 *  const o1 = { a: { b: 'toto', c: 'tutu' } };
 *  const o2 = { a: { b: 'tata' } };
 *  ```
 *
 *  si on procède avec le _spread operator_ :
 *
 *  ```ts
 *  const o3 = { ...o1, ...o2 };
 *  ```
 *
 *  alors `o3` contiendra en sortie `{ a: { b: 'tata' } }` la propriété `c` aura été supprimée
 *
 *  en utilisant la méthode `deepMerge` :
 *
 *  ```ts
 *  const o3 = deepMerge(o1, o2);
 *  ```
 *
 *  alors `o3` contiendra en sortie `{ a: { b: 'tata', c: 'tutu' } }` la propriété `c` aura été préservée.
 *
 * @param reference l'objet de référence
 * @param toMerge l'objet à fusionner
 * @returns une nouvelle référence vers l'objet résultant de la fusion
 */
declare function i18nDeepMerge(reference: DsfrI18nBundle, toMerge: DsfrI18nRecord, options?: DsfrI18nMergeOptions): DsfrI18nBundle;

declare class ConfigService {
    readonly params: DsfrConfig | null;
    /**
     * Puisqu'il est possible que les utilisateurs de la bibliothèque oublient d'appeler forRoot(), nous marquons
     * le jeton DI comme optionnel à l'aide du décorateur intégré (pour éviter une erreur "Aucun fournisseur pour ...").
     * Dans ces cas, le paramètre constructeur sera nul, mais nous fournirons des valeurs par défaut.
     */
    constructor(params: DsfrConfig | null);
    static ɵfac: i0.ɵɵFactoryDeclaration<ConfigService, [{ optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ConfigService>;
}

/** Levels used for identifying the severity of an event. Levels are organized from most specific to least. */
declare enum DsfrLogLevel {
    OFF = 0,// No events will be logged.
    ERROR = 2,// An error in the application, possibly recoverable.
    WARN = 3,// An event that might possible lead to an error.
    INFO = 4,// An event for informational purposes.
    DEBUG = 5,// A general debugging event.
    ALL = 7
}
declare class LoggerService {
    /** Indique à partir de quel niveau on effectue la journalisation, WARN par défaut. */
    private _level;
    constructor();
    set level(value: DsfrLogLevel);
    error(message: string): void;
    warn(message: string): void;
    info(message: string): void;
    debug(message: string): void;
    private log;
    private levelAsString;
    static ɵfac: i0.ɵɵFactoryDeclaration<LoggerService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<LoggerService>;
}

/**
 * Le service est chargé de maintenir le code langue de l'application et de signaler le changement de langue aux observateurs.
 */
declare class LangService {
    private logger;
    private static readonly DEF_LANG;
    /** Observable changement de la langue. */
    langChange$: Observable<string>;
    private langChange;
    /** Par défaut, le code de la langue est stocké dans le localStorage.  */
    private hasLocalStorage;
    /** Nom par défaut du local storage. */
    private localStorageName;
    constructor(logger: LoggerService);
    get lang(): string;
    set lang(code: string);
    static ɵfac: i0.ɵɵFactoryDeclaration<LangService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<LangService>;
}

declare enum Language {
    FR = "fr",
    EN = "en"
}

/**
 * Maintient le code langue de l'application et signale le changement de langue.
 */
declare class DsfrI18nService {
    private readonly logger;
    private readonly langService;
    completeLangChange$: Observable<string>;
    private completeLangChange;
    /**
     * L'ensemble des bundles de libellés gérés par le service I18N.
     */
    private bundles;
    /**
     * Messages (JSON) de la langue courante.
     */
    private currentBundle;
    constructor(config: DsfrConfig, logger: LoggerService, langService: LangService);
    /**
     * Retourne la valeur de traduction dans `messages` partir d'un path json.
     * @param jsonPath le chemin dans le fichier de messages json de la langue courante
     * @return le message et si non trouvé le path json
     */
    t(jsonPath: string): string;
    /**
     * Permet d'étendre les ressources d'internationalisation sur un périmètre de langue défini.
     *
     * @param lang Le code langue sur deux caractères en minuscules.
     * @param extension Le bundle contenant l'ensemble des libellés traduits dans la langue indiquée.
     */
    extendsLabelsBundle(lang: string, extension: DsfrI18nExtensionBundle): void;
    /**
     * Charge le bon fichier de messages selon le code langue, messages en anglais si non trouvé.
     */
    protected onLangChange(code: string): void;
    /**
     * Si message non trouvé, retourne le message en anglais pour les langues autres que les langues par défaut.
     */
    protected messageNotFound(codeLang: string, jsonPath: string): string;
    private processI18nConfig;
    /**
     * Lit tous les fichiers de la configuration
     * @param i18nconfig Configuration i18n
     * @return événement complet sur l'observable quand tous les fichiers ont été lus, erreur ou non
     */
    private readMessagesFiles;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrI18nService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DsfrI18nService>;
}

/**
 * Ce modèle permet de configurer le service i18n.
 */
interface DsfrI18nConfig {
    /**
     * Propriété permettant de configurer les chemins (paths)  de récupération (via fetch http) des fichiers de
     * traduction qui seront ensuite utilisés par le service i18n.
     *
     * @deprecated (since 1.16) Utiliser la propriété labelsBundles à la place
     */
    messagesFiles?: {
        code: string;
        filePath: string;
    }[];
    /**
     * Propriété permettant de fournir directement les bundles d'internationalisation.
     *
     * En clé le code lang sur deux caractères en minuscules, en valeur un objet JSON contenant les libellés.
     */
    labelsBundles?: {
        [key: string]: DsfrI18nBundle;
    };
}

interface DsfrLogConfig {
    level?: DsfrLogLevel;
}

/**
 * Ce modèle permet de configurer la librairie dans la méthode `DsfrConfigModule.forStatic()`.
 */
interface DsfrConfig {
    /** Permet de renseigner globalement le chemin vers le répertoire exposant les pictogrammes illustratifs DSFR. */
    artworkDirPath?: string;
    /** Permet d'ajouter ou de remplacer un fichier de traduction. */
    i18n?: DsfrI18nConfig;
    /** Permet de préciser le niveau de log. */
    log?: DsfrLogConfig;
}

declare const DSFR_CONFIG_TOKEN: InjectionToken<DsfrConfig>;

declare class DsfrConfigModule {
    static forRoot(config: DsfrConfig): ModuleWithProviders<DsfrConfigModule>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrConfigModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrConfigModule, never, [typeof i1.CommonModule], never>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrConfigModule>;
}

/**
 * Désactiver le lien du routerLink
 * Cas particulier des entrées de menu : profiter de la directive routerLink mais ne pas effectuer la navigation
 * Le preventDefault classique non fonctionnel sur les routerLink
 */
declare class DsfrDisableRouterLinkDirective {
    disableNavigation: boolean;
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDisableRouterLinkDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrDisableRouterLinkDirective, "button[routerLink][disableNavigation]", never, { "disableNavigation": { "alias": "disableNavigation"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_disableNavigation: unknown;
}

/**
 * @since 0.7
 */
declare class DateUtils {
    private constructor();
    /**
     * Transforme un string représentant une date au format `'dd/mm/yyyy'` en objet `Date`.
     * Le siècle peut-être sur 2 digits, dans ce cas, cela correspond à `'19yy'`.
     * @returns Date ou undefined
     */
    static parseDateFr(dateStr: string): Date | undefined;
    /**
     * Transforme un string représentant une date au format ISO 8601 en objet `Date`.
     * @returns Date ou undefined
     */
    static parseDateIso(dateStr: string, withHours?: boolean): Date | undefined;
    /**
     * Retourne une Date UTC, sans heure, minute seconde, à partir d'une date
     * @param date
     */
    static date2Utc(date: Date, withHours?: boolean): Date;
    /**
     * Retourne une Date UTC, sans heure, minute seconde, selon plusieurs formats en entrée
     * @param value
     */
    static dateUtcOf(value: Date | string | number | undefined | null): Date | undefined;
    /**
     * Retourne une Date UTC, sans minute et seconde, selon plusieurs formats en entrée
     * @param value
     */
    static dateUtcOfWithHours(value: Date | string | number | undefined | null): Date | undefined;
    static isTwoDigitsYear(year: number): boolean;
    /**
     * Permet de créer une date avec un année contenant seulement un ou deux digits (i.e: année 27)
     *
     * @param year Année, possiblement négative.
     * @param month Mois
     * @param day Jour
     * @param hour Heure
     * @param needsOffsetting Défini si la date créée à besoin d'être basculée à minuit, heure locale
     * @returns La date correspondant aux paramètres d'entrée
     */
    static createDate(year: number, month: number, day: number, hour?: number, needsOffsetting?: boolean): Date;
    private static parseDate;
    private static numberToDateUtc;
}

declare class DomUtils {
    private constructor();
    static surroundElementsWithLi(container: ElementRef<any>, elements: readonly ElementRef<any>[]): void;
    static surroundNativeElementsWithLi(container: ElementRef<any>, elements: readonly Element[]): void;
    private static removeEmptyLi;
    private static insertNodeInLi;
}

/**
 * Construit le libellé de détail dans un composant de téléchargement lorsque ce libellé n'est pas fourni par le Dsfr
 * @param mimeType Type mime du fichier
 * @param sizeBytes Nombre d'octets
 * @param sizeUnit Unité utilisée dans la restitution
 * @return par exemple 'PDF - 10 octets'
 */
declare function downloadDetail(mimeType: string | undefined, sizeBytes: number | undefined, sizeUnit: DsfrFileSizeUnit): string;
/**
 * Retourne la taille sous forme de string sous forme de 'nombre unité'
 * @param bytes Taille à transformer exprimée en octets
 * @param sizeUnit Si true, l'unité sera en bytes (KB, MB, ... ) sinon en octets (ko, mo, ...)
 */
declare function fileSizeToString(bytes: number, sizeUnit?: DsfrFileSizeUnit): string;
declare enum DsfrFileSizeUnitConst {
    BYTES = "bytes",
    OCTETS = "octets"
}
type DsfrFileSizeUnit = `${DsfrFileSizeUnitConst}`;

/**
 * https://www.w3resource.com/JSON/JSONPath-with-JavaScript.php
 * @param obj : object|array This parameter represents the Object representing the JSON structure.
 * @param path : string This parameter represents JSONPath expression string.
 * @return une valeur extrait de l'objet Json ou undefined si le path est erroné
 */
declare function jsonPath2Value(obj: any, path: string): any;

/**
 * Les méthodes statiques de cette classe permettent de gérer le local storage uniquement si le code s'exécute côté browser.
 */
declare abstract class LocalStorage {
    /**
     * The setItem() method of the Storage interface, when passed a key name and value, will add that key to the given
     * Storage object, or update that key's value if it already exists.
     */
    static set(key: string, value: string): void;
    /**
     * The getItem() method of the Storage interface, when passed a key name, will return that key's value, or null if
     * he key does not exist, in the given Storage object.
     * @return Signature identique à l'interface Storage.getItem(key: string): string | null
     */
    static get(key: string): string | null;
    /**
     * The removeItem() method of the Storage interface, when passed a key name, will remove that key from the given
     * Storage object if it exists. The Storage interface of the Web Storage API  provides access to a
     * particular domain's session or local storage.
     */
    static remove(key: string): void;
}

/**
 * La fonction permet de savoir si le code en cours s'exécute côté serveur ou côté browser.
 */
declare function isOnBrowser(): boolean;

declare enum StorageEnum {
    SCHEME = "scheme",// display type
    REMEMBER_ME = "rememberMe",
    LOGIN = "login"
}

/**
 * Retourne vrai si la string 's' est null, undefined ou vide.
 * @param s la chaïne à considére
 */
declare function isStringEmptyOrNull(s: string | null | undefined): boolean;

declare function toArray(value: string | string[] | undefined): string[];

/**
 * Fournit un identifiant unique de type string basé, actuellement, sur uuidv4.
 */
declare function newUniqueId(): string;

declare class DsfrAccordionComponent implements OnInit, AfterViewInit, OnDestroy {
    /**
     * Contenu de l'accordéon, texte simple. Prioritaire sur le slot par défaut.
     */
    content?: string;
    /**
     * Indique si l'accordéon doit être ouvert initialement.
     */
    expanded: boolean;
    /**
     * Le titre de l'accordéon est du texte simple. Utiliser le slot [heading] sinon.
     */
    heading?: string;
    /**
     * Le niveau du titre dans la structure, ne change pas l'apparence, `<h3>` par défaut.
     */
    headingLevel: DsfrHeadingLevel;
    /**
     * Index qui identifie l'accordéon sur la page. Identifiant unique généré par défaut.
     *
     * @deprecated (since 1.8.0) jamais utilisé
     */
    index?: string;
    /**
     * Attribut d'accessibilité pour l'entête de l'accordéon.
     */
    headingAriaLabel?: string;
    /**
     * Événement présentant le nouvel état de l'accordéon.
     */
    expandedChange: EventEmitter<boolean>;
    /** @internal */
    accordion: ElementRef;
    /** @internal */
    accordionId: string | undefined;
    private _unlisten;
    private readonly renderer2;
    ngOnInit(): void;
    /**
     * Ecouter les events scripts dsfr conceal/disclose sur l'accordéon
     */
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrAccordionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrAccordionComponent, "dsfr-accordion", never, { "content": { "alias": "content"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "index": { "alias": "index"; "required": false; }; "headingAriaLabel": { "alias": "headingAriaLabel"; "required": false; }; }, { "expandedChange": "expandedChange"; }, never, ["*", "[content]", "[body]", "[heading]"], true, never>;
}

declare class DsfrAccordionModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrAccordionModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrAccordionModule, never, [typeof i1.CommonModule, typeof HeadingComponent, typeof DsfrAccordionComponent], [typeof DsfrAccordionComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrAccordionModule>;
}

declare class DsfrAccordionsGroupComponent {
    /** Dissocie le groupe d'accordéon pour en avoir plusieurs d'ouvert à la fois.*/
    ungroup: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrAccordionsGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrAccordionsGroupComponent, "dsfr-accordions-group", never, { "ungroup": { "alias": "ungroup"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DsfrAccordionsGroupModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrAccordionsGroupModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrAccordionsGroupModule, never, [typeof i1.CommonModule, typeof DsfrAccordionsGroupComponent], [typeof DsfrAccordionsGroupComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrAccordionsGroupModule>;
}

/**
 * Définit les tailles d'alerte supportées par le DSFR.
 */
declare enum DsfrAlertSizeConst {
    /**
     * A utiliser pour une alerte de taille réduite.
     */
    SM = "SM",
    /**
     * A utiliser pour une alerte de taille standard (par défaut).
     */
    MD = "MD"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrAlertSizeConst}.
 */
type DsfrAlertSize = `${DsfrAlertSizeConst}`;

declare class DsfrAlertComponent implements AfterViewInit {
    /** Le titre de l'alerte. Peut être remplacé par le slot par défaut. */
    heading?: string;
    /** Le niveau de titre devant être utilisé, une balise <p> sera utilisée si la propriété n'est pas renseignée. */
    headingLevel?: DsfrHeadingLevel;
    /** Le corps du message de l'alerte (texte simple). Pour utiliser du HTML utilisez le slot `message` à la place. */
    message?: string;
    /** Le niveau d'alerte. 'info' par défaut. */
    severity: DsfrSeverity;
    /** La valeur à utiliser pour le rôle ARIA. 'alert' par défaut. */
    ariaRoleValue: 'alert' | 'status';
    /**
     * La taille de l'alerte. 'MD' par défaut.
     */
    alertSize: DsfrAlertSize;
    /** Le libellé associé au bouton de fermeture de l'alerte. */
    closeControlLabel?: string;
    /** Doit être vrai si l'alerte apparait dynamiquement en cours de navigation. (ajout de role=alert pour l'accessibilité),
     *  false par défaut */
    hasAriaRole: boolean;
    /** L'alerte peut être masquée */
    closeable: boolean;
    /** Signale la fermeture de l'alerte. */
    conceal: EventEmitter<void>;
    protected containerSlotHeading: i0.Signal<ElementRef<any> | undefined>;
    protected isNgContentEmpty: i0.WritableSignal<boolean>;
    private readonly el;
    private readonly renderer;
    constructor();
    /**
     * La taille de l'alerte. 'MD' par défaut.
     *
     * @deprecated since(1.15.0) utiliser 'alertSize' à la place
     */
    get size(): DsfrAlertSize;
    /** @deprecated (since 1.7.0) use 'closeable' instead (avec un 'e') */
    get closable(): boolean;
    /**
     * La taille de l'alerte. 'MD' par défaut.
     *
     * @deprecated since(1.15.0) utiliser 'alertSize' à la place
     */
    set size(value: DsfrAlertSize);
    /** @deprecated (since 1.7.0) utiliser `closeable` à la place (avec un 'e') */
    set closable(value: boolean);
    /**
     * Supprimer le container <p> du titre si le contenu projeté heading est vide
     * ok a l'initialisation la balise sera bien supprimé.
     * mais si du contenu est ajouté dynamiquement dans le slot du heading alors qu'il est vide a l'init, le heading ne
     * sera pas projeté. Solution temporaire pour ce cas précis : initialiser avec une valeur vide type <span></span>
     *  */
    ngAfterViewInit(): void;
    protected getClasses(): Record<string, boolean>;
    protected isSmall(): boolean;
    protected onClose(event: Event): void;
    /**
     * Test si le container doit être affiché (contenu visible)
     * @returns true si le container possède au moins un noeuf enfant ou du contenu de texte (exclure les commentaires et chaine vide)
     */
    private hasContent;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrAlertComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrAlertComponent, "dsfr-alert", never, { "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "message": { "alias": "message"; "required": false; }; "severity": { "alias": "severity"; "required": false; }; "ariaRoleValue": { "alias": "ariaRoleValue"; "required": false; }; "alertSize": { "alias": "alertSize"; "required": false; }; "closeControlLabel": { "alias": "closeControlLabel"; "required": false; }; "hasAriaRole": { "alias": "hasAriaRole"; "required": false; }; "closeable": { "alias": "closeable"; "required": false; }; "size": { "alias": "size"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; }, { "conceal": "conceal"; }, never, ["[message]", "*"], true, never>;
}

declare class DsfrAlertModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrAlertModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrAlertModule, never, [typeof i1.CommonModule, typeof DsfrI18nPipe, typeof DsfrAlertComponent], [typeof DsfrAlertComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrAlertModule>;
}

declare class DsfrBackToTopComponent {
    buttonMode: i0.InputSignalWithTransform<boolean, unknown>;
    /** Identifiant de l'élément cible en  haut de page, par défaut "top" */
    targetId: i0.InputSignal<string>;
    private readonly scrollBehavior;
    private readonly platformId;
    constructor();
    protected scrollToTop(): void;
    /**
     * Scroll vers l'élément dont l'id correspond à targetId.
     * Simule le même comportement que si on avait placé l'ancre #targetId dans l'url.
     * Sans agir sur la navigation (pas de modification de l'historique)
     * @param targetId Id de l'élément ciblé par le scroll.
     */
    private scrollToElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrBackToTopComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrBackToTopComponent, "dsfr-backtotop", never, { "buttonMode": { "alias": "buttonMode"; "required": false; "isSignal": true; }; "targetId": { "alias": "targetId"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class DsfrBackToTopModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrBackToTopModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrBackToTopModule, never, [typeof i1.CommonModule, typeof DsfrLinkComponent, typeof DsfrI18nPipe, typeof DsfrBackToTopComponent], [typeof DsfrBackToTopComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrBackToTopModule>;
}

declare class DsfrBadgesGroupComponent {
    /**
     * Les badges du groupe.
     */
    badges: DsfrBadge[];
    /**
     * Taille des badges.
     *
     * @since 1.9.0
     */
    small: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrBadgesGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrBadgesGroupComponent, "dsfr-badges-group", never, { "badges": { "alias": "badges"; "required": false; }; "small": { "alias": "small"; "required": false; }; }, {}, never, never, true, never>;
}

declare class DsfrBadgesGroupModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrBadgesGroupModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrBadgesGroupModule, never, [typeof i1.CommonModule, typeof DsfrBadgeComponent, typeof DsfrBadgesGroupComponent], [typeof DsfrBadgesGroupComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrBadgesGroupModule>;
}

declare class DsfrBreadcrumbComponent {
    /** Tableau d'item du fil d'Ariane. */
    items: DsfrLink[];
    /** Attribut aria-label de la balise `nav` du fil d'Ariane. */
    ariaLabel?: string;
    /** Confirmation du clic sur le bouton. */
    linkSelect: EventEmitter<DsfrLink>;
    /** @internal */
    constructor();
    /** @internal */
    onItem(item: DsfrLink): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrBreadcrumbComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrBreadcrumbComponent, "dsfr-breadcrumb", never, { "items": { "alias": "items"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, { "linkSelect": "linkSelect"; }, never, never, true, never>;
}

declare class ItemLinkComponent extends DsfrLinkComponent {
    defaultIconPosition: DsfrPosition | undefined;
    /**@internal */
    private _item;
    /**@internal */
    get item(): DsfrLink | undefined;
    /**
     * Optionnel, utilisation avec un model DsfrLink (exclusif avec les autres propriétés).
     *
     * @since 1.7
     */
    set item(value: DsfrLink | undefined);
    static ɵfac: i0.ɵɵFactoryDeclaration<ItemLinkComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ItemLinkComponent, "edu-item-link", never, { "defaultIconPosition": { "alias": "defaultIconPosition"; "required": false; }; "item": { "alias": "item"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DsfrBreadcrumbModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrBreadcrumbModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrBreadcrumbModule, never, [typeof i1.CommonModule, typeof ItemLinkComponent, typeof DsfrI18nPipe, typeof DsfrBreadcrumbComponent], [typeof DsfrBreadcrumbComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrBreadcrumbModule>;
}

declare class DsfrButtonComponent implements DsfrButton, OnInit {
    /** Libellé du bouton.
     *
     * Dans le cas d'une utilisation pour une icône seule ne pas renseigner `label`. Renseigner soit `aria-label` soit `tooltipMessage`.
     */
    label?: string;
    /** Type du button, `button` par défaut. */
    type: DsfrButtonType;
    /**
     * Message du `tooltip` (attribut `title` du bouton).
     */
    tooltipMessage?: string;
    /** Style du bouton, `primary` par défaut. */
    variant: DsfrButtonVariant;
    /**
     * Taille du bouton, `MD` par défaut
     */
    buttonSize: DsfrSize;
    /** Nom de l'icône. */
    icon?: string;
    /** Position de l'icône, à gauche par défaut. */
    iconPosition?: DsfrPosition;
    /** Permet de désactiver le bouton d'action, `false` par défaut. */
    disabled: boolean;
    /**
     * Permet de passer le libellé du bouton en majuscules, 'false' par défaut.
     *
     * @deprecated (since 1.1.0)
     *
     * @internal
     */
    uppercase: boolean;
    /**
     * Permet d'activer un visuel dénotant un "chargement" (busy), 'false' par défaut.
     *
     * @deprecated (since 1.1.0)
     *
     * @internal
     */
    loader: boolean;
    /** 👓 Spécifie le libellé qui sera retranscrit par les narrateurs d'écran. */
    ariaLabel?: string;
    /** Permet d'inverser le contraste du marqueur de focus, `false` par défaut. */
    invertedOutlineContrast: boolean;
    /**
     * Identifiant de l'élément `<button>`
     *
     * @deprecated (since 1.14.0) utiliser buttonId
     */
    id?: string;
    /**
     * Identifiant de l'élément `<button>`
     */
    buttonId: string;
    /**
     * 👓 `ariaControls` est utilisé pour la manipulation d'une modale par exemple.
     * (prise en charge du retour de focus à la fermeture de la modale).
     */
    ariaControls?: string;
    /**
     * 👓 Spécifie l'attribut `aria-pressed` pour indiquer un état (toggle)
     */
    ariaPressed?: string;
    /**
     * 👓 Spécifie l'attribut `aria-haspopup` en cas d'ouverture de popup
     */
    ariaHasPopup?: string;
    /**
     * 👓 Spécifie l'attribut `aria-expanded`
     */
    ariaExpanded?: boolean;
    /**
     * 👓 Spécifie l'attribut `aria-hidden`
     *
     * Attention: veillez à valoriser l'input `tabIndex` à `-1` si vous valorisez `ariaHidden` à `true`
     */
    ariaHidden?: boolean;
    /**
     * 👓 Spécifie l'attribut `tabindex` pour la gestion du focus
     */
    tabIndex?: number;
    /**
     * Style personnalisé
     * @since 1.3.0
     */
    customClass?: string;
    /**
     * Permet de définir le role donné à l'élément `button`
     * @since 1.15.0
     */
    buttonRole: string;
    /**
     * Permet de masquer visuellement le libellé en le laissant accessible aux dispositifs d'assistance.
     *
     * A utiliser pour les boutons avec icône seule.
     *
     * @since 1.15.0
     */
    labelSrOnly: boolean;
    private readonly logger;
    /**
     * Taille du bouton, `MD` par défaut
     *
     * @deprecated since(1.15.0) utiliser 'buttonSize' à la place
     */
    get size(): DsfrSize;
    /**
     * Taille du bouton, `MD` par défaut
     *
     * @deprecated since(1.15.0) utiliser 'buttonSize' à la place
     */
    set size(value: DsfrSize);
    ngOnInit(): void;
    protected buttonClasses(): Record<string, boolean>;
    protected customClasses(): string;
    /**
     * Empêche que l'appuie sur la barre Espace soit considéré comme un clic si le rôle du button est 'link'
     */
    protected handleSpaceKeyClick(evt: Event): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrButtonComponent, "dsfr-button", never, { "label": { "alias": "label"; "required": false; }; "type": { "alias": "type"; "required": false; }; "tooltipMessage": { "alias": "tooltipMessage"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "buttonSize": { "alias": "buttonSize"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "uppercase": { "alias": "uppercase"; "required": false; }; "loader": { "alias": "loader"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "invertedOutlineContrast": { "alias": "invertedOutlineContrast"; "required": false; }; "id": { "alias": "id"; "required": false; }; "buttonId": { "alias": "buttonId"; "required": false; }; "ariaControls": { "alias": "ariaControls"; "required": false; }; "ariaPressed": { "alias": "ariaPressed"; "required": false; }; "ariaHasPopup": { "alias": "ariaHasPopup"; "required": false; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; }; "ariaHidden": { "alias": "ariaHidden"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "buttonRole": { "alias": "buttonRole"; "required": false; }; "labelSrOnly": { "alias": "labelSrOnly"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_ariaExpanded: unknown;
    static ngAcceptInputType_ariaHidden: unknown;
    static ngAcceptInputType_labelSrOnly: unknown;
}

declare class DsfrButtonModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrButtonModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrButtonModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrButtonComponent], [typeof DsfrButtonComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrButtonModule>;
}

/**
 * Définit les modes d'alignement supportés par le composant `dsfr-buttons-group`.
 */
declare enum DsfrAlignConst {
    /**
     *  Aligne les boutons sur la gauche.
     */
    DEFAULT = "default",
    /**
     * Aligne les boutons sur la droite.
     */
    RIGHT = "right",
    /**
     * Les boutons ont les mêmes espacements entre eux.
     */
    BETWEEN = "between",
    /**
     * Aligne les boutons au centre du conteneur.
     */
    CENTER = "center",
    /**
     * Combine un alignement à droite avec une inversion du sens des boutons de droite à gauche.
     */
    REVERSE = "reverse"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrAlignConst}.
 */
type DsfrAlign = `${DsfrAlignConst}`;
declare enum DsfrInlineConst {
    /**
     * Mode vertical (par défaut).
     */
    NEVER = "never",
    /**
     * Toujours en mode horizontal.
     */
    ALWAYS = "always",
    /**
     * Mode horizontal à partir du point de rupture SM (576px).
     */
    FROM_SM = "SM",
    /**
     * Mode horizontal à partir du point de rupture MD 576px.
     */
    FROM_MD = "MD",
    /**
     * Mode horizontal à partir du point de rupture LG ().
     */
    FROM_LG = "LG"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrInlineConst}.
 */
type DsfrInline = `${DsfrInlineConst}`;
/**
 * Définit lees différents balisages HTML supportés par le groupe de boutons.
 */
declare enum DsfrButtonsGroupMarkupConst {
    /**
     * Pour obtenir un conteneur `<DIV>`.
     */
    DIV = "div",
    /**
     * Pour obtenir un conteneur `<UL>` (par défault).
     */
    UL = "ul"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrButtonsGroupMarkupConst}.
 */
type DsfrButtonsGroupMarkup = `${DsfrButtonsGroupMarkupConst}`;

declare class DsfrButtonsGroupComponent {
    /**
     * Permet de basculer la disposition des boutons en mode horizontal.
     * En mode vertical, mode par défaut, les boutons prennent 100% de la largeur du conteneur.
     */
    inline: DsfrInline;
    /**
     * Placement des boutons en mode `inline` :
     * - `default` : aligne les boutons sur la gauche.
     * - `right` : aligne les boutons sur la droite
     * - `between` : les boutons ont les mêmes espacements ente eux.
     * - `center` : aligne les boutons au centre du conteneur.
     * - `reverse` : les boutons se lisent de droite à gauche (implique nécessairement un placement à droite).
     *
     * 📌 N'a aucun effet en mode vertical.
     */
    alignment: DsfrAlign;
    /**
     * Permet de mettre automatiquement tous les boutons d’un groupe à la même largeur.
     * Cela permet une uniformité des boutons en mode horizontal.
     * (en mode vertical, les boutons prennent 100% de la largeur du conteneur)
     * Cette option peut être combinée avec la propriété d'alignement.
     */
    equisized: boolean;
    /**
     * Taille des boutons du groupe.
     */
    buttonGroupSize: DsfrSize;
    /**
     * Type de balise HTML pour la liste du groupe de boutons.
     *
     * 📌 Cette propriété ne doit pas être modifiée post-initialisation (i.e. dynamiquement).
     */
    groupMarkup: DsfrButtonsGroupMarkup;
    protected readonly DsfrButtonsGroupMarkup: typeof DsfrButtonsGroupMarkupConst;
    private buttonsElements;
    private buttons;
    private _iconPosition;
    private readonly _elementRef;
    constructor();
    /**
     * Taille des boutons du groupe.
     *
     * @deprecated since(1.15.0) utiliser 'buttonGroupSize' à la place
     */
    get size(): DsfrSize;
    get iconPosition(): DsfrPosition | undefined;
    /**
     * Taille des boutons du groupe.
     *
     * @deprecated since(1.15.0) utiliser 'buttonGroupSize' à la place
     */
    set size(value: DsfrSize);
    /**
     * Positionnement (gauche ou droite) au niveau du groupe des icônes dans les boutons qui
     * contiennent à la fois une icône et un label.
     */
    set iconPosition(value: DsfrPosition);
    /**
     * Cette méthode calcule les styles du composant en évitant les magic strings.
     */
    protected getClasses(): string[];
    private surroundButtonsWithLi;
    /** On force la position des icônes des boutons. */
    private updateButtonsIconPosition;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrButtonsGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrButtonsGroupComponent, "dsfr-buttons-group", never, { "inline": { "alias": "inline"; "required": false; }; "alignment": { "alias": "alignment"; "required": false; }; "equisized": { "alias": "equisized"; "required": false; }; "buttonGroupSize": { "alias": "buttonGroupSize"; "required": false; }; "groupMarkup": { "alias": "groupMarkup"; "required": false; }; "size": { "alias": "size"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; }, {}, ["buttonsElements", "buttons"], ["*"], true, never>;
    static ngAcceptInputType_equisized: unknown;
}

declare class DsfrButtonsGroupModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrButtonsGroupModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrButtonsGroupModule, never, [typeof i1.CommonModule, typeof DsfrButtonsGroupComponent], [typeof DsfrButtonsGroupComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrButtonsGroupModule>;
}

/**
 * Définit lees différents balisages HTML supportés par la description du callout.
 */
declare enum DsfrCalloutDescMarkupConst {
    /**
     * Pour obtenir un conteneur `<DIV>`.
     */
    DIV = "div",
    /**
     * Pour obtenir un conteneur `<P>` par défault.
     */
    P = "p"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrCalloutDescMarkupConst}.
 */
type DsfrCalloutDescMarkup = `${DsfrCalloutDescMarkupConst}`;

declare class DsfrCalloutComponent {
    /**
     * Titre du call out. Si inexistant, pas de balise titre.
     */
    heading?: string;
    /**
     * Le niveau de titre devant être utilisé.
     * Valeurs supportées : H2, H3, H4, H5, H6 ou P si vous ne souhaitez pas positionner un titre de section.
     */
    headingLevel: DsfrHeadingLevel;
    /**
     * Indique la classe d'icône à utiliser en haut à gauche. Ex. `fr-icon-information-line`.
     */
    icon?: string;
    /**
     * Permet de personnaliser la couleur du tag. Il faut donner la class exact (ex : fr-callout--green-emeraude) que vous trouverez
     * [ici](https://www.systeme-de-design.gouv.fr/version-courante/fr/fondamentaux/couleurs-palette#couleurs-illustratives)
     *  */
    customClass?: string;
    /**
     * Type de balise HTML pour le conteneur de la description.
     */
    descriptionMarkup: DsfrCalloutDescMarkup;
    protected readonly DsfrCalloutDescMarkup: typeof DsfrCalloutDescMarkupConst;
    /**
     * Détermine la liste des classes CSS à positioner sur le parent.
     * @returns un tableau de classes CSS
     *
     * @internal
     */
    getClasses(): string[];
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrCalloutComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrCalloutComponent, "dsfr-callout", never, { "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "descriptionMarkup": { "alias": "descriptionMarkup"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DsfrCalloutModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrCalloutModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrCalloutModule, never, [typeof i1.CommonModule, typeof DsfrCalloutComponent], [typeof DsfrCalloutComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrCalloutModule>;
}

/**
 * @deprecated (since 1.5.0) use {@link DsfrPanelBackgroundConst} instead
 */
declare enum DsfrCardBackgroundConst {
    DEFAULT = "default",
    GREY = "grey",
    TRANSPARENT = "transparent"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrCardBackgroundConst}.
 *
 * @deprecated (since 1.5.0) use {@link DsfrPanelBackground} instead
 */
type DsfrCardBackground = `${DsfrCardBackgroundConst}`;
/**
 * @deprecated (since 1.5.0) use {@link DsfrPanelBorderConst} instead
 */
declare enum DsfrCardBorderConst {
    DEFAULT = "default",
    NO_BORDER = "no-border",
    SHADOW = "shadow"
}
/**
 * @deprecated (since 1.5.0) use {@link DsfrPanelBorder} instead
 */
type DsfrCardBorder = `${DsfrCardBorderConst}`;
/**
 * Définit les différentes façons dont l'image doit s'adapter à son conteneur.
 */
declare enum DsfrImageFitConst {
    FILL = "fill",
    CONTAIN = "contain",
    COVER = "cover",
    NONE = "none",
    SCALE_DOWN = "scale-down"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrImageFitConst}.
 */
type DsfrImageFit = `${DsfrImageFitConst}`;
/**
 * Définit les différents ratios supportés par le DSFR pour l'illustration d'un composant `Card`.
 */
declare enum DsfrImageRatioConst {
    /**
     * Ratio largeur sur hauteur de 32 neuvièmes.
     */
    RATIO_32_9 = "16:9/2",
    /**
     * Ratio largeur sur hauteur de 16 neuvièmes.
     */
    RATIO_16_9 = "16:9",
    /**
     * Ratio largeur sur hauteur de trois à deux.
     */
    RATIO_3_2 = "3:2",
    /**
     * Ratio largeur sur hauteur de quatre tiers.
     */
    RATIO_4_3 = "4:3",
    /**
     * Ratio largeur sur hauteur de un pour un (largeur égale à la hauteur).
     */
    RATIO_1_1 = "1:1",
    /**
     * Ratio largeur sur hauteur de trois quarts.
     */
    RATIO_3_4 = "3:4",
    /**
     * Ratio largeur sur hauteur de deux tiers.
     */
    RATIO_2_3 = "2:3"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrImageRatioConst}.
 */
type DsfrImageRatio = `${DsfrImageRatioConst}`;
/**
 * Définit les différents formats d'image supportés par le DSFR en illustration d'un composant `Card`.
 */
declare enum DsfrImageTypeConst {
    /**
     * Pour une balise `<img>`.
     */
    IMG = "img",
    /**
     * Pour une balise `<svg>`.
     */
    SVG = "svg"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrImageTypeConst}.
 */
type DsfrImageType = `${DsfrImageTypeConst}`;

declare enum DsfrProportionConst {
    TIER = "1tier/2tier",
    DEFAULT = "40%/60%",
    HALF = "moiti\u00E9/moiti\u00E9"
}
declare class DsfrCardComponent extends BasePanelComponent {
    badgesOnMedia: boolean;
    /**
     * Le détail, optionnel.
     */
    detail?: string;
    /** Icône de la zone de détail, optionnel. */
    detailIcon?: string;
    /** Icône devant le détail situé au bas de la carte, optionnel. */
    detailBottomIcon?: string;
    /**
     * Zone d'actions, composée de bouton ou de liens, optionnelle (mais incompatible avec la
     * deuxième zone de détail). Si activée elle affiche le slot avec sélecteur `footer`
     */
    hasFooter: boolean;
    /** Texte alternatif d'une image à utiliser uniquement si l'image à une information à passer. */
    imageAlt: string;
    /**
     * Selon la valeur utilisée pour 'imageFit', l'élément peut être rogné, mis à l'échelle ou étiré, afin de remplir
     * la boîte qui le contient.
     */
    imageFit?: DsfrImageFit;
    /** Url de l'image de l'entête, optionnel. */
    imagePath?: string;
    /** Ratio de l'image. */
    imageRatio?: DsfrImageRatio;
    /** En mode horizontal: proportion de l'image par rapport au contenu en horizontal (par défaut: 40%/60%). */
    horizontalProportion: DsfrProportionConst;
    /**
     * Supprime l'icône du lien.
     *
     * @since 1.12
     */
    noIcon: boolean;
    /**
     * Type d'illustration
     * - `img` : pour l'utilisation d'une balise '<img>'.
     * - `svg` : pour l'utilisation de '<edu-svg-icon>'.
     * Si c'est le cas, `@ImagePath` devient le path du fichier `sprite.svg` et la concaténation de l'id du svg à afficher.
     */
    imageType: DsfrImageType;
    /** Remplace le lien du bouton de download par un markup de bouton */
    isDownloadButton: boolean;
    /** Signale quand la carte est sélectionnée. */
    readonly cardSelect: EventEmitter<string>;
    /** Template optionnel de la description. Remplace description.  */
    descriptionTemplate?: TemplateRef<void>;
    protected readonly i18n: DsfrI18nService;
    /** @internal */
    protected readonly DsfrBorder: typeof DsfrPanelBorderConst;
    /** @internal */
    protected readonly DsfrBackground: typeof DsfrPanelBackgroundConst;
    /** @internal */
    protected readonly DsfrSize: typeof DsfrSizeConst;
    /** @internal */
    protected readonly DsfrProportionMediaInfo: typeof DsfrProportionConst;
    constructor();
    protected get cardClasses(): Record<string, boolean>;
    protected get imageRatioClass(): Record<string, boolean>;
    /** @internal */
    onLinkSelect(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrCardComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrCardComponent, "dsfr-card", never, { "badgesOnMedia": { "alias": "badgesOnMedia"; "required": false; }; "detail": { "alias": "detail"; "required": false; }; "detailIcon": { "alias": "detailIcon"; "required": false; }; "detailBottomIcon": { "alias": "detailBottomIcon"; "required": false; }; "hasFooter": { "alias": "hasFooter"; "required": false; }; "imageAlt": { "alias": "imageAlt"; "required": false; }; "imageFit": { "alias": "imageFit"; "required": false; }; "imagePath": { "alias": "imagePath"; "required": false; }; "imageRatio": { "alias": "imageRatio"; "required": false; }; "horizontalProportion": { "alias": "horizontalProportion"; "required": false; }; "noIcon": { "alias": "noIcon"; "required": false; }; "imageType": { "alias": "imageType"; "required": false; }; "isDownloadButton": { "alias": "isDownloadButton"; "required": false; }; }, { "cardSelect": "cardSelect"; }, ["descriptionTemplate"], ["[footer]", "[heading]"], true, never>;
    static ngAcceptInputType_badgesOnMedia: unknown;
}

declare class DsfrTagsGroupComponent {
    /** Modèle de présentation des tags. */
    tags: DsfrTag[];
    /** Mode du groupe de tags (deletable / clickable / selectable). Surcharge le mode par tag. */
    mode?: DsfrTagMode;
    /**
     * Événement émis suite au click sur un tag, le contenu de l'événement est soit le link, la route ou à défaut le label du tag.
     * @since 1.4.0, si l'id du tag est renseigné, l'événement émet un objet de type DsfrTagEvent.
     */
    tagSelect: EventEmitter<string | DsfrTagEvent>;
    private tagsElements;
    private tagsComponents;
    private readonly _elementRef;
    constructor();
    /**
     * Surcharge le mode de chaque tag avec le mode du groupe en cas d'utilisation de ng-content.
     * @internal
     */
    setGroupeMode(): void;
    /** @internal */
    onTagSelect(event: string | DsfrTagEvent): void;
    private surroundTagsWithLi;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTagsGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTagsGroupComponent, "dsfr-tags-group", never, { "tags": { "alias": "tags"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; }, { "tagSelect": "tagSelect"; }, ["tagsElements", "tagsComponents"], ["*"], true, never>;
}

declare class DsfrTagsGroupModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTagsGroupModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrTagsGroupModule, never, [typeof i1.CommonModule, typeof DsfrTagModule, typeof DsfrTagsGroupComponent], [typeof DsfrTagsGroupComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrTagsGroupModule>;
}

declare class DsfrLinkModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrLinkModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrLinkModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof DsfrLinkComponent], [typeof DsfrLinkComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrLinkModule>;
}

declare class DsfrCardModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrCardModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrCardModule, never, [typeof i1.CommonModule, typeof DsfrBadgesGroupModule, typeof DsfrTagsGroupModule, typeof SvgIconModule, typeof DsfrLinkModule, typeof LinkDownloadComponent, typeof DsfrCardComponent], [typeof DsfrCardComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrCardModule>;
}

/**
 * Décrit une sous-finalité.
 */
interface DsfrSubFinality {
    /**
     * Le nom de la finalité.
     */
    name: string;
    /**
     * Le choix utilisateur concernant cette finalité.
     * true: accept, false: refuse, undefined: pas de selection.
     */
    accept?: boolean;
    /**
     * La finalité est exemptée de consentement.
     */
    exempt?: boolean;
    /**
     * Désactive la possibilité d'accepter ou refuser la finalité.
     */
    disabled?: boolean;
}
/**
 * Description d'une finalité.
 */
interface DsfrFinality extends DsfrSubFinality {
    /**
     *  La description de la finalité.
     */
    description?: string;
    /**
     * Les sous-finalités (optionnelles).
     */
    subFinalities?: DsfrSubFinality[];
}

declare class DsfrConsentBannerComponent {
    /**
     * URL de présentation des données personnelles. Utilisé si welcome n'est pas renseigné
     * RGPD : Règlement Général sur la Protection des Données
     */
    rgpdLink: string;
    /**
     * Target du lien. Target par défaut de l'application si la propriété est non renseignée.
     *
     * @since 1.7
     */
    rgpdLinkTarget?: DsfrLinkTarget;
    /** Path interne. Exclusif avec link et routerLink.
     *
     * @since 1.7
     */
    rgpdRoute?: string;
    /**
     * Path angular géré en tant que directive routerLink. Exclusif avec link et route.
     *
     * @since 1.7
     */
    rgpdRouterLink?: string | string[];
    /**
     * RouterLink : classe utilisée pour la directive routerLink active.
     *
     * @since 1.7
     */
    rgpdRouterLinkActive?: string | string[];
    /**
     * RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state etc.)
     *
     * @since 1.7
     */
    rgpdRouterLinkExtras?: NavigationExtras;
    /**
     * Titre de la bannière.
     */
    heading?: string;
    /**
     * Modèle de présentation des finalités.
     */
    finalities: DsfrFinality[];
    /**
     * Sélection bouton Tout accepter.
     */
    acceptAllSelect: EventEmitter<void>;
    /**
     * Sélection bouton Tout refuser.
     */
    refuseAllSelect: EventEmitter<void>;
    /** Sélection bouton Personnaliser */
    customizeSelect: EventEmitter<void>;
    /** Validation de la personnalisation */
    confirmCustomizeSelect: EventEmitter<DsfrFinality[]>;
    /** Sélection de Accepter ou Refuser pour une finalité */
    finalityChange: EventEmitter<DsfrFinality>;
    /**
     * Signale quand la route rgdp est sélectionnée.
     *
     * @since 1.7
     */
    rgpdRouteSelect: EventEmitter<string>;
    /** Description de bienvenue. Utilisation du texte par défaut si non renseigné */
    welcome?: string;
    /** Identifiant de la modale ('consent-modal' par défaut) */
    modalId: string;
    /** @deprecated (since 1.7) utiliser `rgdpLink` à la place. */
    get rgpdUrl(): string;
    /** @deprecated (since 1.7) utiliser 'heading' à la place. */
    get title(): string | undefined;
    /** @deprecated (since 1.7) utiliser `rgdpLink` à la place. */
    set rgpdUrl(value: string);
    /** @deprecated (since 1.7) utiliser `heading` à la place. */
    set title(value: string);
    /**
     * Accepter tout
     * @internal
     */
    onAcceptAll(): void;
    /**
     * Refuser tout
     * @internal
     */
    onRefuseAll(): void;
    /**
     * Changement de sélection accept/refuse d'une finalité ou sous-finalité.
     * @internal
     */
    onFinalityChange(finality: DsfrFinality): void;
    /**
     * Ouverture du panneau de personnalisation des finalités.
     * @internal
     */
    onCustomizeSelect(): void;
    /**
     * Confirmation de la personnalisation des finalités.
     * @param finalities liste des finalités
     * @internal
     */
    onConfirmCustomize(finalities: DsfrFinality[]): void;
    /**
     * Emet un événement lors de la sélection du lien RGPD si l'accès aux RGPD est fait via la propriété 'route'.
     *
     * @since 1.7
     * @internal
     */
    onRgpdSelect(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrConsentBannerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrConsentBannerComponent, "dsfr-consent-banner", never, { "rgpdLink": { "alias": "rgpdLink"; "required": false; }; "rgpdLinkTarget": { "alias": "rgpdLinkTarget"; "required": false; }; "rgpdRoute": { "alias": "rgpdRoute"; "required": false; }; "rgpdRouterLink": { "alias": "rgpdRouterLink"; "required": false; }; "rgpdRouterLinkActive": { "alias": "rgpdRouterLinkActive"; "required": false; }; "rgpdRouterLinkExtras": { "alias": "rgpdRouterLinkExtras"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; "finalities": { "alias": "finalities"; "required": false; }; "welcome": { "alias": "welcome"; "required": false; }; "modalId": { "alias": "modalId"; "required": false; }; "rgpdUrl": { "alias": "rgpdUrl"; "required": false; }; "title": { "alias": "title"; "required": false; }; }, { "acceptAllSelect": "acceptAllSelect"; "refuseAllSelect": "refuseAllSelect"; "customizeSelect": "customizeSelect"; "confirmCustomizeSelect": "confirmCustomizeSelect"; "finalityChange": "finalityChange"; "rgpdRouteSelect": "rgpdRouteSelect"; }, never, never, true, never>;
}

declare class ConsentManagerComponent implements OnInit {
    /** URL de présentation des données personnelles. */
    rgpdNavigation: DsfrNavigation;
    /** Modèle de présentation : liste de finalités. */
    finalities: DsfrFinality[];
    /**
     * Le niveau de titre devant être utilisé (tag `H2` par défaut).
     * Cette balise ne produit pas de style, mais de la structure.
     * @since 1.17
     */
    headingLevel?: DsfrHeadingLevel;
    /** Confirmation de la personnalisation des finalités. */
    confirmSelect: EventEmitter<DsfrFinality[]>;
    /** Changement selection accept/refuse d'une finalité ou sous-finalité. */
    finalityChange: EventEmitter<DsfrFinality>;
    /**
     * Signale quand la route rgdp est sélectionnée.
     *
     * @since 1.7
     */
    rgpdRouteSelect: EventEmitter<string>;
    modalId: string;
    /** internal */ titleId: string;
    acceptAll: boolean | undefined;
    ngOnInit(): void;
    /**
     * Changement selection accept/refuse d'une finalité ou sous-finalité
     * @param finality
     */
    onFinalityChange(finality: DsfrFinality): void;
    /**
     * Confirmation de la sélection
     */
    onConfirm(): void;
    /** @since 1.7 */
    onRgpdSelect(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ConsentManagerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ConsentManagerComponent, "edu-consent-manager", never, { "rgpdNavigation": { "alias": "rgpdNavigation"; "required": true; }; "finalities": { "alias": "finalities"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "modalId": { "alias": "modalId"; "required": false; }; }, { "confirmSelect": "confirmSelect"; "finalityChange": "finalityChange"; "rgpdRouteSelect": "rgpdRouteSelect"; }, never, never, true, never>;
}

declare class DsfrConsentBannerModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrConsentBannerModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrConsentBannerModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof ConsentManagerComponent, typeof DsfrLinkComponent, typeof DsfrI18nPipe, typeof DsfrConsentBannerComponent], [typeof DsfrConsentBannerComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrConsentBannerModule>;
}

/**
 * Définit les types de medias supportés par le DSFR.
 */
declare enum DsfrMediaConst {
    /**
     * Media image.
     */
    IMAGE = "image",
    /**
     * Media vidéo.
     */
    VIDEO = "video"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrMediaConst}.
 */
type DsfrMedia = `${DsfrMediaConst}`;

type RatioImage = '16:9/2' | '16:9' | '3:2' | '4:3' | '1:1' | '3:4' | '2:3';
type RatioVideo = '16:9' | '4:3' | '1:1';
declare class DsfrContentComponent implements DsfrNavigation, OnInit {
    /** Type du média 'image' | 'video', 'image' par défaut. */
    type: DsfrMedia;
    /** Légende, optionnelle */
    legend?: string;
    /** Le format conseillé par défaut est le 16:9. */
    ratio: RatioImage | RatioVideo;
    /** Media, image, vidéo ou audio, obligatoire */
    source?: string;
    /**
     * Label du lien (de transcription), optionnel.
     *
     * @since 1.6 remplace 'transcriptionLabel'.
     */
    linkLabel?: string;
    /** Lien de transcription (ou autre), optionnel. */
    link?: string;
    /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */
    linkTarget?: DsfrLinkTarget;
    /** Path interne. Exclusif avec link et routePath */
    route?: string;
    /** Path angular géré en tant que directive routerLink. Exclusif avec link et route. */
    routePath?: string | string[];
    /** RouterLink : classe utilisée pour la directive routerLink active. */
    routerLinkActive?: string | string[];
    /** RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state, etc.) */
    routerLinkExtras?: NavigationExtras;
    /** Message du tooltip du média. */
    tooltipMessage?: string;
    /** Redimensionnement du composant : `LG` : 125%, `MD` : 100% (défault), `SM` : 75%. */
    contentSize: DsfrSize;
    /**
     * Contenu, simple, optionnel de la modale de transcription.
     *
     * @since 1.6 remplace 'transcription'.
     */
    transcriptionContent?: string;
    /**
     * Titre du média (image ou vidéo), de niveau h1.
     *
     * @since 1.6
     */
    transcriptionHeading?: string;
    /**
     * Spécifique aux images.
     * Alternative d'une image (attribut alt), doit toujours être présente, sa valeur peut être vide (image n’apportant
     * pas de sens supplémentaire au contexte) ou non (porteuse de texte ou apportant du sens) selon votre contexte.
     */
    alternate: string;
    /**
     * Si une route est spécifiée, émet un événement avec la route comme valeur, sinon n'émet rien.
     */
    linkSelect: EventEmitter<string>;
    /** Template du contenu du composant (pour l'utilisation d'une balise, par exemple: "video"). */
    contentMediaTemplate?: TemplateRef<void>;
    private readonly sanitizer;
    private readonly loggerService;
    get size(): DsfrSize;
    /** @deprecated (since 1.6) utiliser `transcriptionContent` à la place */
    get transcription(): string | undefined;
    /** @deprecated (since 1.6) utiliser `transcriptionLinkLabel` à la place  */
    get transcriptionLabel(): string | undefined;
    protected get imageRatioClass(): Record<string, boolean>;
    /** @deprecated (since 1.6) utiliser `transcriptionContent` à la place  */
    set transcription(value: string);
    /** @deprecated (since 1.6) utiliser `transcriptionLinkLabel` à la place  */
    set transcriptionLabel(value: string);
    /**
     * Redimensionnement du composant : `LG` : 125%, `MD` : 100% (défault), `SM` : 75%.
     *
     * @deprecated (since 1.17.0) utiliser contentSize à la place
     */
    set size(value: DsfrSize);
    /**
     * @deprecated (since 1.11.5) utiliser `routePath` à la place.
     * routerLink provoque un bug accessibilité sur la navigation au clavier (ajout d'un tabindex=0)
     **/
    set routerLink(value: string | string[] | undefined);
    ngOnInit(): void;
    /** @internal */
    onLinkSelect(): void;
    /**
     * @internal
     */
    sanitizedSource(): _angular_platform_browser.SafeResourceUrl;
    private verifyAccessibility;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrContentComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrContentComponent, "dsfr-content", never, { "type": { "alias": "type"; "required": false; }; "legend": { "alias": "legend"; "required": false; }; "ratio": { "alias": "ratio"; "required": false; }; "source": { "alias": "source"; "required": false; }; "linkLabel": { "alias": "linkLabel"; "required": false; }; "link": { "alias": "link"; "required": false; }; "linkTarget": { "alias": "linkTarget"; "required": false; }; "route": { "alias": "route"; "required": false; }; "routePath": { "alias": "routePath"; "required": false; }; "routerLinkActive": { "alias": "routerLinkActive"; "required": false; }; "routerLinkExtras": { "alias": "routerLinkExtras"; "required": false; }; "tooltipMessage": { "alias": "tooltipMessage"; "required": false; }; "contentSize": { "alias": "contentSize"; "required": false; }; "transcriptionContent": { "alias": "transcriptionContent"; "required": false; }; "transcriptionHeading": { "alias": "transcriptionHeading"; "required": false; }; "alternate": { "alias": "alternate"; "required": false; }; "transcription": { "alias": "transcription"; "required": false; }; "transcriptionLabel": { "alias": "transcriptionLabel"; "required": false; }; "size": { "alias": "size"; "required": false; }; "routerLink": { "alias": "routerLink"; "required": false; }; }, { "linkSelect": "linkSelect"; }, ["contentMediaTemplate"], ["*", "[svg]", "[transcription]"], true, never>;
}

declare class DsfrTranscriptionComponent implements AfterContentInit, AfterViewInit {
    /**
     * Contenu de la transcription, prioritaire sur le slot <ng-content /> sans sélecteur.
     * Le slot permet d'avoir un contenu plus riche.
     */
    content?: string;
    /** Titre du média de niveau h1. */
    heading?: string;
    protected collapseId: string;
    protected dialogId: string;
    protected titleId: string;
    protected roleDialog: boolean;
    private readonly elementRef;
    ngAfterContentInit(): void;
    ngAfterViewInit(): void;
    protected enlargeScript(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTranscriptionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTranscriptionComponent, "dsfr-transcription", never, { "content": { "alias": "content"; "required": false; }; "heading": { "alias": "heading"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DsfrContentModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrContentModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrContentModule, never, [typeof i1.CommonModule, typeof DsfrTranscriptionComponent, typeof DsfrLinkComponent, typeof DsfrContentComponent], [typeof DsfrContentComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrContentModule>;
}

declare const DISPLAY_MODAL_ID = "theme-modal-id";
type DisplayTheme = 'light' | 'dark' | 'system';
declare class DsfrDisplayComponent implements OnInit {
    /**
     * l'identifiant de la modale portant les paramètres d'affichage.
     */
    displayId: string;
    /**
     * Le niveau de titre devant être utilisé (tag `H2` par défaut).
     * Cette balise ne produit pas de style, mais de la structure.
     * @since 1.17
     */
    headingLevel?: DsfrHeadingLevel;
    /**
     * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.
     */
    artworkDirPath?: string;
    /**
     * Événement émis lorsque le thème change avec la valeur du nouveau thème : `light`, `dark` ou `system`.
     */
    displayChange: EventEmitter<string>;
    /**
     * Thème courant du composant.
     * @internal
     */
    currentTheme: DisplayTheme | undefined;
    protected readonly i18n: DsfrI18nService;
    /** @internal */
    protected themes: any[];
    private _useDeprecatedLink;
    private readonly config;
    private readonly elementRef;
    private readonly document;
    /** @internal */
    constructor();
    get pictoPath(): string | undefined;
    /**
     * Chemin des pictogrammes (du composant display) renseigné par le développeur.
     *
     * Note: ce chemin doit permettre de récupérer directement les fichiers SVG suivants : moon.svg, sun.svg, system.svg
     *
     * @deprecated Use `artworkDirPath` instead.
     */
    set pictoPath(path: string);
    ngOnInit(): void;
    /** @internal */
    onChange(): void;
    /** @internal */
    buildSvgPath(theme: any): any;
    private initDisplayTheme;
    private setHtmlSchemeAttribute;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDisplayComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrDisplayComponent, "dsfr-display", never, { "displayId": { "alias": "displayId"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "artworkDirPath": { "alias": "artworkDirPath"; "required": false; }; "pictoPath": { "alias": "pictoPath"; "required": false; }; }, { "displayChange": "displayChange"; }, never, never, true, never>;
}

declare abstract class DefaultRadioComponent extends DefaultControlComponent<any> implements OnInit {
    /*** Bascule l'affichage des radio-buttons en ligne. */
    inline: boolean;
    /** Ajouter l'attribut 'aria-invalid' sur le champ de formulaire.
     */
    ariaInvalid?: string;
    /** Attribut required du radio-button. */
    required: boolean;
    /** Permet de rétablir une graisse standard sur la légende. */
    legendRegular: boolean;
    get fieldsetLabelledBy(): string;
    get hintId(): string;
    get legendId(): string;
    /** Légende du groupe de boutons radios (alias sur la propriété label). */
    set legend(legend: string);
    ngOnInit(): void;
    /** @internal */
    getRadioId(index: number): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<DefaultRadioComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DefaultRadioComponent, "ng-component", never, { "inline": { "alias": "inline"; "required": false; }; "ariaInvalid": { "alias": "ariaInvalid"; "required": false; }; "required": { "alias": "required"; "required": false; }; "legendRegular": { "alias": "legendRegular"; "required": false; }; "legend": { "alias": "legend"; "required": false; }; }, {}, never, never, true, never>;
}

interface DisplayedMessageStatus {
    message: string[] | undefined;
    messageSeverity: DsfrSeverity | undefined;
}
declare abstract class BaseFieldsetComponent implements OnInit {
    /**
     * L'identifiant du fieldset - Optionnel (sera généré si non fourni).
     *
     * @deprecated (since 1.14.0) utiliser fieldsetId
     */
    id?: string;
    /**
     * L'identifiant du fieldset - Optionnel (sera généré si non fourni).
     */
    fieldsetId?: string;
    /**
     * La légende du fieldset. Peut être indiquée via cet input ou via un slot [legend].
     */
    legend?: string;
    /**
     * Permet de rétablir une graisse standard sur la légende.
     */
    legendRegular: boolean;
    /**
     * Permet de masquer la légende en la préservant pour les lecteurs d'écran.
     */
    legendSrOnly: boolean;
    /**
     * Texte(s) de description additionnel(s).
     */
    hint?: string | string[];
    /**
     * Permet de désactiver l'ensemble des champs du fieldset.
     */
    disabled: i0.InputSignal<boolean | undefined>;
    /**
     * Positionne un message d'erreur.
     * @deprecated (since 1.14) utiliser message et messageSeverity à la place
     **/
    error: i0.InputSignal<string | string[] | undefined>;
    /**
     * Positionne un message de validation.
     * @deprecated (since 1.14) utiliser message et messageSeverity à la place
     */
    valid: i0.InputSignal<string | undefined>;
    /**
     * Message d'information lié au composant.
     */
    message: i0.InputSignal<string | string[] | undefined>;
    /**
     * Représente la sévérité du message.
     */
    messageSeverity: i0.InputSignal<"info" | "error" | "valid" | "warning" | "success" | undefined>;
    /**
     * Gestion de l'affichage de la combinaison des messages internes et externes du composant.
     */
    protected readonly newMessages: Signal<string[] | undefined>;
    /**
     * Gestion de l'affichage dans le cas où le composant serait dans un autre statut qu'en erreur,
     * et qu'une erreur interne se manifeste. Dans ce cas, seules sont affichées les erreurs internes, et le statut
     * affiché du composant est forcé en erreur.
     */
    protected readonly displayedMessageStatus: Signal<DisplayedMessageStatus>;
    protected readonly fieldsetSeverity: Signal<string | null>;
    protected readonly DsfrSeverity: typeof DsfrSeverityConst;
    protected legendId: string;
    protected messagesId: string;
    protected nativeElementId: string;
    /**
     * Attribut utilisés par les composants héritant de la class BaseFieldset afin d'afficher des messages d'erreurs relatif
     * à une validation interne spécifique au composant.
     * @internal
     */
    private readonly _internalError;
    /** @internal */
    private readonly _message;
    /** @internal */
    private readonly _messageSeverity;
    /**
     * Attribut utilisés par les composants héritant de la class BaseFieldset afin d'afficher des messages d'erreurs relatif
     * à une validation interne spécifique au composant.
     */
    get internalError(): string | string[] | undefined;
    /**
     * Attribut utilisés par les composants héritant de la class BaseFieldset afin d'afficher des messages d'erreurs relatif
     * à une validation interne spécifique au composant.
     * @internal
     */
    set internalError(value: string | string[] | undefined);
    ngOnInit(): void;
    protected isLegendRegular(): boolean;
    /**
     * Gère la concaténation des messages internes et externes
     */
    private handleMessagesConcat;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseFieldsetComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BaseFieldsetComponent, "ng-component", never, { "id": { "alias": "id"; "required": false; }; "fieldsetId": { "alias": "fieldsetId"; "required": false; }; "legend": { "alias": "legend"; "required": false; }; "legendRegular": { "alias": "legendRegular"; "required": false; }; "legendSrOnly": { "alias": "legendSrOnly"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "valid": { "alias": "valid"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "messageSeverity": { "alias": "messageSeverity"; "required": false; "isSignal": true; }; "internalError": { "alias": "internalError"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Directive structurelle permettant au composant parent d'identifier les composants devant être encapsulés au sein
 * d'une structure HTML complémentaire.
 */
declare class DsfrFormFieldsetElementDirective {
    /**
     * Permet d'indiquer des classes CSS additionnelles à ajouter à l'élément de fielset.
     */
    fieldsetElement?: string;
    readonly templateRef: TemplateRef<unknown>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormFieldsetElementDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrFormFieldsetElementDirective, "[fieldsetElement]", never, { "fieldsetElement": { "alias": "fieldsetElement"; "required": false; }; }, {}, never, never, true, never>;
}

declare class DsfrFormFieldsetComponent extends BaseFieldsetComponent {
    /**
     * Ensemble des champs de formulaire sur une même ligne.
     */
    inline: boolean;
    /**
     * Les champs composant le formulaire.
     * @internal
     */
    elements: QueryList<DsfrFormFieldsetElementDirective>;
    /**
     * Attribut aria-labelledBy en fonction de la lagende et du groupe de message
     */
    protected readonly ariaLabelledyBy: i0.Signal<string>;
    protected getFieldsetElementClass(elem: DsfrFormFieldsetElementDirective): string[];
    protected isMessageArray(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormFieldsetComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormFieldsetComponent, "dsfr-fieldset, dsfr-form-fieldset", never, { "inline": { "alias": "inline"; "required": false; }; }, {}, ["elements"], ["[legend]"], true, never>;
}

/** Boutons radios simples */
interface DsfrRadio {
    /** Valeur */
    value: any;
    /** Label  */
    label: string;
    /** Texte d'aide optionnel */
    hint?: string;
    /** Désactive l'input */
    disabled?: boolean;
}

declare class DsfrFormRadioComponent extends DefaultRadioComponent {
    /**
     * Le modèle de présentation permettant de transmettre la liste des radios.
     */
    options: DsfrRadio[];
    /**
     * Réduit la taille du radio à 16px (au lieu de 24px).
     */
    small: boolean;
    /**
     * Cache la legend visuellement en la laissant disponible aux lecteurs d'écran.
     */
    legendSrOnly: boolean;
    /**
     * @deprecated (since 1.1.0), utiliser la propriété options à la place.
     */
    set radios(options: DsfrRadio[]);
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormRadioComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormRadioComponent, "dsfr-form-radio", never, { "options": { "alias": "options"; "required": false; }; "small": { "alias": "small"; "required": false; }; "legendSrOnly": { "alias": "legendSrOnly"; "required": false; }; "radios": { "alias": "radios"; "required": false; }; }, {}, never, ["[legend]"], true, never>;
}

declare class DsfrFormRadioModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormRadioModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormRadioModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrFormFieldsetComponent, typeof DsfrFormRadioComponent], [typeof DsfrFormRadioComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormRadioModule>;
}

/** Boutons radios avec illustrations */

interface DsfrRadioRich extends DsfrRadio {
    /** Chemin de l'image. */
    imagePath?: string;
    /** Texte alternatif pour l'image. */
    imageAlt?: string;
    /** Chemin relatif à artworkDirPath dénotant le fichier d'illustration à utiliser. */
    artworkFilePath?: string;
}

declare class DsfrFormRadioRichComponent extends DefaultRadioComponent {
    /**
     * Le modèle de présentation permettant de transmettre la liste des radios.
     */
    options: DsfrRadioRich[];
    /**
     * @deprecated (@since 1.1.0) utiliser la propriété options à la place.
     */
    set radioRich(options: DsfrRadioRich[]);
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormRadioRichComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormRadioRichComponent, "dsfr-form-radio-rich", never, { "options": { "alias": "options"; "required": true; }; "radioRich": { "alias": "radioRich"; "required": false; }; }, {}, never, ["[legend]"], true, never>;
}

declare class DsfrDisplayModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDisplayModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrDisplayModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrI18nPipe, typeof DsfrDisplayComponent, typeof DsfrFormRadioRichComponent], [typeof DsfrDisplayComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrDisplayModule>;
}

interface DsfrDownload {
    /**
     * Obligatoire si le document n'est pas du même langage que la page courante.
     * Attribut hreflang, ex: hreflang="en".
     */
    langCode?: string;
    /**
     * Equivalent à l'attribut html natif 'download'.
     * Si == 'true', télécharge directement le fichier sans l'ouvrir, 'false' par défaut.
     * Peut prendre le nom du fichier à télécharger si on souhaite renommer ce fichier.
     */
    directDownload?: boolean | string;
    /**
     * Lien de téléchargement du fichier.
     */
    link?: string;
    /** Surcharger le label 'Télécharger [ nom de fichier ]' */
    label?: string;
    /**
     * Lien interne
     * Si cette propriété est renseignée, un bouton remplace l'ancre et l'événement (linkSelect) au clic du bouton doit être intercepté.
     */
    route?: string;
    /** Format du fichier - obligatoire. Cf. DsfrMimeType */
    mimeType: string;
    /** Nom du ficher - obligatoire. */
    fileName: string;
    /** Poids du fichier en octets. Obligatoire dans le Dsfr mais peut être renseigné ultérieurement. */
    sizeBytes?: number;
    /** Attribut aria-label  */
    ariaLabel?: string;
    /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */
    linkTarget?: DsfrLinkTarget;
    /**
     * Indique que les métadonnées du fichier seront positionnées automatiquement par le script DSFR. Les propriétés
     * fileMimeType, fileSizeBytes, hreflang sont alors ignorées. Si la propriété est positionnée à false alors ce sont
     * les valeurs des propriétés fileMimeType, fileSizeBytes, hreflang qui seront utlisées.
     */
    assessFile?: boolean;
}
/**
 * Constantes correspondant aux différentes variantes du composant download.
 *
 * @deprecated
 */
declare enum DsfrDownloadVariantConst {
    LINK = "link",
    BLOCK = "block"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrDownloadVariantConst}.
 *
 * @deprecated
 */
type DsfrDownloadVariant = `${DsfrDownloadVariantConst}`;

declare class DsfrDownloadComponent implements DsfrDownload {
    /** Label du lien. Par défaut indique 'Télécharger [nom du fichier]' */
    label?: string;
    /** La propriété ariaLabel définit une valeur de chaîne qui étiquette un élément interactif. */
    ariaLabel?: string;
    /**
     * Lien de téléchargement (href) du fichier.
     * Si cette propriété n'est pas renseignée, un bouton remplace l'ancre (voir route)
     */
    link?: string;
    /** Format du fichier - obligatoire. Cf. DsfrMimeType */
    mimeType: string;
    /** Nom du ficher - obligatoire. */
    fileName: string;
    /** Poids du fichier en octets. Obligatoire dans le DSDFR mais peut être renseigné ultérieurement. */
    sizeBytes?: number;
    /**
     * Obligatoire si le document n'est pas du même langage que la page courante.
     *
     * Ex : langCode="en".
     */
    langCode?: string;
    /**
     * Permet de basculer la présentation en Card.
     *
     * @deprecated Le mode 'block' est déprécié, utiliser `Card#download` à la place
     */
    variant: DsfrDownloadVariant;
    /**
     * Description du fichier (uniquement en mode block).
     *
     * @deprecated Le mode block est déprécié
     */
    description?: string;
    /**
     * Indique que les métadonnées du fichier seront positionnées automatiquement par le script DSFR. Les propriétés
     * `mimeType`, `sizeBytes`, `langCode` sont alors ignorées. Si la propriété est positionnée à false alors ce sont
     * les valeurs des propriétés `mimeType`, `sizeBytes`, `langCode` qui seront utlisées.
     */
    assessFile: boolean;
    /**
     * Equivalent à l'attribut html natif 'download'.
     * Si == 'true', télécharge directement le fichier sans l'ouvrir, 'false' par défaut.
     * Peut prendre le nom du fichier à télécharger si on souhaite renommer ce fichier.
     */
    directDownload: boolean | string | undefined;
    /**
     * Si cette propriété est renseignée, un bouton remplace l'ancre et l'évènement linkSelect doit être intercepté.
     * Son activation est exclusive avec link et prime sur ce dernier.
     * Attention, en mode 'route' les métadonnées du fichier à télécharger ne peuvent être connues a priori, vous
     * devez donc obligatoirement renseigner les propriétés `mimeType`, `sizeBytes` et langCode` car la propriété
     * `assessFile` sera ignorée.
     */
    route?: string;
    /**
     * Attribut target du lien.
     */
    linkTarget?: DsfrLinkTarget;
    /**
     * Propage la valeur de 'route' ou 'link' lors du clic sur le lien.
     */
    downloadSelect: EventEmitter<string>;
    protected readonly i18n: DsfrI18nService;
    /** cf. accesseurs. */
    private _sizeUnit;
    private readonly langService;
    get currentLang(): string;
    get itemLink(): DsfrLink;
    /**
     * Retourne l'affichage des détails si assetFile est positionné et que l'utilisateur n'est pas en mode action
     * (activation via l'input route), sinon retourne '' ce qui aura pour effet de laisser calculer l'affichage par
     * le script DSFR.
     */
    get detail(): string;
    get sizeUnit(): DsfrFileSizeUnit;
    /**
     * Permet d'afficher la taille soit en bytes (KB, MB, ...) soit en octets (Ko, Mo, ...). Par défaut, l'unité est
     * en octets lorsque la langue courante est 'fr', 'bytes' dans les autres cas.
     */
    set sizeUnit(value: DsfrFileSizeUnit);
    /** @internal */
    onLinkSelect(link: string): void;
    onButtonSelect(): void;
    /**
     * Retourne vrai si on affiche un bouton à la place d'une ancre.
     * @internal
     */
    hasButtonMarkup(): boolean;
    /**
     * Si 'true' ou avec un nom de fichier, télécharge directement le fichier sans l'ouvrir. False par défaut.
     * @internal
     */
    isDirectDownload(): boolean;
    /** @internal */
    getNewFileName(): string;
    /** @internal */
    isBlockMode(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDownloadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrDownloadComponent, "dsfr-download", never, { "label": { "alias": "label"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "link": { "alias": "link"; "required": false; }; "mimeType": { "alias": "mimeType"; "required": true; }; "fileName": { "alias": "fileName"; "required": true; }; "sizeBytes": { "alias": "sizeBytes"; "required": false; }; "langCode": { "alias": "langCode"; "required": false; }; "variant": { "alias": "variant"; "required": false; }; "description": { "alias": "description"; "required": false; }; "assessFile": { "alias": "assessFile"; "required": false; }; "directDownload": { "alias": "directDownload"; "required": false; }; "route": { "alias": "route"; "required": false; }; "linkTarget": { "alias": "linkTarget"; "required": false; }; "sizeUnit": { "alias": "sizeUnit"; "required": false; }; }, { "downloadSelect": "downloadSelect"; }, never, never, true, never>;
}

declare class DsfrDownloadModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDownloadModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrDownloadModule, never, [typeof i1.CommonModule, typeof LinkDownloadComponent, typeof DsfrI18nPipe, typeof DsfrDownloadComponent], [typeof DsfrDownloadComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrDownloadModule>;
}

/**
 * Les types MIME de fichiers supportés par le composant.
 *
 * @see https://developer.mozilla.org/fr/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
 */
declare enum DsfrMimeTypeConst {
    TEXT_CSS = "text/css",
    TEXT_CSV = "text/csv",
    TEXT_HTML = "text/html",
    TEXT_CALENDAR = "text/calendar",
    TEXT_PLAIN = "text/plain",
    TEXT_XML = "text/xml",
    FONT_OTF = "font/otf",
    FONT_TTF = "font/ttf",
    FONT_WOFF = "font/woff",
    FONT_WOFF2 = "font/woff2",
    IMAGE_BMP = "image/bmp",
    IMAGE_GIF = "image/gif",
    IMAGE_ICON = "image/x-icon",
    IMAGE_JPEG = "image/jpeg",
    IMAGE_PNG = "image/png",
    IMAGE_SVG = "image/svg+xml",
    IMAGE_TIFF = "image/tiff",
    IMAGE_WEBP = "image/webp",
    AUDIO_3GPP = "audio/3gpp",
    AUDIO_3GPP2 = "audio/3gpp2",
    AUDIO_ACC = "audio/aac",
    AUDIO_OGG = "audio/ogg",
    AUDIO_MIDI = "audio/midi",
    AUDIO_WAV = "audio/x-wav",
    AUDIO_WEBM = "audio/webm",
    VIDEO_3GPP = "video/3gpp",
    VIDEO_3GPP2 = "video/3gpp2",
    VIDEO_MPEG = "video/mpeg",
    VIDEO_OGG = "video/ogg",
    VIDEO_WEBM = "video/webm",
    APPLICATION_ABIWORD = "application/x-abiword",
    APPLICATION_CSH = "application/x-csh",
    APPLICATION_EPUB = "application/epub+zip",
    APPLICATION_FLASH = "application/x-shockwave-flash",
    APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded",
    APPLICATION_JAVASCRIPT = "application/javascript",
    APPLICATION_JSON = "application/json",
    APPLICATION_OCTET_STREAM = "application/octet-stream",
    APPLICATION_OGG = "application/ogg",
    APPLICATION_PDF = "application/pdf",
    APPLICATION_RTF = "application/rtf",
    APPLICATION_TYPESCRIPT = "application/typescript",
    APPLICATION_XML = "application/xml",
    APPLICATION_XML_ATOM = "application/atom+xml",
    APPLICATION_XML_SVG = "application/svg+xml",
    APPLICATION_XML_XHTML = "application/xhtml+xml",
    APPLICATION_XML_XUL = "application/vnd.mozilla.xul+xml",
    ARCHIVE_7Z_COMPRESSED = "application/x-7z-compressed",
    ARCHIVE_BZIP = "application/x-bzip",
    ARCHIVE_BZIP2 = "application/x-bzip2",
    ARCHIVE_JAVA = "application/java-archive",
    ARCHIVE_GZIP = "application/gzip",
    ARCHIVE_RAR_COMPRESSED = "application/x-rar-compressed",
    ARCHIVE_TAR = "application/x-tar",
    ARCHIVE_RAR = "application/vnd.rar",
    ARCHIVE_ZIP = "application/zip",
    ARCHIVE_ZIP_COMPRESSED = "application/x-zip-compressed",
    MS_FONT_OBJECT = "application/vnd.ms-fontobject",
    MS_EXCEL = "application/vnd.ms-excel",
    MS_EXCEL_XML = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    MS_POWERPOINT = "application/vnd.ms-powerpoint",
    MS_POWERPOINT_XML = "application/vnd.openxmlformats-officedocument.presentationml.presentation",
    MS_VIDEO = "video/x-msvideo",
    MS_VISIO = "application/vnd.visio",
    MS_WORD = "application/msword",
    MS_WORD_XML = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
    MULTIPART_FORM_DATA = "multipart/form-data",
    SCRIPT_SHELL = "application/x-sh",
    OPEN_PRESENTATION = "application/vnd.oasis.opendocument.presentation",
    OPEN_SPREADSHEET = "application/vnd.oasis.opendocument.spreadsheet",
    OPEN_TEXT = "application/vnd.oasis.opendocument.text"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrMimeTypeConst}.
 */
type DsfrMimeType = `${DsfrMimeTypeConst}`;

declare class DsfrDownloadsGroupComponent {
    /** @deprecated Titre du groupe de fichiers (facultatif). */
    heading?: string;
    /** @deprecated Niveau de titre, '<h4>' par défaut. */
    headingLevel?: string;
    /** Tableau des fichiers à lister. */
    downloads: DsfrDownload[];
    /**
     * Propage la valeur de 'route' ou 'link' lors du clic sur un lien.
     */
    downloadSelect: EventEmitter<string>;
    protected onDownloadSelect(link: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDownloadsGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrDownloadsGroupComponent, "dsfr-downloads-group", never, { "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "downloads": { "alias": "downloads"; "required": false; }; }, { "downloadSelect": "downloadSelect"; }, never, never, true, never>;
}

declare class DsfrDownloadsGroupModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDownloadsGroupModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrDownloadsGroupModule, never, [typeof i1.CommonModule, typeof DsfrDownloadComponent, typeof DsfrDownloadsGroupComponent], [typeof DsfrDownloadsGroupComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrDownloadsGroupModule>;
}

/**
 * Utilisé pour le pied de page complet intégrant des listes de liens en rebond de la navigation.
 */
interface DsfrFooterReboundLinks {
    /** Titre des catégories. */
    title: string;
    /** Liste de liens. */
    links: DsfrLink[];
}
/**
 * Représentation du bloc partenaire
 */
interface DsfrPartner {
    /** Source de l'image. */
    imagePath: string;
    /** L’alternative de l’image (attribut alt) doit impérativement être renseignée et reprendre le texte visible dans l’image. **/
    imageAlt: string;
    /** Valeur du lien. */
    link: string;
    /** Target optionnelle, target html par défaut si non renseigné. */
    linkTarget?: DsfrLinkTarget;
    /** Modifier la hauteur en rem. */
    customHeight?: string;
    /** Message du tooltip (attribut title).   */
    tooltipMessage?: string;
}
/**
 * Définit les différents balisages HTML supportés par la présentation du footer.
 */
declare enum DsfrFooterPresMarkupConst {
    /**
     * Pour obtenir un conteneur `<DIV>`.
     */
    DIV = "div",
    /**
     * Pour obtenir un conteneur `<P>` par défault.
     */
    P = "p"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrPanelDescMarkupConst}.
 */
type DsfrFooterPresMarkup = `${DsfrFooterPresMarkupConst}`;

/**
 * Le niveau de confirmité RGAA du site.
 */
type DsfrAccessibility = 'none' | 'partially' | 'fully-compliant';
declare class DsfrFooterComponent implements OnInit {
    /** Liens institutionnels */
    /** @internal */
    static readonly DEF_INSTITUTIONAL_LINKS: DsfrLink[];
    /** Liens réglementaires obligatoires */
    /** @internal */
    static readonly DEF_MANDATORY_LINKS: DsfrLink[];
    /**
     * Affichage du lien 'Paramètre d'affichage' pour gérer les modes clair/sombre.
     */
    display: boolean;
    /**
     * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.
     */
    artworkDirPath?: string;
    /** Bloc-marque Marianne. */
    logo: DsfrLogo;
    /** Texte de présentation (html déprécié, utiliser `presentationTemplate` à la place). */
    presentation?: string;
    /** Tableau des liens institutionnels - obligatoires. Initialisé par défaut. */
    institutionalLinks: DsfrLink[];
    /**
     * Liens d'obligations légales. Cette liste doit être définie en fonction du site, toutefois les liens & contenus suivants
     * sont obligatoires : “accessibilité : non/partiellement/totalement conforme”, mentions légales, données personnelles et gestion des cookies. - obligatoire.
     */
    mandatoryLinks: DsfrLink[];
    /** Logo partenaire principal. */
    partnerMain?: DsfrPartner;
    /** Le niveau de titre devant être utilisé (tag `H2` par défaut) sur l'élément Nos Partenaires  */
    partnerMainHeadingLevel: DsfrHeadingLevel | 'P';
    /** Listes des logos partenaires. */
    partnersSub: DsfrPartner[];
    /** Liste de liens de rebond catégorisé. */
    reboundLinks: DsfrFooterReboundLinks[];
    /** Le niveau de titre devant être utilisé (tag `H3` par défaut) sur les catégories de liens de rebond. */
    reboundLinksHeadingLevel: DsfrHeadingLevel | 'P';
    /** Mention de licence. */
    license: string;
    /** Type de balise HTML pour le conteneur de la présentation. <p> par défaut. */
    presentationMarkup: DsfrFooterPresMarkup;
    /** Template pour la mention de licence (par ex. pour utiliser un dsfr-link). Remplace license. */
    licenseTemplate?: TemplateRef<void>;
    /** Template pour le texte de présentation. Remplace `presentation`. Contenu à l'intérieur d'une balise <p>. */
    presentationTemplate?: TemplateRef<void>;
    /** Indique le lien mandatory sélectionné. */
    mandatoryLinkSelect: EventEmitter<string>;
    /**
     * Événement émis lorsque le thème change avec la valeur du nouveau thème : `light`, `dark` ou `system`.
     */
    displayChange: EventEmitter<string>;
    protected _useDeprecatedPictoPath: boolean;
    private readonly i18n;
    private readonly config;
    /** @internal */
    constructor();
    get pictoPath(): string | undefined;
    get displayModalId(): string;
    /**
     * Chemin des pictogrammes (du composant display) renseigné par le développeur.
     *
     * Note: ce chemin doit permettre de récupérer directement les fichiers SVG suivants : moon.svg, sun.svg, system.svg
     *
     * @deprecated Use `artworkDirPath` instead.
     */
    set pictoPath(path: string);
    /** Mention légale de la conformité d'accessibilité (none / partially / fully-compliant) */
    set accessibility(accessibility: DsfrAccessibility);
    ngOnInit(): void;
    /** @internal */
    getLinkTarget(item: DsfrLink): DsfrLinkTarget | undefined;
    /** @internal */
    onMandatoryLinkSelect(link: string): void;
    protected onDisplayChange(theme: string): void;
    protected tooltipMessagePartner(partner: DsfrPartner): string | undefined;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFooterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFooterComponent, "dsfr-footer", never, { "display": { "alias": "display"; "required": false; }; "artworkDirPath": { "alias": "artworkDirPath"; "required": false; }; "logo": { "alias": "logo"; "required": false; }; "presentation": { "alias": "presentation"; "required": false; }; "institutionalLinks": { "alias": "institutionalLinks"; "required": false; }; "mandatoryLinks": { "alias": "mandatoryLinks"; "required": false; }; "partnerMain": { "alias": "partnerMain"; "required": false; }; "partnerMainHeadingLevel": { "alias": "partnerMainHeadingLevel"; "required": false; }; "partnersSub": { "alias": "partnersSub"; "required": false; }; "reboundLinks": { "alias": "reboundLinks"; "required": false; }; "reboundLinksHeadingLevel": { "alias": "reboundLinksHeadingLevel"; "required": false; }; "license": { "alias": "license"; "required": false; }; "presentationMarkup": { "alias": "presentationMarkup"; "required": false; }; "pictoPath": { "alias": "pictoPath"; "required": false; }; "accessibility": { "alias": "accessibility"; "required": false; }; }, { "mandatoryLinkSelect": "mandatoryLinkSelect"; "displayChange": "displayChange"; }, ["licenseTemplate", "presentationTemplate"], never, true, never>;
    static ngAcceptInputType_display: unknown;
}

declare class DsfrFooterModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFooterModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFooterModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof DsfrLinkComponent, typeof DsfrDisplayComponent, typeof DsfrI18nPipe, typeof ItemLinkComponent, typeof DsfrFooterComponent], [typeof DsfrFooterComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFooterModule>;
}

declare class DsfrFranceConnectComponent {
    /** Utilisation de FranceConnect+ (qui est plus sécurisé). */
    secure: boolean;
    /** Demande de connexion par FranceConnect */
    franceConnectSelect: EventEmitter<boolean>;
    /** @internal */
    onConnect(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFranceConnectComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFranceConnectComponent, "dsfr-franceconnect", never, { "secure": { "alias": "secure"; "required": false; }; }, { "franceConnectSelect": "franceConnectSelect"; }, never, never, true, never>;
    static ngAcceptInputType_secure: unknown;
}

/**
 * Décrit une catégorie d'un mega-menu.
 */
interface DsfrMegaMenuCategory {
    /** Libellé de la catégorie (optionnel). */
    label?: string;
    /** Entrées de la catégorie (liens directs). Eviter de dépasser 8 liens. */
    subItems: DsfrLink[];
    /** Lien de la catégorie (optionnel). */
    link?: string | DsfrLink;
}
/**
 * Décrit un élément de contexte d'un méga-menu (leader).
 */
interface DsfrMegaMenuLeader {
    /** Titre de la rubrique (optionnel). */
    title?: string;
    text?: string;
    /** Lien vers l'accueil de la rubrique (optionnel). */
    link?: DsfrLink;
}
/**
 * Décrit un menu de navigation complexe.
 */
interface DsfrMegaMenu {
    /** Leader (contexte) du méga menu (optionnel). */
    leader?: DsfrMegaMenuLeader;
    /** Catégories. */
    categories: DsfrMegaMenuCategory[];
}

declare class DsfrMegaMenuComponent {
    megaMenu: DsfrMegaMenu;
    idMenu: string;
    /**Emet l'évènement Event du DOM à la sélection d'un lien */
    linkSelect: EventEmitter<DsfrLink>;
    /**Emet l'évènement Event du DOM à la fermeture du méga menu */
    closeSelect: EventEmitter<Event>;
    onLink(event: DsfrLink): void;
    onClose(): void;
    protected isString(value: unknown): value is string;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrMegaMenuComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrMegaMenuComponent, "dsfr-mega-menu", never, { "megaMenu": { "alias": "megaMenu"; "required": true; }; "idMenu": { "alias": "idMenu"; "required": true; }; }, { "linkSelect": "linkSelect"; "closeSelect": "closeSelect"; }, never, never, true, never>;
}

declare class DsfrToolLinkComponent {
    /** Lien rapide */
    link: DsfrLink;
    /** Evènement émis au clic sur un lien */
    readonly linkSelect: EventEmitter<DsfrLink>;
    protected onLinkSelect(link: DsfrLink): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrToolLinkComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrToolLinkComponent, "dsfr-tool-link", never, { "link": { "alias": "link"; "required": true; }; }, { "linkSelect": "linkSelect"; }, never, never, true, never>;
}

/**
 * Composant interne représentant le container des liens d'accès rapides du header
 */
declare class EduToolsLinksComponent {
    /** Liste des liens rapides */
    toolsLinks: DsfrLink[];
    /** Composant display à afficher */
    showDisplay: boolean;
    /** identifiant du display */
    displayId: string;
    /** Template optionnel des accès rapides */
    toolsLinksTemplate?: TemplateRef<void>;
    /** Nombre maximum de liens d'accès rapides (3)  */
    maxToolsLinks: number;
    /** Evènement émis au clic sur un lien */
    readonly linkSelect: EventEmitter<DsfrLink>;
    readonly toolsLinksListRef: i0.Signal<ElementRef<HTMLElement> | undefined>;
    protected onLinkSelect(link: DsfrLink): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EduToolsLinksComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EduToolsLinksComponent, "edu-tools-links", never, { "toolsLinks": { "alias": "toolsLinks"; "required": true; }; "showDisplay": { "alias": "showDisplay"; "required": false; }; "displayId": { "alias": "displayId"; "required": true; }; "toolsLinksTemplate": { "alias": "toolsLinksTemplate"; "required": false; }; "maxToolsLinks": { "alias": "maxToolsLinks"; "required": false; }; }, { "linkSelect": "linkSelect"; }, never, never, true, never>;
    static ngAcceptInputType_showDisplay: unknown;
}

/**
 * Décrit une langue de traduction.
 *
 * @property value Le code ISO sur deux caractères en minuscules.
 *
 * @see https://fr.wikipedia.org/wiki/Liste_des_codes_ISO_639-1
 *
 *  @example
 * ```ts
 * {
 *   label: 'Français',
 *   value:  'fr'
 * }
 * ```
 */
interface DsfrLang extends Required<DsfrOption> {
    /**
     * Contrairement à un simple select, la sélection d'une langue peut directement invoquer une page désignée par href.
     */
    link?: string;
}

declare class DsfrTranslateComponent implements OnInit {
    /** Liste des langues proposées à l'utilisateur. */
    languages: DsfrLang[];
    /** Sans bordure si 'false' */
    outline: boolean;
    /** Événement émit uniquement si la langue sélectionnée ne contient pas de href. Il contient le code de la langue. */
    langChange: EventEmitter<string>;
    protected collapseId: string;
    private readonly langService;
    private readonly elementRef;
    private readonly document;
    get currentLangCode(): string;
    get currentLabel(): string;
    /** Force la langue courante. */
    set currentLangCode(value: string);
    ngOnInit(): void;
    protected onClick(event: Event, lang: DsfrLang): void;
    private getCurrentLang;
    private collapse;
    /** Positionne l'attribut lang dans la balise html, ex : lang="fr" */
    private setDocLang;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTranslateComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTranslateComponent, "dsfr-translate", never, { "languages": { "alias": "languages"; "required": false; }; "outline": { "alias": "outline"; "required": false; }; "currentLangCode": { "alias": "currentLangCode"; "required": false; }; }, { "langChange": "langChange"; }, never, never, true, never>;
}

declare class DsfrTranslateModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTranslateModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrTranslateModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrI18nPipe, typeof DsfrTranslateComponent], [typeof DsfrTranslateComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrTranslateModule>;
}

/**
 * Entrée du menu dans le header. Peut contenir un sous-menu (déroulant), un méga-menu ou être un lien direct.
 */
interface DsfrHeaderMenuItem extends DsfrLink {
    /**
     * Est étendu (dans le cas ou il contient un menu déroulant ou méga-menu).
     */
    expanded?: boolean;
    /**
     * Méga-menu (optionnel).
     */
    megaMenu?: DsfrMegaMenu;
    /**
     * Sous-menu affiché en tant que ménu déroulant (optionnel).
     */
    subItems?: DsfrLink[];
}
/**
 * Permet de configurer le sélecteur de langues à afficher dans le header.
 */
interface DsfrHeaderTranslate {
    /**
     * Liste des langues proposées à l'utilisateur.
     * @see {@link DsfrLang}
     *
     */
    languages: DsfrLang[];
    /**
     * Code de la langue courante.
     *
     * @deprecated (since 1.7.0) Il est conseillé de plus imposer une langue à ce niveau, la langue du site défini par l'utilisateur est rerouver soit dans le localStorage soit à défaut dans la balise html du site.
     */
    currentLangCode?: string;
}

/**
 * Modèle de présentation interne du menu.
 */
declare class ViewMenu {
    menu: DsfrHeaderMenuItem;
    /**
     * Identifiant unique du menu.
     */
    menuId: string;
    constructor(/** Menu wrappé */ menu: DsfrHeaderMenuItem);
}
declare class DsfrHeaderComponent implements OnInit, AfterViewInit, OnDestroy {
    /** Slot contenant la liste des tools links. Ils seront placés dans un container `<ul>` */
    toolsLinksTemplate?: TemplateRef<void>;
    /** Slot contenant une barre de recherche personnalisée (par ex. avec autocomplétion) */
    searchBarTemplate?: TemplateRef<void>;
    /** Slot custom de toolLinks supplémentaire sur le header pour la version desktop
     * @deprecated (since 1.15) utiliser toolsLinksTemplate
     */
    headerTools?: TemplateRef<void>;
    /** Slot custom de toolLinks supplémentaire sur le header pour la version mobile
     * @deprecated (since 1.15) utiliser toolsLinksTemplate
     */
    headerToolsMobile?: TemplateRef<void>;
    /** Slot pour personnaliser le nom du service. Peut contenir le nom et un badge */
    serviceTitleTemplate?: TemplateRef<void>;
    /** Slot custom pour personnaliser le tagline (description) du service */
    serviceTaglineTemplate?: TemplateRef<void>;
    /**
     * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.
     */
    artworkDirPath?: string;
    /**
     * Boolean pour afficher le badge Beta. Pour un badge différent utiliser un dsfr-badge avec le slot serviceTitleTemplate.
     */
    beta: boolean;
    /**
     * Définit le bloc-marque Marianne + opérateur.
     *
     * @since 1.16.0
     */
    logo: DsfrLogo;
    /**
     * Identifiant de la navigation principale, généré par défaut
     */
    navigationId?: string;
    /** Nom du service. */
    serviceTitle?: string;
    /** Tagline du service. */
    serviceTagline?: string;
    /**
     * Permet d'afficher la barre de recherche.
     */
    searchBar: boolean;
    /**
     * Valeur du title du bouton de la barre de recherche, si searchBar est `true`.
     */
    searchButtonTitle?: string;
    /**
     * Label de la barre de recherche (pour les lecteurs d'écrans).
     */
    searchLabel: string;
    /**
     * Valeur de l'input de recherche, si searchBar est `true`.
     */
    searchInputValue?: string;
    /**
     * Valeur du placeholder de l'input de recherche, si searchBar est `true`.
     */
    searchInputPlaceholder?: string;
    /**
     * Permet de soumettre la recherche à l'appui sur la touche Entrée.
     */
    triggerSearchOnEnter: boolean;
    /**
     * Permet d'afficher le selecteur de langue pour l'internationalisation.
     *
     * @see DsfrHeaderTranslate
     */
    translate?: DsfrHeaderTranslate;
    /**
     * Renvoie le code de la langue au changement de langue (si `showTranslate`).
     */
    readonly langChange: EventEmitter<string>;
    /**
     * Renvoie le lien lors d'un clic sur un lien en mode `route`.
     */
    readonly linkSelect: EventEmitter<DsfrLink>;
    /**
     * Renvoie la valeur de l'input de la barre de recherche au changement.
     */
    readonly searchChange: EventEmitter<string>;
    /**
     * Renvoie la valeur de l'input de la barre de recherche au clic sur rechercher.
     */
    readonly searchSelect: EventEmitter<string>;
    /**
     * Renvoie la valeur du nouveau thème lorsque le thème change : `light`, `dark` ou `system`.
     */
    displayChange: EventEmitter<string>;
    /**
     * Notifie l'ouverture du menu en affichage mobile.
     */
    menuDisclose: EventEmitter<void>;
    /**
     * Notifie la fermeture du menu en affichage mobile.
     */
    menuConceal: EventEmitter<void>;
    /** Menu de navigation principale */
    menu: i0.InputSignal<DsfrHeaderMenuItem[]>;
    protected searchInputId: string;
    /** Nombre maximum de liens d'accès rapides (3)  */
    protected maxToolsLinks: number;
    protected _useDeprecatedPictoPath: boolean;
    protected showDisplay: boolean;
    protected readonly translateElement: Signal<ElementRef<any> | undefined>;
    protected readonly translateNativeElement: Signal<any>;
    protected readonly toolsLinksCmp: Signal<EduToolsLinksComponent | undefined>;
    protected readonly toolsLinksNativeElement: Signal<HTMLElement | undefined>;
    protected readonly toolsLinksMobile: Signal<ElementRef<HTMLElement> | undefined>;
    protected readonly toolsLinksMobileContainer: Signal<HTMLElement | undefined>;
    protected readonly menuModal: Signal<ElementRef<HTMLElement> | undefined>;
    protected readonly viewMenu: Signal<ViewMenu[]>;
    private _headerToolsLinks;
    private mutationObserver;
    private readonly renderer;
    private readonly config;
    private _unlisten;
    constructor();
    get display(): boolean;
    get headerToolsLinks(): DsfrLink[];
    get displayModalId(): string;
    get pictoPath(): string | undefined;
    get searchInputInitialValue(): string | undefined;
    /** Affichage du lien 'Paramètre d'affichage' pour gérer les modes clair/sombre. */
    set display(value: boolean);
    /**
     * Tableau de lien d'accès rapide.
     * Les icônes acceptées sont ceux du DSFR y compris ceux du tableau `DsfrBtnIcon`.
     */
    set headerToolsLinks(links: DsfrLink[]);
    /**
     * Chemin des pictogrammes (du composant display) renseigné par le développeur.
     *
     * Note: ce chemin doit permettre de récupérer directement les fichiers SVG suivants : moon.svg, sun.svg, system.svg
     *
     * @deprecated Use `artworkDirPath` instead.
     */
    set pictoPath(path: string);
    /**
     * Permet de positionner la valeur initiale de la barre de recherche, si cette dernière est utilisée.
     *
     * @deprecated (since 1.15) Utiliser la propriété `searchInputValue` à la place.
     */
    set searchInputInitialValue(value: string | undefined);
    /**
     * Url du lien 'retour accueil' du logo de la Marianne.
     *
     * @deprecated (sing 1.16) Passser par  la propriété `logo.navigation` à la place.
     */
    set logoLink(value: string | DsfrNavigation);
    /**
     * Label associé au bloc marque (Marianne). Respectez la structure avec les <br>.
     * (Ministère, gouvernement, république française)
     *
     * @deprecated (since 1.16) Utiliser `logo.label` à la place
     */
    set logoLabel(label: string);
    /**
     * Tooltip associé au lien 'retour accueil' du logo de la Marianne.
     *
     * @deprecated (since 1.16) Utiliser `logo.tooltipMessage` à la place
     */
    set logoTooltipMessage(tooltip: string);
    /**
     * Text alternatif à utiliser uniquement si l'image à une information à passer.
     *
     * @deprecated (since 1.16) Utiliser `logo.imageAlt` à la place
     */
    set operatorImageAlt(value: string);
    /**
     * Path pour src d'image d'illustration.
     *
     * @deprecated (since 1.16) Utiliser `logo.imagePath` à la place
     */
    set operatorImagePath(path: string);
    /**
     * Boolean pour passer le logo opérateur en mode vertical.
     *
     * @deprecated (since 1.16) Utiliser `logo.customClass` à la place
     * */
    set operatorImageVertical(vertical: boolean);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    protected hasToolsLinks(): boolean;
    protected onLink(item: DsfrLink): void;
    protected onSearchSelect(text: string): void;
    protected onSearchChange(text: string): void;
    protected onLanguageChange(codeLang: string): void;
    protected onMegaMenuClose(item: DsfrHeaderMenuItem): void;
    protected onMenuItemClick(item: DsfrHeaderMenuItem): void;
    protected getCustomClassHeaderToolsLink(item: DsfrLink): string;
    protected onDisplayChange(theme: string): void;
    /**
     * Dupliquer tous les composants de toolsLinks pour le menu mobile (edu-tools-links, translate etc.)
     * /!\ interaction script DSFR : le script copie les liens la premiere fois, mais n'écoute pas les changements
     * Les liens à l'interieur de fr-header__tools-links sont dupliqués dans fr-header__menu-links
     */
    private duplicateToolsLinksMobile;
    /**
     * Reprise de la logique du script DSFR pour suffixer les ids dupliqués en mobile
     * @param toolsLinks container concerné des liens d'accès rapides dupliqués
     * @param suffix -mobile pour ne pas avoir plusieurs ids identiques
     */
    private suffixIdsToolsLinks;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrHeaderComponent, "dsfr-header", never, { "artworkDirPath": { "alias": "artworkDirPath"; "required": false; }; "beta": { "alias": "beta"; "required": false; }; "logo": { "alias": "logo"; "required": false; }; "navigationId": { "alias": "navigationId"; "required": false; }; "serviceTitle": { "alias": "serviceTitle"; "required": false; }; "serviceTagline": { "alias": "serviceTagline"; "required": false; }; "searchBar": { "alias": "searchBar"; "required": false; }; "searchButtonTitle": { "alias": "searchButtonTitle"; "required": false; }; "searchLabel": { "alias": "searchLabel"; "required": false; }; "searchInputValue": { "alias": "searchInputValue"; "required": false; }; "searchInputPlaceholder": { "alias": "searchInputPlaceholder"; "required": false; }; "triggerSearchOnEnter": { "alias": "triggerSearchOnEnter"; "required": false; }; "translate": { "alias": "translate"; "required": false; }; "menu": { "alias": "menu"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; }; "headerToolsLinks": { "alias": "headerToolsLinks"; "required": false; }; "pictoPath": { "alias": "pictoPath"; "required": false; }; "searchInputInitialValue": { "alias": "searchInputInitialValue"; "required": false; }; "logoLink": { "alias": "logoLink"; "required": false; }; "logoLabel": { "alias": "logoLabel"; "required": false; }; "logoTooltipMessage": { "alias": "logoTooltipMessage"; "required": false; }; "operatorImageAlt": { "alias": "operatorImageAlt"; "required": false; }; "operatorImagePath": { "alias": "operatorImagePath"; "required": false; }; "operatorImageVertical": { "alias": "operatorImageVertical"; "required": false; }; }, { "langChange": "langChange"; "linkSelect": "linkSelect"; "searchChange": "searchChange"; "searchSelect": "searchSelect"; "displayChange": "displayChange"; "menuDisclose": "menuDisclose"; "menuConceal": "menuConceal"; }, ["toolsLinksTemplate", "searchBarTemplate", "headerTools", "headerToolsMobile", "serviceTitleTemplate", "serviceTaglineTemplate"], never, true, never>;
}

declare class DsfrSearchBarComponent implements AfterContentInit, OnInit {
    /** Attribut 'id' du champ de recherche, généré automatiquement par défaut. */
    inputId?: string;
    /** Texte du bouton
     * @deprecated (since 1.14.0) Cette propriété n'est pas utilisée, utilisez buttonTitle à la place.
     */
    buttonText?: string;
    /** Permet de positionner la valeur de la barre de recherche. */
    value?: string;
    /** Emet le texte lors de l'évènement keyup sur l'input de recherche. */
    searchChange: EventEmitter<string>;
    /** Emet le texte lors du clic sur le bouton "rechercher". */
    searchSelect: EventEmitter<string>;
    /** Label (lecteurs d’écran). */
    label: i0.InputSignal<string | undefined>;
    /** Version large du composant. */
    large: i0.InputSignalWithTransform<boolean, unknown>;
    /** Placeholder de l’input. */
    placeholder: i0.InputSignal<string | undefined>;
    /** Attribut title du bouton. */
    buttonTitle: i0.InputSignal<string | undefined>;
    /** Pattern de l’input. */
    pattern: i0.InputSignal<string | RegExp | undefined>;
    /** Soumettre à l’appui sur Entrée. */
    triggerSearchOnEnter: i0.InputSignalWithTransform<boolean, unknown>;
    /** Attribut maxLength de l’input. */
    maxLength: i0.InputSignal<number | undefined>;
    /**
     * Le délai (en millisecondes) pour déclencher l'événement de changement de saisie et de filtrage.
     * Par défaut la valeur est 0
     */
    delay: i0.InputSignal<number>;
    protected defaultButtonTitle: string | null | undefined;
    protected readonly i18n: DsfrI18nService;
    private _id;
    private inputChange$;
    private readonly destroyRef;
    constructor();
    get formId(): string;
    /**
     * Positionne la valeur initiale de la barre de recherche.
     *
     * @deprecated (since 1.15) Utiliser la propriété `value` à la place
     */
    set initialValue(initialValue: string | undefined);
    /**
     * Cet attribut doit être utilisé en tant que propriété et non en attribut, ex. [id]="'monid'"
     *
     * @deprecated Utiliser la propriété `inputId` à la place
     */
    set id(value: string | undefined);
    ngOnInit(): void;
    ngAfterContentInit(): void;
    protected inputSearchChange(event: KeyboardEvent): void;
    /** @internal */
    protected onSearchSelect(): void;
    /**
     * Si le libellé du bouton est identique au libellé potentiel du tooltip, il ne faut pas positionner de tooltip.
     */
    protected getButtonTitleValue(): string | null;
    private handleSearchChange;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSearchBarComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrSearchBarComponent, "dsfr-search-bar", never, { "inputId": { "alias": "inputId"; "required": false; }; "buttonText": { "alias": "buttonText"; "required": false; }; "value": { "alias": "value"; "required": false; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "large": { "alias": "large"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "triggerSearchOnEnter": { "alias": "triggerSearchOnEnter"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; "initialValue": { "alias": "initialValue"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "searchChange": "searchChange"; "searchSelect": "searchSelect"; }, never, never, true, never>;
}

declare class DsfrHeaderModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrHeaderModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrHeaderModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof i2.RouterModule, typeof DsfrMegaMenuComponent, typeof DsfrSearchBarComponent, typeof ItemLinkComponent, typeof DsfrTranslateComponent, typeof DsfrDisplayComponent, typeof DsfrLinkComponent, typeof DsfrDisableRouterLinkDirective, typeof DsfrI18nPipe, typeof DsfrHeaderComponent, typeof DsfrToolLinkComponent, typeof EduToolsLinksComponent], [typeof DsfrHeaderComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrHeaderModule>;
}

declare class DsfrHighlightComponent {
    /** Contenu du composant, html accepté. */
    text?: string;
    /** Choix de la taille du texte, medium par défaut. */
    textSize: DsfrSize;
    /**
     * Permet de personnaliser la couleur.
     * Il faut donner le nom de class exact (ex : fr-highlight--green-emeraude) que vous trouverez via ce
     * [lien](https://www.systeme-de-design.gouv.fr/version-courante/fr/fondamentaux/couleurs-palette#couleurs-illustratives)
     */
    customClass?: string;
    /** @internal */
    getClasses(): {
        [className: string]: boolean;
    };
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrHighlightComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrHighlightComponent, "dsfr-highlight", never, { "text": { "alias": "text"; "required": false; }; "textSize": { "alias": "textSize"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DsfrHighlightModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrHighlightModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrHighlightModule, never, [typeof i1.CommonModule, typeof DsfrHighlightComponent], [typeof DsfrHighlightComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrHighlightModule>;
}

declare class DsfrLinksGroupComponent {
    /**
     * Permet de basculer la disposition des liens en mode horizontal.
     */
    inline: boolean;
    /**
     * Taille des liens du groupe.
     */
    linksGroupSize: DsfrSize;
    /** @internal */
    private linksElements;
    private links;
    private _iconPosition;
    private readonly _elementRef;
    constructor();
    /**
     * Taille des liens du groupe.
     *
     * @deprecated since(1.15.0) utiliser 'linksGroupSize' à la place
     */
    get size(): DsfrSize;
    get iconPosition(): DsfrPosition | undefined;
    /**
     * Taille des liens du groupe.
     *
     * @deprecated since(1.15.0) utiliser 'linksGroupSize' à la place
     */
    set size(value: DsfrSize);
    /**
     * Positionnement (gauche ou droite) au niveau du groupe des icônes dans les boutons qui
     * contiennent à la fois une icône et un label.
     */
    set iconPosition(value: DsfrPosition);
    /**
     * Cette méthode calcule les styles du composant en évitant les magic strings.
     * @internal
     */
    getClasses(): string[];
    /** On force la position des icônes des boutons. */
    private updateLinksIconPosition;
    private surroundLinksWithLi;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrLinksGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrLinksGroupComponent, "dsfr-links-group", never, { "inline": { "alias": "inline"; "required": false; }; "linksGroupSize": { "alias": "linksGroupSize"; "required": false; }; "size": { "alias": "size"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; }, {}, ["linksElements", "links"], ["*"], true, never>;
}

declare class DsfrLinksGroupModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrLinksGroupModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrLinksGroupModule, never, [typeof i1.CommonModule, typeof DsfrLinksGroupComponent], [typeof DsfrLinksGroupComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrLinksGroupModule>;
}

declare class DsfrLogoComponent {
    /**
     * Taille du logo, MD par défaut si non spécifié.
     */
    logoSize: DsfrSize;
    /** Intitulé officiel. Utiliser un slot pour du contenu personnalisé. */
    label?: string;
    /** Personnalisation CSS du logo. */
    customClass?: string;
    /**
     * Taille du logo, MD par défaut si non spécifié.
     *
     * @deprecated since(1.15.0) utiliser 'logoSize' à la place
     */
    get size(): DsfrSize;
    /**
     * Taille du logo, MD par défaut si non spécifié.
     *
     * @deprecated since(1.15.0) utiliser 'logoSize' à la place
     */
    set size(value: DsfrSize);
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrLogoComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrLogoComponent, "dsfr-logo", never, { "logoSize": { "alias": "logoSize"; "required": false; }; "label": { "alias": "label"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DsfrLogoModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrLogoModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrLogoModule, never, [typeof i1.CommonModule, typeof DsfrLogoComponent], [typeof DsfrLogoComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrLogoModule>;
}

/** Action transformée en bouton dans le bas du dialogue modal. */
interface DsfrModalAction extends Omit<DsfrButton, 'size' | 'iconPosition' | 'loader' | 'invertedOutlineContrast'> {
    /** Action appelée lors du 'click' sur le bouton. */
    callback: () => void;
}

declare class DsfrModalComponent implements AfterViewInit, OnInit, OnDestroy {
    /** L'identifiant unique de l'élément <dialog>. */
    dialogId?: string;
    /** Titre de la modale. */
    titleModal?: string;
    /**
     * Le niveau de titre devant être utilisé (tag `H2` par défaut).
     * Cette balise ne produit pas de style, mais de la structure.
     */
    headingLevel?: DsfrHeadingLevel;
    /** Le tableau des actions à positionner dans la modale. */
    actions: DsfrModalAction[];
    /** Permet de ne pas fermer la modale automatiquement lorsqu'une action est exécutée. */
    autoCloseOnAction: boolean;
    /** Autorise la fermeture de la modale au click sur le fond. */
    concealingBackdrop: boolean;
    /**
     * Le mode de contrôle vous permet, le cas échéant,  de maintenir la capacité de la modale à être pilotée
     * programmatiquement en absence de bouton de contrôle.
     *
     * @since 1.8.0
     * @deprecated (since 1.14.0)
     */
    controlMode: 'button' | 'dynamic';
    /** Indique la classe d'icône à utiliser en haut à gauche. Par défaut `fr-icon-arrow-right-line` */
    icon: string;
    /** Type de balise HTML, dialog par défaut */
    markup: 'dialog' | 'div';
    /** Positionnement de la modale en haut en mobile. */
    mobileTop: boolean;
    /** Signale l'ouverture de la modale. */
    disclose: EventEmitter<void>;
    /** Signale la fermeture de la modale. */
    conceal: EventEmitter<void>;
    /** @internal */
    dsfrModal?: ElementRef;
    /** Template du pied de la modale (doit contenir des boutons d'actions) */
    modalFooterTemplate?: TemplateRef<void>;
    /**
     * La taille de la modale.
     * Valeurs possibles : `SM` (pour small), `MD` (pour medium), `LG` (pour large).
     *
     * @deprecated (since 1.17.0) utiliser modalSize à la place
     */
    size: i0.InputSignal<"SM" | "MD" | "LG" | undefined>;
    /**
     * La taille de la modale.
     * Valeurs possibles : `SM` (pour small), `MD` (pour medium), `LG` (pour large).
     */
    modalSize: i0.InputSignal<"SM" | "MD" | "LG">;
    /**
     * L'identifiant unique de l'élément tenant titre descriptif de la modale.
     */
    protected titleElementId: string;
    protected sizeClasses: i0.Signal<{
        'fr-col-12': boolean;
        'fr-col-md-4': boolean;
        'fr-col-md-8 fr-col-lg-6': boolean;
        'fr-col-md-8': boolean;
    }>;
    private _unlisten;
    private readonly renderer2;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /**
     * Permet de déclencher programmatiquement l'ouverture de la modale.
     */
    open(): void;
    /**
     * Permet de déclencher programmatiquement la fermeture de la modale.
     */
    close(): void;
    /** @internal */
    performAction(action: DsfrModalAction): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrModalComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrModalComponent, "dsfr-modal", never, { "dialogId": { "alias": "dialogId"; "required": false; }; "titleModal": { "alias": "titleModal"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "actions": { "alias": "actions"; "required": false; }; "autoCloseOnAction": { "alias": "autoCloseOnAction"; "required": false; }; "concealingBackdrop": { "alias": "concealingBackdrop"; "required": false; }; "controlMode": { "alias": "controlMode"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "markup": { "alias": "markup"; "required": false; }; "mobileTop": { "alias": "mobileTop"; "required": false; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "modalSize": { "alias": "modalSize"; "required": false; "isSignal": true; }; }, { "disclose": "disclose"; "conceal": "conceal"; }, ["modalFooterTemplate"], ["*"], true, never>;
}

declare class DsfrModalModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrModalModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrModalModule, never, [typeof i1.CommonModule, typeof DsfrButtonComponent, typeof DsfrI18nPipe, typeof DsfrModalComponent], [typeof DsfrModalComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrModalModule>;
}

/**
 * Définit les types de notice supportés par le DSFR.
 */
declare enum DsfrNoticeTypeConst {
    INFO = "info",
    WARNING = "warning",
    ALERT = "alert",
    WEATHER_ORANGE = "weather-orange",
    WEATHER_RED = "weather-red",
    WEATHER_PURPLE = "weather-purple",
    ATTACK = "attack",
    WITNESS = "witness",
    CYBERATTACK = "cyberattack"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrNoticeTypeConst}.
 */
type DsfrNoticeType = `${DsfrNoticeTypeConst}`;

declare class DsfrNoticeComponent {
    /**
     * Le message qui sera affiché dans le bandeau.
     * Renseigner le titre via l'input est prioritaire sur le slot.
     */
    heading?: string;
    /**
     * Le niveau du titre, `<span>` par défaut.
     */
    headingLevel?: DsfrHeadingLevel;
    /**
     * Permet d'afficher le bouton servant à fermer le bandeau d'information.<br>
     * La valeur 'controlled' permet d'afficher le bouton de fermeture, mais c'est vous qui devez contrôler l'action de
     * fermeture du bandeau.
     */
    closeable: boolean | 'controlled';
    /**
     * @since 1.12 Permet d'enlever l'icône du bandeau d'information
     */
    noIcon: boolean;
    /**
     * @since 1.12 Permet de personnaliser l'icône du bandeau. Html possible.
     */
    icon?: string;
    /**
     * @since 1.12 Texte complémentaire au titre
     */
    description?: string;
    /**
     * @since 1.12 Sévérité du message
     */
    type: DsfrNoticeType;
    /**
     * Signale la fermeture manuelle du bandeau d'information.
     */
    readonly noticeClose: EventEmitter<ElementRef<any>>;
    private readonly hostElement;
    get iconClass(): string;
    /** @deprecated since 1.12 use `closeable`instead. */
    get closable(): boolean | 'controlled';
    /** @deprecated since 1.12 use `heading` instead. */
    get message(): string | undefined;
    /** @deprecated since 1.12 use `closeable`instead. */
    set closable(value: boolean | 'controlled');
    /**
     * Le message qui sera affiché dans le bandeau.
     *
     * Renseigner le message via l'input est prioritaire sur le slot.
     *
     * @deprecated since 1.12 use `heading` instead.
     */
    set message(value: string);
    /** @internal */
    onClose(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrNoticeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrNoticeComponent, "dsfr-notice", never, { "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "closeable": { "alias": "closeable"; "required": false; }; "noIcon": { "alias": "noIcon"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "description": { "alias": "description"; "required": false; }; "type": { "alias": "type"; "required": false; }; "closable": { "alias": "closable"; "required": false; }; "message": { "alias": "message"; "required": false; }; }, { "noticeClose": "noticeClose"; }, never, ["*", "[link]"], true, never>;
}

declare class DsfrNoticeModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrNoticeModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrNoticeModule, never, [typeof i1.CommonModule, typeof DsfrI18nPipe, typeof DsfrNoticeComponent], [typeof DsfrNoticeComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrNoticeModule>;
}

declare class EduPageLinkComponent {
    active: boolean;
    customClass?: string;
    disabled: boolean;
    label?: string;
    labelCustomClass?: string;
    num?: number;
    pageSelectEvent: EventEmitter<number>;
    private _tooltipMessage;
    get tooltipMessage(): string | undefined;
    set tooltipMessage(value: string);
    onPage(event: Event, pageNum: number | undefined): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EduPageLinkComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EduPageLinkComponent, "edu-page-link", never, { "active": { "alias": "active"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "label": { "alias": "label"; "required": false; }; "labelCustomClass": { "alias": "labelCustomClass"; "required": false; }; "num": { "alias": "num"; "required": false; }; "tooltipMessage": { "alias": "tooltipMessage"; "required": false; }; }, { "pageSelectEvent": "pageSelectEvent"; }, never, never, true, never>;
}

declare class DsfrPreviousPageComponent {
    backEvent: EventEmitter<any>;
    onBack(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrPreviousPageComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrPreviousPageComponent, "dsfr-previous-page", never, {}, { "backEvent": "backEvent"; }, never, never, true, never>;
}

type Interval = [number, number];

declare class DsfrPaginationComponent implements OnInit {
    /**
     * Affiche uniquement l'icône d'accès à la page précédement si vrai.
     *
     * @since 1.6
     */
    previousOnly: boolean;
    /** Attribut ariaLabel permettant de contextualiser la pagination */
    ariaLabel?: string;
    /** Surcharger le placeholder par défaut de la sélection du nombre de lignes */
    rowsPerPagePlaceholder?: string;
    /** Template optionnel pour afficher le nombre d'éléments total */
    totalElementsTemplate?: TemplateRef<void>;
    /** Template optionnel pour afficher des éléments additionnels à côté de la pagination (ex. boutons d'actions) */
    additionalTemplate?: TemplateRef<void>;
    /** Sélection d'une page */
    pageSelect: EventEmitter<number>;
    /** @deprecated(since 1.6) utiliser `pageSelect` à la place. */
    pageSelectEvent: EventEmitter<number>;
    backSelect: EventEmitter<void>;
    /** Changement du nombre de lignes à afficher */
    rowsPerPageChange: EventEmitter<number>;
    /**
     * @deprecated (since 1.6) utiliser `backSelect` à la place.
     */
    backEvent: EventEmitter<void>;
    currentPage: InputSignal<number>;
    /** Désactiver la sélection du nombre de lignes à afficher */
    disabledRowsPerPage: i0.InputSignalWithTransform<boolean, unknown>;
    pageCount: InputSignal<number>;
    /** Nombre d'éléments total. Optionnel pour afficher un nombre d'éléments */
    totalElements: InputSignal<number | undefined>;
    /** Controle le nombre de numéro de pages affichés (5 en standard par défaut, 7 en extended) */
    displayedNumbers: InputSignal<"standard" | "extended">;
    /** Options pour la sélection du nombre de lignes à afficher par page */
    rowsPerPageOptions: InputSignal<DsfrSelectOption[]>;
    /** Taille de page courante */
    rowsPerPage: InputSignal<number>;
    showPrevAndNextBtn: i0.InputSignalWithTransform<boolean, unknown>;
    /** Affiche les labels des boutons textuels "Page précédente/suivante" à partir du breakpoint LG */
    showPrevAndNextLabelLg: i0.InputSignalWithTransform<boolean, unknown>;
    /** Identifiant du select du nombre de pages */
    protected selectId: string;
    protected multipleElements: Signal<boolean | 0 | undefined>;
    protected readonly intervals: Signal<Interval[]>;
    protected readonly isFirstPage: Signal<boolean>;
    protected isLastPage: Signal<boolean>;
    get prevNum(): number;
    get nextNum(): number;
    ngOnInit(): void;
    protected onBack(): void;
    protected onPage(pageNum: number): void;
    protected previous(): number;
    protected next(): number;
    protected pagesFrom(interval: Interval): number[];
    protected onChangerowsPerPage(value: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrPaginationComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrPaginationComponent, "dsfr-pagination", never, { "previousOnly": { "alias": "previousOnly"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "rowsPerPagePlaceholder": { "alias": "rowsPerPagePlaceholder"; "required": false; }; "currentPage": { "alias": "currentPage"; "required": false; "isSignal": true; }; "disabledRowsPerPage": { "alias": "disabledRowsPerPage"; "required": false; "isSignal": true; }; "pageCount": { "alias": "pageCount"; "required": true; "isSignal": true; }; "totalElements": { "alias": "totalElements"; "required": false; "isSignal": true; }; "displayedNumbers": { "alias": "displayedNumbers"; "required": false; "isSignal": true; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; "isSignal": true; }; "rowsPerPage": { "alias": "rowsPerPage"; "required": false; "isSignal": true; }; "showPrevAndNextBtn": { "alias": "showPrevAndNextBtn"; "required": false; "isSignal": true; }; "showPrevAndNextLabelLg": { "alias": "showPrevAndNextLabelLg"; "required": false; "isSignal": true; }; }, { "pageSelect": "pageSelect"; "pageSelectEvent": "pageSelectEvent"; "backSelect": "backSelect"; "rowsPerPageChange": "rowsPerPageChange"; "backEvent": "backEvent"; }, ["totalElementsTemplate", "additionalTemplate"], never, true, never>;
}

declare class DsfrPaginationModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrPaginationModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrPaginationModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof DsfrI18nPipe, typeof EduPageLinkComponent, typeof DsfrPreviousPageComponent, typeof DsfrPaginationComponent], [typeof DsfrPaginationComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrPaginationModule>;
}

interface DsfrQuoteDetail {
    text: string;
    isTitle?: boolean;
    sourceUrl?: string;
}
declare class DsfrQuoteComponent {
    /**
     * Texte de la citation.
     */
    text: string;
    /**
     * Taille du texte de la citation. XL par défaut si non précisé.
     */
    textSize: DsfrTextSize;
    /**
     * URL pour afficher une image d'illustration.
     */
    imagePath: string;
    /**
     * Texte alternatif à utiliser uniquement si l'image à une information à passer.
     */
    imageAlt: string;
    /**
     * Auteur de la citation.
     */
    author: string;
    /**
     * URL de la source de la citation.
     */
    sourceUrl: string;
    /**
     * Tableau des détails de la citation, sous la forme : detail=[{text:string, isTitle?:boolean, sourceURL?:string}]
     *
     */
    details: DsfrQuoteDetail[];
    /**
     * Permet de personnaliser la couleur du tag. Il faut donner la class exact (ex : fr-quote--green-emeraude) que vous
     * trouverez [ici](https://www.systeme-de-design.gouv.fr/version-courante/fr/fondamentaux/couleurs-palette#couleurs-illustratives)
     */
    customClass: string;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrQuoteComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrQuoteComponent, "dsfr-quote", never, { "text": { "alias": "text"; "required": false; }; "textSize": { "alias": "textSize"; "required": false; }; "imagePath": { "alias": "imagePath"; "required": false; }; "imageAlt": { "alias": "imageAlt"; "required": false; }; "author": { "alias": "author"; "required": false; }; "sourceUrl": { "alias": "sourceUrl"; "required": false; }; "details": { "alias": "details"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; }, {}, never, never, true, never>;
}

declare class DsfrQuoteModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrQuoteModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrQuoteModule, never, [typeof i1.CommonModule, typeof DsfrI18nPipe, typeof DsfrQuoteComponent], [typeof DsfrQuoteComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrQuoteModule>;
}

declare class DsfrSearchBarModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSearchBarModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrSearchBarModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrI18nPipe, typeof DsfrSearchBarComponent], [typeof DsfrSearchBarComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrSearchBarModule>;
}

interface DsfrSegmentedControl {
    /** Valeur */
    value: any;
    /** Label  */
    label: string;
    /** Icone */
    icon?: string;
    /** Disabled */
    disabled?: boolean;
    /** Checked - Affiche l'item actif à son premier affichage */
    checked?: boolean;
}

declare class DsfrSegmentedControlComponent {
    /**
     * Liste des choix du contrôle segmenté.
     */
    segments: DsfrSegmentedControl[];
    /**
     * Légende du composant (obligatoire).
     */
    legend: string;
    /**
     * Cache la légende visuellement.
     */
    legendSrOnly: boolean;
    /**
     * Texte(s) de description additionnel(s).
     */
    hint?: string | string[];
    /**
     * Taille du contrôle segmenté, existe en `SM` et `MD` uniquement. `MD` par défaut.
     */
    segmentedControlSize: DsfrSize;
    /**
     * Contrôle segmenté avec légende en ligne
     */
    inline: boolean;
    /**
     * Renvoie la value du choix selectionné.
     */
    segmentedControlSelect: EventEmitter<string>;
    private _name;
    /**
     * Taille du contrôle segmenté, existe en `SM` et `MD` uniquement. `MD` par défaut.
     *
     * @deprecated since(1.15.0) utiliser 'segmentedControlSize' à la place
     */
    get size(): DsfrSize;
    get name(): string | undefined;
    /**
     * Taille du contrôle segmenté, existe en `SM` et `MD` uniquement. `MD` par défaut.
     *
     * @deprecated since(1.15.0) utiliser 'segmentedControlSize' à la place
     */
    set size(value: DsfrSize);
    /**
     * Valeur de l'attribut name des inputs du contrôle segmenté.
     */
    set name(value: string);
    /** @internal */
    getClasses(): {};
    /** @internal */
    getSegmentedControlId(index: number): string;
    /**
     * @internal
     */
    onSegmentSelect(value: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSegmentedControlComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrSegmentedControlComponent, "dsfr-segmented-control", never, { "segments": { "alias": "segments"; "required": true; }; "legend": { "alias": "legend"; "required": true; }; "legendSrOnly": { "alias": "legendSrOnly"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "segmentedControlSize": { "alias": "segmentedControlSize"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "size": { "alias": "size"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, { "segmentedControlSelect": "segmentedControlSelect"; }, never, never, true, never>;
}

declare class DsfrSegmentedControlModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSegmentedControlModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrSegmentedControlModule, never, [typeof i1.CommonModule, typeof DsfrSegmentedControlComponent], [typeof DsfrSegmentedControlComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrSegmentedControlModule>;
}

/**
 * Définit les réseaux sociaux suportés par le composant `Share`.
 */
declare enum DsfrShareNameConst {
    /**
     * Facebook.
     */
    FACEBOOK = "facebook",
    /**
     * Linkedin.
     */
    LINKEDIN = "linkedin",
    /**
     * Mail
     */
    MAIL = "mail",
    /**
     * Mastodon
     */
    MASTODON = "mastodon",
    /**
     * Twitter
     */
    TWITTER = "twitter",
    /**
     * X (ex-Twitter)
     */
    X = "twitter-x"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrShareNameConst}.
 */
type DsfrShareName = `${DsfrShareNameConst}`;

declare class DsfrShareLinkComponent {
    /** Indique si le composant est disable ou non (le mail est toujours enable). */
    disabled: boolean;
    /**
     * L'identifiant du lien - Optionnel.
     *
     * @deprecated (since 1.14.0) utiliser linkId
     */
    id?: string;
    /**
     * L'identifiant du lien - Optionnel.
     */
    linkId?: string;
    /** 'Partager <name>' par défaut, peut être personnalisé. */
    label?: string;
    /** Lien obligatoire pour les réseaux sociaux et mailto. Optionnel pour le presse-papier. */
    link?: string;
    /** L'attribut rel définit la relation entre une ressource liée et le document actuel.
     * Cf. https://developer.mozilla.org/fr/docs/Web/HTML/Attributes/rel
     */
    rel?: string;
    /** Target optionnelle, target html par défaut si non renseigné. */
    linkTarget?: DsfrLinkTarget;
    private _name;
    /** @deprecated (since 1.8.0) use linkTarget instead. */
    get target(): DsfrLinkTarget | undefined;
    get name(): DsfrShareName | undefined;
    /** @deprecated (since 1.8.0) use linkTarget instead. */
    set target(value: DsfrLinkTarget);
    /** La propriété 'name' est obligatoire et doit être sélectionnée dans une liste énumérée. */
    set name(value: DsfrShareName);
    /** @internal */
    getClasses(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrShareLinkComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrShareLinkComponent, "dsfr-share-link", never, { "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "linkId": { "alias": "linkId"; "required": false; }; "label": { "alias": "label"; "required": false; }; "link": { "alias": "link"; "required": false; }; "rel": { "alias": "rel"; "required": false; }; "linkTarget": { "alias": "linkTarget"; "required": false; }; "target": { "alias": "target"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_disabled: unknown;
}

declare class DsfrShareComponent {
    /** @internal */
    shareLinks: QueryList<DsfrShareLinkComponent>;
    /** Permet de fournir le lien affichant le gestionnaire de consentement (exclusif avec la route). */
    consentManagerLink?: string;
    /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */
    consentManagerLinkTarget?: DsfrLinkTarget | undefined;
    /** Permet de fournir la route affichant le gestionnaire de consentement (prioritaire sur le lien). */
    consentManagerRoute?: string;
    /** Si route, événement avec la route en paramètre. */
    readonly consentManagerSelect: EventEmitter<string>;
    /** Permet d'indiquer si l'usage des cookies a été autorisé par l'utilisateur final. */
    hasCookiePermissions: i0.InputSignalWithTransform<boolean, unknown>;
    /** @internal Message de copie dans le presse-papier. */
    message: string | undefined;
    /** @internal Texte du message de permission des cookies. */
    cookiesText: any;
    /** @internal */
    constructor();
    /** @internal */
    onConsentLinkSelect(): void;
    /** @internal */
    onCopy(event: Event): void;
    private setDisabled;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrShareComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrShareComponent, "dsfr-share", never, { "consentManagerLink": { "alias": "consentManagerLink"; "required": false; }; "consentManagerLinkTarget": { "alias": "consentManagerLinkTarget"; "required": false; }; "consentManagerRoute": { "alias": "consentManagerRoute"; "required": false; }; "hasCookiePermissions": { "alias": "hasCookiePermissions"; "required": false; "isSignal": true; }; }, { "consentManagerSelect": "consentManagerSelect"; }, ["shareLinks"], ["*"], true, never>;
}

declare class DsfrShareModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrShareModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrShareModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof DsfrLinkComponent, typeof DsfrI18nPipe, typeof DsfrShareLinkComponent, typeof DsfrShareComponent], [typeof DsfrShareComponent, typeof DsfrShareLinkComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrShareModule>;
}

/** Menu */
interface DsfrMenu<T = unknown> {
    /** Titre du menu (optionnel) */
    title?: string;
    /** Entrées du menu */
    items: DsfrMenuItem<T>[];
}
/** Entrée de menu */
interface DsfrMenuItem<T = unknown> extends DsfrLink {
    /** Indique le titre de rubrique */
    title?: string;
    /** Indique l'identifiant de la zone de menu contrôlée par cet entête de menu, généré automatiquement par défaut */
    controlId?: string;
    subItems?: DsfrMenuItem<T>[];
    /**
     * Signal contrôlant la visibilité de l'item.
     * Prioritaire sur `canDisplay` si défini.
     */
    isVisible?: Signal<boolean>;
    /** Informations complémentaires optionnelles */
    data?: T;
}
interface DsfrItemMenuContexte {
    item: DsfrMenuItem;
}

declare class DsfrSidemenuComponent<T = unknown> {
    /** Attribut aria-label du menu latéral.  */
    ariaLabel: string;
    /** Id du menu, généré par défaut si non affecté. */
    controlId?: string;
    /** Affiche le menu latéral en version fixe  */
    sticky: boolean;
    /** Affiche le menu latéral en version fixe sur 100% de la hauteur de la page. */
    stickyFullHeight: boolean;
    /** Le menu latéral est affiché à gauche par défaut mais il est possible de l'afficher à droite. */
    position: DsfrPosition;
    /**
     * Callback global déterminant si un item doit être affiché.
     * La maj du rendu du menu ne sera réactive que si cette fonction utilise un signal
     */
    canDisplay?: (item: DsfrMenuItem<T>) => boolean;
    /** Activer la selection automatique des items et parents (si absence de routerLink) */
    autoActive: boolean;
    /** Evénement émis suite à la sélection d'un item avec lien */
    itemSelect: EventEmitter<DsfrMenuItem<T>>;
    /** Template pour afficher le label d'un item de menu (contenu d'un lien ou d'un bouton). Remplace label par défaut. */
    labelItemTemplate?: TemplateRef<DsfrItemMenuContexte>;
    /** Ne pas afficher d'accordéons pour les éléments de menu */
    readonly noAccordion: i0.InputSignal<boolean>;
    /** Modèle de donnée du menu. */
    readonly menu: i0.InputSignal<DsfrMenu<T>>;
    readonly menuViewModel: i0.Signal<DsfrMenuItem<T>[]>;
    /** Pointeur sur le dernier item sélectionné (permet de le désélectionner lors d'une nouvelle sélection). */
    private _prevItemSelected;
    private _initialActiveItem;
    private _btnMenuMobile;
    constructor();
    protected onSelectItem(item: DsfrMenuItem<T>): void;
    /**
     * Fermer le menu en mode mobile après une navigation
     */
    private closeMenuOnMobile;
    /** Dupliquer les items de menu et filtres les éléments visibles pour ne pas modifier le modèle en entrée */
    private cloneAndFilterVisibles;
    /** A la selection d'un item si autoActive :
     * - on passe le précédent item  sélectionné _prevItemSelected en désactivé ainsi que ses parents (trois niveaux potentiels)
     * - nouvel item et ses parents en actif
     * - mise a jour de _prevItemSelected
     */
    private selectItem;
    /** Désactiver ou activer un item et ses noeuds parents */
    private activateItem;
    /**
     * Parcours récursif du menu pour retrouver le parent direct d'un item
     */
    private findParent;
    private isItemVisible;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSidemenuComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrSidemenuComponent<any>, "dsfr-sidemenu", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "controlId": { "alias": "controlId"; "required": false; }; "sticky": { "alias": "sticky"; "required": false; }; "stickyFullHeight": { "alias": "stickyFullHeight"; "required": false; }; "position": { "alias": "position"; "required": false; }; "canDisplay": { "alias": "canDisplay"; "required": false; }; "autoActive": { "alias": "autoActive"; "required": false; }; "noAccordion": { "alias": "noAccordion"; "required": false; "isSignal": true; }; "menu": { "alias": "menu"; "required": true; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, ["labelItemTemplate"], never, true, never>;
}

declare class DsfrSidemenuModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSidemenuModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrSidemenuModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof DsfrDisableRouterLinkDirective, typeof DsfrLinkComponent, typeof DsfrSidemenuComponent], [typeof DsfrSidemenuComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrSidemenuModule>;
}

declare class DsfrSkipLinksComponent {
    /**
     * Tableau des liens.
     */
    links: DsfrAnchorLink[];
    /**
     * Permet la gestion programmatique d'une navigation initiée au click sur le lien si l'input 'route' est valorisé.
     * La valeur de la propriété 'route' sera transmise.
     */
    linkSelect: EventEmitter<string>;
    /** Identifiant du container skipLinks, généré par défaut */
    skipLinksId: i0.InputSignal<string>;
    /**
     * Dans le cas d'une route, un événement `(routeSelect)` est émis avec la valeur de la route et
     * l'événement initial n'est pas propagé.
     *
     * @internal
     */
    onSkiplinkSelect(event: Event, route: string | undefined): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSkipLinksComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrSkipLinksComponent, "dsfr-skiplinks", never, { "links": { "alias": "links"; "required": true; }; "skipLinksId": { "alias": "skipLinksId"; "required": false; "isSignal": true; }; }, { "linkSelect": "linkSelect"; }, never, never, true, never>;
}

declare class DsfrSkiplinksModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSkiplinksModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrSkiplinksModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof DsfrSkipLinksComponent], [typeof DsfrSkipLinksComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrSkiplinksModule>;
}

declare class DsfrStepperComponent {
    /**
     * Titre de l'étape courante.
     */
    currentStepTitle: string;
    /**
     * Titre de l'étape suivante.
     */
    nextStepTitle: string;
    /**
     * Le niveau du titre dans la structure, ne change pas l'apparence, `<h2>` par défaut.
     *
     * @since 1.11.8
     */
    headingLevel: DsfrHeadingLevel | 'P' | 'H1';
    /**
     * Nombre total d'étapes.
     */
    totalSteps: i0.InputSignal<number>;
    /**
     * Index de l'étape courante.
     */
    currentStep: i0.InputSignal<number>;
    protected readonly i18n: DsfrI18nService;
    /** @internal */
    constructor();
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrStepperComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrStepperComponent, "dsfr-stepper", never, { "currentStepTitle": { "alias": "currentStepTitle"; "required": true; }; "nextStepTitle": { "alias": "nextStepTitle"; "required": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "totalSteps": { "alias": "totalSteps"; "required": false; "isSignal": true; }; "currentStep": { "alias": "currentStep"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class DsfrStepperModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrStepperModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrStepperModule, never, [typeof i1.CommonModule, typeof HeadingComponent, typeof DsfrI18nPipe, typeof DsfrStepperComponent], [typeof DsfrStepperComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrStepperModule>;
}

/**
 * Décrit un lien de sommaire.
 */
interface DsfrSummaryLink extends DsfrNavigation {
    /**
     * Libellé du lien.
     */
    label: string;
    /**
     * Sous-entrées optionnelles.
     */
    subEntries?: DsfrSummary;
}
/**
 * Un sommaire est une liste de {@link DsfrSummaryLink}.
 */
type DsfrSummary = DsfrSummaryLink[];

declare class DsfrSummaryComponent {
    heading?: string;
    /** Le niveau de titre devant être utilisé, une balise `p` sera utilisée si la propriété n'est pas renseignée. */
    headingLevel?: DsfrHeadingLevel;
    /** Les entrées du sommaire (required) */
    entries: DsfrSummary;
    /** Événement sur lien avec la valeur de l'ancre. */
    entrySelect: EventEmitter<string>;
    /** @internal */ headingId: string;
    /**
     * Emission de la valeur de l'ancre (fragment ou link) au clic sur un lien
     * @internal
     */
    /** @internal */
    onLinkSelect(entry: DsfrSummaryLink): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSummaryComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrSummaryComponent, "dsfr-summary", never, { "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "entries": { "alias": "entries"; "required": false; }; }, { "entrySelect": "entrySelect"; }, never, ["[heading]"], true, never>;
}

declare class DsfrSummaryModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSummaryModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrSummaryModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof HeadingComponent, typeof ItemLinkComponent, typeof DsfrSummaryComponent], [typeof DsfrSummaryComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrSummaryModule>;
}

/**
 * Définit les tailles de cellules proposées par le DSFR.
 */
declare enum DsfrCellSizeConst {
    XS = "XS",
    SM = "SM",
    MD = "MD",
    LG = "LG"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrCellSizeConst}.
 */
type DsfrCellSize = `${DsfrCellSizeConst}`;
/**
 * Modèle de tri d'une colonne.
 */
interface DsfrSortColumn {
    /**
     * Permet de définir le sens du tri de la colonne (`ascending` par defaut).
     */
    order: 'descending' | 'ascending';
    /**
     * Propriété représentée par la colonne.
     */
    field: string;
}
/**
 * Représente l'état courant de la table (pagination et tri).
 */
interface DsfrTableState {
    /**
     * Indique le numéro de page courante.
     */
    page: number;
    /**
     * Indique le nombre de lignes affichées par page.
     */
    rowsPerPage: number;
    /**
     * Décrit les modalités de tri d'une colonne.
     */
    sort: DsfrSortColumn | null;
}
/**
 * Décrit un évenement au changement de la pagination.
 */
interface DsfrTablePaginationEvent {
    /**
     * Indique le numéro de la page courante.
     */
    currentPage: number;
    /**
     * Indique le nombre de lignes affichées par page.
     */
    rowsPerPage: number;
}
/**
 * Décrit un évenement au changement de la sélection.
 */
interface DsfrTableSelectionEvent {
    /**
     * Fournit la ligne concernées par le changement de sélection.
     */
    row: any;
    /**
     * Indique les lignes actuellement sélectionées.
     *
     * (contiendra `row` lors d'une sélection et ne contiendra pas `row` lors d'une désélection)
     */
    selectedRows: any[];
}
/**
 * Décrit le modèle de présentation des options d'une cellule.
 */
interface DsfrCellOptions {
    /**
     * Active le retour à la ligne.
     */
    allowWrap?: boolean;
    /**
     * La colonne est fixe.
     */
    fixed?: boolean;
    /**
     * Position en cas de colonne fixe, à gauche par défaut.
     */
    fixedPosition?: 'left' | 'right';
    /**
     * Alignement horizontal des cellules de la colonne, à gauche par défaut.
     */
    textAlign?: 'right' | 'center';
    /**
     * Alignement vertical des cellules de la colonne, centré par défaut.
     */
    verticalAlign?: 'top' | 'bottom';
}
/**
 * Décrit le modèle de présentation d'une colonne.
 */
interface DsfrColumn extends DsfrCellOptions {
    /**
     * Propriété représentée par la colonne.
     */
    field: string;
    /**
     * Libellé affiché.
     */
    label?: string;
    /**
     *  La colonne est triable.
     */
    sortable?: boolean;
    /**
     * Attribut colspan.
     */
    colspan?: number;
    /**
     * Largeur minimale de la colonne, MD par défaut.
     */
    minWidth?: DsfrCellSize;
    /**
     * Ne pas afficher le libellé de la colonne.
     */
    labelSrOnly?: boolean;
    /**
     * Fonction personnalisée de tri.
     */
    sortFunction?: (a: any, b: any, order: 'ascending' | 'descending') => number;
    /**
     * Fonction de formatage du contenu d'une cellule.
     */
    formatFunction?: (cellValue: any) => string;
}
/**
 * Décrit le modèle de présentation des options d'une ligne.
 */
interface DsfrRowOptions {
    /**
     * L'identifiant unique de la ligne.
     */
    id: string | number;
    /**
     * Permet d'indiquer que la ligne n'est pas sélectionnable.
     */
    disableSelect?: boolean;
}
/**
 * Décrit le modèle de présentation des options d'une table.
 */
interface DsfrTableOptions {
    /**
     * Pas de scroll horizontal sur le tableau.
     */
    noScroll?: boolean;
    /**
     * Lignes sélectionnables.
     */
    selectable?: boolean;
    /**
     * La sélection concerne toutes les lignes (défaut) ou uniquement les lignes de la page courante.
     */
    selectionScope?: 'all' | 'currentPage';
    /**
     * Afficher une checkbox de sélection de toutes les lignes (selon selectionScope).
     */
    showSelectAll?: boolean;
    /**
     * Titre invisible (sr-only).
     */
    captionSrOnly?: boolean;
    /**
     * Positionne le titre au bas de la table.
     */
    bottomCaption?: boolean;
    /**
     * Taille des cellules du tableau (SM par défaut).
     */
    cellSize?: DsfrSize;
    /**
     * Affiche des bordures verticales.
     */
    bordered?: boolean;
    /**
     * Active le retour à la ligne automatique des éléments.
     */
    allowWrap?: boolean;
    /**
     * Elément correspondant au titre du tableau si caption n'est pas renseigné.
     */
    ariaLabelledBy?: string;
    /**
     * Elément correspondant à la description du tableau si caption n'est pas renseigné.
     */
    ariaDescribedBy?: string;
    /**
     * Ajoute l'attribut aria rôle à la table (ex. "grid").
     */
    role?: string;
}
/**
 *  Configuration du regroupement des lignes dans la table
 */
interface DsfrRowGrouping {
    /**
     * Nom de la propriété du modèle de données utilisée pour former les groupes.
     * Exemple : { key: 'category' }. Les lignes ayant la même valeur pour `category` seront regroupées ensemble.
     */
    key: string;
    /**
     * Définit si les groupes peuvent être repliés ou ouverts par l'utilisateur
     */
    expandable?: boolean;
    /**
     * Définit si les groupes sont ouverts  par défaut à l’initialisation.
     */
    expanded?: boolean;
}
/**
 * Représente un groupe de lignes
 * Chaque groupe correspond à une valeur unique de la propriété définie
 * par `DsfrRowGrouping.key`, et contient l’ensemble des lignes associées.
 */
interface DsfrDataGroup {
    /**
     * Valeur de la propriété utilisée comme clé de regroupement.
     */
    key: string;
    /**
     * Ensemble des lignes appartenant à ce groupe.
     */
    rows: any[];
    /**
     * Indique si le groupe est actuellement replié (collapsed).
     */
    collapsed?: WritableSignal<boolean>;
    /** Attribut calculé aria-posinset, index dans la liste */
    ariaPosinset?: number;
    /** Attribut calculé aria-setsize, nombre d'éléments */
    ariaSetsize?: number;
    /** Nombre total de résultats */
    total: number;
    /** Données supplémentaires du groupe */
    data?: any;
}
/**
 * Interface utilisée pour le contexte du template tableBodyTemplate
 */
interface DsfrTableBodyContext {
    $implicit: any;
    rowOptions: DsfrRowOptions;
    index: number;
}
/**
 * Interface utilisée pour le contexte du template tableGroupHeaderTemplate
 */
interface DsfrTableGroupHeaderContext {
    group: DsfrDataGroup;
    index: number;
}
/**
 * Interface utilisée pour le contexte du template tableGroupTemplate
 */
interface DsfrTableGroupContext extends DsfrTableGroupHeaderContext {
    row: any;
    $implicit: any;
}

/**
 * Composant pied de page du tableau
 * Contient trois éléments optionnel mais dans cet ordre :
 * - start: total de lignes, sélection du nombre de lignesn à afficher si pagination
 * - middle: composant de pagination commun dsfr-pagination
 * - end: template pour afficher des boutons d'actions agissant sur tout le tableau
 */
declare class DsfrTableFooterComponent implements OnInit {
    /** Template optionnel afficher des boutons d'actions dans footer end */
    footerActionsTemplate?: TemplateRef<void>;
    /** Afficher la pagination */
    showPagination: boolean;
    /** Afficher le total de lignes */
    showFooterResult: boolean;
    /** Message personnalisé pour afficher le total de lignes */
    footerResultsTemplate?: TemplateRef<void>;
    /** Etat initial pour la pagination */
    initialState?: DsfrTableState;
    /** Nombre total d'éléments */
    totalElements: number;
    /** Nombre total de pages */
    totalPage: number;
    /** Page actuelle affichée (commence à 1) */
    currentPage: any;
    /** Options pour la sélection du nombre de lignes à afficher */
    rowsPerPageOptions: DsfrOption[];
    /** Message affiché en cas de tableau vide ('Aucun résultat' par défaut) */
    emptyResultsMessage?: string;
    /** Désactiver la sélection du nombre de lignes à afficher */
    disabledRowsPerPage?: boolean;
    rowsPerPageChange: EventEmitter<number>;
    pageSelect: EventEmitter<number>;
    rowsPerPage: number;
    ngOnInit(): void;
    onPageSelect(pageNumber: number): void;
    onChangeRowsPerPage(rowsPerPage: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTableFooterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTableFooterComponent, "dsfr-table-footer", never, { "footerActionsTemplate": { "alias": "footerActionsTemplate"; "required": false; }; "showPagination": { "alias": "showPagination"; "required": false; }; "showFooterResult": { "alias": "showFooterResult"; "required": false; }; "footerResultsTemplate": { "alias": "footerResultsTemplate"; "required": false; }; "initialState": { "alias": "initialState"; "required": false; }; "totalElements": { "alias": "totalElements"; "required": false; }; "totalPage": { "alias": "totalPage"; "required": true; }; "currentPage": { "alias": "currentPage"; "required": false; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; }; "emptyResultsMessage": { "alias": "emptyResultsMessage"; "required": false; }; "disabledRowsPerPage": { "alias": "disabledRowsPerPage"; "required": false; }; }, { "rowsPerPageChange": "rowsPerPageChange"; "pageSelect": "pageSelect"; }, never, never, true, never>;
    static ngAcceptInputType_showPagination: unknown;
    static ngAcceptInputType_showFooterResult: unknown;
}

/**
 * Service pour la datatable
 * Gestion du rafraichissement des données
 */
declare class DsfrDataTableService {
    /** @internal Etat du tableau (tri, page courante, page size) */
    readonly tableState: Signal<DsfrTableState>;
    /** @internal Mise à jour des données. Appliquer le calcul du rendu des cellules en cas de colonnes fixed */
    readonly isDataRendered: WritableSignal<boolean>;
    /** Page courante */
    private readonly _currentPage;
    /** Tri courant */
    private readonly _activeSort;
    readonly activeSort: Signal<DsfrSortColumn | null>;
    /** Nombre de lignes à afficher par page */
    private readonly _rowsPerPage;
    readonly rowsPerPage: Signal<number>;
    /** Données de la table */
    private readonly _dataSubject;
    readonly data$: Observable<any[]>;
    private currentData;
    /** Options de la table */
    private readonly _tableOptions;
    readonly tableOptions: Signal<DsfrTableOptions>;
    /** Lignes sélectionnées */
    private readonly _selectionSubject;
    readonly selection$: Observable<any[]>;
    /**
     * Mise à jour des données avec rafraichissement du tableau
     * @param newData nouvelles données du tableau
     * @returns void
     */
    refreshData(newData: any[]): void;
    /**
     * L'affichage des cellules du tableau (calcul de position) est terminé
     * @internal
     */
    updateIsDataRendered(): void;
    /**
     * Forcer le rafraichissement du calcul de position des colonnes fixées
     * par ex. si l'on souhaite recalculer après un redimensionnement de la fenêtre
     */
    forceRenderFixedColums(): void;
    /**
     * Aller à une page donnée
     * @param page
     */
    goToPage(page: number): void;
    /**
     * Mise à jour des données apres un changement de rowsPerPage
     * @param rowsPerPage
     * @internal
     */
    updatePagination(rowsPerPage: number): void;
    /**
     * Trier la table
     * @param sort DsfrSortColumn
     */
    sortTable(sort: DsfrSortColumn): void;
    /**
     * Mise à jour de l'état d'affichage de la table (tri, page courante, nombre de lignes par page)
     * @param state
     * @internal
     */
    setState(state: DsfrTableState): void;
    /**
     * Met à jour une propriété spécifique de l'objet `tableOptions`.
     * @param key Le nom de la propriété de l'interface `tableOptions` à mettre à jour.
     * @param newValue La nouvelle valeur de la propriété spécifiée par `key`
     * @returns void
     */
    updateTableOptions(key: keyof DsfrTableOptions, newValue: any): void;
    /**
     * Sélectionner les lignes programmatiquement
     * @param selectedRowIds la liste des identifiants des lignes qui seront sélectionnées
     **/
    setSelectedRows(selectedRowIds: any[]): void;
    /** @internal */
    setTableOptions(tableOptions: DsfrTableOptions): void;
    private setData;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDataTableService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DsfrDataTableService>;
}

/**
 * Classe abstraite gestion de la pagination du tableau
 * selon le nombre de lignes à afficher et nombre de pages
 */
declare abstract class BasePaginatedTableComponent {
    /** Etat initial de la table à appliquer (tri, page et nombre de lignes affichées par page) */
    initialState?: DsfrTableState;
    /** Afficher la pagination */
    pagination: boolean;
    /** Activer le mode serveur (pagination, tri et sélection côté serveur) */
    serverSide: boolean;
    /** Choix de taille de page (par défaut 10, 20, 50, 100). Pas d'affichage du select si non défini */
    rowsPerPageOptions: DsfrOption[];
    /** Changement de pagination (page affichée ou taille de page) */
    paginationChange: EventEmitter<DsfrTablePaginationEvent>;
    /** Etat modifié */
    readonly stateChange: EventEmitter<DsfrTableState>;
    /** @internal Total résultats */
    totalElements: i0.WritableSignal<number>;
    /** @internal Total pages */
    totalPage: Signal<number>;
    /** @internal liste des éléments sélectionnables */
    selectableRows: any[];
    /**@internal Service datatable pour rafraichissement des données */
    readonly dataTableService: DsfrDataTableService;
    private _serverResultsLength;
    /** @internal */
    get serverResultsLength(): number | undefined;
    /** Total du nombre de résultats (utilisé si serverSide) */
    set serverResultsLength(value: number);
    /** Accès au service de la table */
    getService(): DsfrDataTableService;
    /**
     * Changement du nombre de lignes affichés par page
     * calcul des pages et changement des lignes affichées
     * @internal
     */
    onRowsPerPageChange(rowsPerPage: number): void;
    /**
     * Au changement de page
     * @param page numéro de page
     * @internal
     */
    onPageSelect(page: number): void;
    /** Calcul du total de page selon le nombre total de résultats et le nombre de lignes affichées
     * @internal
     */
    protected calculateTotalPage(): number;
    /**
     * Après changement de page
     * Mise a jour des données affichées selon l'offset et la taille de page
     * @internal
     * */
    protected paginateData(rows: any, state: DsfrTableState): any[];
    static ɵfac: i0.ɵɵFactoryDeclaration<BasePaginatedTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BasePaginatedTableComponent, "ng-component", never, { "initialState": { "alias": "initialState"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "serverSide": { "alias": "serverSide"; "required": false; }; "rowsPerPageOptions": { "alias": "rowsPerPageOptions"; "required": false; }; "serverResultsLength": { "alias": "serverResultsLength"; "required": false; }; }, { "paginationChange": "paginationChange"; "stateChange": "stateChange"; }, never, never, true, never>;
    static ngAcceptInputType_pagination: unknown;
    static ngAcceptInputType_serverSide: unknown;
}

declare class DsfrTableComponent extends BasePaginatedTableComponent implements OnInit, OnChanges, OnDestroy {
    /** Template pour les groupes de boutons d'actions du header. DOIT contenir un dsfr-buttons-group */
    headerActionsTemplate?: TemplateRef<void>;
    /** Template du résumé dans le cas d'un tableau complexe */
    headerSummaryTemplate?: TemplateRef<void>;
    /** Template pour personnaliser l'affichage du nombre de lignes sélectionnées */
    headerSelectedRowCountTemplate?: TemplateRef<void>;
    /** Template de l'en-tête des colonnes du tableau. (contenu du thead) */
    tableHeaderTemplate?: TemplateRef<void>;
    /** Template des lignes, row en paramètre (contenu du tbody) */
    tableBodyTemplate?: TemplateRef<DsfrTableBodyContext>;
    /** Template du pied du tableau (contenu du tfoot) */
    tableFooterTemplate?: TemplateRef<void>;
    /** Template d'une ligne d'en-tête de groupe en cas de groupBy */
    rowGroupHeaderTemplate?: TemplateRef<DsfrTableGroupHeaderContext>;
    /** Template d'une ligne de contenu de groupe en cas de groupBy */
    rowGroupTemplate?: TemplateRef<DsfrTableGroupContext>;
    /** Template personnalisé pour afficher le total de lignes */
    footerResultsTemplate?: TemplateRef<void>;
    /** Template pour les groupes de boutons d'actions du footer */
    footerActionsTemplate?: TemplateRef<void>;
    /** Template à afficher pendant le chargement des données */
    loadingTemplate?: TemplateRef<void>;
    /** Template pour une vue alternative au tableau (ex. liste) */
    alternativeViewTemplate?: TemplateRef<void>;
    headerActionsTemplateRef?: TemplateRef<void>;
    /** @internal */
    headerSummaryTemplateRef?: TemplateRef<void>;
    /** @internal */
    headerSelectedRowCountTemplateRef?: TemplateRef<void>;
    /** @internal */
    tableHeaderTemplateRef?: TemplateRef<void>;
    /** @internal */
    tableFooterTemplateRef?: TemplateRef<void>;
    /** @internal */
    footerActionsTemplateRef?: TemplateRef<void>;
    /** @internal */
    footerResultsTemplateRef?: TemplateRef<void>;
    /** @internal */
    loadingTemplateRef?: TemplateRef<void>;
    /** @internal */
    alternativeViewTemplateRef?: TemplateRef<void>;
    /** Identifiant de la table */
    tableId: string;
    /** Titre du tableau. Obligatoire sauf si labelledBy est renseigné. */
    caption?: string;
    /** Hauteur maximale de la table, nombre en pixels ou valeur en string. Le contenu supplémentaire provoque un scroll vertical */
    fixedHeight?: number | string;
    /** Rend les th sticky en haut du tableau. */
    thSticky: boolean;
    /** Le composant se bloquera au top de l'écran et prendra toute sa hauteur.*/
    tableHeaderSticky: boolean;
    /** Données */
    data: any[];
    /** Propriété correspondant à l'identifiant unique de chaque donnée (recommandé) */
    dataKey?: string;
    /** Options d'affichage du tableau  */
    tableOptions: DsfrTableOptions;
    /** Options d'affichage des lignes. dataKey doit être défini */
    rowsOptions?: DsfrRowOptions[];
    /** Définition des colonnes */
    columns: DsfrColumn[];
    /** Afficher le nombre de résultat total dans le footer */
    showFooterResult: boolean;
    /** Message affiché en cas de tableau vide ('Aucun résultat' par défaut) */
    emptyResultsMessage?: string;
    /** Indique que les données sont en cours de chargement */
    loading: boolean;
    /** Header: affiche la barre de recherche dans le header */
    showSearch: boolean;
    /**
     * Valeur du placeholder de l'input de recherche, si showSearch est `true`.
     */
    searchInputPlaceholder?: string;
    /** Label (pour les lecteurs d'écrans) de l'input de recherche. */
    searchLabel?: string;
    /** Valeur du title du bouton de la barre de recherche, si showSearch est `true`. */
    searchButtonTitle?: string;
    /** Valeur de la barre de recherche, si `showSearch` est à `true`. */
    searchInputValue?: string;
    /** Header: affiche le changement de type de vue (tableau / liste) */
    showHeaderViews: boolean;
    /** Header: redéfinit les vues du contrôle segmenté (si changeDisplayType). Par défaut tableau/liste */
    headerViewsOptions: DsfrSegmentedControl[];
    /** Liste des identifiants des lignes initialement sélectionnées */
    initialSelection: any[];
    /** Configuration du regroupement des lignes dans la table */
    groupBy?: DsfrRowGrouping;
    /** Renvoie la colonne triée au changement de tri de la table */
    readonly sortChange: EventEmitter<DsfrSortColumn | null>;
    /** Renvoie la vue sélectionnée au changement de vue (displayModes) */
    readonly viewSelect: EventEmitter<string>;
    /** Renvoie la valeur de l'input de la barre de recherche au changement.  */
    readonly searchChange: EventEmitter<string>;
    /** Renvoie la valeur de l'input de la barre de recherche au clic sur rechercher.  */
    readonly searchSelect: EventEmitter<string>;
    /** A la sélection d'une ligne, émet toutes les lignes sélectionnées et la ligne sélectionnée */
    selectionChange: EventEmitter<DsfrTableSelectionEvent>;
    /** Case à cocher tout sélectionner cochée ou décochée */
    showSelectAllChange: EventEmitter<boolean>;
    /** @internal pour permettre la mise a jour du select all en header */
    isAllSelected: i0.WritableSignal<boolean | undefined>;
    /** @internal observable des données modifiées par l'état courant */
    displayedRows$: Observable<any[]>;
    /**@internal pas de choix de vue, ou vue table sélectionnée */
    showTableView: boolean;
    /** @internal */
    countSelectedRows: number | undefined;
    /** @internal Observable de l'état du tableau pour le rafraichissement des données */
    tableState$: Observable<DsfrTableState>;
    /** @internal liste des différentes classes de la table */
    tableClasses: Signal<string[] | []>;
    protected isSortable: boolean;
    private dataChanged$;
    private notifyOnDestroy;
    private readonly logger;
    private _displayedRows;
    private _selectedRows;
    /** Récupérer les données couramment affichées dans le tableau */
    get displayedRows(): any[];
    /** Récupérer les groupes créés dans le tableau */
    get groups(): DsfrDataGroup[];
    /** Récupérer les données sélectionnées dans le tableau */
    get selectedRows(): any[];
    ngOnInit(): void;
    /**
     * Au changement de data / rowsOptions / tableOptions
     * Rafraichir les données et la vue
     * @param changes
     */
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    /**
     * Affichage du tableau selon la colonne concernées et mise a jour des données affichées
     * @internal
     **/
    onSortChange(): void;
    /**
     * Dans le cas ou la directive selectAll n'est pas controlée par les sous directives dsfrSelectCell
     * Mettre à jour manuellement la directive isAllSelected (par ex. depuis composant parent TreeTable)
     * @param nbSelectedRows nombre de lignes couramment sélectionnées
     * @param isAllSelected boolean
     */
    manuallySetIsAllSelected(nbSelectedRows: number, isAllSelected: boolean): void;
    protected trackById(dataKey: string | undefined, index: number, item: any): any;
    protected onviewSelect(view: string): void;
    protected onsearchChange(search: string): void;
    protected onsearchSelect(search: string): void;
    /**
     * Initialisation de la table si sélection
     * - calcul du nombre d'elements selectionnables
     * - application de la sélection initiale
     * - coche de isAllSelected si toutes les lignes sont sélectionnées
     */
    protected initSelectableTable(rows: any[]): void;
    protected setSelectableRows(rows: any[]): any[];
    /** Sélection ou déselection des lignes à la sélection de la case à cocher en en-tête **/
    protected toggleSelectAll(): void;
    /** Sélection ou déselection d'une ligne  **/
    protected selectRow(row: any): void;
    /**
     * Sélectionne ou déselectionne toutes les lignes de la page courante
     * N'agit pas sur la sélection/déselection des lignes des autres pages
     * @param key datakey
     */
    private selectRowsOnCurrentPage;
    /*** Sélectionne ou déselectionne toutes les lignes du tableau **/
    private selectAllRows;
    /**
     * Détermine l'état de la checkbox de sélection globale selon selectionScope.
     * @returns true (tout), false (rien), undefined (partiel)
     */
    private checkAllRowsSelected;
    /** Mise a jour des classes de fr-table selon tableOptions */
    private setTableClasses;
    /**
     * Détermine si le tableau contient au moins une colonne triable
     */
    private hasSortableColumn;
    /** Fonction de tri : sortFunction de la colonne si définie ou par défaut sur du contenu texte simple */
    private sortRows;
    /**
     * Abonnement à la mise a jour des données et au changement d'état pour rafraichir le tableau
     */
    private registerRefreshData;
    /**
     * Application de l'état sur les données affichées apres refresh data ou tri/pagination
     * @param data données modifiées
     * @param state état (tri, pagination, page size)
     * @returns données à jour triées et paginées
     */
    private applyStateToData;
    /**
     * Retourne les options de la ligne passée en paramètre, selon l'identifiant ou l'index
     * */
    private getRowOption;
    /**
     * Map data au format lignes affichables et application de la sélection
     * @param data
     * @returns data avec informations d'affichage et index
     */
    private mapDataToRows;
    /** Mettre à jour la sélection lors de l'appel a la methode sur le service */
    private refreshSelection;
    /** Fonction de tri par défaut insensible à la casse et aux diacritiques */
    private sortByDefault;
    /**
     * Création des groupes selon groupBy
     * @returns liste des données par groupes et lignes sans groupes
     */
    private groupRows;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTableComponent, "dsfr-datatable", never, { "headerActionsTemplateRef": { "alias": "headerActionsTemplateRef"; "required": false; }; "headerSummaryTemplateRef": { "alias": "headerSummaryTemplateRef"; "required": false; }; "headerSelectedRowCountTemplateRef": { "alias": "headerSelectedRowCountTemplateRef"; "required": false; }; "tableHeaderTemplateRef": { "alias": "tableHeaderTemplateRef"; "required": false; }; "tableFooterTemplateRef": { "alias": "tableFooterTemplateRef"; "required": false; }; "footerActionsTemplateRef": { "alias": "footerActionsTemplateRef"; "required": false; }; "footerResultsTemplateRef": { "alias": "footerResultsTemplateRef"; "required": false; }; "loadingTemplateRef": { "alias": "loadingTemplateRef"; "required": false; }; "alternativeViewTemplateRef": { "alias": "alternativeViewTemplateRef"; "required": false; }; "tableId": { "alias": "tableId"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "fixedHeight": { "alias": "fixedHeight"; "required": false; }; "thSticky": { "alias": "thSticky"; "required": false; }; "tableHeaderSticky": { "alias": "tableHeaderSticky"; "required": false; }; "data": { "alias": "data"; "required": true; }; "dataKey": { "alias": "dataKey"; "required": false; }; "tableOptions": { "alias": "tableOptions"; "required": false; }; "rowsOptions": { "alias": "rowsOptions"; "required": false; }; "columns": { "alias": "columns"; "required": true; }; "showFooterResult": { "alias": "showFooterResult"; "required": false; }; "emptyResultsMessage": { "alias": "emptyResultsMessage"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "showSearch": { "alias": "showSearch"; "required": false; }; "searchInputPlaceholder": { "alias": "searchInputPlaceholder"; "required": false; }; "searchLabel": { "alias": "searchLabel"; "required": false; }; "searchButtonTitle": { "alias": "searchButtonTitle"; "required": false; }; "searchInputValue": { "alias": "searchInputValue"; "required": false; }; "showHeaderViews": { "alias": "showHeaderViews"; "required": false; }; "headerViewsOptions": { "alias": "headerViewsOptions"; "required": false; }; "initialSelection": { "alias": "initialSelection"; "required": false; }; "groupBy": { "alias": "groupBy"; "required": false; }; }, { "sortChange": "sortChange"; "viewSelect": "viewSelect"; "searchChange": "searchChange"; "searchSelect": "searchSelect"; "selectionChange": "selectionChange"; "showSelectAllChange": "showSelectAllChange"; }, ["headerActionsTemplate", "headerSummaryTemplate", "headerSelectedRowCountTemplate", "tableHeaderTemplate", "tableBodyTemplate", "tableFooterTemplate", "rowGroupHeaderTemplate", "rowGroupTemplate", "footerResultsTemplate", "footerActionsTemplate", "loadingTemplate", "alternativeViewTemplate"], never, true, never>;
    static ngAcceptInputType_showHeaderViews: unknown;
}

/**
 * Directive affichage d'une cellule (alignements)
 */
declare class DsfrCellDirective {
    cell: i0.InputSignal<DsfrCellOptions>;
    protected readonly element: ElementRef<any>;
    private readonly dataTableService;
    private init;
    constructor();
    /**
     * Calcul de la position et taille des cellules en cas de colonnes fixes
     * Double animation request pour bug webkit refresh
     * Relancé à chaque changement de données
     */
    private calculateCellRender;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrCellDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrCellDirective, "[dsfrCell]", never, { "cell": { "alias": "dsfrCell"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

interface DsfrTableContext {
    headerSummaryTemplate?: TemplateRef<void>;
    countSelectedRows: number;
    isAllSelected: Signal<boolean>;
    tableId: string;
    toggleSelectAll: () => void;
    selectRow: (row: any) => void;
    onSortChange: () => void;
}

/**
 * Directive ajout de style pour une colonne (taille, alignements)
 */
declare class DsfrColumnDirective {
    col: i0.InputSignal<DsfrColumn>;
    allowWrap: i0.InputSignal<boolean>;
    protected readonly dataTableService: DsfrDataTableService;
    protected readonly element: ElementRef<any>;
    protected readonly table: DsfrTableContext;
    constructor();
    protected get scope(): string | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrColumnDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrColumnDirective, "[dsfrCol]", never, { "col": { "alias": "dsfrCol"; "required": true; "isSignal": true; }; "allowWrap": { "alias": "allowWrap"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * Directive pour la checkbox d'en-tête de colonne (tout sélectionner/déselectionner)
 */
declare class DsfrSelectAllDirective implements OnInit {
    componentRef: ComponentRef<EduCheckboxLightComponent>;
    private readonly table;
    private readonly element;
    private readonly viewContainer;
    private readonly injector;
    private readonly i18n;
    protected get scope(): string | null;
    ngOnInit(): void;
    private createCheckboxComponent;
    private getCheckboxId;
    private getCheckboxLabel;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSelectAllDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrSelectAllDirective, "[dsfrSelectAll]", never, {}, {}, never, never, true, never>;
}

/**
 * Directive group sur une ligne <tr> à l'intérieur d'un groupe
 * Gère les attributs aria nécessaires au treegrid
 */
declare class DsfrRowGroupDirective {
    group?: DsfrDataGroup;
    index?: number;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrRowGroupDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrRowGroupDirective, "[dsfrRowGroup]", never, { "group": { "alias": "group"; "required": false; }; "index": { "alias": "index"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Composant d'affichage du bouton de tri pour une colonne (icônes flêche)
 */
declare class ExpandButtonRowComponent {
    collapsed: i0.InputSignal<boolean>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ExpandButtonRowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ExpandButtonRowComponent, "edu-expand-button-row", never, { "collapsed": { "alias": "collapsed"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * Directive group sur une ligne de groupe <tr>
 * Gère l'etat collapse/expand et les attributs aria nécessaires au treegrid
 */
declare class DsfrRowGroupHeaderDirective implements OnDestroy {
    group: i0.InputSignal<DsfrDataGroup>;
    componentRef: ComponentRef<ExpandButtonRowComponent> | undefined;
    private firstTd;
    private _unlisten;
    private readonly element;
    private readonly viewContainer;
    private readonly renderer;
    constructor();
    ngOnDestroy(): void;
    private createExpansionButton;
    private updateExpansionButton;
    private updateFirstCellAttributes;
    private destroyButton;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrRowGroupHeaderDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrRowGroupHeaderDirective, "[dsfrRowGroupHeader]", never, { "group": { "alias": "group"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * Directive checkbox sur la première cellule th (Selectionner/Déselectionner la ligne)
 */
declare class DsfrSelectRowDirective {
    readonly row: i0.InputSignal<any>;
    readonly disableSelect: i0.InputSignal<boolean>;
    private componentRef;
    private rowElement;
    private readonly element;
    private readonly viewContainer;
    private readonly injector;
    private readonly i18n;
    private readonly table;
    constructor();
    protected get scope(): string | null;
    private createCheckbox;
    private destroyCheckbox;
    private createCheckboxComponent;
    /** Créer manuellement le style ajouté par le script DSFR à la sélection d'une ligne pour avoir les bordures bleues */
    private addRowHeightSyle;
    private getCheckboxId;
    private getCheckboxLabel;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSelectRowDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrSelectRowDirective, "[dsfrSelectRow]", never, { "row": { "alias": "dsfrSelectRow"; "required": false; "isSignal": true; }; "disableSelect": { "alias": "disableSelect"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * Directive navigation clavier sur la table role treegrid
 * https://www.w3.org/WAI/ARIA/apg/patterns/treegrid/examples/treegrid-1/
 * => scoTreeGridNavigation de sco-widgets
 */
declare class DsfrTreeGridNavigationDirective {
    role?: string;
    tableHtml: HTMLElement | undefined;
    tableRows: NodeListOf<HTMLTableRowElement> | undefined;
    private observer;
    private hasInteractiveTheadElements;
    private readonly _element;
    constructor();
    private setFocusableRow;
    /**
     * Les lignes du header de la table possèdent au moins un élément interactif qui doit prendre le focus
     * @param theadRows lignes du header
     */
    private hasInteractiveElementsOnHeaderRows;
    /**
     * Rendre les cellules focusables
     */
    private setGridCellRole;
    private handleTreeGridKeydown;
    /**
     * Le focus change de cellule dans le tableau. Prevent default et la cellule précédente reprendre un tabIndex de -1
     * @param event target courante
     * @param currentCellFocused
     */
    private hasToMoveFocus;
    /**
     * En cas d'élément éditable dans une cellule, qui utilise les flèches pour l'édition
     * La navigation dans la grid doit être désactivée/activée selon le focus de cet élément
     * @param event keyboard event
     * @param target element dans la cellule
     */
    private toggleGridNavigationForEditable;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTreeGridNavigationDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrTreeGridNavigationDirective, "[dsfrTreeGridNavigation]", never, { "role": { "alias": "dsfrTreeGridNavigation"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Directive ajout du tri sur l'en-tête de colonne (icône et logique)
 */
declare class DsfrSortColumnDirective extends DsfrColumnDirective implements OnInit, OnDestroy {
    col: i0.InputSignal<DsfrColumn>;
    /**
     * Calcul de la valeur de aria-sort sur la colonne selon le tri courant activeSort()
     * @returns null / ascending / descending
     */
    ariaSort: Signal<string | null>;
    private componentRef;
    private subscription;
    private readonly viewContainer;
    private readonly renderer;
    constructor();
    ngOnInit(): void;
    ngOnDestroy(): void;
    /**
     * Appliquer le tri selon la colonne concernées et mise a jour de activeSort()
     **/
    private applySort;
    /**
     * Ajouter une div wrapper fr-cell--sort autour des éléments pour style DSFR
     * @param nativeElement composant <th>
     * @param componentElement composant sort-buton
     */
    private addWrappingElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrSortColumnDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrSortColumnDirective, "[dsfrColumn]", never, { "col": { "alias": "dsfrColumn"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * Composant d'affichage du bouton de tri pour une colonne (icônes flêche)
 */
declare class SortButtonHeaderComponent {
    field: string;
    label?: string;
    sortChanged: EventEmitter<string>;
    ariaSort: i0.InputSignal<"descending" | "ascending" | null | undefined>;
    sortTable(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SortButtonHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SortButtonHeaderComponent, "edu-sort-button-header", never, { "field": { "alias": "field"; "required": true; }; "label": { "alias": "label"; "required": false; }; "ariaSort": { "alias": "ariaSort"; "required": false; "isSignal": true; }; }, { "sortChanged": "sortChanged"; }, never, never, true, never>;
}

/**
 * Composant en-tête du tableau.
 * Il peut contenir quatre éléments optionnel mais dans cet ordre :
 * - le nombre de lignes sélectionnées
 * - une barre de recherche
 * - des boutons d’actions liés à la sélection de lignes
 * - un contrôle segmenté.
 */
declare class EduTableHeaderComponent {
    /** Template optionnel afficher des boutons d'actions dans le header */
    headerActionsTemplate?: TemplateRef<void>;
    /** Template pour personnaliser l'affichage du nombre de lignes sélectionnées */
    countSelectedRowsTemplate?: TemplateRef<void>;
    /** Nombre de lignes sélectionnées */
    countSelectedRows?: number;
    /** Afficher le changement de type d'affichage (tableau / liste) */
    showHeaderViews: boolean;
    /** Contrôle segmenté contenant les types d'affichages (tableau / liste par défaut)  */
    headerViewsOptions: DsfrSegmentedControl[];
    /** Affiche la barre de recherche dans le header */
    showSearch: boolean;
    /** Valeur du placeholder de l'input de recherche, si showSearch est `true`. */
    searchInputPlaceholder?: string;
    /** Label (pour les lecteurs d'écrans) de l'input de recherche. */
    searchLabel?: string;
    /**
     * Valeur du title du bouton de la barre de recherche, si showSearch est `true`.
     */
    searchButtonTitle?: string;
    /**
     * Positionne la valeur de la barre de recherche recherche, si `showSearch` est `true`.
     */
    searchInputValue?: string;
    /** Changement de type de vue */
    viewSelect: EventEmitter<string>;
    /** Emet le texte lors de l'évènement keyup sur l'input de recherche.  */
    searchChange: EventEmitter<string>;
    /** Emet le texte lors du clic sur le bouton "rechercher".  */
    searchSelect: EventEmitter<string>;
    /**
     * Permet de positionner la valeur intiale du champ de recherche (si utilisé)
     *
     * @deprecated (since 1.15) Utiliser `searchInputValue` à la place.
     */
    set searchInputInitialValue(value: string | undefined);
    /**
     * Changement de type d'affichage (liste ou tableau)
     * @internal */
    onViewSelect(value: string): void;
    /** @internal */
    onSearch(e: string): void;
    /** @internal */
    onSearchClick(e: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<EduTableHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<EduTableHeaderComponent, "edu-table-header", never, { "headerActionsTemplate": { "alias": "headerActionsTemplate"; "required": false; }; "countSelectedRowsTemplate": { "alias": "countSelectedRowsTemplate"; "required": false; }; "countSelectedRows": { "alias": "countSelectedRows"; "required": false; }; "showHeaderViews": { "alias": "showHeaderViews"; "required": false; }; "headerViewsOptions": { "alias": "headerViewsOptions"; "required": false; }; "showSearch": { "alias": "showSearch"; "required": false; }; "searchInputPlaceholder": { "alias": "searchInputPlaceholder"; "required": false; }; "searchLabel": { "alias": "searchLabel"; "required": false; }; "searchButtonTitle": { "alias": "searchButtonTitle"; "required": false; }; "searchInputValue": { "alias": "searchInputValue"; "required": false; }; "searchInputInitialValue": { "alias": "searchInputInitialValue"; "required": false; }; }, { "viewSelect": "viewSelect"; "searchChange": "searchChange"; "searchSelect": "searchSelect"; }, never, never, true, never>;
    static ngAcceptInputType_showHeaderViews: unknown;
}

declare class DsfrDataTableModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDataTableModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrDataTableModule, never, [typeof i1.CommonModule, typeof SortButtonHeaderComponent, typeof DsfrColumnDirective, typeof DsfrSortColumnDirective, typeof DsfrTableComponent, typeof DsfrSelectRowDirective, typeof EduCheckboxLightComponent, typeof DsfrCellDirective, typeof DsfrSelectAllDirective, typeof DsfrRowGroupDirective, typeof DsfrRowGroupHeaderDirective, typeof DsfrTableFooterComponent, typeof EduTableHeaderComponent], [typeof DsfrColumnDirective, typeof DsfrSortColumnDirective, typeof DsfrCellDirective, typeof DsfrSelectRowDirective, typeof DsfrSelectAllDirective, typeof DsfrRowGroupDirective, typeof DsfrRowGroupHeaderDirective, typeof DsfrTableFooterComponent, typeof DsfrTableComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrDataTableModule>;
}

declare class DsfrToolLinkMenuComponent implements AfterViewInit, OnInit, OnDestroy {
    /** Identifiant du bouton du menu (généré si non renseigné) */
    menuId?: string;
    /** Libellé du bouton du menu déroulant */
    labelMenu?: string;
    /** Attribut aria-label du bouton du menu déroulant */
    ariaLabelMenu?: string;
    /** Désactiver le menu */
    disabled: boolean;
    iconMenu?: string;
    /** Liste des liens. Prioritaire sur le slot linksTemplate */
    links: DsfrLink[];
    /** Ajouter une classe personnalisée pour le menu  */
    customClass?: string;
    /** Suppression de la bordure si false */
    outline: boolean;
    /** Contenu personnalisé du header du menu */
    headerTemplate?: TemplateRef<void>;
    /** Contenu personnalisé du footer du menu */
    footerTemplate?: TemplateRef<void>;
    /** Contenu personnalisé des liens du menu */
    linksTemplate?: TemplateRef<void>;
    /** Evènement émis au clic sur un lien */
    readonly linkSelect: EventEmitter<DsfrLink>;
    /** Signale l'ouverture du menu. */
    disclose: EventEmitter<void>;
    /** Signale la fermeture du menu. */
    conceal: EventEmitter<void>;
    protected collapseMenu?: ElementRef<HTMLElement>;
    private readonly renderer2;
    private _unlisten;
    ngOnInit(): void;
    /**
     * Ecouter les events scripts dsfr conceal/disclose sur le menu
     * conceal: uniquement apres une premiere ouverture (présence de fr-collapse--expanded)
     */
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    protected onLinkSelect(link: DsfrLink): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrToolLinkMenuComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrToolLinkMenuComponent, "dsfr-tool-link-menu, dsfr-ext-toolsmenu, dsfrx-toolsmenu", never, { "menuId": { "alias": "menuId"; "required": false; }; "labelMenu": { "alias": "labelMenu"; "required": false; }; "ariaLabelMenu": { "alias": "ariaLabelMenu"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "iconMenu": { "alias": "iconMenu"; "required": false; }; "links": { "alias": "links"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "outline": { "alias": "outline"; "required": false; }; }, { "linkSelect": "linkSelect"; "disclose": "disclose"; "conceal": "conceal"; }, ["headerTemplate", "footerTemplate", "linksTemplate"], never, true, never>;
    static ngAcceptInputType_disabled: unknown;
}

declare class DsfrUserMenuComponent {
    /** Identifiant du bouton du menu (généré si non renseigné) */
    menuId?: string;
    /** Libellé du bouton du menu déroulant */
    labelMenu: string;
    /** Attribut aria-label du bouton du menu déroulant */
    ariaLabelMenu?: string;
    /** Désactiver le menu */
    disabled: boolean;
    /** Liste des liens. Prioritaire sur le slot linksUserTemplate */
    links: DsfrLink[];
    /** Nom de l'utilisateur connecté affiché dans le header*/
    userName?: string;
    /** Détail d'information sur l'utilisateur connecté (ex. mail) affiché dans le header */
    userDetails?: string;
    /** Afficher un bouton de déconnexion en footer */
    showLogout: boolean;
    /** Suppression de la bordure si false */
    outline: boolean;
    /** Contenu personnalisé du header du menu */
    headerUserTemplate?: TemplateRef<void>;
    /** Contenu personnalisé du footer du menu */
    footerUserTemplate?: TemplateRef<void>;
    /** Contenu personnalisé des liens du menu */
    linksUserTemplate?: TemplateRef<void>;
    /** Evènement émis au clic sur un lien */
    readonly linkSelect: EventEmitter<DsfrLink>;
    /** Signale l'ouverture du menu. */
    readonly disclose: EventEmitter<void>;
    /** Signale la fermeture du menu. */
    readonly conceal: EventEmitter<void>;
    /** Au clic sur le bouton de déconnexion  */
    readonly logoutSelect: EventEmitter<void>;
    /**
     * @deprecated Utiliser `linksUserTemplate` à la place.
     */
    linksProfileTemplate?: TemplateRef<void>;
    /**
     * @deprecated Utiliser `footerUserTemplate` à la place.
     */
    footerProfileTemplate?: TemplateRef<void>;
    /**
     * @deprecated Utiliser `headerUserTemplate` à la place.
     */
    headerProfileTemplate?: TemplateRef<void>;
    get resLinksTemplate(): TemplateRef<void> | undefined;
    get resFooterTemplate(): TemplateRef<void> | undefined;
    get resHeaderTemplate(): TemplateRef<void> | undefined;
    /**
     * Nom de l'utilisateur connecté affiché dans le header
     * @deprecated utiliser userName
     */
    set profileName(value: string);
    /**
     * Détail d'information sur l'utilisateur connecté
     * @deprecated utiliser userDetails
     */
    set profileDetails(value: string);
    protected onLogout(): void;
    protected onDisclose(): void;
    protected onConceal(): void;
    protected onLinkSelect(link: DsfrLink): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrUserMenuComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrUserMenuComponent, "dsfr-usermenu, dsfr-ext-profilemenu, dsfrx-profilemenu", never, { "menuId": { "alias": "menuId"; "required": false; }; "labelMenu": { "alias": "labelMenu"; "required": false; }; "ariaLabelMenu": { "alias": "ariaLabelMenu"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "links": { "alias": "links"; "required": false; }; "userName": { "alias": "userName"; "required": false; }; "userDetails": { "alias": "userDetails"; "required": false; }; "showLogout": { "alias": "showLogout"; "required": false; }; "outline": { "alias": "outline"; "required": false; }; "profileName": { "alias": "profileName"; "required": false; }; "profileDetails": { "alias": "profileDetails"; "required": false; }; }, { "linkSelect": "linkSelect"; "disclose": "disclose"; "conceal": "conceal"; "logoutSelect": "logoutSelect"; }, ["headerUserTemplate", "footerUserTemplate", "linksUserTemplate", "linksProfileTemplate", "footerProfileTemplate", "headerProfileTemplate"], never, true, never>;
    static ngAcceptInputType_disabled: unknown;
}

/**
 * Modèle de présentation d'une colonne.
 * @deprecated utiliser le nouveau composant de table
 */
interface DsfrTableColumn {
    /**
     * La clé permettant la mise en correspondance avec les champs des lignes de données.
     */
    key: string;
    /**
     * Le libellé d'entête de la colonne.
     */
    heading: string;
}
/**
 * Modèle de présentation du composant Table.
 * @deprecated utiliser le nouveau composant de table
 */
interface DsfrDataTable {
    /**
     * @deprecated Depuis 1.9.0, utiliser la propriété `columns` à la place.
     */
    titles?: {};
    /**
     * En-têtes des colonnes [{key: key1, title: title1}, {key: key2, title: title2}, ...]
     */
    columns?: DsfrTableColumn[];
    /**
     * Lignes de données correspondant aux collonnes  [{key1: data1-1, key2: data1-2,…}, ...]
     */
    rows: any[];
}
/**
 * Modèle de présentation INTERNE du composant table.
 *
 * @internal
 * @deprecated utiliser le nouveau composant de table
 */
declare class EduTableModel {
    columns: DsfrTableColumn[];
    rows: any[];
    constructor(data: DsfrDataTable, keyValuePipe: KeyValuePipe);
}

/**
 * @deprecated utiliser le nouveau composant de table
 */
declare class DsfrTableLegacyComponent {
    /** Message si aucune donnée. */
    noDataMessage: string;
    /**
     * Permet d'empêcher le scroll horizontal. Si le tableau no-scroll comporte trop de colonnes le tableau est coupé
     * sur la droite (overflow hidden).
     */
    noScroll: boolean;
    /**
     * Permet de désactiver le scroll en fixant la largeur des colonnes du tableau. Les colonnes sont alors toutes de
     * la même taille quelque soit leur contenu.
     */
    fixedLayout: boolean;
    /** Titre au-dessus du tableau. */
    caption?: string;
    /** Permet de masquer (visuellement) le caption afin de l’utiliser uniquement dans le cadre de l’accessibilité. */
    noCaption: boolean;
    /** Permet de placer le caption en dessous du tableau plutôt qu’en haut. */
    captionBottom: boolean;
    /**
     * Classes de personnalisation du tableau (ex : `fr-table--green-emeraude`).
     */
    customClass: string;
    /** Classe(s) de personnalisation de l'entête. */
    headerCustomClass?: string;
    /** Permet d'ajouter des bordures aux lignes du tableau.  */
    bordered: boolean;
    /** @internal */
    dataModel: EduTableModel;
    private readonly i18n;
    private readonly keyValuePipe;
    constructor();
    /** Modèle de données.  */
    set data(data: DsfrDataTable);
    /** @internal */
    hasRows(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTableLegacyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTableLegacyComponent, "dsfr-table", never, { "noDataMessage": { "alias": "noDataMessage"; "required": false; }; "noScroll": { "alias": "noScroll"; "required": false; }; "fixedLayout": { "alias": "fixedLayout"; "required": false; }; "caption": { "alias": "caption"; "required": false; }; "noCaption": { "alias": "noCaption"; "required": false; }; "captionBottom": { "alias": "captionBottom"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "headerCustomClass": { "alias": "headerCustomClass"; "required": false; }; "bordered": { "alias": "bordered"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, {}, never, ["[caption]"], true, never>;
}

/**
 * @deprecated utiliser le nouveau composant de table
 */
declare class DsfrTableModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTableModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrTableModule, never, [typeof i1.CommonModule, typeof DsfrTableLegacyComponent], [typeof DsfrTableLegacyComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrTableModule>;
}

declare class DsfrTabnavComponent {
    /** Evénement émis suite à la sélection d'un lien  */
    itemSelect: EventEmitter<DsfrLink>;
    /** Activer la selection automatique des items (si absence de routerLink) */
    autoActive: boolean;
    /** 👓 Ajoute un role navigation sur le container. Nécessite de spécifier ariaLabel ou ariaLabelledBy. */
    roleNavigation: boolean;
    /** 👓 En cas de role navigation, spécifier aria-label pour donner le contexte. */
    ariaLabel?: string;
    /** 👓 En cas de role navigation, spécifier aria-labelledby pour donner le contexte. */
    ariaLabelledBy?: string;
    /** En mode link/route, le menuActive est défini a partir de la propriété active */
    protected readonly activeMenu: i0.Signal<DsfrLink | undefined>;
    /** Copie du menu */
    protected cloneMenu: WritableSignal<DsfrLink[]>;
    protected menuId: string;
    /** Référence vers le container du menu (element collapsable)*/
    private _menuContainer;
    private _menu;
    get menu(): DsfrLink[];
    /** Menu contenant la liste de liens */
    set menu(value: DsfrLink[]);
    /**
     * Au clic sur un lien du menu
     * - Mise a jour du lien actif en cas de autoactive
     * - Fermeture du menu et émission de itemSelect
     * */
    protected onSelectItem(currentItem: DsfrLink): void;
    /**
     * Force la fermeture du menu en mode mobile après une navigation
     */
    private closeMenuOnMobile;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTabnavComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTabnavComponent, "dsfr-tabnav", never, { "autoActive": { "alias": "autoActive"; "required": false; }; "roleNavigation": { "alias": "roleNavigation"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "menu": { "alias": "menu"; "required": false; }; }, { "itemSelect": "itemSelect"; }, never, never, true, never>;
}

/**
 * Description d'un onglet du composant.
 */
interface EduTabHeader {
    /**
     * Label de l'onglet, obligatoire
     */
    label: string;
    /**
     * Lien composant vers onglet. Permet de sélectionner un onglet lorsqu'on sélectionne le path correspondant.
     */
    tabId: string;
    /**
     * Icône optionnelle de l'onglet.
     */
    icon?: string;
    /**
     * Permet de désactiver l'onglet.
     */
    disabled?: boolean;
}
/**
 * Description d'un onglet du composant.
 */
interface DsfrTabRoute extends EduTabHeader {
    /**
     * Lien onglet vers composant. Path invoqué lorsque l'on clique sur un onglet.
     */
    path: string;
    /** Options additionnelles de navigation pour le routerLink (queryParams, state etc.). */
    routerLinkExtras?: NavigationExtras;
    /** RouterLink : options qui déterminent si le lien est actif en cas de directive routerLink. */
    routerLinkActiveOptions?: {
        exact: boolean;
    } | IsActiveMatchOptions;
}

declare const DSFR_TAB_SELECTORS = "dsfr-tab-panel, dsfr-tab";
declare class DsfrTabComponent implements OnInit, Required<EduTabHeader> {
    /** Identifiant de l'onglet, obligatoire, généré si non fourni. */
    tabId: string;
    /** Titre de l'onglet, obligatoire. */
    label: string;
    /** Nom de l'icône, l'icône est à gauche du libellé, optionnel. */
    icon: string;
    /** Permet de désactiver l'onglet. */
    disabled: boolean;
    protected buttonId: string | undefined;
    get id(): string;
    get attrRole(): string;
    get attrLabelledBy(): string | undefined;
    get attrTabindex(): string;
    get attrTabId(): string;
    get attrLabel(): string;
    get attrIconClass(): string | null;
    get class(): string;
    get attrDisabled(): boolean;
    /** @internal */
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTabComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTabComponent, "dsfr-tab-panel, dsfr-tab", never, { "tabId": { "alias": "tabId"; "required": false; }; "label": { "alias": "label"; "required": true; }; "icon": { "alias": "icon"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, ["*"], true, never>;
    static ngAcceptInputType_disabled: unknown;
}

declare class DsfrTabsComponent {
    /**
     * Attribut aria-label de la liste d'onglets.
     */
    tabsAriaLabel: string;
    /**
     * Onglet sélectionné (commence à 0).
     * Ne peut pas être utilisé quand on utilise l'input `routes`.
     */
    selectedTabIndex: number;
    /**
     * Permet de positionner la largeur du viewport à 100% en mobile.
     */
    fullViewport: boolean;
    /**
     * Définition des routes si l'on souhaite utiliser `<router-outlet>`.
     *
     * @since 1.9.0
     */
    routes?: DsfrTabRoute[];
    /**
     * Émis lors de la sélection d'un onglet. La valeur émise correspond au `tabId` de l'onglet sélectionné.
     */
    tabSelect: EventEmitter<string>;
    /** @internal */
    tabComponents: QueryList<DsfrTabComponent>;
    /** @internal */
    routerTabId: string;
    private readonly router;
    private readonly activatedRoute;
    private readonly elRef;
    constructor();
    get headers(): EduTabHeader[];
    private get tabsCount();
    /** @internal */
    getHeaderValue(header: EduTabHeader, key: string): any;
    /** @internal */
    asRoute(header: EduTabHeader): DsfrTabRoute;
    /** @internal */
    getIconClasses(tabHeader: EduTabHeader): string;
    /**
     * [mode routes] Retourne l'identifiant unique du bouton de contrôle de l'onglet passé en paramètre.
     *
     * @internal
     */
    getButtonTabId(header: EduTabHeader): string;
    /**
     * [mode routes] Retourne l'identifiant unique du bouton de contrôle de l'onglet courant.
     *
     * @internal
     */
    getCurrentButtonTabId(): string | null;
    /** @internal */
    onSelect(event: MouseEvent, index: number): void;
    /**
     * Gestion de la navigation au clavier sans routes : emission de tabSelect
     *  @internal
     */
    onRoutlessTabKeydown(event: KeyboardEvent, index: number): void;
    /** @internal */
    onRouterLinkActive(isActive: boolean, tabIndex: number): void;
    /**
     * Gestion de la navigation au clavier en mode routes.
     *
     *  @internal
     */
    onButtonTabKeydown(event: KeyboardEvent, index: number): void;
    private isFirstTab;
    private isLastTab;
    private performNavigation;
    private calculateNewIndex;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTabsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTabsComponent, "dsfr-tabs", never, { "tabsAriaLabel": { "alias": "tabsAriaLabel"; "required": false; }; "selectedTabIndex": { "alias": "selectedTabIndex"; "required": false; }; "fullViewport": { "alias": "fullViewport"; "required": false; }; "routes": { "alias": "routes"; "required": false; }; }, { "tabSelect": "tabSelect"; }, ["tabComponents"], ["*"], true, never>;
}

declare class DsfrTabsModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTabsModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrTabsModule, never, [typeof i1.CommonModule, typeof i2.RouterModule, typeof DsfrTabComponent, typeof DsfrTabsComponent], [typeof DsfrTabComponent, typeof DsfrTabsComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrTabsModule>;
}

declare class DsfrTileComponent extends BasePanelComponent implements AfterViewInit, OnInit {
    /**
     * Chemin vers le répertoire racine contenant les pictogrammes illustratifs DSFR.
     */
    artworkDirPath?: string;
    /**
     * Chemin relatif à artworkDirPath dénotant le fichier d'illustration à utiliser.
     */
    artworkFilePath?: string;
    /** @deprecated (since 1.5.0) */
    imageAlt?: string;
    /** @deprecated (since 1.5.0) utiliser `artworkFilePath`. Path pour src d'image d'illustration. */
    imagePath?: string;
    /**
     * Ce boolean permet de ne pas afficher d'icône (flèche).
     */
    noIcon: boolean;
    /**
     * Rotation d'une tuile sur breakpoint 'MD' ou 'LG' (au redimensionnement du contenu).
     * 'fr-tile--horizontal@md|lg' si la tuile est verticale
     * 'fr-tile--vertical@md|lg' si la tuile est horizontale
     */
    rotateOn: 'MD' | 'LG' | undefined;
    /** @deprecated utiliser `customBackground`. Active le fond de la tuile en gris clair. */
    useGreyBackground: boolean;
    /** Remplace le lien du bouton de download par un markup de bouton */
    isDownloadButton: boolean;
    /**
     * Permet la gestion programmatique d'une navigation initiée au click sur le tile si l'input 'route' est valorisé.
     * La valeur de la propriété 'route' sera transmise.
     */
    tileSelect: EventEmitter<string>;
    protected readonly DsfrPanelBackground: typeof DsfrPanelBackgroundConst;
    protected readonly DsfrPanelBorder: typeof DsfrPanelBorderConst;
    private readonly config;
    private readonly _elementRef;
    constructor();
    protected get tileClasses(): Record<string, boolean>;
    /** @deprecated (since 1.9.0) utiliser `detailBottom` à la place */
    set detail(value: string);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    /**
     * Dans le cas d'une route, un événement `(routeSelect)` est émis avec la valeur de la route et
     * l'événement initial n'est pas propagé.
     *
     * @internal
     */
    onLinkSelect(): void;
    private removeEmptyElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTileComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTileComponent, "dsfr-tile", never, { "artworkDirPath": { "alias": "artworkDirPath"; "required": false; }; "artworkFilePath": { "alias": "artworkFilePath"; "required": false; }; "imageAlt": { "alias": "imageAlt"; "required": false; }; "imagePath": { "alias": "imagePath"; "required": false; }; "noIcon": { "alias": "noIcon"; "required": false; }; "rotateOn": { "alias": "rotateOn"; "required": false; }; "useGreyBackground": { "alias": "useGreyBackground"; "required": false; }; "isDownloadButton": { "alias": "isDownloadButton"; "required": false; }; "detail": { "alias": "detail"; "required": false; }; }, { "tileSelect": "tileSelect"; }, never, ["[desc]", "[desc]", "[detail]", "[heading]"], true, never>;
}

declare class DsfrTileModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTileModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrTileModule, never, [typeof i1.CommonModule, typeof DsfrBadgesGroupComponent, typeof DsfrTagsGroupComponent, typeof DsfrLinkComponent, typeof LinkDownloadComponent, typeof PictogramComponent, typeof DsfrTileComponent], [typeof DsfrTileComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrTileModule>;
}

declare class DsfrTooltipDirective {
    private tooltipComponent;
    private readonly elementRef;
    private readonly viewContainer;
    constructor();
    set tooltip(value: string);
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTooltipDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DsfrTooltipDirective, "[tooltip]:not(dsfr-tooltip-button)", never, { "tooltip": { "alias": "tooltip"; "required": false; }; }, {}, never, never, true, never>;
}

declare class DsfrTooltipButtonComponent {
    /**
     * La valeur du tooltip.
     */
    tooltip: string;
    /** @internal */
    tooltipId: string;
    protected readonly i18n: DsfrI18nService;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrTooltipButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrTooltipButtonComponent, "dsfr-tooltip-button", never, { "tooltip": { "alias": "tooltip"; "required": true; }; }, {}, never, never, true, never>;
}

/**
 * Définit les types des inputs supportés par le DSFR.
 */
declare enum DsfrInputTypeConst {
    DATE = "date",
    DATE_TIME_LOCAL = "datetime-local",
    EMAIL = "email",
    NUMBER = "number",
    PASSWORD = "password",
    SEARCH = "search",
    TEL = "tel",
    TEXT = "text",
    TEXTAREA = "textarea",
    TIME = "time"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrInputTypeConst}.
 */
type DsfrInputType = `${DsfrInputTypeConst}`;
/**
 * L'attribut universel 'inputmode' est un attribut à valeur contrainte qui fournit une indication au navigateur quant
 * au type de donnée qui peut être saisi par l'utilisateur lors de l'édition de l'élément ou de son contenu.
 * Lorsque cet attribut n'est pas explicitement défini, sa valeur par défaut est "text", ce qui indique que c'est du
 * texte qui sera saisi et qu'un clavier standard devrait être utilisé.
 * Cf. https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/inputmode
 */
declare enum DsfrInputModeConst {
    /** Aucun clavier virtuel ne doit être affiché. Cette valeur s'avère utile lorsque l'application ou le site web implémente son propre outil de saisie. */
    NONE = "none",
    /** C'est du texte qui sera saisi et un clavier dans la locale de l'utilisateur pourra être affiché. */
    TEXT = "text",
    /**
     * C'est un nombre décimal qui sera saisi. Le clavier affiché peut contenir des chiffres et le séparateur décimal
     * de la locale de l'utilisateur. Attention, selon les appareils, le signe moins (-) peut ne pas être présent.
     */
    DECIMAL = "decimal",
    /**
     * C'est un nombre entier qui sera saisi. Le clavier affiché peut contenir les chiffres de 0 à 9. Attention, selon
     * les appareils, le signe moins (-) peut ne pas être présent.
     */
    NUMERIC = "numeric",
    /**
     * C'est un numéro de téléphone qui sera saisi. Le clavier affiché pourra être celui d'un téléphone avec les chiffres
     * allant de 0 à 9, l'astérisque et le dièse. Pour les champs de formulaire où il faut saisir un numéro de téléphone,
     * on utilisera plutôt <input type="tel">.
     */
    TEL = "tel",
    /**
     * L'élément éditable sert à la recherche. Le clavier affiché sera optimisé pour une recherche (par exemple, la
     * touche Entrée pourra être indiquée avec le mot-clé « Rechercher »).
     */
    SEARCH = "search",
    /**
     * C'est une adresse électronique qui sera saisie. Le clavier affiché pourra être optimisé pour la saisie d'adresses
     * email (généralement, on aura le caractère @ et d'autres éléments). Pour les champs de formulaire où il faut saisir
     * une adresse électronique, on utilisera plutôt <input type="email">.
     */
    EMAIL = "email",
    /**
     * C'est une URL qui sera saisie. Le clavier affiché pourra être optimisé pour la saisie d'URL. Ainsi, la touche pour
     * la barre oblique pourra être plus accessible, le clavier pourra proposer un accès à l'historique des URL utilisées,
     * etc. Pour les champs de formulaire où il faut saisir une URL, on utilisera plutôt <input type="url">.
     */
    URL = "url"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrInputModeConst}.
 */
type DsfrInputMode = `${DsfrInputModeConst}`;

/**
 * BaseInputComponent n'embarque que les propriétés d'un input Html
 */
declare abstract class BaseInputComponent extends DefaultControlComponent<string> {
    /**
     * Correspond à l'attribut `autocomplete`,
     * cf. [definition](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/autocomplete) <br />
     * Ex : email, name, etc.
     */
    autocomplete?: string;
    /**
     * 👓 Correspond à l'attribut `aria-autocomplete`,
     * cf. [definition](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-autocomplete).
     *  Ex : `ariaAutocomplete="list"`.
     * Valeur par défaut `undefined` (n'apparait pas comme attribut dans l'html).
     *
     * @since 1.4
     */
    ariaAutocomplete?: string;
    /**
     * 👓 Correspond à l'attribut `aria-expanded`,
     * cf. [definition](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-expanded).
     * Valeur par défaut `undefined` (n'apparait pas comme attribut dans l'html).
     *
     * @since 1.4
     */
    ariaExpanded?: boolean;
    /**
     * 👓 Correspond à l'attribut `aria-label`,
     * cf. [definition](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-label).
     * Valeur par défaut `undefined` (n'apparait pas comme attribut dans l'html).
     */
    ariaLabel?: string;
    /**
     * 👓 Correspond à l'attribut `aria-invalid`,
     * cf. [definition](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-invalid).
     * Valeur par défaut `undefined` (n'apparait pas comme attribut dans l'html).
     */
    ariaInvalid?: string;
    /**
     * 👓 Correspond à l'attribut `role`,
     * cf. [definition](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/role).
     * Valeur par défaut `undefined` (n'apparait pas comme attribut dans l'html).
     */
    inputRole?: string;
    /**
     * Une chaîne de caractères, on ou off, qui indique si la correction automatique est activée.
     * [Safari uniquement](https://developer.mozilla.org/fr/docs/Web/HTML/Element/input#autocorrect).
     *
     * @since 1.6
     */
    autoCorrect: boolean;
    /**
     * Indique si le champ est obligatoire ou non, faux par défaut.
     */
    required: boolean;
    /**
     * Placeholder de l'input.
     */
    placeholder?: string;
    /**
     * Attribut min de l'input.
     */
    min?: string;
    /**
     * Attribut max de l'input.
     */
    max?: string;
    /**
     * Attribut minLength de l'input.
     */
    minLength?: number;
    /**
     * Attribut maxLength de l'input.
     */
    maxLength?: number;
    /**
     * Attribut spellcheck pour surcharger la vérification de la correction orthographique
     */
    spellCheck?: boolean;
    /**
     * Ajoute un icon à droite dans le champ de saisie.
     */
    icon?: string;
    /**
     * Pattern de l'input.
     */
    pattern?: string;
    /**
     * Ajout d'un style spécifique, permet par exemple de la limiter la largeur d'un input.
     */
    customClass?: string;
    /**
     * Change la mise en page d'un input accompagné d'un bouton.
     */
    inputWrapMode: 'addon' | 'action';
    /** Attribut readonly de l'input */
    readonly?: boolean;
    /**
     * Émet un événement, si la propriété `pattern` est définie, à chaque changement de la valeur de l'input avec
     * une valeur booléenne indiquant si le `pattern` est validé ou non.
     */
    patternValueChange: EventEmitter<boolean>;
    /**
     * L'input mode est initialisé par défaut en fonction du type de l'input, 'decimal', 'url' ne sont pas traité pour
     * l'instant.
     * @internal
     */
    inputMode: DsfrInputMode | undefined;
    /**
     * Représente la sévérité du message.
     * @deprecated (since 1.12.0) utiliser messageSeverity à la place
     * @internal
     */
    severity: i0.InputSignal<"info" | "error" | "valid" | "warning" | "success" | undefined>;
    /**
     * Surcharge severityViewModel de DefaultControlComponent pour garder rétrocompatibilité avec
     * la propriété dépréciée severity
     * V2 supprimer
     * @internal */
    severityViewModel: i0.Signal<"info" | "error" | "valid" | "warning" | "success" | undefined>;
    /**
     * Attribut utilisés par les composants héritant de la class BaseInput afin d'afficher des messages d'erreurs relatif
     * à une validation interne spécifique au composant.
     */
    protected internalError: undefined | string[];
    private _type;
    get type(): DsfrInputType;
    /** @deprecated (since 1.11.0) use placeholder instead (all lowercase) */
    get placeHolder(): string | undefined;
    /**
     * Type de l'input, 'text' par défaut.
     */
    set type(value: DsfrInputType);
    /**
     * 👓 Correspond à l'attribut `role`,   *
     * @deprecated (since 1.15.1) utiliser inputRole à la place
     */
    set role(value: string);
    /** @deprecated (since 1.11.0) use placeholder instead (all lowercase) */
    set placeHolder(value: string);
    /**
     * À l'écoute de la valeur afin d'émettre un événement dans le cas où on a un pattern.
     * @internal
     */
    onPatternValueChange(): void;
    /** @internal */
    isNumber(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BaseInputComponent, "ng-component", never, { "autocomplete": { "alias": "autocomplete"; "required": false; }; "ariaAutocomplete": { "alias": "ariaAutocomplete"; "required": false; }; "ariaExpanded": { "alias": "ariaExpanded"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaInvalid": { "alias": "ariaInvalid"; "required": false; }; "inputRole": { "alias": "inputRole"; "required": false; }; "autoCorrect": { "alias": "autoCorrect"; "required": false; }; "required": { "alias": "required"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "minLength": { "alias": "minLength"; "required": false; }; "maxLength": { "alias": "maxLength"; "required": false; }; "spellCheck": { "alias": "spellCheck"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "pattern": { "alias": "pattern"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "inputWrapMode": { "alias": "inputWrapMode"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; }; "role": { "alias": "role"; "required": false; }; "placeHolder": { "alias": "placeHolder"; "required": false; }; }, { "patternValueChange": "patternValueChange"; }, never, never, true, never>;
    static ngAcceptInputType_spellCheck: unknown;
    static ngAcceptInputType_readonly: unknown;
}

/**
 * BaseInputComboComponent ajoute la possibilité d'avoir un bouton sur le côté de l'input
 */
declare abstract class BaseInputComboComponent extends BaseInputComponent {
    /** [accessibilité] Spécifie le libellé qui sera retranscrit par les narrateurs d'écran. */
    buttonAriaLabel?: string;
    /**
     * Permet de désactiver le bouton d'action, 'false' par défaut.
     */
    buttonDisabled: boolean;
    /**
     * Crée un combo champ + bouton si buttonIcon est renseigné
     */
    buttonIcon?: string;
    /**
     * Crée un combo champ + bouton si buttonLabel est renseigné
     */
    buttonLabel?: string;
    /**
     * Tooltip message sur le bouton s'il y a lieu.
     */
    buttonTooltipMessage?: string;
    /**
     * Type du button,'button' par défaut.
     */
    buttonType: DsfrButtonType;
    /** Style du bouton, 'primary' par défaut. */
    buttonVariant: DsfrButtonVariant;
    /**
     * [accessibilité] Permet de masquer visuellement le libellé du bouton en le laissant accessible aux dispositifs d'assistance.
     *
     * A utiliser pour le bouton si  icône seule.
     */
    buttonLabelSrOnly: boolean;
    /**
     * Emission de l'événement si le type du bouton est != de `submit`.
     */
    buttonSelect: EventEmitter<Event>;
    /** @internal */
    hasButton(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseInputComboComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BaseInputComboComponent, "ng-component", never, { "buttonAriaLabel": { "alias": "buttonAriaLabel"; "required": false; }; "buttonDisabled": { "alias": "buttonDisabled"; "required": false; }; "buttonIcon": { "alias": "buttonIcon"; "required": false; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; }; "buttonTooltipMessage": { "alias": "buttonTooltipMessage"; "required": false; }; "buttonType": { "alias": "buttonType"; "required": false; }; "buttonVariant": { "alias": "buttonVariant"; "required": false; }; "buttonLabelSrOnly": { "alias": "buttonLabelSrOnly"; "required": false; }; }, { "buttonSelect": "buttonSelect"; }, never, never, true, never>;
}

declare class DsfrFormInputComponent extends BaseInputComboComponent {
    /**
     * Type 'textarea' : nombre de lignes.
     */
    rows?: number;
    /**
     * Cache le label visuellement en le laissant disponible aux lecteurs d'écran.
     */
    labelSrOnly: boolean;
    /**
     * @deprecated (since 1.2) utiliser `customClass` à la place.
     * Largeur de l'input, `'100%'` par défaut, `'10rem'` par défaut pour un type date.
     */
    width?: string;
    /** @deprecated since 1.2 use `type` instead. */
    get textarea(): boolean;
    /** @deprecated (@since 1.2) utiliser `type` à la place. */
    set textarea(value: boolean);
    protected isTextArea(): boolean;
    protected hasInputWrap(): boolean;
    protected getWrapClasses(): Record<string, boolean>;
    protected onButtonClick(event: Event): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormInputComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormInputComponent, "dsfr-form-input", never, { "rows": { "alias": "rows"; "required": false; }; "labelSrOnly": { "alias": "labelSrOnly"; "required": false; }; "width": { "alias": "width"; "required": false; }; "textarea": { "alias": "textarea"; "required": false; }; }, {}, never, ["[label]"], true, never>;
}

declare class DsfrFormInputModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormInputModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormInputModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrButtonComponent, typeof InputGroupComponent, typeof DsfrFormInputComponent], [typeof DsfrFormInputComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormInputModule>;
}

/**
 * Saisie d'une adresse email, si la valeur saisie est validée, elle est transformée en minuscules.
 */
declare class DsfrFormEmailComponent extends DsfrFormInputComponent implements OnInit, AfterViewInit, Validator {
    protected _invalidMessage: string;
    private readonly elementRef;
    private readonly i18n;
    private hasInternalError;
    /**
     * La mise à jour du modèle interne n'est effectuée que lorsque l'utilisateur quitte le champ, de même pour la mise
     * en erreur le cas échéant.
     *
     * @internal
     */
    onFocusOut(): void;
    /**
     * Vrai si l'email est valide.
     *
     * @internal
     */
    isValid(): boolean;
    /** @internal*/
    ngOnInit(): void;
    /**
     * Fix: appliquer le label par défaut uniquement si le slot label n'est pas renseigné
     * slot label non renseigné => le label 'fr-label' ne possede aucun enfant ou seulement la description additionnelle
     */
    ngAfterViewInit(): void;
    validate(control: AbstractControl): ValidationErrors | null;
    /**
     * Affiche le message d'erreur interne.
     */
    private showInternalErrorMessage;
    /**
     * Reset du message d'erreur interne.
     */
    private clearInternalErrorMessage;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormEmailComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormEmailComponent, "dsfr-form-email", never, {}, {}, never, ["[label]"], true, never>;
}

declare class DsfrFormEmailModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormEmailModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormEmailModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof InputGroupComponent, typeof DsfrButtonComponent, typeof DsfrFormEmailComponent], [typeof DsfrFormEmailComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormEmailModule>;
}

/**
 * Définit les réseaux sociaux supportés par le composant `Follow`.
 */
declare enum DsfrFollowNameConst {
    DAILYMOTION = "dailymotion",
    FACEBOOK = "facebook",
    GITHUB = "github",
    INSTAGRAM = "instagram",
    LINKEDIN = "linkedin",
    MASTODON = "mastodon",
    SNAPCHAT = "snapchat",
    TELEGRAM = "telegram",
    TIKTOK = "tiktok",
    TWITCH = "twitch",
    TWITTER = "twitter",
    X = "twitter-x",
    VIMEO = "vimeo",
    YOUTUBE = "youtube",
    BLUESKY = "bluesky"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrFollowNameConst}.
 */
type DsfrFollowName = `${DsfrFollowNameConst}`;
/**
 * Définit les modalités de communication supportés par le composant `Follow`.
 */
declare enum DsfrFollowTypeConst {
    NETWORKS = "networks",
    NEWSLETTER = "newsletter",
    NEWSLETTER_MAIL = "newsletter-mail",
    NEWSLETTER_NETWORKS = "newsletter-networks",
    NEWSLETTER_NETWORKS_MAIL = "newsletter-networks-mail"
}
/**
 * Type union correspondant aux valeurs de l'enum {@link DsfrFollowTypeConst}.
 */
type DsfrFollowType = `${DsfrFollowTypeConst}`;

declare class DsfrFollowComponent {
    /** @internal */
    emailComponent?: DsfrFormEmailComponent;
    /**
     * Niveau du titre, h2 par défaut
     */
    headingLevel: DsfrHeadingLevel;
    /** Description (pour certains types seulement) optionnelle. */
    description: string;
    /** Email par défaut. */
    email: string;
    /** Message d'erreur concernant l'email. */
    emailError: string;
    /** Indique que l'inscription a bien été prise en compte. */
    registered: boolean;
    /** Type du composant, réseaux sociaux seuls par défaut  */
    type: DsfrFollowType;
    /** Abonnement si l'adresse est valide. */
    subscribe: EventEmitter<string>;
    protected followType: typeof DsfrFollowTypeConst;
    protected readonly i18n: DsfrI18nService;
    private readonly _elementRef;
    private followLinksElements;
    /** @internal */
    constructor();
    /** @internal */
    onSubscribe(email: string): void;
    private surroundLinksWithLi;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFollowComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFollowComponent, "dsfr-follow", never, { "headingLevel": { "alias": "headingLevel"; "required": false; }; "description": { "alias": "description"; "required": false; }; "email": { "alias": "email"; "required": false; }; "emailError": { "alias": "emailError"; "required": false; }; "registered": { "alias": "registered"; "required": false; }; "type": { "alias": "type"; "required": false; }; }, { "subscribe": "subscribe"; }, ["followLinksElements"], ["*"], true, never>;
}

declare class DsfrFollowLinkComponent {
    /** Lien obligatoire. */
    link: string;
    /** Target optionnelle, target html par défaut si non renseigné. */
    target?: DsfrLinkTarget;
    private _name;
    get name(): DsfrFollowName;
    /** La propriété 'name' est obligatoire et doit être sélectionnée dans une liste énumérée. */
    set name(value: DsfrFollowName);
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFollowLinkComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFollowLinkComponent, "dsfr-follow-link", never, { "link": { "alias": "link"; "required": true; }; "target": { "alias": "target"; "required": false; }; "name": { "alias": "name"; "required": false; }; }, {}, never, never, true, never>;
}

declare class DsfrFollowModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFollowModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFollowModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrFormEmailComponent, typeof InputGroupComponent, typeof DsfrI18nPipe, typeof DsfrFollowComponent, typeof DsfrFollowLinkComponent], [typeof DsfrFollowComponent, typeof DsfrFollowLinkComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFollowModule>;
}

declare class DsfrFormFieldsetModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormFieldsetModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormFieldsetModule, never, [typeof i1.CommonModule, typeof DsfrFormFieldsetComponent, typeof DsfrFormFieldsetElementDirective], [typeof DsfrFormFieldsetComponent, typeof DsfrFormFieldsetElementDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormFieldsetModule>;
}

declare class DsfrFormCheckboxComponent extends DefaultControlComponent<boolean> implements OnInit {
    /**
     * Cache le label visuellement en le laissant disponible aux lecteurs d'écran.
     */
    labelSrOnly: boolean;
    /** Ajouter l'attribut 'aria-invalid' sur le champ de formulaire.
     */
    ariaInvalid?: string;
    /**
     * Donne une taille de 16px au lieu de 24px.
     */
    small: boolean;
    protected defaultChecked: boolean | undefined;
    protected groupClasses: i0.Signal<{
        'fr-checkbox-group--error': boolean | "" | undefined;
        'fr-checkbox-group--valid': boolean | "" | undefined;
        'fr-checkbox-group--sm': boolean;
        'ngx-checkbox-group--sr-only': boolean;
    }>;
    private readonly elementRef;
    constructor();
    /** @since 1.5 */
    get checked(): boolean;
    /** @since 1.5 */
    get indeterminateState(): boolean;
    /** @since 1.4 */
    set indeterminate(value: boolean);
    /** @internal */
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormCheckboxComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormCheckboxComponent, "dsfr-form-checkbox", never, { "labelSrOnly": { "alias": "labelSrOnly"; "required": false; }; "ariaInvalid": { "alias": "ariaInvalid"; "required": false; }; "small": { "alias": "small"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; }, {}, never, ["[label]"], true, never>;
}

declare class DsfrFormCheckboxModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormCheckboxModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormCheckboxModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrFormCheckboxComponent], [typeof DsfrFormCheckboxComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormCheckboxModule>;
}

declare class DsfrFormRadioRichModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormRadioRichModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormRadioRichModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrFormFieldsetComponent, typeof PictogramComponent, typeof DsfrFormRadioRichComponent], [typeof DsfrFormRadioRichComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormRadioRichModule>;
}

declare class DsfrRangeComponent extends DefaultControlComponent<number | [number, number]> {
    /** Valeur minimale possible */
    min: number;
    /** Valeur max possible */
    max: number;
    /** Ne pas afficher le minimum et le maximum  */
    hideMinMax: boolean;
    /** Incrément que doit suivre la valeur (1 par défaut)  */
    step?: number;
    /**
     * Taille du curseur (SM et MD possibles, MD par défaut)
     */
    rangeSize: DsfrSize;
    /** Préfixe affiché avant les valeurs  */
    prefix?: string;
    /** Suffixe affiché après les valeurs  */
    suffix?: string;
    /** Désactiver le curseur */
    disabled: boolean;
    /**
     * Dans le cas du curseur double, si on souhaite un aria-labelledBy commun à la place des aria-label
     *
     * @deprecated (since 1.19.0)
     */
    ariaLabelledBy?: string;
    /** @internal Curseur double  */
    double: boolean;
    protected groupClasses: i0.Signal<{
        'fr-range-group--disabled': boolean;
        'fr-range-group--error': boolean | "" | undefined;
        'fr-range-group--valid': boolean | "" | undefined;
        'fr-range-group--info': boolean | "" | undefined;
        'edu-fieldset--warning': boolean | "" | undefined;
    }>;
    constructor();
    /**
     * Taille du curseur (SM et MD possibles, MD par défaut)
     *
     * @deprecated since(1.15.0) utiliser 'rangeSize' à la place
     */
    get size(): DsfrSize;
    get hintId(): string;
    /**
     * Taille du curseur (SM et MD possibles, MD par défaut)
     *
     * @deprecated since(1.15.0) utiliser 'rangeSize' à la place
     */
    set size(value: DsfrSize);
    /**@internal */
    isDouble(): boolean;
    /** @internal */
    isSmall(): boolean;
    /** @internal */
    getValue(index: number): number | undefined;
    /** @internal */
    onInputChange(index: number, value: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrRangeComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrRangeComponent, "dsfr-range, dsfr-form-range", never, { "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "hideMinMax": { "alias": "hideMinMax"; "required": false; }; "step": { "alias": "step"; "required": false; }; "rangeSize": { "alias": "rangeSize"; "required": false; }; "prefix": { "alias": "prefix"; "required": false; }; "suffix": { "alias": "suffix"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "size": { "alias": "size"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class DsfrFormTelComponent extends DsfrFormInputComponent implements OnInit, AfterViewInit {
    protected errorMessage: string;
    private readonly elementRef;
    private readonly i18n;
    /**
     * Au fil de la saisie, on ne vérifie le n° de téléphone que s'il y avait déjà une erreur.
     * @internal */
    onInput(): void;
    /**
     * Vérification au commit de la valeur.
     *
     * cf. https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/change_event
     * @internal */
    onChange(): void;
    /** @internal*/
    ngOnInit(): void;
    /**
     * Fix: appliquer le label par défaut uniquement si le slot label n'est pas renseigné
     * slot label non renseigné => le label 'fr-label' ne possede aucun enfant ou seulement la description additionnelle
     */
    ngAfterViewInit(): void;
    /** @internal */
    writeValue(value: string | undefined): void;
    protected validAndFormatPattern(): void;
    /**
     * Méthode validation, positionne la propriété error s'il y a lieu.
     */
    protected validate(): boolean;
    /**
     * Vérifie la validité de l'input en fonction de l'erreur interne possible
     *
     * @returns un booléen en fonction de l'absence d'erreur interne
     */
    private handleValidation;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormTelComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormTelComponent, "dsfr-form-tel", never, {}, {}, never, ["[label]"], true, never>;
}

declare class DsfrFormToggleComponent extends DefaultControlComponent<boolean> {
    /** Position du libellé, à droite par défaut.
     * @deprecated 1.14.1 La version avec libellé à gauche est dépréciée et ne doit plus être utilisée (accessibilité)
     */
    labelPosition: DsfrPosition;
    /**
     * Cache le label visuellement en le laissant disponible aux lecteurs d'écran.
     */
    labelSrOnly: boolean;
    /**
     * Ajouter l'attribut 'aria-invalid' sur le champ de formulaire.
     */
    ariaInvalid?: string;
    /**
     * Permet d'afficher le libellé, court, décrivant l'état de l’interrupteur (activé / désactivé), placé en dessous du
     * switch. Il est affiché par défaut, il est conseillé de le mettre afin de faciliter la compréhension de
     * l’utilisateur - Optionnel.
     */
    showStatusLabel: boolean;
    /**
     * Propriété permettant de surcharger le libellé, court, dénotant l'état checked du toggle, sans avoir à passer
     * par le fichier d'internationalisation.
     */
    checkedStatusLabel?: string;
    /**
     * Propriété permettant de surcharger le libellé court dénotant l'état checked du toggle, sans avoir à passer
     * par le fichier d'internationalisation.
     */
    uncheckedStatusLabel?: string;
    /**
     * Affiche un séparateur horizontal sous le composant.
     * Ne devrait être utilisé que dans le cadre d'un toggles-group.
     */
    showSeparator: boolean;
    /** @internal */
    combinedAriaDescribedBy: Signal<string | null>;
    protected groupClasses: Signal<{
        'fr-toggle--label-left': boolean;
        'fr-toggle--border-bottom': boolean;
        'fr-toggle--error': boolean | "" | undefined;
        'fr-toggle--valid': boolean | "" | undefined;
    }>;
    private readonly i18n;
    constructor();
    get hintId(): string;
    /** @deprecated since 1.12 use showStatus instead */
    get showCheckedHint(): boolean;
    /** @deprecated since 1.12 use checkedLabel instead */
    get checkedHintLabel(): string | undefined;
    /** @deprecated since 1.12 use uncheckedLabel instead */
    get uncheckedHintLabel(): string | undefined;
    /** @deprecated since 1.12 use showStatus instead */
    set showCheckedHint(value: boolean);
    /** @deprecated since 1.12 use checkedLabel instead */
    set checkedHintLabel(value: string);
    /** @deprecated since 1.12 use uncheckedLabel instead */
    set uncheckedHintLabel(value: string);
    /**
     * Permet d'initialiser de forcer la valeur initiale à une valeur booléenne
     * @internal
     */
    writeValue(value: boolean | undefined): void;
    /**
     * @ignore
     */
    getDataLabelChecked(): string | null;
    /**
     * @ignore
     */
    getDataLabelUnchecked(): string | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormToggleComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormToggleComponent, "dsfr-form-toggle", never, { "labelPosition": { "alias": "labelPosition"; "required": false; }; "labelSrOnly": { "alias": "labelSrOnly"; "required": false; }; "ariaInvalid": { "alias": "ariaInvalid"; "required": false; }; "showStatusLabel": { "alias": "showStatusLabel"; "required": false; }; "checkedStatusLabel": { "alias": "checkedStatusLabel"; "required": false; }; "uncheckedStatusLabel": { "alias": "uncheckedStatusLabel"; "required": false; }; "showSeparator": { "alias": "showSeparator"; "required": false; }; "showCheckedHint": { "alias": "showCheckedHint"; "required": false; }; "checkedHintLabel": { "alias": "checkedHintLabel"; "required": false; }; "uncheckedHintLabel": { "alias": "uncheckedHintLabel"; "required": false; }; }, {}, never, ["*"], true, never>;
    static ngAcceptInputType_showSeparator: unknown;
}

declare class DsfrFormToggleModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormToggleModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormToggleModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrFormToggleComponent], [typeof DsfrFormToggleComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormToggleModule>;
}

declare class DsfrFormTogglesGroupComponent extends BaseFieldsetComponent {
    private readonly _elementRef;
    private _showSeparators;
    private togglesElements;
    private toggles;
    constructor();
    get showSeparators(): boolean;
    /** Permet de masquer la bordure horizontale séparant les toggles dans le groupe. */
    set showSeparators(value: boolean);
    private surroundButtonsWithLi;
    private updateTogglesBorderBottom;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormTogglesGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormTogglesGroupComponent, "dsfr-form-toggles-group", never, { "showSeparators": { "alias": "showSeparators"; "required": false; }; }, {}, ["togglesElements", "toggles"], ["[legend]", "*"], true, never>;
}

declare class DsfrFormTogglesGroupModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormTogglesGroupModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormTogglesGroupModule, never, [typeof i1.CommonModule, typeof DsfrFormToggleComponent, typeof DsfrFormFieldsetComponent, typeof DsfrFormTogglesGroupComponent], [typeof DsfrFormTogglesGroupComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormTogglesGroupModule>;
}

declare class DsfrUploadComponent extends DefaultControlComponent<any> implements OnInit, OnChanges {
    /** @internal */
    inputFile?: ElementRef;
    /**
     * Cache le label visuellement en le laissant disponible aux lecteurs d'écran.
     */
    labelSrOnly: boolean;
    /**
     * Ajouter l'attribut 'aria-invalid' sur le champ de formulaire.
     */
    ariaInvalid?: string;
    /** Permet l'ajout de plusieurs fichiers à la fois. */
    multiple: boolean;
    /**
     * Spécifie un filtre pour les types de fichiers que l'utilisateur peut sélectionner.
     *
     * @since 1.9.0
     */
    accept?: string;
    /** Evénement émis à la sélection d'un ou plusieurs fichiers. */
    fileSelect: EventEmitter<FileList>;
    /** Evénement émis lorsque l'utilisateur annule la sélection. */
    fileCancel: EventEmitter<FileList>;
    protected groupClasses: i0.Signal<{
        'fr-upload-group--error': boolean | "" | undefined;
        'fr-upload-group--valid': boolean | "" | undefined;
        'fr-upload-group--disabled': boolean;
    }>;
    private readonly _renderer;
    private readonly i18n;
    /** @deprecated (since 1.4.0) utiliser hint à la place. */
    get description(): string | undefined | string[];
    /**
     * Description pour l'upload (précise les contraintes au niveau du ou des fichiers attendus : format, poids attendus, nombre de fichiers possible…).
     *
     * @deprecated (since 1.4.0) utiliser hint à la place.
     *
     * @internal
     */
    set description(value: string | string[] | undefined);
    /**
     * Surcharge permettant de gérer la mise à jour du DOM.
     *
     * @internal
     */
    writeValue(value: any | undefined): void;
    /** @internal */
    ngOnInit(): void;
    /** @internal */
    ngOnChanges({ label, hint }: SimpleChanges): void;
    /**
     * Permet de programmatiquement réinitialiser le champ après une sélection de fichier(s).
     */
    reset(): void;
    /** @internal */
    onCancel(): void;
    /** @internal */
    onFileChange(event: Event): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrUploadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrUploadComponent, "dsfr-form-upload, dsfr-upload", never, { "labelSrOnly": { "alias": "labelSrOnly"; "required": false; }; "ariaInvalid": { "alias": "ariaInvalid"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "accept": { "alias": "accept"; "required": false; }; "description": { "alias": "description"; "required": false; }; }, { "fileSelect": "fileSelect"; "fileCancel": "fileCancel"; }, never, never, true, never>;
}

declare class DsfrUploadModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrUploadModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrUploadModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrUploadComponent], [typeof DsfrUploadComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrUploadModule>;
}

/**  Règle de sécurisation du mot de passe */
interface DsfrFormPasswordValidationRule {
    /** Règle de validation */
    message: string;
    /** Statut de la validation
     * onError : true, validation en erreur (error)
     * onError: undefined, validation non effectuée (information)
     * onError: false : validation ok (valid)
     */
    onError?: boolean;
}

declare class DsfrFormPasswordComponent extends DefaultControlComponent<string> implements OnInit {
    /** @since 1.6 'current-password' par défaut */
    autocomplete: string;
    /**
     * Cache le label visuellement en le laissant disponible aux lecteurs d'écran.
     */
    labelSrOnly: boolean;
    /**
     * Indique si le champ est obligatoire ou non, faux par défaut.
     */
    required: boolean;
    /**
     * Liste des règles de sécurisation du mot de passe, valides ou en erreur - Optionnel.
     * Sous la forme [{message: '', onError: false}]
     */
    validationRules?: DsfrFormPasswordValidationRule[];
    /** Url de récupération du mot de passe (optionnel) */
    recoveryLink?: string;
    /** Target du lien. Target par défaut de l'application si la propriété est non renseignée. */
    recoveryTargetLink?: DsfrLinkTarget;
    /** Path angular géré en tant que directive routerLink. Exclusif avec link et route. Prioritaire sur route. */
    recoveryRouterLink?: string | string[];
    /** RouterLink: classe utilisée pour la directive routerLink active. */
    recoveryRouterLinkActive?: string | string[];
    /** RouterLink: valeurs additionnelles de navigation pour le routerLink (queryParams, state etc.) */
    recoveryRouterLinkExtras?: NavigationExtras;
    /** Path interne. Exclusif avec link et routerLink */
    recoveryRoute?: string;
    /**
     * 👓 Correspond à l'attribut `aria-invalid`,
     * cf. [definition](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-invalid).
     * Valeur par défaut `undefined` (n'apparait pas comme attribut dans l'html).
     */
    ariaInvalid?: string;
    /** Propage l'évènement Event du DOM à la sélection d'un lien. */
    recoveryRouteSelect: EventEmitter<string>;
    /** @internal */ checkboxId: string;
    protected groupClasses: i0.Signal<{
        'fr-sr-only': boolean;
        'fr-input-group--error': boolean | "" | undefined;
        'fr-input-group--valid': boolean | "" | undefined;
        'fr-input-group--info': boolean | "" | undefined;
        'fr-input-group--warning': boolean | "" | undefined;
    }>;
    /** @internal */
    constructor();
    /** @internal */
    ngOnInit(): void;
    /** @internal */
    hasRecovery(): string | string[] | undefined;
    /** @internal */
    onRecovery(): void;
    /** @internal */
    hasMessages(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormPasswordComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormPasswordComponent, "dsfr-form-password", never, { "autocomplete": { "alias": "autocomplete"; "required": false; }; "labelSrOnly": { "alias": "labelSrOnly"; "required": false; }; "required": { "alias": "required"; "required": false; }; "validationRules": { "alias": "validationRules"; "required": false; }; "recoveryLink": { "alias": "recoveryLink"; "required": false; }; "recoveryTargetLink": { "alias": "recoveryTargetLink"; "required": false; }; "recoveryRouterLink": { "alias": "recoveryRouterLink"; "required": false; }; "recoveryRouterLinkActive": { "alias": "recoveryRouterLinkActive"; "required": false; }; "recoveryRouterLinkExtras": { "alias": "recoveryRouterLinkExtras"; "required": false; }; "recoveryRoute": { "alias": "recoveryRoute"; "required": false; }; "ariaInvalid": { "alias": "ariaInvalid"; "required": false; }; }, { "recoveryRouteSelect": "recoveryRouteSelect"; }, never, ["[label]"], true, never>;
}

declare class DsfrFormPasswordModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormPasswordModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormPasswordModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrLinkComponent, typeof DsfrI18nPipe, typeof DsfrFormPasswordComponent], [typeof DsfrFormPasswordComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormPasswordModule>;
}

declare class DsfrFormSelectComponent extends DefaultControlComponent<any> implements OnInit {
    /**
     * Permet de personnaliser la première option (non sélectionnable). Cette propriété est positionnée à une valeur par
     * défaut (ex : Sélectionnez une option) internationalisée.
     */
    placeholder?: string;
    /**
     * Indique que le champ est obligatoire, nécessaire du point de vue de l'accessibilité.
     */
    required: boolean;
    /**
     * Permet d'ajouter un attribut 'aria-label' sur le champ de formulaire en cas de besoin.
     */
    ariaLabel?: string;
    /**
     * Ajouter l'attribut 'aria-invalid' sur le champ de formulaire.
     */
    ariaInvalid?: string;
    /**
     * Cache le label visuellement en le laissant disponible aux lecteurs d'écran.
     */
    labelSrOnly: boolean;
    /**
     * Output équivalent de (ngModelChange) si celui n'est pas disponible.
     */
    selectChange: EventEmitter<any>;
    /**
     * Le modèle de présentation permettant de transmettre la liste des options.
     */
    readonly options: i0.InputSignal<DsfrSelectOption[]>;
    /** Fonction de comparaison */
    protected compareFn: (o1: any, o2: any) => boolean;
    protected readonly NO_VALUE: null;
    protected internalValue: any;
    /**
     * Permet de conditionner la présence de l'option servant de placeholder. Sert à désactiver la gestion du placeholder
     * dans le cas où l'utilisateur souhaite avoir une liste déroulante désélectionnable, dans ce cas, il fournit lui-même
     * l'option servant de placeholder et d'option de désélection.
     */
    protected addDefaultPlaceholder: boolean;
    protected groupClasses: i0.Signal<{
        'fr-select-group': boolean;
        'fr-select-group--disabled': boolean;
        'fr-select-group--valid': boolean | "" | undefined;
        'fr-select-group--error': boolean | "" | undefined;
        'fr-input-group--warning': boolean | "" | undefined;
    }>;
    constructor();
    /**
     * @deprecated since 1.2, utiliser `placeholder` à la place (sans H majuscule).
     */
    get placeHolder(): string | undefined;
    get value(): any | undefined;
    /**
     * @deprecated since 1.2, utiliser `placeholder` à la place (sans H majuscule).
     */
    set placeHolder(value: string | undefined);
    set value(value: any | undefined);
    /**
     * Personnalisation de la comparaison.
     * `compareWith` est une fonction qui a deux arguments: valeur option1 et valeur option2.
     * Si `compareWith` est fournie, sélection de l'option en fonction du retour de la fonction.
     */
    set compareWith(fn: (o1: any, o2: any) => boolean);
    ngOnInit(): void;
    writeValue(value: any): void;
    /**
     * Mise a jour de value selon internalValue (nécessaire pour le cas du undefined et placeholder)
     * @param value
     */
    protected onChange(value: any): void;
    /**
     * Met à jour la valeur interne utilisée par le <select> pour afficher correctement le placeholder.
     *
     * En reactive form, la valeur [ngValue]="undefined" ne sera jamais sélectionnée par angular et
     * le placeholder ne sera donc pas affiché. Fix : contournement avec une valeur interne positionnée
     * à nulle (NO_VALUE) en cas de undefined sur this.value
     *
     * En template driven, il faut maj internalValue a l'initialisation pour que cette solution
     * fonctionne également (pas de passage dans writeValue)
     */
    private updateInternalValue;
    private findOption;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormSelectComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrFormSelectComponent, "dsfr-form-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaInvalid": { "alias": "ariaInvalid"; "required": false; }; "labelSrOnly": { "alias": "labelSrOnly"; "required": false; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "placeHolder": { "alias": "placeHolder"; "required": false; }; "value": { "alias": "value"; "required": false; }; "compareWith": { "alias": "compareWith"; "required": false; }; }, { "selectChange": "selectChange"; }, never, ["[label]"], true, never>;
}

declare class DsfrFormSelectModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrFormSelectModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrFormSelectModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrI18nPipe, typeof DsfrFormSelectComponent], [typeof DsfrFormSelectComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrFormSelectModule>;
}

/**
 * Décrit le modèle de présentation de la page de login.
 */
interface DsfrLogin {
    /**
     * Le 'identifiant utilisateur.
     */
    login: string;
    /**
     * Le mot de passe utilisateur.
     */
    password: string;
    /**
     * Est-ce que le système doit permettre à l'utilisateur de rester connecté entre plusieurs sessions ?
     */
    rememberMe?: boolean;
}
/**
 * @ignore
 */
type DsfrFnValidatePassword = (rules: DsfrFormPasswordValidationRule[], password: string) => void;

declare class DsfrLoginComponent implements OnInit {
    /** @internal */ emailComponent?: DsfrFormEmailComponent;
    /**Label du champ email ("Identifiant" par défaut) */
    labelEmail?: string;
    /** Surcharger le texte de description additionnel du champ email */
    hintEmail?: string;
    /**
     * Indique une erreur de connexion. Message de l'erreur.
     */
    error?: string;
    /** Url de récupération du mot de passe (optionnel) */
    recoveryLink?: string;
    /** Path interne. Exclusif avec link et routerLink */
    recoveryRoute?: string;
    /** Path angular géré en tant que directive routerLink. */
    recoveryRouterLink?: string | string[];
    /** RouterLink : classe utilisée pour la directive routerLink active. */
    recoveryRouterLinkActive?: string | string[];
    /** RouterLink : valeurs additionnelles de navigation pour le routerLink (queryParams, state, etc.) */
    recoveryRouterLinkExtras?: NavigationExtras;
    /** Se souvenir de l'utilisateur. */
    rememberMe: boolean;
    /** Utilisation de FranceConnect+ (qui est plus sécurisé). */
    secure: boolean;
    /** Nom du service. */
    service?: string;
    /** Demande de connexion via FranceConnect. */
    franceConnectSelect: EventEmitter<void>;
    /** Evénement lorsque le mot de passe change. */
    passwordChange: EventEmitter<string>;
    /** Emission de `recoveryRoute` s'il y a lieu. */
    recoveryRouteSelect: EventEmitter<string>;
    /** Demande de connexion avec en paramètre : '{login : string ; password : string}'. */
    signinSelect: EventEmitter<DsfrLogin>;
    /** Demande de création de compte */
    signupSelect: EventEmitter<void>;
    /**@internal */ loginFormGroup: FormGroup;
    protected password: string;
    protected login: string;
    private readonly fb;
    constructor();
    ngOnInit(): void;
    protected onFranceConnect(): void;
    /**
     * Inscription, on laisse le développeur faire ce qu'il veut dans ce cas.
     */
    protected onSignUp(): void;
    /** Connexion */
    protected onSignIn(): void;
    protected onPasswordChange(value: string): void;
    protected onRecoveryRouteSelect(route: string): void;
    protected isFormLoginValid(): boolean | undefined;
    private setControlValue;
    private getControlValue;
    private saveToLocalStorage;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrLoginComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrLoginComponent, "dsfr-login", never, { "labelEmail": { "alias": "labelEmail"; "required": false; }; "hintEmail": { "alias": "hintEmail"; "required": false; }; "error": { "alias": "error"; "required": false; }; "recoveryLink": { "alias": "recoveryLink"; "required": false; }; "recoveryRoute": { "alias": "recoveryRoute"; "required": false; }; "recoveryRouterLink": { "alias": "recoveryRouterLink"; "required": false; }; "recoveryRouterLinkActive": { "alias": "recoveryRouterLinkActive"; "required": false; }; "recoveryRouterLinkExtras": { "alias": "recoveryRouterLinkExtras"; "required": false; }; "rememberMe": { "alias": "rememberMe"; "required": false; }; "secure": { "alias": "secure"; "required": false; }; "service": { "alias": "service"; "required": false; }; }, { "franceConnectSelect": "franceConnectSelect"; "passwordChange": "passwordChange"; "recoveryRouteSelect": "recoveryRouteSelect"; "signinSelect": "signinSelect"; "signupSelect": "signupSelect"; }, never, never, true, never>;
    static ngAcceptInputType_secure: unknown;
}

declare class DsfrResponseComponent implements OnInit {
    /**
     * Titre de la page (par défaut : 'Erreur inattendue').
     */
    heading?: string;
    /** Le niveau de titre devant être utilisé. */
    headingLevel?: DsfrHeadingLevel;
    /**
     * Type d'erreur (404, 500,...).
     */
    error: number;
    /**
     * Description de la page (par défaut: 'Essayez de rafraichir la page ou bien ressayez plus tard.').
     */
    description?: string;
    /**
     * Détail de la page (par défaut : 'Désolé, le service rencontre un problème, nous travaillons pour le résoudre le plus rapidement possible.').
     */
    detail?: string;
    /**
     * Conditionne l'affichage du bouton contactez-nous.
     */
    showContact: boolean;
    /**
     * Conditionne l'affichage du bouton page d'accueil'.
     */
    showBackToHome: boolean;
    /**
     * Chemin vers le répertoire exposant les pictogrammes illustratifs DSFR.
     */
    artworkDirPath?: string;
    /**
     * Chemin de l'image.
     */
    imagePath?: string;
    /**
     * Texte alternatif de l'image.
     */
    imageAlt?: string;
    /**
     * Indique que le bouton contact est cliqué.
     */
    contactSelect: EventEmitter<string>;
    /**
     * Indique que le bouton page d'accueil est cliqué.
     */
    backToHomeSelect: EventEmitter<string>;
    protected noFirstNameModel: boolean;
    private readonly config;
    constructor();
    get pictoPath(): string | undefined;
    /**
     * Chemin des pictogrammes (du composant display) renseigné par le développeur.
     *
     * Note: ce chemin doit permettre de récupérer directement les fichiers SVG suivants : moon.svg, sun.svg, system.svg
     *
     * @deprecated Use `artworkDirPath` instead.
     */
    set pictoPath(path: string);
    ngOnInit(): void;
    protected onContact(): void;
    protected onHome(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrResponseComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrResponseComponent, "dsfr-response", never, { "heading": { "alias": "heading"; "required": false; }; "headingLevel": { "alias": "headingLevel"; "required": false; }; "error": { "alias": "error"; "required": false; }; "description": { "alias": "description"; "required": false; }; "detail": { "alias": "detail"; "required": false; }; "showContact": { "alias": "showContact"; "required": false; }; "showBackToHome": { "alias": "showBackToHome"; "required": false; }; "artworkDirPath": { "alias": "artworkDirPath"; "required": false; }; "imagePath": { "alias": "imagePath"; "required": false; }; "imageAlt": { "alias": "imageAlt"; "required": false; }; "pictoPath": { "alias": "pictoPath"; "required": false; }; }, { "contactSelect": "contactSelect"; "backToHomeSelect": "backToHomeSelect"; }, never, never, true, never>;
}
/**
 * @deprecated use DsfrResponseComponent instead
 */
declare class DsfrPageResponseComponent extends DsfrResponseComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrPageResponseComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrPageResponseComponent, "dsfr-page-response", never, {}, {}, never, never, true, never>;
}

declare class DsfrResponseModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrResponseModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrResponseModule, never, [typeof i1.CommonModule, typeof DsfrButtonModule, typeof DsfrButtonsGroupModule, typeof DsfrI18nPipe, typeof DsfrResponseComponent], [typeof DsfrResponseComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrResponseModule>;
}
/**
 * @deprecated use DsfrResponseModule instead
 */
declare class DsfrPageResponseModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrPageResponseModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrPageResponseModule, never, [typeof i1.CommonModule, typeof DsfrButtonModule, typeof DsfrButtonsGroupModule, typeof DsfrI18nPipe, typeof DsfrPageResponseComponent], [typeof DsfrPageResponseComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrPageResponseModule>;
}

interface DsfrAddressDetails {
    /** Data du champs "numéro" */
    number?: DsfrInputText;
    /** Data du champs "voie" */
    street?: DsfrInputText;
    /** Data du champs "Bâtiment" */
    building?: DsfrInputText;
    /** Data du champs "Immeuble" */
    block?: DsfrInputText;
    /** Data du champs "Escalier" */
    stare?: DsfrInputText;
    /** Data du champs "numéro d'appartement" */
    apartment?: DsfrInputText;
}
declare class DsfrAddressComponent {
    /**
     * Légende du fieldset.
     */
    legend: string;
    /**
     * Data du champs adresse.
     */
    address: DsfrInputText;
    /**
     * Data du champs complément d'adresse (optionnel).
     */
    addressSupplement?: DsfrInputText;
    /**
     * Data des champs complément d'adresse ("Numéro", "Voie", "Bâtiment", "Immeuble", "Escalier", "Numéro d'appartement").
     */
    addressDetails?: DsfrAddressDetails;
    /**
     * Data du champs code postal.
     */
    zipCode: DsfrInputText;
    /**
     * Data du champs ville.
     */
    city: DsfrInputText;
    /**
     * Data du champs lieux-dit/commune déléguée ou boîte postale.
     */
    locality?: DsfrInputText;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrAddressComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrAddressComponent, "dsfr-address", never, { "legend": { "alias": "legend"; "required": false; }; "address": { "alias": "address"; "required": true; }; "addressSupplement": { "alias": "addressSupplement"; "required": false; }; "addressDetails": { "alias": "addressDetails"; "required": false; }; "zipCode": { "alias": "zipCode"; "required": true; }; "city": { "alias": "city"; "required": true; }; "locality": { "alias": "locality"; "required": false; }; }, {}, never, never, true, never>;
}

declare class DsfrAddressModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrAddressModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrAddressModule, never, [typeof i1.CommonModule, typeof DsfrFormFieldsetComponent, typeof DsfrFormInputComponent, typeof i2$1.FormsModule, typeof DsfrAddressComponent], [typeof DsfrAddressComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrAddressModule>;
}

/**
 * Cette classe représente les valeurs saisies par un utilisateur sur 3 champs distincts, jour, mois année.
 * 🔥 Bien que ces propriétés soient en théorie des nombres, à l'exécution, on reçoit des strings.
 * - Chaque valeur est initialisée à `undefined` mais peut aussi avoir la valeur "" (chaine vide).
 * 👆 Par défaut la date est une date UTC.
 * L'objectif de la classe est de :
 * - Gérer des dates saisies par l'utilisateur, potentiellement avec des valeurs `undefined` ou ""
 * - Manipuler les mois de 1 à 12 (et non de 0 à 11)
 * - D'encapsuler l'api [Date](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Date) et plus tard l'API Temporal
 */
declare class DateModel {
    fullYear: number | undefined;
    monthNum: number | undefined;
    dayNum: number | undefined;
    hourNum: number | undefined;
    constructor(fullYear?: number, monthNum?: number, dayNum?: number, hourNum?: number);
    private get month();
    /**
     * @param value : 3 formes basiques pour utiliser la méthode
     * - string : Une chaîne de caractères qui représente une date, selon le format reconnu par la méthode `Date.parse()` (ex : '04 Dec 1995 00:12:00 GMT')
     * - number : Une valeur entière qui représente le nombre de millisecondes depuis le premier janvier 1970
     * - date : Un objet de type date
     */
    static of(value: string | number | Date | undefined | null, loggerService: LoggerService | any): DateModel;
    isValid(): boolean;
    toDate(hourTimezoneOffset?: number): Date | undefined;
    /**
     * Valide le model.
     * @param required indique si la date est requise ou non
     * @return une liste de codes d'erreur ou tableau vide
     */
    validate(required?: boolean): string[];
    private allTouched;
    private allFilled;
    /** @return true si undefined ou number */
    private isNumber;
}

declare class DsfrDateComponent extends DefaultValueAccessorComponent<Date> implements Validator {
    /**
     * Indique si les champs de saisie doivent être auto-complétés à partir de la date de naissance de l'utilisateur.
     */
    autocomplete: boolean;
    /**
     * Positionne le champ en statut `ERROR` avec le message indiqué.
     * @deprecated (since 1.15) utiliser message/messageSeverity à la place
     */
    error?: string | string[];
    /**
     * Texte(s) de description additionnel(s).
     */
    hint?: string | string[];
    /**
     * Légende du fieldset.
     */
    legend?: string;
    /**
     * Indique si la date est obligatoire.
     */
    required: boolean;
    /** Attribut readonly de l'input */
    readonly?: boolean;
    /** Permet de rétablir une graisse standard sur la légende. */
    legendRegular: boolean;
    /**
     * Message d'information lié au composant
     */
    message: string | string[] | undefined;
    /**
     * Représente la sévérité du message.
     */
    messageSeverity?: DsfrSeverity;
    /**
     * Positionne le champ en statut `VALID` avec le message indiqué.
     * @deprecated (since 1.15) utiliser message/messageSeverity à la place
     */
    valid: string | undefined;
    /**
     * Signale le changement de date.
     */
    dateChange: EventEmitter<Date>;
    /** @internal */ dateModel: DateModel;
    /** @internal */ validationErrors: ValidationErrors | null;
    protected readonly i18n: DsfrI18nService;
    private readonly logger;
    get internalError(): string[] | undefined;
    /** @internal */
    writeValue(value: Date | undefined): void;
    /** @internal */
    onFocusOut(): void;
    /** @internal */
    registerOnValidatorChange(fn: () => void): void;
    /** @internal */
    validate(control: AbstractControl): ValidationErrors | null;
    /** Permet de stocker la fonction pouvant être appelée pour forcer une revalidation. */
    private fnOnValidatorChange;
    /**
     * Valide le composant et retourne ValidationErrors
     */
    private internalValidate;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDateComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrDateComponent, "dsfr-date", never, { "autocomplete": { "alias": "autocomplete"; "required": false; }; "error": { "alias": "error"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "legend": { "alias": "legend"; "required": false; }; "required": { "alias": "required"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "legendRegular": { "alias": "legendRegular"; "required": false; }; "message": { "alias": "message"; "required": false; }; "messageSeverity": { "alias": "messageSeverity"; "required": false; }; "valid": { "alias": "valid"; "required": false; }; }, { "dateChange": "dateChange"; }, never, never, true, never>;
    static ngAcceptInputType_required: unknown;
    static ngAcceptInputType_readonly: unknown;
    static ngAcceptInputType_legendRegular: unknown;
}

declare class DsfrDateModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrDateModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrDateModule, never, [typeof i1.CommonModule, typeof i2$1.FormsModule, typeof DsfrFormFieldsetComponent, typeof DsfrFormInputComponent, typeof DsfrI18nPipe, typeof DsfrDateComponent], [typeof DsfrDateComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrDateModule>;
}

declare class DsfrNameComponent {
    /**
     * Légende du fieldset.
     */
    legend?: string;
    /**
     * Data du champ name.
     */
    lastName: DsfrInputText;
    /**
     * Permet d'indiquer un nom d'usage (optionnel).
     */
    usualName?: DsfrInputText;
    /**
     * Data du champ firstname.
     */
    firstNames: DsfrInputText[];
    /**
     * Permet d'afficher l'option "Je n'ai pas de prénom".
     */
    noFirstName: boolean;
    /**
     * Permet d'afficher un bouton qui ajoute un nouveau champ de de saisi pour un prénom additionnel.
     */
    addFirstName: boolean;
    /**
     * Data du selecteur de pays (optionnel).
     */
    country?: DsfrSelect;
    /**
     * Notifie que l'utilisateur a cliqué sur le bouton d'ajout de prénom.
     */
    addFirstNameSelect: EventEmitter<string>;
    /**
     * Notifie la suppression d'un prénom additionnel (le tableau 'firstnames' devrait être mis à jour en conséquence).
     */
    deleteFirstNameSelect: EventEmitter<number>;
    protected noFirstNameModel: boolean;
    protected onAddFirstNameInput(): void;
    protected onDeleteFirstNameInput(index: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrNameComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DsfrNameComponent, "dsfr-name", never, { "legend": { "alias": "legend"; "required": false; }; "lastName": { "alias": "lastName"; "required": true; }; "usualName": { "alias": "usualName"; "required": false; }; "firstNames": { "alias": "firstNames"; "required": true; }; "noFirstName": { "alias": "noFirstName"; "required": false; }; "addFirstName": { "alias": "addFirstName"; "required": false; }; "country": { "alias": "country"; "required": false; }; }, { "addFirstNameSelect": "addFirstNameSelect"; "deleteFirstNameSelect": "deleteFirstNameSelect"; }, never, never, true, never>;
}

declare class DsfrNameModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<DsfrNameModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<DsfrNameModule, never, [typeof i1.CommonModule, typeof DsfrFormFieldsetComponent, typeof DsfrFormInputComponent, typeof DsfrFormCheckboxComponent, typeof DsfrButtonComponent, typeof DsfrFormSelectComponent, typeof i2$1.FormsModule, typeof DsfrNameComponent], [typeof DsfrNameComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<DsfrNameModule>;
}

export { BaseInputComponent, BasePanelComponent, ConfigService, DEFAULT_HEADING_LEVEL, DISPLAY_MODAL_ID, DSFR_CONFIG_TOKEN, DSFR_TAB_SELECTORS, DateUtils, DefaultControlComponent, DefaultValueAccessorComponent, DomUtils, DsfrAccordionComponent, DsfrAccordionModule, DsfrAccordionsGroupComponent, DsfrAccordionsGroupModule, DsfrAddressComponent, DsfrAddressModule, DsfrAlertComponent, DsfrAlertModule, DsfrAlertSizeConst, DsfrAlignConst, DsfrBackToTopComponent, DsfrBackToTopModule, DsfrBadgeComponent, DsfrBadgeModule, DsfrBadgeSeverityConst, DsfrBadgeSizeConst, DsfrBadgesGroupComponent, DsfrBadgesGroupModule, DsfrBreadcrumbComponent, DsfrBreadcrumbModule, DsfrButtonComponent, DsfrButtonModule, DsfrButtonTypeConst, DsfrButtonVariantConst, DsfrButtonsGroupComponent, DsfrButtonsGroupMarkupConst, DsfrButtonsGroupModule, DsfrCalloutComponent, DsfrCalloutDescMarkupConst, DsfrCalloutModule, DsfrCardBackgroundConst, DsfrCardBorderConst, DsfrCardComponent, DsfrCardModule, DsfrCellDirective, DsfrCellSizeConst, DsfrColumnDirective, DsfrConfigModule, DsfrConsentBannerComponent, DsfrConsentBannerModule, DsfrContentComponent, DsfrContentModule, DsfrDataTableModule, DsfrDataTableService, DsfrDateComponent, DsfrDateModule, DsfrDisableRouterLinkDirective, DsfrDisplayComponent, DsfrDisplayModule, DsfrDownloadComponent, DsfrDownloadModule, DsfrDownloadVariantConst, DsfrDownloadsGroupComponent, DsfrDownloadsGroupModule, DsfrFileSizeUnitConst, DsfrFollowComponent, DsfrFollowLinkComponent, DsfrFollowModule, DsfrFollowNameConst, DsfrFollowTypeConst, DsfrFooterComponent, DsfrFooterModule, DsfrFooterPresMarkupConst, DsfrFormCheckboxComponent, DsfrFormCheckboxModule, DsfrFormEmailComponent, DsfrFormEmailModule, DsfrFormFieldsetComponent, DsfrFormFieldsetElementDirective, DsfrFormFieldsetModule, DsfrFormInputComponent, DsfrFormInputModule, DsfrFormPasswordComponent, DsfrFormPasswordModule, DsfrFormRadioComponent, DsfrFormRadioModule, DsfrFormRadioRichComponent, DsfrFormRadioRichModule, DsfrFormSelectComponent, DsfrFormSelectModule, DsfrFormTelComponent, DsfrFormToggleComponent, DsfrFormToggleModule, DsfrFormTogglesGroupComponent, DsfrFormTogglesGroupModule, DsfrFranceConnectComponent, DsfrHeaderComponent, DsfrHeaderModule, DsfrHeadingLevelConst, DsfrHighlightComponent, DsfrHighlightModule, DsfrI18nPipe, DsfrI18nService, DsfrImageFitConst, DsfrImageRatioConst, DsfrImageTypeConst, DsfrInlineConst, DsfrInputModeConst, DsfrInputTypeConst, DsfrLinkComponent, DsfrLinkModule, DsfrLinkTargetConst, DsfrLinksGroupComponent, DsfrLinksGroupModule, DsfrLogLevel, DsfrLoginComponent, DsfrLogoComponent, DsfrLogoModule, DsfrMediaConst, DsfrMegaMenuComponent, DsfrMimeTypeConst, DsfrModalComponent, DsfrModalModule, DsfrNameComponent, DsfrNameModule, DsfrNoticeComponent, DsfrNoticeModule, DsfrNoticeTypeConst, DsfrPageResponseComponent, DsfrPageResponseModule, DsfrPaginationComponent, DsfrPaginationModule, DsfrPanelBackgroundConst, DsfrPanelBorderConst, DsfrPanelDescMarkupConst, DsfrPositionConst, DsfrPreviousPageComponent, DsfrProportionConst, DsfrQuoteComponent, DsfrQuoteModule, DsfrRangeComponent, DsfrResponseComponent, DsfrResponseModule, DsfrRowGroupDirective, DsfrRowGroupHeaderDirective, DsfrSearchBarComponent, DsfrSearchBarModule, DsfrSegmentedControlComponent, DsfrSegmentedControlModule, DsfrSelectAllDirective, DsfrSelectRowDirective, DsfrSeverityConst, DsfrShareComponent, DsfrShareLinkComponent, DsfrShareModule, DsfrShareNameConst, DsfrSidemenuComponent, DsfrSidemenuModule, DsfrSizeConst, DsfrSkipLinksComponent, DsfrSkiplinksModule, DsfrSortColumnDirective, DsfrStepperComponent, DsfrStepperModule, DsfrSummaryComponent, DsfrSummaryModule, DsfrTabComponent, DsfrTableComponent, DsfrTableFooterComponent, DsfrTableLegacyComponent, DsfrTableModule, DsfrTabnavComponent, DsfrTabsComponent, DsfrTabsModule, DsfrTagComponent, DsfrTagModeConst, DsfrTagModule, DsfrTagsGroupComponent, DsfrTagsGroupModule, DsfrTargetLinkConst, DsfrTextSizeConst, DsfrTileComponent, DsfrTileModule, DsfrToolLinkComponent, DsfrToolLinkMenuComponent, DsfrTooltipButtonComponent, DsfrTooltipDirective, DsfrTranscriptionComponent, DsfrTranslateComponent, DsfrTranslateModule, DsfrTreeGridNavigationDirective, DsfrUploadComponent, DsfrUploadModule, DsfrUserMenuComponent, EduCheckboxLightComponent, HeadingComponent, HeadingModule, InputGroupComponent, LABELS_BUNDLE_EN, LABELS_BUNDLE_FR, LangService, Language, LinkDownloadComponent, LocalStorage, LoggerService, PictogramComponent, PictogramModule, StorageEnum, SvgIconComponent, SvgIconModule, ViewMenu, downloadDetail, fileSizeToString, i18nDeepMerge, isOnBrowser, isStringEmptyOrNull, jsonPath2Value, newUniqueId, toArray };
export type { DsfrAccessibility, DsfrAddressDetails, DsfrAlertSize, DsfrAlign, DsfrAnchorLink, DsfrBadge, DsfrBadgeSeverity, DsfrBadgeSize, DsfrButton, DsfrButtonType, DsfrButtonVariant, DsfrButtonsGroupMarkup, DsfrCalloutDescMarkup, DsfrCardBackground, DsfrCardBorder, DsfrCellOptions, DsfrCellSize, DsfrColumn, DsfrConfig, DsfrDataGroup, DsfrDataTable, DsfrDownload, DsfrDownloadVariant, DsfrFileSizeUnit, DsfrFinality, DsfrFnValidatePassword, DsfrFollowName, DsfrFollowType, DsfrFooterPresMarkup, DsfrFooterReboundLinks, DsfrFormPasswordValidationRule, DsfrHeaderMenuItem, DsfrHeaderTranslate, DsfrHeadingLevel, DsfrI18nBaseBundle, DsfrI18nBaseBundleKeys, DsfrI18nBundle, DsfrI18nExtensionBundle, DsfrI18nMergeOptions, DsfrI18nRecord, DsfrI18nValue, DsfrIcon, DsfrImageFit, DsfrImageRatio, DsfrImageType, DsfrInline, DsfrInputMode, DsfrInputText, DsfrInputType, DsfrLang, DsfrLink, DsfrLinkTarget, DsfrLogin, DsfrLogo, DsfrMedia, DsfrMegaMenu, DsfrMegaMenuCategory, DsfrMegaMenuLeader, DsfrMenu, DsfrMenuItem, DsfrMimeType, DsfrModalAction, DsfrNavigation, DsfrNoticeType, DsfrOption, DsfrPanelBackground, DsfrPanelBorder, DsfrPanelDescMarkup, DsfrPartner, DsfrPosition, DsfrQuoteDetail, DsfrRadio, DsfrRadioRich, DsfrRowGrouping, DsfrRowOptions, DsfrSegmentedControl, DsfrSelect, DsfrSelectOption, DsfrSeverity, DsfrShareName, DsfrSize, DsfrSortColumn, DsfrSubFinality, DsfrSummary, DsfrSummaryLink, DsfrTabRoute, DsfrTableBodyContext, DsfrTableColumn, DsfrTableGroupContext, DsfrTableGroupHeaderContext, DsfrTableOptions, DsfrTablePaginationEvent, DsfrTableSelectionEvent, DsfrTableState, DsfrTag, DsfrTagEvent, DsfrTagMode, DsfrTargetLink, DsfrTextSize };
