import { DateTime } from 'luxon';
import React from 'react';
import { LifecycleEventSummary } from '../overview/artifact/utils';
import './VersionMetadata.less';
export declare const MetadataElement: React.FC<{
    className?: string;
}>;
export interface VersionAction {
    onClick?: () => void;
    href?: string;
    content: string;
    disabled?: boolean;
}
export interface VersionMessageData {
    by?: string;
    at?: string;
    comment?: string;
}
export declare const toPinnedMetadata: (data: {
    pinnedAt?: string;
    pinnedBy?: string;
    comment?: string;
}) => VersionMessageData;
export declare const toVetoedMetadata: (data: {
    vetoedAt?: string;
    vetoedBy?: string;
    comment?: string;
}) => VersionMessageData;
export interface IVersionMetadataProps {
    build?: IVersionBuildProps['build'];
    version: string;
    sha?: string;
    author?: string;
    deployedAt?: string;
    createdAt?: IVersionCreatedAtProps['createdAt'];
    buildDuration?: string;
    buildsBehind?: number;
    isDeploying?: boolean;
    baking?: LifecycleEventSummary;
    pinned?: VersionMessageData;
    vetoed?: VersionMessageData;
    actions?: VersionAction[];
}
export interface IVersionMetadataActionsProps {
    id: string;
    actions: VersionAction[];
}
export declare const VersionMetadataActions: ({ id, actions }: IVersionMetadataActionsProps) => JSX.Element;
interface IVersionCreatedAtProps {
    createdAt?: string | DateTime;
    linkProps: Record<string, string>;
}
export declare const VersionCreatedAt: ({ createdAt, linkProps }: IVersionCreatedAtProps) => JSX.Element;
declare const badgeTypeToDetails: {
    deploying: {
        className: string;
        text: string;
    };
    baking: {
        className: string;
        text: string;
    };
};
interface IMetadataBadgeProps {
    type: keyof typeof badgeTypeToDetails;
    tooltip?: string;
    link?: string;
}
export declare const MetadataBadge: ({ type, link, tooltip }: IMetadataBadgeProps) => JSX.Element;
interface IVersionMessage {
    data: VersionMessageData;
    type: 'pinned' | 'vetoed';
    newRow?: boolean;
}
export declare const VersionMessage: ({ data, type, newRow }: IVersionMessage) => JSX.Element;
interface IVersionAuthorProps {
    author?: string;
}
export declare const VersionAuthor: ({ author }: IVersionAuthorProps) => JSX.Element;
interface IVersionBranchProps {
    branch?: string;
}
export declare const VersionBranch: ({ branch }: IVersionBranchProps) => JSX.Element;
interface IVersionBuildProps {
    build: {
        buildNumber?: string;
        buildLink?: string;
        version?: string;
    };
    withPrefix?: boolean;
}
export declare const VersionBuild: ({ build, withPrefix }: IVersionBuildProps) => JSX.Element;
interface IVersionBuildsProps {
    builds: Array<IVersionBuildProps['build']>;
}
export declare const VersionBuilds: ({ builds }: IVersionBuildsProps) => JSX.Element;
export declare const BaseVersionMetadata: React.FC;
export {};
