import * as i0 from '@angular/core';
import { AfterContentChecked, ElementRef, AfterViewInit, OnInit, OnDestroy, EventEmitter, OnChanges, Renderer2 } from '@angular/core';
import { Validator, AbstractControl } from '@angular/forms';

declare class AutosizeTextareaDirective implements AfterContentChecked {
    element: ElementRef;
    static maxHeight: number;
    constructor(element: ElementRef);
    onInput(): void;
    ngAfterContentChecked(): void;
    resize(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AutosizeTextareaDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AutosizeTextareaDirective, "textarea[apAutosize]", never, {}, {}, never, never, true, never>;
}

declare class BaseButtonDirective implements AfterViewInit, OnInit {
    hostId: string | undefined;
    hostDataTest: string | undefined;
    hostType: string;
    private elementRef;
    private changeDetectorRef;
    ngOnInit(): void;
    ngAfterViewInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseButtonDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BaseButtonDirective, "[apBaseButton]", never, {}, {}, never, never, true, never>;
}

declare class CheckboxDirective implements OnInit, OnDestroy {
    private readonly elementRef;
    private readonly renderer;
    private _checked;
    private _indeterminate;
    checked: i0.Signal<boolean>;
    indeterminate: i0.Signal<boolean>;
    set checkedInput(checked: boolean);
    set indeterminateInput(indeterminate: boolean);
    private updateNativeElementSync;
    private listeners;
    private styleElement;
    private checkmarkSvg;
    private indeterminateBar;
    constructor();
    private readonly checkSvgContent;
    ngOnInit(): void;
    ngOnDestroy(): void;
    private createCheckboxStructure;
    private createOverlayElement;
    private createCheckmarkSvg;
    private createIndeterminateBar;
    private updateCheckmarkVisibility;
    private setupEventListeners;
    private applyCheckboxStyles;
    private onValueChange;
    static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<CheckboxDirective, "input[type=\"checkbox\"][apCheckbox]", never, { "checkedInput": { "alias": "checked"; "required": false; }; "indeterminateInput": { "alias": "indeterminate"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_indeterminateInput: unknown;
}

declare class DefaultImageDirective {
    src: string;
    default: string;
    updateUrl(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DefaultImageDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DefaultImageDirective, "img[default]", never, { "src": { "alias": "src"; "required": true; }; "default": { "alias": "default"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Removes excess text from element until it fits in elements
 * and appends a ellipsis symbol to end of text. This requires that
 * the elements height be fixed
 *
 * @example
 * ```html
 * <p apEllipsis>Ullamco esse laborum</p>
 * ```
 *
 */
declare class EllipsisDirective implements AfterContentChecked {
    private el;
    apEllipsisSeparator: string;
    apEllipsisClip: boolean;
    apEllipsisIndex: number;
    apEllipsisChar: string;
    apEllipsisClickable: boolean;
    apEllipsisRemovedElementsCount: EventEmitter<number>;
    apEllipsisRemovedText: EventEmitter<string>;
    private get hasOverflow();
    constructor(el: ElementRef);
    ngAfterContentChecked(): void;
    private clipText;
    static ɵfac: i0.ɵɵFactoryDeclaration<EllipsisDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<EllipsisDirective, "[apEllipsis]", never, { "apEllipsisSeparator": { "alias": "apEllipsisSeparator"; "required": false; }; "apEllipsisClip": { "alias": "apEllipsisClip"; "required": false; }; "apEllipsisIndex": { "alias": "apEllipsisIndex"; "required": false; }; "apEllipsisChar": { "alias": "apEllipsisChar"; "required": false; }; "apEllipsisClickable": { "alias": "apEllipsisClickable"; "required": false; }; }, { "apEllipsisRemovedElementsCount": "apEllipsisRemovedElementsCount"; "apEllipsisRemovedText": "apEllipsisRemovedText"; }, never, never, true, never>;
}

declare class EqualValidatorDirective implements Validator {
    validateEqual: string;
    validateEqualReference: string;
    constructor(validateEqual: string, validateEqualReference: string);
    validate(self: AbstractControl): {
        [key: string]: any;
    } | null;
    private isReference;
    static ɵfac: i0.ɵɵFactoryDeclaration<EqualValidatorDirective, [{ attribute: "validateEqual"; }, { attribute: "validateEqualReference"; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<EqualValidatorDirective, "[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]", never, {}, {}, never, never, true, never>;
}

declare class GifService {
    static isGif(src: string): boolean | "";
}
/**
 * If the image is a GIF then replace the img element by a canvas containing a frozen gif.
 * Note 1: if the image is displayed under a condition, the condition must be applied on the parent of the image, so the
 * new canvas element will have the same condition.
 * Note 2: the image must not have the properties "display" and "visibility" in its style. Since they are used to frozen
 * the GIF. You need to apply this properties on the parent element.
 * Note 3: If the GIF is frozen, all the event are propagated to the image. However, all events are dispatched
 * with an Event instance. Ex: click event is not dispatched with a MouseEvent instance.
 */
declare class FrozenGifDirective implements OnChanges {
    private elementRef;
    src: string;
    apFrozen: boolean;
    apGifEvents: string[];
    private readonly element;
    private canvas;
    constructor(elementRef: ElementRef);
    ngOnChanges(changes: any): void;
    private freeze;
    private addCanvas;
    private addEvents;
    private unfreeze;
    static ɵfac: i0.ɵɵFactoryDeclaration<FrozenGifDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FrozenGifDirective, "img[apFrozenGif]", never, { "src": { "alias": "src"; "required": true; }; "apFrozen": { "alias": "apFrozen"; "required": false; }; "apGifEvents": { "alias": "apGifEvents"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * This directive aims to parse simple string to extract some specific tags and to turn them into SPAN with styling classes attributes and optional event listening.
 * The specific tags must this schema: <ng-container data-mst="STYLING-CLASSES">TEXT</ng-container>.
 * Example: 'Lorem <ng-container data-mst="my-style">ipsum</ng-container> dolor sit amet'.
 */
declare class MultiStyleTextDirective {
    private elRef;
    private renderer;
    set multiStyleText(fullText: string);
    partEvent: EventEmitter<string>;
    constructor(elRef: ElementRef<HTMLElement>, renderer: Renderer2);
    static ɵfac: i0.ɵɵFactoryDeclaration<MultiStyleTextDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<MultiStyleTextDirective, "[multiStyleText]", never, { "multiStyleText": { "alias": "multiStyleText"; "required": false; }; }, { "partEvent": "partEvent"; }, never, never, true, never>;
}

export { AutosizeTextareaDirective, BaseButtonDirective, CheckboxDirective, DefaultImageDirective, EllipsisDirective, EqualValidatorDirective, FrozenGifDirective, GifService, MultiStyleTextDirective };
