import type { ContextWithState } from '../../../Types';
import type { AdIconAtom } from '../../base/AdIconAtom';
import type { BaseAdAtom } from '../../base/BaseAdAtom';
import type { BaseAdPodAtom } from '../../base/BaseAdPodAtom';
import type { ClickThroughAtom } from '../../base/ClickThroughAtom';
import type { CompanionAdAtom } from '../../base/CompanionAdAtom';
import type { AdBreakAtom } from '../content-source/AdBreakAtom';
import type { Ad, AdBreak, AdIcon, AdPod, ClickThrough, CompanionAd } from '../Types';
type ValueFor<K> = K extends BaseAdAtom ? Ad : K extends BaseAdPodAtom ? AdPod : K extends AdBreakAtom ? AdBreak : K extends ClickThroughAtom ? ClickThrough : K extends CompanionAdAtom ? CompanionAd : K extends AdIconAtom ? AdIcon : never;
export type AdApiCache = {
    getOrCreate<K extends object>(key: K, factory: (context: ContextWithState) => ValueFor<K>): ValueFor<K>;
};
export declare function createAdApiCache(context: ContextWithState): AdApiCache;
export {};
