import { DiscordUserCardActivityCompeting, DiscordUserCardActivityHang, DiscordUserCardActivityListening, DiscordUserCardActivityPlaying, DiscordUserCardActivityStreaming, DiscordUserCardActivityWatching } from '@discord-user-card/core';
import { Renderer } from '../../../functions/Renderer.js';

export interface Activity {
    activity: DiscordUserCardActivityPlaying | DiscordUserCardActivityStreaming | DiscordUserCardActivityListening | DiscordUserCardActivityWatching | DiscordUserCardActivityCompeting | DiscordUserCardActivityHang;
    title: string;
    line1: string | undefined;
    line2: string | undefined;
    line3: string | undefined;
}
export declare function mapActivity(activity: DiscordUserCardActivityPlaying | DiscordUserCardActivityStreaming | DiscordUserCardActivityListening | DiscordUserCardActivityWatching | DiscordUserCardActivityCompeting | DiscordUserCardActivityHang): Activity | undefined;
export declare class ActivityContentRenderer implements Renderer<Activity> {
    readonly parent: Element;
    elements: {
        imageContainer: HTMLDivElement;
        largeImage: HTMLImageElement;
        smallImage: HTMLImageElement;
        details: HTMLDivElement;
        line1: HTMLDivElement;
        line2: HTMLDivElement;
        line3: HTMLDivElement;
    };
    children: {
        elapsedLeftLine: ElapsedLeftLineRenderer;
    };
    lastProps: Activity | null;
    rerender(): void;
    listenersBound: boolean;
    boundRerender: () => void;
    prefersReducedMotion: MediaQueryList;
    constructor(parent: Element);
    private setAttributes;
    render(props: Activity): Promise<void>;
    renderSkeleton(props: Activity): void;
    setLargeImage({ activity }: Activity): Promise<boolean>;
    setSmallImage({ activity }: Activity): boolean;
    hasLargeImage({ activity }: Activity): boolean;
    hasSmallImage({ activity }: Activity): boolean;
    getAppIcon(applicationId: string): Promise<string | undefined>;
    getAsset(asset: string, relatedId?: string): string;
    destroy(): void;
}
declare class ElapsedLeftLineRenderer implements Renderer<Activity> {
    readonly parent: Element;
    elements: {
        line: HTMLDivElement;
    };
    timeout: NodeJS.Timeout | null;
    constructor(parent: Element);
    render(props: Activity): Promise<void>;
    renderSkeleton(props: Activity): void;
    destroy(): void;
}
export declare class TimebarRenderer implements Renderer<Activity> {
    readonly parent: Element;
    elements: {
        container: HTMLDivElement;
        timebar: HTMLDivElement;
        fill: HTMLDivElement;
        time: HTMLDivElement;
        timeLeft: HTMLDivElement;
        timeRight: HTMLDivElement;
    };
    timeout: NodeJS.Timeout | null;
    constructor(parent: Element);
    render(props: Activity): Promise<void>;
    renderSkeleton(props: Activity): void;
    destroy(): void;
}
export declare class ButtonsRenderer implements Renderer<Activity> {
    readonly parent: Element;
    elements: {
        buttons: HTMLDivElement;
        one: HTMLAnchorElement;
        oneLabel: HTMLDivElement;
        two: HTMLAnchorElement;
        twoLabel: HTMLDivElement;
    };
    constructor(parent: Element);
    private setAttributes;
    render({ activity }: Activity): Promise<void>;
    renderSkeleton({ activity }: Activity): void;
    destroy(): void;
}
export {};
//# sourceMappingURL=activities.d.ts.map