type AstAdType = 'banner' | 'video' | 'native' | 'outstream';
interface AstBanner {
    content: string;
    height: number;
    width: number;
}
interface AstNativeImage {
    height: number;
    width: number;
    url: string;
    prevent_crop: boolean;
}
interface AstNativeVideo {
    content: string;
}
interface AstNative {
    title: string;
    sponsoredBy: string;
    desc2?: string;
    clickUrl: string;
    clickTrackers: Array<string>;
    clickFallbackUrl?: string;
    displayUrl?: string;
    downloads?: Array<string>;
    cta?: string;
    address?: string;
    body: string;
    main_media?: {
        url: string;
    };
    image: AstNativeImage;
    icon: AstNativeIcon;
    impressionTrackers?: Array<string>;
    javascriptTrackers?: Array<string>;
    likes?: number;
    phone?: string;
    price?: string;
    privacyLink?: string;
    rating?: number;
    saleprice?: number;
    fullText?: string;
    type?: string;
    custom?: {
        type: string;
    };
    video?: AstNativeVideo;
    customTitle1?: string;
    customTitle2?: string;
    customTitle3?: string;
    customTitle4?: string;
    description?: string;
    customIcon1?: AstNativeIcon;
    customIcon2: AstNativeIcon;
    customDisplayUrl1?: string;
}
interface AstAdObj {
    adType: AstAdType;
    height: number;
    source: string;
    targetId: string;
    width: number;
    native?: AstNative;
    desc2?: string;
    image?: object;
    tagId?: number;
    cpm?: object;
    buyerMemberId?: number;
    impressionTrackersFired?: boolean;
    auctionId?: string;
    creativeId?: number;
    banner?: AstBanner;
    subtype?: string;
    renderer_url?: string;
    bidderId?: number | undefined;
}
type AstKeywordValue = Array<string> | string | number | Array<number> | undefined;
type Keywords = Record<string, AstKeywordValue>;
interface SafeFrameConfig {
    allowExpansionByPush?: boolean;
    allowExpansionByOverlay?: boolean;
}
interface EidsUserSource {
    id: string;
    source: string;
}
interface AstUserIds {
    type: string;
    eids: Array<EidsUserSource>;
}
interface AstUser {
    externalUid?: string;
    dnt?: boolean;
    userIds?: Array<AstUserIds>;
}
interface AstTrackingManagement {
    native?: {
        loadViewabilityScriptAt?: 'adresponse' | 'impression';
    };
}
interface AstUserSync {
    disabled: boolean;
}
interface AstRenderingManagement {
    sandboxAdIframe: boolean;
    sandboxAttributes: Array<string>;
}
interface AstPageOptions {
    keywords: Keywords;
    enableSafeFrame?: boolean;
    disablePsa?: boolean;
    user?: AstUser;
    member?: number;
    publisherId: number;
    trackingManagement?: AstTrackingManagement;
    renderingManagement?: AstRenderingManagement;
    userSync?: AstUserSync;
}
interface AstNativeIcon {
    url: string;
    height?: number;
    width?: number;
    prevent_crop?: boolean;
}

declare const Countries: {
    readonly NO: "no";
    readonly SE: "se";
};
type Country = (typeof Countries)[keyof typeof Countries];

interface AdvertisingIdentifiers {
    xandr?: {
        ppId1?: string;
        ppId2?: string;
    };
}
interface TrackerInstance {
    getAdvertisingIdentifiers: () => Promise<AdvertisingIdentifiers>;
    getUserId: () => Promise<undefined | string | number>;
    getEnvironmentId: () => Promise<undefined | string>;
    getActor: () => Promise<undefined | unknown>;
    state?: {
        pageViewId?: string;
    };
}
interface PulseInstance extends TrackerInstance {
    pulseTracker?: TrackerInstance;
    trackElementView?: (eventInput: unknown) => Promise<void>;
    trackElementClick?: (eventInput: unknown) => Promise<void>;
    trackClickUIElement?: (eventInput: unknown) => Promise<void>;
    trackViewUIElement?: (eventInput: unknown) => Promise<void>;
    trackLegacyClickUIElement?: (eventInput: unknown) => Promise<void>;
    trackLegacyViewUIElement?: (eventInput: unknown) => Promise<void>;
}
interface Tracker {
    clientId: string;
    instance: TrackerInstance;
    hasherUrl?: string;
}
interface Pulse {
    clientId: string;
    instance: PulseInstance;
}
interface UserIdsObject {
    userIds: Array<AstUserIds>;
}
interface PPIDLoggedInStatusKeywords {
    'aa-sch-schuserhash': '1' | '0';
    'aa-sch-schenvhash': '1' | '0';
}

