/**
 * One current object after api response in hits
 */
export interface ImageHit {
    /**
     * 	A unique identifier for updating expired image URLs
     */
    id: number;

    /**
     * Source page on Pixabay, which provides a download link for the original image of the
     * dimension imageWidth x imageHeight and the file size imageSize
     */
    pageURL: string;

    /**
     * Type of image
     */
    type: string;

    /**
     * Comma separated list of photo tags
     */
    tags: string;

    /**
     * Low resolution images with a maximum width or height of 150 px (previewWidth x previewHeight)
     */
    previewUrl: string;

    /**
     * Preview image width
     */
    previewWidth: number;

    /**
     * Preview image height
     */
    previewHeight: number;

    /**
     * 	Medium sized image with a maximum width or height of 640 px (webformatWidth x webformatHeight).
     * URL valid for 24 hours.
     */
    webformatURL: string;

    /**
     * Web format width
     */
    webformatWidth: number;

    /**
     * Web format height
     */
    webformatHeight: number;

    /**
     * Image width
     */
    imageWidth: number;

    /**
     * Image height
     */
    imageHeight: number;

    /**
     * Image size (width * height)
     */
    imageSize: number;

    /**
     * Total number of views
     */
    views: number;

    /**
     * 	Total number of downloads
     */
    downloads: number;

    /**
     * Total number of favorites
     */
    favorites: number;

    /**
     * Total number of likes
     */
    likes: number;

    /**
     * Total number of comments
     */
    comments: number;

    /**
     * User ID of the contributor. Profile URL: https://pixabay.com/users/{ USERNAME }-{ ID }
     */
    user_id: number;

    /**
     * User name of the contributor. Profile URL: https://pixabay.com/users/{ USERNAME }-{ ID }
     */
    user: string;

    /**
     * Profile picture URL (250 x 250 px).
     */
    userImageURL: string;
}

export interface VideoSizeType {
    /**
     * Url where video can be found
     */
    url: number;

    /**
     * Video width
     */
    width: number;

    /**
     * Video height
     */
    height: number;

    /**
     * Video size
     */
    size: number;
}

/**
 * One current object after api response in hits
 */
export interface VideoHit {
    /**
     * A unique identifier for this video.
     */
    id: number;

    /**
     * This value may be used to retrieve static preview images of the video in various sizes:
     * https://i.vimeocdn.com/video/{ PICTURE_ID }_{ SIZE }.jpg
     * Available sizes: 100x75, 200x150, 295x166, 640x360, 960x540, 1920x1080
     * Exampe: https://i.vimeocdn.com/video/529927645_295x166.jpg
     */
    picture_id: string;

    /**
     * Source page on Pixabay.
     */
    pageURL: string;

    /**
     * Tyoe of the video, film, serail ect.
     */
    type: string;

    /**
     * Comma separated list of video tags
     */
    tags: string;

    /**
     * video duration
     */
    duration: number;

    /**
     * A set of differently sizes video streams:
     * "large": usually has a dimension of 1920x1080. If a large video version is not available, an empty URL value and
     * a size of zero is returned.
     * "medium": typically has a dimension of 1280x720 and is available for all Pixabay videos.
     * "small" typically has a dimension of 960x540, older videos have a dimension of 640x360.
     * This size is available for all videos.
     * "tiny" typically has a dimension of 640x360, older videos have a dimension of 480x270.
     * This size is available for all videos.
     * Append the GET parameter "download=1" to any of the video stream URLs to have them served as downloads.
     */
    videos: {
        large: VideoSizeType,
        medium: VideoSizeType,
        small: VideoSizeType,
        tiny: VideoSizeType,
    };

    /**
     * Total number of views.
     */
    views: number;

    /**
     * Total number of downloads.
     */
    downloads: number;

    /**
     * Total number of favorites.
     */
    favorites: number;

    /**
     * Total number of likes.
     */
    likes: number;

    /**
     * Total number of likes.
     */
    comments: number;

    /**
     * User ID and name of the contributor. Profile URL: https://pixabay.com/users/{ USERNAME }-{ ID }/
     */
    user_id: number;

    /**
     * Contributor user name
     */
    user: string;

    /**
     * Profile picture URL (250 x 250 px).
     */
    userImageURL: string;
}

/**
 * Response for pixabay image search request
 */
export interface ImageResponse {
    /**
     * The total number of hits.
     */
    total: number;

    /**
     * The number of videos accessible through the API. By default, the API is limited to return a
     * maximum of 500 videos per query.
     */
    totalHits: number;

    /**
     * The current images
     */
    hits: ImageHit[];
}

/**
 * Response from video api call pixabay
 */
export interface VideoResponse {
    /**
     * The total number of hits.
     */
    total: number;

    /**
     * The number of videos accessible through the API. By default, the API is limited to return a
     * maximum of 500 videos per query.
     */
    totalHits: number;

    /**
     * The current videos
     */
    hits: VideoHit[];
}
