/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
export interface TwitterUser {
    id: number;
    id_str: string;
    name: string;
    screen_name: string;
    location: string;
    description: string;
    url: string | null;
    entities: {
        url?: {
            urls: {
                url: string;
                expanded_url: string;
                display_url: string;
                indices: number[];
            }[];
        };
        description: {
            urls: {
                url: string;
                expanded_url: string;
                display_url: string;
                indices: number[];
            }[];
        };
    };
    protected: boolean;
    followers_count: number;
    friends_count: number;
    listed_count: number;
    created_at: string;
    favourites_count: number;
    utc_offset: number | null;
    time_zone: string | null;
    geo_enabled: boolean;
    verified: boolean;
    statuses_count: number;
    lang: string;
    contributors_enabled: boolean;
    is_translator: boolean;
    is_translation_enabled: boolean;
    profile_background_color: string;
    profile_background_image_url: string;
    profile_background_image_url_https: string;
    profile_background_tile: boolean;
    profile_image_url: string;
    profile_image_url_https: string;
    profile_banner_url?: string;
    profile_link_color: string;
    profile_sidebar_border_color: string;
    profile_sidebar_fill_color: string;
    profile_text_color: string;
    profile_use_background_image: boolean;
    default_profile: boolean;
    default_profile_image: boolean;
    following: boolean;
    follow_request_sent: boolean;
    notifications: boolean;
}
export interface TwitterMediaEntity {
    id: number;
    id_str: string;
    indices: number[];
    media_url: string;
    media_url_https: string;
    url: string;
    display_url: string;
    expanded_url: string;
    type: string;
    sizes: {
        large: {
            w: number;
            h: number;
            resize: "fit" | "crop";
        };
        medium: {
            w: number;
            h: number;
            resize: "fit" | "crop";
        };
        thumb: {
            w: number;
            h: number;
            resize: "fit" | "crop";
        };
        small: {
            w: number;
            h: number;
            resize: "fit" | "crop";
        };
    };
    source_status_id?: number;
    source_status_id_str?: string;
}
export interface TwitterStatus {
    metadata: {
        result_type: string;
        iso_language_code: string;
    };
    created_at: string;
    id: number;
    id_str: string;
    text: string;
    source: string;
    truncated: boolean;
    in_reply_to_user_id: number | null;
    in_reply_to_user_id_str: string | null;
    in_reply_to_screen_name: string | null;
    user: TwitterUser;
    geo: null;
    coordinates: null;
    place: null;
    contributors: null;
    retweet_count: number;
    favorite_count: number;
    entities: {
        hashtags: {
            text: string;
            indices: number[];
        }[];
        symbols: never[];
        urls: {
            url: string;
            expanded_url: string;
            display_url: string;
            indices: number[];
        }[];
        user_mentions: {
            screen_name: string;
            name: string;
            id: number;
            id_str: string;
            indices: number[];
        }[];
        media?: TwitterMediaEntity[];
    };
    favorited: boolean;
    retweeted: boolean;
    lang: string;
    retweeted_status?: Omit<TwitterStatus, "retweeted_status">;
    possibly_sensitive?: boolean;
    in_reply_to_status_id: number | null;
    in_reply_to_status_id_str: string | null;
}
export interface Twitter {
    statuses: TwitterStatus[];
    search_metadata: {
        completed_in: number;
        max_id: number;
        max_id_str: string;
        next_results: string;
        query: string;
        refresh_url: string;
        count: number;
        since_id: number;
        since_id_str: string;
    };
}
/**
 * Generates a TwitterJson object as closely as possible to a specified byte size.
 * The generated json will as close to the specified size but will almost always be slightly less.
 * @param sizeInBytes - size to generate json object
 * @param includeUnicode - true to include unicode in any strings within the json
 * @param allowOversize - Allows the json to go over the sizeInBytes limit. If enabled, the
 * generated json may be closer to the desired byte size but there is a risk of exceeding the inputted byte limit
 * @returns TwitterJson
 */
export declare function generateTwitterJsonByByteSize(sizeInBytes: number, allowOversize?: boolean, seed?: number): Twitter;
/**
 * Generates a TwitterJson object containing exactly the number specified statuses.
 * @param numStatuses - number of statuses to include in the generated TwitterJson
 * @param includeUnicode - true to include unicode in any strings within the json
 * @returns TwitterJson
 */
export declare function generateTwitterJsonByNumStatuses(numStatuses: number, seed?: number): Twitter;
export declare function isJapanese(ch: string): boolean;
export declare function isAlphaLatin(ch: string): boolean;
export declare function isSymbol(ch: string): boolean;
export declare function isEscapeChar(ch: string): boolean;
export declare function isJapaneseSymbolOrPunctuation(ch: string): boolean;
/**
 * This method creates an array of sentences where a sentence is an array of words. Its intended use is with creating a
 * markovChain. (See the MarkovChain class).
 *
 * Japanese is not space separated but individual characters are counted as words here words.
 * We count a series of english charaters, numbers, symbols or escape characters without spaces in between as a word.
 *
 * 1. we will first space separate the text,
 *
 * 2. we will iterate over each character in each space separated word.
 *
 * 2a. If the char is a Japanese it will be counted as a complete word.
 *
 * 2b. If the characters are alpha latin, escapes or line breaks we will count it as part of a word,
 * adding each next chars until we get to either a Japanese character or a space.
 */
export declare function parseSentencesIntoWords(inputSentences: string[]): string[][];
export declare function getTwitterJsonTextFieldWordMarkovChain(): Record<string, [string, number][]>;
export declare function getTwitterJsonUserDescFieldWordMarkovChain(): Record<string, [string, number][]>;
//# sourceMappingURL=twitter.d.ts.map