import { Component, TemplateFunction, ScopeBase } from "@ribajs/core";
import { ShareItem, ShareUrlType } from "../../types/index.js";
import { Dropdown } from "@ribajs/bs5";
export interface Scope extends ScopeBase {
    type: ShareUrlType;
    title: string;
    text: string;
    url?: string;
    label: string;
    labelTemplate: string;
    filename?: string;
    isAndroid: boolean;
    isIos: boolean;
    isDesktop: boolean;
    isNative: boolean;
    dropdownId: string;
    shareItems: ShareItem[];
    dropdownDirection: "up" | "down" | "start" | "end";
    dropdownAlignment: "end" | "start" | "auto";
    labelFacebook: string;
    labelTwitter: string;
    labelPinterest: string;
    labelWhatsapp: string;
    labelTelegram: string;
    labelEmail: string;
    labelDownload: string;
    labelClipboard: string;
    shareOnService: Bs5ShareComponent["shareOnService"];
    share: Bs5ShareComponent["share"];
    getFilename: Bs5ShareComponent["getFilename"];
}
export interface NavigatorShareParam {
    url: string;
    text: string;
    title: string;
}
declare global {
    interface Navigator {
        share: (data?: ShareData) => Promise<void>;
    }
}
export declare class Bs5ShareComponent extends Component {
    static tagName: string;
    _debug: boolean;
    static get observedAttributes(): string[];
    protected dropdown?: Dropdown;
    static count: number;
    scope: Scope;
    constructor();
    getFilename(item: ShareItem): string | undefined;
    protected getDefaultShareServices(): ShareItem[];
    protected isIos(): boolean;
    protected isAndroid(): boolean;
    protected browserSupportsNativeShare(): boolean;
    protected getScopeDefaults(): Scope;
    protected onExternalOpenEvent(): void;
    protected onExternalCloseEvent(): void;
    protected connectedCallback(): void;
    protected disconnectedCallback(): void;
    protected addEventListeners(): void;
    protected removeEventListeners(): void;
    protected getURLForShare(): string;
    protected getMediaUrlForShare(): string;
    protected getTextForShare(): string;
    protected getTitleForShare(): string;
    protected updateShareURLs(): void;
    protected initDropdown(): void;
    shareOnService(item: ShareItem, event: Event): Promise<boolean>;
    share(event: Event): Promise<any>;
    protected beforeBind(): Promise<void>;
    protected afterBind(): Promise<void>;
    protected requiredAttributes(): string[];
    protected template(): ReturnType<TemplateFunction>;
}