interface RelevantYieldEids {
    source: string;
    uids: Array<{
        id: string;
        atype: 1;
        ext: {
            stype: 'ppuid';
        };
    }>;
}
interface RelevantYieldPPIDConfig {
    userSync: {
        userIds: Array<{
            name: 'pubProvidedId';
            params: RelevantYieldEids;
        }>;
    };
}

declare const DeviceTypes: {
    readonly MOBILE: "mobile";
    readonly TABLET: "tablet";
    readonly DESKTOP: "desktop";
};
type DeviceType = (typeof DeviceTypes)[keyof typeof DeviceTypes];

declare const PageTypes: {
    readonly FRONT: "front";
    readonly ARTICLE: "article";
    readonly SECTION: "section";
    readonly COLLECTION: "collection";
    readonly OTHER: "other";
};
type PageType = (typeof PageTypes)[keyof typeof PageTypes];

type DistributionTypes = 'REALESTATE' | 'REALESTATE_RETARGET' | 'REALESTATE_LEISURE' | 'REALESTATE_LEISURE_RETARGET' | 'REALESTATE_PROJECT' | 'REALESTATE_PROJECT_RETARGET' | 'CAR' | 'JOB';

declare const Newsrooms: {
    readonly SVD: "svd";
    readonly VG: "vg";
    readonly GODARE: "godare";
    readonly AFTENPOSTEN: "aftenposten";
    readonly SA: "sa";
    readonly BT: "bt";
    readonly AFTONBLADET: "aftonbladet";
    readonly E24: "e24";
    readonly MINMOTE: "minmote";
    readonly PENT: "pent";
    readonly GODT: "godt";
    readonly TEK: "tekno";
    readonly KLART: "klart";
    readonly TVNU: "tvnu";
    readonly POLARIS: "polaris";
    readonly KOKET: "koket";
    readonly TV4: "tv4";
    readonly FOTBOLLSKANALEN: "fotbollskanalen";
};
type Newsroom = (typeof Newsrooms)[keyof typeof Newsrooms];

type InitNativeAd = (adObj: AstAdObj, options?: Partial<SiteConfig>) => void;

declare const CogwheelPositions: {
    readonly LEFT: "left";
    readonly RIGHT: "right";
};
type CogwheelPosition = (typeof CogwheelPositions)[keyof typeof CogwheelPositions];

