import { MessageEntity } from './message-entity.js';

type CitationIconName = 'Microsoft Word' | 'Microsoft Excel' | 'Microsoft PowerPoint' | 'Microsoft OneNote' | 'Microsoft SharePoint' | 'Microsoft Visio' | 'Microsoft Loop' | 'Microsoft Whiteboard' | 'Adobe Illustrator' | 'Adobe Photoshop' | 'Adobe InDesign' | 'Adobe Flash' | 'Sketch' | 'Source Code' | 'Image' | 'GIF' | 'Video' | 'Sound' | 'ZIP' | 'Text' | 'PDF';
type CitationEntity = MessageEntity & {
    /**
     * Required as 'Citation'
     */
    citation?: Claim[];
};
type Claim = {
    /**
     * Required as 'Claim'
     */
    '@type': 'Claim';
    /**
     * Position of the citation
     */
    position: number;
    /**
     * Appearance options
     */
    appearance: {
        /**
         * Must be 'DigitalDocument'
         */
        '@type': 'DigitalDocument';
        /**
         * Name of the document (max length 80)
         */
        name: string;
        /**
         * Stringified adaptive card with additional information about
         * the citation.
         * It is rendered within a modal
         */
        text?: string;
        /**
         * URL of the document.
         * This will make the name of the citation clickable
         * and direct the user to the specified URL
         */
        url?: string;
        /**
         * Extract of the referenced content (max length 160)
         */
        abstract: string;
        /**
         * Encoding format of the `text`
         */
        encodingFormat?: 'application/vnd.microsoft.card.adaptive';
        /**
         * Information about the citation's icon
         */
        image?: {
            '@type': 'ImageObject';
            /**
             * The image/icon name
             */
            name: CitationIconName;
        };
        /**
         * Keywords (max length 3) (max keyword length 28)
         */
        keywords?: string[];
        /**
         * Sensitivity content information
         */
        usageInfo?: CitationUsageInfo;
    };
};
type CitationAppearance = {
    /**
     * Name of the document (max length 80)
     */
    name: string;
    /**
     * Stringified adaptive card with additional information about
     * the citation.
     * It is rendered within a modal
     */
    text?: string;
    /**
     * URL of the document.
     * This will make the name of the citation clickable
     * and direct the user to the specified URL
     */
    url?: string;
    /**
     * Extract of the referenced content (max length 160)
     */
    abstract: string;
    /**
     * Information about the citation's icon
     */
    icon?: CitationIconName;
    /**
     * Keywords (max length 3) (max keyword length 28)
     */
    keywords?: string[];
    /**
     * Sensitivity content information
     */
    usageInfo?: CitationUsageInfo;
};
type CitationUsageInfo = {
    /**
     * Unique identifier for the usage info
     */
    '@id': string;
    /**
     * Description of the usage info
     */
    description: string;
    /**
     * Name of the usage info
     */
    name: string;
    /**
     * Position of the usage info
     */
    position?: number;
};

export type { CitationAppearance, CitationEntity, CitationIconName, CitationUsageInfo, Claim };
