import * as _angular_core from '@angular/core';
import { ElementRef, InjectionToken } from '@angular/core';
import { Portal } from '@angular/cdk/portal';
import { RouterLink } from '@angular/router';
import { HasElementRef } from '@fundamental-ngx/cdk';
import { IconComponent } from '@fundamental-ngx/core/icon';

declare const LINK_CLASS_NAME: {
    readonly linkContent: "fd-link__content";
};

declare class LinkComponent implements HasElementRef {
    /** @hidden */
    readonly iconComponents: _angular_core.Signal<readonly IconComponent[]>;
    /** @hidden */
    readonly contentSpan: _angular_core.Signal<ElementRef<HTMLSpanElement> | undefined>;
    /** Whether user wants to use emphasized mode */
    readonly emphasized: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether user wants to put disabled mode */
    readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether user wants to use inverted mode */
    readonly inverted: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether user wants to use subtle mode */
    readonly subtle: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether user wants to have a link without underline decoration */
    readonly undecorated: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether user wants to have a larger touch target */
    readonly touchTarget: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** @hidden */
    readonly elementRef: ElementRef<any>;
    /** @hidden */
    readonly routerLink: RouterLink;
    /** @hidden */
    readonly prefixIconName: _angular_core.WritableSignal<string>;
    /** @hidden */
    readonly postfixIconName: _angular_core.WritableSignal<string>;
    /** @hidden */
    protected readonly prefixPortal: _angular_core.WritableSignal<Portal<any> | null>;
    /** @hidden */
    protected readonly postfixPortal: _angular_core.WritableSignal<Portal<any> | null>;
    /** @hidden */
    private readonly _injector;
    constructor();
    /** @hidden */
    private _clearPortals;
    /** @hidden */
    private _updatePortals;
    /** @hidden */
    private _detachPortals;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<LinkComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<LinkComponent, "[fdLink], [fd-link]", never, { "emphasized": { "alias": "emphasized"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inverted": { "alias": "inverted"; "required": false; "isSignal": true; }; "subtle": { "alias": "subtle"; "required": false; "isSignal": true; }; "undecorated": { "alias": "undecorated"; "required": false; "isSignal": true; }; "touchTarget": { "alias": "touchTarget"; "required": false; "isSignal": true; }; }, {}, ["iconComponents"], ["*"], true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class LinkModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<LinkModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<LinkModule, never, [typeof LinkComponent], [typeof LinkComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<LinkModule>;
}

declare const FD_LINK_COMPONENT: InjectionToken<unknown>;

export { FD_LINK_COMPONENT, LINK_CLASS_NAME, LinkComponent, LinkModule };
