import { EventEmitter, ElementRef } from "@angular/core";
import copy from "copy-to-clipboard";
declare function useTooltipExtension(rootElement?: HTMLElement): void;
declare enum Breakpoint {
    Basic = "basic",
    XXS = "xxs",
    XS = "xs",
    S = "s",
    M = "m",
    L = "l",
    XL = "xl",
    XXL = "xxl"
}
type BreakpointProps<T> = {
    [key in Breakpoint]?: T;
};
type BaseProps = {
    className?: string;
    class?: string; // Fallback className
    children?: Children;
};
type Children = any; // TODO
// We don't want to limit the user to use only our types
type Dynamic<T> = T | string;
declare enum Intent {
    None = "",
    Info = "info",
    Success = "warning",
    Warning = "success",
    Error = "error"
}
declare enum Variant {
    Basic = "",
    Primary = "primary",
    Secondary = "secondary",
    Tertiary = "tertiary"
}
type AvatarProps = {
    variant?: Dynamic<Variant>;
    name?: string;
    unavatar?: string;
    url?: string;
    disabled?: boolean;
} & BaseProps;
declare class Avatar {
    name: AvatarProps["name"];
    variant: AvatarProps["variant"];
    disabled: AvatarProps["disabled"];
    className: AvatarProps["className"];
    url: AvatarProps["url"];
    unavatar: AvatarProps["unavatar"];
    loaded: boolean;
    classes: {
        base: string;
        container: string;
    };
    styles: {
        container: any;
    };
    initials: any;
    source: any;
    ngOnInit(): void;
}
type ButtonProps = {
    variant?: Dynamic<Variant>;
    intent?: Dynamic<Intent>;
    outline?: boolean;
    disabled?: boolean;
} & BaseProps;
declare class Button {
    variant: ButtonProps["variant"];
    outline: ButtonProps["outline"];
    intent: ButtonProps["intent"];
    disabled: ButtonProps["disabled"];
    className: ButtonProps["className"];
    loaded: boolean;
    classes: {
        base: string;
    };
    ngOnInit(): void;
}
type CodeProps = {
    editable?: boolean;
    language: string;
    theme: CodeTheme;
    code: string;
    disableCopy?: boolean;
    slotCopy?: Children;
    links?: {
        label: string;
        url: string;
        icon: string;
    }[];
    onUpdate?: (code: string) => void;
} & BaseProps;
declare const codeThemes: readonly [
    "default",
    "dark",
    "atom-one-light",
    "atom-one-dark",
    "github",
    "monokai"
];
type CodeTheme = (typeof codeThemes)[number];
declare class Code {
    copy: typeof copy;
    links: CodeProps["links"];
    disableCopy: CodeProps["disableCopy"];
    code: CodeProps["code"];
    language: CodeProps["language"];
    theme: CodeProps["theme"];
    className: CodeProps["className"];
    editable: CodeProps["editable"];
    onUpdate: EventEmitter<any>;
    codeRef: ElementRef;
    loaded: boolean;
    codeService: any;
    classes: {
        base: string;
        editor: string;
    };
    value(x: any, y: any): any;
    ngOnInit(): void;
    ngAfterContentChecked(): void;
    ngOnDestroy(): void;
}
type ColumnProps = BreakpointProps<1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | "content" | "fill" | "hide"> & BaseProps;
declare class Column {
    basic: ColumnProps["basic"];
    xxs: ColumnProps["xxs"];
    xs: ColumnProps["xs"];
    s: ColumnProps["s"];
    m: ColumnProps["m"];
    l: ColumnProps["l"];
    xl: ColumnProps["xl"];
    xxl: ColumnProps["xxl"];
    className: ColumnProps["className"];
    loaded: boolean;
    classes: {
        base: string;
    };
    ngOnInit(): void;
}
type ContainerProps = {
    fluid?: boolean;
} & BaseProps;
declare class Container {
    fluid: ContainerProps["fluid"];
    className: ContainerProps["className"];
    loaded: boolean;
    classes: {
        base: string;
    };
    ngOnInit(): void;
}
type ItchioGameInfo = {
    title: string;
    cover_image: string;
    price: string;
};
type ItchioProps = {
    user: string;
    game: string;
    width?: number;
    height?: number;
    onLoad?: (info: ItchioGameInfo) => void;
    secret?: string;
    slotLoading?: Children;
} & BaseProps;
declare class Itchio {
    className: ItchioProps["className"];
    user: ItchioProps["user"];
    game: ItchioProps["game"];
    width: ItchioProps["width"];
    height: ItchioProps["height"];
    secret: ItchioProps["secret"];
    onLoad: EventEmitter<any>;
    actionRef: ElementRef;
    loaded: boolean;
    classes: {
        base: string;
    };
    gameInfo: any;
    ngOnInit(): void;
}
type PillProps = {
    variant?: Dynamic<Variant>;
    intent?: Dynamic<Intent>;
    disabled?: boolean;
} & BaseProps;
declare class Pill {
    variant: PillProps["variant"];
    intent: PillProps["intent"];
    disabled: PillProps["disabled"];
    className: PillProps["className"];
    loaded: boolean;
    classes: {
        base: string;
    };
    ngOnInit(): void;
}
type RowProps = BaseProps & BreakpointProps<"row" | "column" | "row-reverse" | "column-reverse"> & BaseProps;
declare class Row {
    basic: RowProps["basic"];
    xxs: RowProps["xxs"];
    xs: RowProps["xs"];
    s: RowProps["s"];
    m: RowProps["m"];
    l: RowProps["l"];
    xl: RowProps["xl"];
    xxl: RowProps["xxl"];
    className: RowProps["className"];
    loaded: boolean;
    classes: {
        base: string;
    };
    ngOnInit(): void;
}
type SpinnerProps = {
    variant?: Dynamic<Variant>;
    full?: boolean;
    fullscreen?: boolean;
} & BaseProps;
declare class Spinner {
    variant: SpinnerProps["variant"];
    full: SpinnerProps["full"];
    fullscreen: SpinnerProps["fullscreen"];
    className: SpinnerProps["className"];
    loaded: boolean;
    classes: {
        base: string;
    };
    ngOnInit(): void;
}
export { useTooltipExtension, Avatar, Button, Code, Column, Container, Itchio, Pill, Row, Spinner };