interface SiteConfig {
    pageContext: PageContext;
    pageSetup?: PageSetup;
    developerOptions?: DeveloperOptions;
    pageOptions: AstPageOptions;
    placements: Placements;
    appearanceConfig: AppearanceConfig;
    queryConfig?: QueryConfig;
    refreshConfig?: RefreshConfig;
    nativeTrackingConfig?: NativeTrackingConfig;
    pageSectionsSelectors?: PageSectionsSelectors;
    siteSpecificConfig?: SiteSpecificConfig;
    customHandlers?: CustomHandlers;
    glimr?: GlimrConfig;
    tcf?: TCFConfig;
    prebid?: PrebidConfig;
    tracker?: Tracker;
    pulse?: Pulse;
    finnBlink?: FinnBlinkConfig;
    wallpaper?: WallpaperConfig;
    fullscreenScroll?: FullscreenScrollConfig;
    takeover?: TakeoverConfig;
    brandmetrics?: BrandmetricsConfig;
    gdpr?: GdprConfig;
    norstat?: NorstatConfig;
    sponsorstripe?: SponsorstripeConfig;
    drEdition?: DrEditionConfig;
    kilkaya?: KilkayaConfig;
    rightColumnSplit?: RightColumnSplitConfig;
    editableConfiguration?: EditableConfigurationConfig;
    adScaleConfig?: AdScaleConfig;
    widescreenSwitching?: WidescreenSwitchingConfig;
}
interface PageContext {
    publisher: string;
    countryCode: Country;
    pageType: PageType;
    deviceType: DeviceType;
    isMobileApp?: boolean;
}
interface PageSetup {
    pageOptions?: PageSetupPageOptions;
    tag?: PageSetupTag;
}
interface PageSetupKeywords {
    appType?: boolean;
    device?: boolean;
    externalIdSrc?: boolean;
    hasContext?: boolean;
    screen?: boolean;
    analyticsConsent?: boolean;
    sectionPageType?: boolean;
    obituaries?: boolean;
    sdkVersion?: boolean;
    hasPlusMembership?: boolean;
}
interface PageSetupAstOptions {
    addPublisherToGeo?: boolean;
    includeExternalUid?: boolean;
    sandboxAdIframeEnabled?: boolean;
}
interface PageSetupPageOptions {
    keywords?: PageSetupKeywords;
    options?: PageSetupAstOptions;
}
interface PageSetupTag {
    reloadKeywords?: boolean;
    includeCountingKeywordInTags?: boolean;
    forwardExternalImpId?: boolean;
    useAppTabletInvCode?: boolean;
}
interface DeveloperOptions {
    astUrl?: string;
    gptUrl?: string;
    testMember?: number;
}
interface PlacementRefreshConfig {
    scroll?: boolean;
    bfCache?: boolean;
}
interface Placement {
    targetId: string;
    sizes: Array<Array<number>>;
    allowedFormats: Array<AstAdType>;
    invCode: string;
    keywords: Keywords;
    refresh?: PlacementRefreshConfig;
    ssaNativeAdEnabled?: boolean;
    requestThreshold?: number;
    finnBlink?: FinnBlinkPlacementConfig;
    nativeCustomProperties?: Array<string>;
    minViewWidth?: number;
    dynamicSizeWidthCheck?: boolean;
    safeframeConfig?: SafeFrameConfig;
    drEdition?: DrEditionPlacementConfig;
    isBackfill?: boolean;
    takeoverCookieCapForSharedPlacement?: boolean;
    supportsNonRTB?: boolean;
}
interface Placements {
    desktop: Array<Placement>;
    tablet: Array<Placement>;
    mobile: Array<Placement>;
}
type Theme = 'light' | 'dark';
interface AppearanceConfig {
    defaultThreshold: {
        mobile: number;
        tablet: number;
        desktop: number;
    };
    clearProbableDimensionsEnabled?: boolean;
    theme?: Theme;
}
interface LazyLoadingConfig {
    enabled: boolean;
    rootMargin: string;
}
interface QueryConfig {
    queryByDataDeviceAttribute?: boolean;
    lazyLoadingV3?: LazyLoadingConfig;
    placementBatches?: PlacementBatchesConfig;
    batchSize?: number;
}
interface RefreshConfig {
    delayTimeToNextRefresh?: number;
    scrollRefreshEnabled?: boolean;
    visibilityStateRefreshEnabled?: boolean;
    backForwardNavigationRefreshEnabled?: boolean;
}
interface NativeTrackingConfig {
    enabled?: boolean;
    fireImpressionsBasedOnAppearanceThreshold?: boolean;
}
interface PageSectionsSelectors {
    top?: string;
    left?: string;
    right?: string;
    main?: string;
    header?: string;
    mainFirstColumn?: string;
    mainSecondColumn?: string;
}
interface SiteSpecificConfig {
    publisherClassName?: Newsroom;
    fullWidthFormatClassName?: 'netboard' | 'panorama';
    classesToRemoveOnRefresh?: Array<string>;
    dynamicOutstreamFormats?: Array<string>;
}
interface CustomHandlers {
    initNativeAd?: InitNativeAd;
}
interface GlimrConfig {
    enabled: boolean;
    clientId: string;
}
interface TCFConfig {
    enabled: boolean;
    advertisingCMPSignalEnabled?: boolean;
    schibstedConsentToPayEnabled?: boolean;
    schibstedAdChoicesOverrideValue?: string;
    timeout?: number;
}
interface PrebidConfig {
    enabled: boolean;
    prebidUrl: string;
    configId: string;
    externalUidInAuctionEnabled: boolean;
    relevantCallbackTimeout?: number;
    forwardGlimrTags?: boolean;
}
interface FinnBlinkSDKPayload {
    channel?: string;
    userId?: string;
    theme?: Theme;
    uuid?: string;
}
interface FinnBlinkConfig {
    enabled?: boolean;
    identifierUrl?: string;
    sdkPayload?: FinnBlinkSDKPayload;
    replacementConfig?: {
        adsToReplace?: Array<Array<string>>;
        sizes?: {
            width: number;
            height: number;
        };
    };
}
interface FinnBlinkPlacementSDKPayload {
    position?: string;
    height?: number;
    limit?: number;
    offset?: number;
    requireImage?: boolean;
    rec?: boolean;
    distributionTypes?: Array<DistributionTypes>;
    theme?: Theme;
}
interface FinnBlinkPlacementConfig {
    enabled: boolean;
    sdkPayload?: FinnBlinkPlacementSDKPayload;
    renderOnlyWithAdBlock?: boolean;
    advertoryTheme?: string;
    loadOnlyFinnBlink?: boolean;
    useNewConstructor?: boolean;
}
interface WallpaperConfigOptions {
    wallpaperAnchorSelector?: string;
}
interface WallpaperConfig {
    enabled: boolean;
    options?: WallpaperConfigOptions;
}
interface OverlayStyles {
    backgroundColor?: string;
    foregroundColor?: string;
    articlesContainerWidth?: number;
    margin?: string;
    beforeContentValue?: string;
}
interface FullscreenScrollOptions {
    fadingHeaderEnabled?: boolean;
    headerSelectors?: Array<string>;
    skyscraperSelectors?: Array<string>;
    headerZIndex?: number;
    overlayStyles?: OverlayStyles;
    cogwheelPosition?: CogwheelPosition;
    iosSafeAreaTopFix?: string;
}
interface FullscreenScrollConfig {
    enabled: boolean;
    options?: FullscreenScrollOptions;
}
interface WelcomePageConfig {
    showArrowIcon?: boolean;
    buttonLabel?: string;
    showCloseButton?: boolean;
}
interface Logotype {
    url: string;
    alt: string;
}
interface ThemeColors {
    backgroundColor: string;
    color: string;
}
interface SplashConfig {
    themeColors?: ThemeColors;
    buttonLabel: string;
    logotype: Logotype;
    showArrowIcon?: boolean;
    showAnnonsLabel?: boolean;
}
interface TakeoverOptions {
    secondVisitEnabled?: boolean;
    cookieCapName?: string | null;
    cookieCapTime?: number;
    setCookieCapForNotShownAd?: boolean;
}
interface TakeoverConfig {
    enabled?: boolean;
    splash?: SplashConfig;
    welcomePage?: WelcomePageConfig;
    topscroller?: WelcomePageConfig;
    options?: TakeoverOptions;
}
interface BrandmetricsConfig {
    enabled: boolean;
    brandmetricsUrl: string;
}
interface GdprConfig {
    gdprUrl?: string;
    allowHidingAds?: boolean;
}
interface NorstatConfig {
    enabled: true;
}
interface SponsorStripeOptions {
    containersSelectors?: Array<string>;
    staticElementsSelectors?: Array<string>;
    dynamicElementsSelectors?: Array<string>;
    hideOnScroll?: boolean;
    stickBelowHeader?: boolean;
}
interface SponsorstripeConfig {
    enabled: boolean;
    options?: SponsorStripeOptions;
}
interface DrEditionOptions {
    containerSelector: string;
    wrapperSelector: string;
    fallbackGlobalEditionName?: string;
    videoScriptUrl?: string;
    addPreviewVideo?: (videoElement: HTMLElement) => void;
}
interface DrEditionConfig {
    enabled: boolean;
    options: DrEditionOptions;
}
interface DrEditionPlacementConfig {
    editionName: string;
}
interface KilkayaOptions {
    kilkayaUrl: string;
}
interface KilkayaConfig {
    enabled: boolean;
    options: KilkayaOptions;
}
interface RightColumnSplitConfig {
    enabled: boolean;
    splitPointIDs: Array<string>;
    adSelector: string;
    trackSelector?: string;
}
interface EditableConfigurationConfig {
    useS3Config?: boolean;
    pageTypeToFetch?: string;
}
interface AdScaleConfig {
    enabled: boolean;
    adsToBeScaled: Partial<Record<DeviceType, Array<string>>>;
    offset?: Record<string, number>;
}
interface WidescreenSwitchingOptions {
    rotationInterval?: number;
    widescreenIdPrefix?: string;
}
interface WidescreenSwitchingConfig {
    enabled: boolean;
    options?: WidescreenSwitchingOptions;
}
interface DevicePlacementBatches {
    [key: string]: Array<string>;
}
type PlacementBatchesConfig = {
    [device in DeviceType]: DevicePlacementBatches;
};

declare const setXandrPPIDs: (siteConfig: SiteConfig) => Promise<void>;
declare const getUserIdsObject: (country: Country) => UserIdsObject;
declare const getPPIDLoggedInStatus: () => PPIDLoggedInStatusKeywords;
declare const getPPIDRelevantYieldConfig: (country: Country) => RelevantYieldPPIDConfig | object;
declare const getPPIDNorstatString: (country: Country) => string;
declare const getVideoPPIDs: (country: Country) => Promise<string>;
declare const getFinnBlinkUserId: () => Promise<string>;

export { getFinnBlinkUserId, getPPIDLoggedInStatus, getPPIDNorstatString, getPPIDRelevantYieldConfig, getUserIdsObject, getVideoPPIDs, setXandrPPIDs };
