import { Account as Acc } from "lincd-ads/lib/shapes/Account";
import { Ad } from "lincd-ads/lib/shapes/Ad";
import { AdSet } from "lincd-ads/lib/shapes/AdSet";
import { Campaign } from "lincd-ads/lib/shapes/Campaign";
type attributionWindows = "CLICK_28_DAY" | "VIEW_1_DAY";
type conversionTypes = "Generic" | "AppInstall" | "Purchase" | "GenerateLead" | "CompleteRegistration" | "AddPaymentInfo" | "AddToCart" | "AddToWishlist" | "InitiateCheckout" | "Search";
export type field = "accountId" | "accountName" | "accountCurrency" | "adId" | "adName" | "adSetId" | "adSetName" | "bidAmount" | "campaignId" | "campaignName" | "clicks" | "conversions" | "conversionRate" | "cpc" | "ctr" | "dailyBudget" | "impressions" | "lifetimeBudget" | "landingURL" | "spend" | "status" | "leadsGenerated" | "formCompletionRate" | "costPerLead";
type granularity = "DAY" | "TOTAL";
export type level = "AD" | "AD_SET" | "CAMPAIGN" | "ACCOUNT";
type order = "ASCENDING" | "DESCENDING";
type presetTimeRange = "LAST_30_DAYS" | "TODAY" | "YESTERDAY" | "THIS_MONTH" | "LAST_MONTH" | "LAST_7_DAYS" | "LAST_14_DAYS" | "ALL_TIME";
type statusResponse = "RUNNING";
export interface QuoraOptions {
    attributionWindows?: attributionWindows[];
    conversionTypes?: conversionTypes[];
    endDate?: Date;
    fields?: field[];
    granularity?: granularity;
    level?: level;
    limit?: number;
    offset?: number;
    order?: order;
    presetTimeRange?: presetTimeRange;
    sort?: field;
    sortConversionType?: conversionTypes;
    startDate?: Date;
    summary?: boolean;
}
interface ConversionsResponse {
    Generic?: number;
    AppInstall?: number;
    Purchase?: number;
    GenerateLead?: number;
    CompleteRegistration?: number;
    AddPaymentInfo?: number;
    AddToCart?: number;
    AddToWishlist?: number;
    InitiateCheckout?: number;
    Search?: number;
}
interface ConversionRateResponse {
    Generic?: number;
    AppInstall?: number;
    Purchase?: number;
    GenerateLead?: number;
    CompleteRegistration?: number;
    AddPaymentInfo?: number;
    AddToCart?: number;
    AddToWishlist?: number;
    InitiateCheckout?: number;
    Search?: number;
}
interface Account {
    accountId?: number;
    accountName?: string;
}
export interface AccountResponse {
    data?: Account[];
}
export interface DataResponse {
    clicks?: number;
    conversions?: ConversionsResponse;
    conversionRate?: ConversionRateResponse;
    cpc?: number;
    ctr?: number;
    impressions?: number;
    spend?: number;
    leadsGenerated?: number;
    formCompletionRate?: number;
    costPerLead?: number;
    startDate?: string;
    endDate?: string;
    accountId?: number;
    accountName?: string;
    accountCurrency?: string;
    adId?: number;
    adName?: string;
    adSetId?: number;
    adSetName?: string;
    bidAmount?: number;
    campaignId?: number;
    campaignName?: string;
    dailyBudget?: number;
    lifetimeBudget?: number;
    landingURL?: string;
    status?: statusResponse;
}
export interface PublicDataResponse {
    id?: string;
    publicName?: string;
}
export interface Paging {
    totalResults: number;
    next?: string;
    previous?: string;
}
export type ResolvedQuoraResponse<T = DataResponse[]> = {
    data: T;
    endDate: string;
    startDate: string;
    paging?: Paging;
};
type QuoraJSON<T> = Promise<ResolvedQuoraResponse<T>>;
export interface QuoraResponse<T = DataResponse[]> extends Response {
    json(): QuoraJSON<T>;
}
export type QuoraAPICall = (id: number, options?: QuoraOptions) => Promise<QuoraResponse>;
export type ResponseMapping = (string | number | [])[];
export interface AccountData {
    account: Acc;
    ads: Ad[];
    adSets: AdSet[];
    campaigns: Campaign[];
}
export {};
