import { Portal } from '@angular/cdk/portal';
import * as i0 from '@angular/core';
import { OnChanges, OnInit, AfterViewInit, ElementRef, QueryList, ChangeDetectorRef, InjectionToken } from '@angular/core';
import { RouterLink } from '@angular/router';
import { CssClassBuilder } from '@fundamental-ngx/cdk/utils';
import { IconComponent } from '@fundamental-ngx/core/icon';

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

declare class LinkComponent implements OnChanges, OnInit, CssClassBuilder, AfterViewInit {
    readonly elementRef: ElementRef<HTMLElement>;
    private changeDetectorRef;
    readonly routerLink: RouterLink;
    /** @hidden */
    iconComponents: QueryList<IconComponent>;
    /** @hidden */
    contentSpan: ElementRef<HTMLSpanElement>;
    /** user's custom classes */
    class: string;
    /** Whether user wants to use emphasized mode */
    emphasized: boolean;
    /** Whether user wants to put disabled mode */
    disabled: boolean;
    /** Whether user wants to use inverted mode */
    inverted: boolean;
    /** Whether user wants to use subtle mode */
    subtle: boolean;
    /** Whether user wants to have a link without underline decoration */
    undecorated: boolean;
    /** @hidden */
    _prefixPortal: Portal<any> | null;
    /** @hidden */
    _postfixPortal: Portal<any> | null;
    /** @hidden */
    _prefixIconName: string;
    /** @hidden */
    _postfixIconName: string;
    /** @hidden */
    private readonly _destroyed$;
    /** @hidden */
    constructor(elementRef: ElementRef<HTMLElement>, changeDetectorRef: ChangeDetectorRef, routerLink: RouterLink);
    /**
     * @hidden
     * CssClassBuilder interface implementation
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngAfterViewInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LinkComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LinkComponent, "[fdLink], [fd-link]", never, { "class": { "alias": "class"; "required": false; }; "emphasized": { "alias": "emphasized"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "inverted": { "alias": "inverted"; "required": false; }; "subtle": { "alias": "subtle"; "required": false; }; "undecorated": { "alias": "undecorated"; "required": false; }; }, {}, ["iconComponents"], ["*"], true, never>;
}

declare class LinkModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<LinkModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<LinkModule, never, [typeof LinkComponent], [typeof LinkComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<LinkModule>;
}

declare const FD_LINK_COMPONENT: InjectionToken<unknown>;

export { FD_LINK_COMPONENT, LINK_CLASS_NAME, LinkComponent, LinkModule };
