import { UserAgentInfo } from '../../reference/UserIdentifierInterface';
export type AdSlotVisibility = 'ABOVE_THE_FOLD' | 'MIDDLE_OF_THE_PAGE' | 'BELOW_THE_FOLD' | 'UNKNOWN';
export type BidMediaType = 'WEB' | 'MOBILE_APP' | 'VIDEO';
export type BidObjectiveType = 'CPC' | 'CPA' | 'CTR' | 'CPV';
export type BidOptimizerModelType = 'CATEGORICAL_MODEL' | 'REGRESSION_MODEL' | 'DYNAMIC_ALLOCATION';
export interface BidOptimizerRequest {
    bid_info: BidInfo;
    campaign_info: CampaignInfo;
    user_info: UserInfo;
    user_campaign_data_bag: string;
    data_feeds: unknown[];
}
export interface BidInfo {
    media_type: BidMediaType;
    ad_ex_id: string;
    display_network_id: string;
    media_id: string;
    content_id: string;
    geo_info?: GeoLocationInfo;
    placements?: PlacementInfo[];
}
export interface SaleCondition {
    id: string;
    deal_id?: string;
    floor_price: number;
}
export interface PlacementInfo {
    placement_id: string;
    format: string;
    visibility: AdSlotVisibility;
    viewability: Array<string>;
    sales_conditions: Array<SaleCondition>;
    creative_id: string;
}
export interface CampaignInfo {
    organisation_id: string;
    campaign_id: string;
    ad_group_id: string;
    currency: string;
    date: string;
    max_bid_price: number;
    bid_optimizer_id: string;
    objective_type: BidObjectiveType;
    objective_value: number;
    imp_count?: number;
    avg_win_rate?: number;
    avg_bid_price?: number;
    avg_winning_price?: number;
    avg_delivery_price?: number;
}
export interface UserInfo {
    global_first_view?: boolean;
    media_first_view?: boolean;
    user_agent_info?: UserAgentInfo;
}
export interface GeoLocationInfo {
    geo_name_id: number;
    iso_country: string;
    admin1?: string;
    admin2?: string;
    postal_code?: string;
    point_name?: string;
    latitude: number;
    longitude: number;
}
