import { ShardClient } from '../client';
import { BaseCollection } from '../collections/basecollection';
import { BaseSet } from '../collections/baseset';
import { MessageEmbedTypes } from '../constants';
import { BaseStructure, BaseStructureData } from './basestructure';
/**
 * Embed Structure, used for [Message] Structures
 * @category Structure
 */
export declare class MessageEmbed extends BaseStructure {
    readonly _keys: BaseSet<string>;
    author?: MessageEmbedAuthor;
    color?: number;
    description?: string;
    fields?: BaseCollection<number, MessageEmbedField>;
    footer?: MessageEmbedFooter;
    image?: MessageEmbedImage;
    provider?: MessageEmbedProvider;
    referenceId?: string;
    thumbnail?: MessageEmbedThumbnail;
    timestamp?: Date;
    title?: string;
    type: MessageEmbedTypes;
    url?: string;
    video?: MessageEmbedVideo;
    constructor(client: ShardClient, data?: BaseStructureData, isClone?: boolean);
    get hasAttachment(): boolean;
    get isApplicationNews(): boolean;
    get isArticle(): boolean;
    get isGifV(): boolean;
    get isImage(): boolean;
    get isLink(): boolean;
    get isRich(): boolean;
    get isTweet(): boolean;
    get isVideo(): boolean;
    get length(): number;
    get size(): number;
    fetchApplicationNews(): Promise<import("./applicationnews").ApplicationNews>;
    mergeValue(key: string, value: any): void;
}
/**
 * Embed Author Structure, used for [MessageEmbed] Structures
 * @category Structure
 */
export declare class MessageEmbedAuthor extends BaseStructure {
    readonly _keys: BaseSet<string>;
    iconUrl?: string;
    name?: string;
    proxyIconUrl?: string;
    url?: string;
    constructor(client: ShardClient, data?: BaseStructureData, isClone?: boolean);
}
/**
 * Embed Field Structure, used for [MessageEmbed] Structures
 * @category Structure
 */
export declare class MessageEmbedField extends BaseStructure {
    readonly _keys: BaseSet<string>;
    inline: boolean;
    name: string;
    value: string;
    constructor(client: ShardClient, data?: BaseStructureData, isClone?: boolean);
}
/**
 * Embed Footer Structure, used for [ApplicationNews] and [MessageEmbed] Structures
 * @category Structure
 */
export declare class MessageEmbedFooter extends BaseStructure {
    readonly _keys: BaseSet<string>;
    iconUrl?: string;
    proxyIconUrl?: string;
    text: string;
    constructor(client: ShardClient, data?: BaseStructureData, isClone?: boolean);
}
/**
 * Embed Image Structure, used for [MessageEmbed] Structures
 * @category Structure
 */
export declare class MessageEmbedImage extends BaseStructure {
    readonly _keys: BaseSet<string>;
    height: number;
    proxyUrl?: string;
    url: string;
    width: number;
    constructor(client: ShardClient, data?: BaseStructureData, isClone?: boolean);
    get hasAttachment(): boolean;
}
/**
 * Embed Provider Structure, used for [MessageEmbed] Structures
 * @category Structure
 */
export declare class MessageEmbedProvider extends BaseStructure {
    readonly _keys: BaseSet<string>;
    name?: string;
    url?: string;
    constructor(client: ShardClient, data?: BaseStructureData, isClone?: boolean);
}
/**
 * Embed Thumbnail Structure, used for [ApplicationNews] and [MessageEmbed] Structures
 * @category Structure
 */
export declare class MessageEmbedThumbnail extends MessageEmbedImage {
}
/**
 * Embed Video Structure, used for [MessageEmbed] Structures
 * @category Structure
 */
export declare class MessageEmbedVideo extends MessageEmbedImage {
}
