import { CampaignRuleConversionEventType, FormFactor } from "../campaign";
import { NamiFlowDTO, NamiFlowWithObject } from "../flow";
/**
 * @type NamiCampaignSegment
 * Represents a segment within a campaign.
 */
export interface NamiCampaignSegment {
    form_factors: FormFactor[];
    paywall?: string | null;
    flow?: NamiFlowDTO | null;
    segment: string;
    split: number;
    conversion_event_type?: CampaignRuleConversionEventType | null;
    conversion_event_url?: string | null;
}
/**
 * @type NamiAnonymousCampaign
 * Represents the anonymous campaign in Nami.
 */
export interface NamiAnonymousCampaign {
    rule: string;
    name: string;
    type: string | NamiCampaignRuleType;
    value?: string | null;
    external_segment: string | null;
    segments: NamiCampaignSegment[];
}
/**
 * @type NamiCampaign
 * Represents the campaign in Nami.
 */
export interface NamiCampaign {
    rule: string;
    name: string;
    segment: string;
    paywall?: string | null;
    type: string | NamiCampaignRuleType;
    value?: string | null;
    form_factors: FormFactor[];
    external_segment: string | null;
    conversion_event_type?: CampaignRuleConversionEventType | null;
    conversion_event_url?: string | null;
    flow?: NamiFlowDTO | null;
}
export interface NamiFlowCampaign extends NamiCampaign {
    flow: NamiFlowWithObject;
}
export declare function isNamiFlowCampaign(campaign?: NamiCampaign): campaign is NamiFlowCampaign;
/**
 * @enum NamiCampaignRuleType
 * Types of Nami campaigns
 */
export declare enum NamiCampaignRuleType {
    DEFAULT = "default",
    LABEL = "label",
    UNKNOWN = "unknown",
    URL = "url"
}
