/**
 * Main dealer runtime entity. Always belongs to some placement (real estate) and represents specific set of data
 * intended to be returned conditionally from dealer runtime for given input (user, aspects, time etc.).
 * Main source of the conditions is targeting property, which holds the rules.
 */
export interface Offer {
    /**
     * Unique offer id
     * @format GUID
     */
    offerGuid?: string;
    /** Dealer real estate (placement) id */
    realEstateId?: string;
    /** Backoffice name of offer (not needed for users, but needed for PMMs to distinguish one offer from another in BO UI) */
    offerName?: string;
    /** Offer data payload (actual things clients show to user in some form) */
    asset?: Asset;
    /** Dealer campaign this offer belongs to (optional) */
    campaignId?: string | null;
    /** The date the offer was created or scheduled to — not related to date of activation */
    startDate?: Date | null;
    /** The date this offers is intended to stop at */
    endDate?: Date | null;
    /** Prioritziation metadata */
    priorityMetadata?: Record<string, any> | null;
}
/**
 * Actual offer content to show to user or use by dealer clients. For example strings to show to user in some widget,
 * banner id to show, etc.
 */
export interface Asset {
    /**
     * DEPRECATED - The personlized content for the user - json string
     * The field wont be avilable for new placements that were created after 8.11
     */
    payloadJson?: string;
    /**
     * Key<->Value dynamic params defined in BO
     * the key is the interpolation key and the value is stringify json
     * for example {myKeyWithMail:"'menir@wix.com'", keyWithNumberValue:"55", keyWithBool:"false"}
     * in client side you will need to json parse in order to get correct data types.
     * Returns only dynamic params that has some value
     */
    dynamicParams?: Record<string, string>;
    /**
     * The personlized and localized content for the user - json object mataching the placement schema.
     * Avilable only on new placements that were created after 8.11 or on placement that were migrated to use new creative infra
     */
    creative?: Record<string, any> | null;
}
/** Input params for evaluating an offer. */
export interface DebugOfferRequest {
    /** Offer guid to debug */
    offerId: string;
    /** Explicit request params. Required. */
    context?: RequestContext;
    /** List of custom param's values, some offers are targeted by those values. Optional. */
    customParams?: CustomParam[];
}
/** Explicit context to simulate real user requests to runtime. */
export interface RequestContext {
    /**
     * User guid. Optional.
     * @format GUID
     */
    userId?: string | null;
    /**
     * Target account. Optional.
     * @format GUID
     */
    targetAccountId?: string | null;
    /**
     * Logged in account. Optional.
     * @format GUID
     */
    loggedInAccountId?: string | null;
    /**
     * Metasite id. Optional.
     * @format GUID
     */
    siteId?: string | null;
    /** User's two letters geo ("il", "us") */
    geo?: string | null;
    /** User's two letters language ("en", "fr") */
    language?: string | null;
    /** Nile targeting brand */
    brandValue?: BrandsCriteriaBrand;
}
export declare enum BrandsCriteriaBrand {
    UNKNOWN_BRAND = "UNKNOWN_BRAND",
    WIX = "WIX",
    EDITORX = "EDITORX",
    DAYFUL = "DAYFUL",
    STUDIO = "STUDIO",
    WIXEL = "WIXEL",
    RISE = "RISE",
    WIXVIBE = "WIXVIBE"
}
/** Custom params object used as additional data input for runtime/debug endpoint calls. */
export interface CustomParam {
    /** unique key for custom param */
    key?: string | null;
    /** current request value or values for given key */
    values?: string[] | null;
}
export interface DebugOfferResponse {
    /** Offer being inspected */
    offer?: Offer;
    /**
     * Offer targeting tree inflated with execution results
     * @deprecated Offer targeting tree inflated with execution results
     * @replacedBy targeting_tree
     * @targetRemovalDate 2024-09-01
     */
    targeting?: Targeting;
    /** General release rules results such as experiment and offer status */
    releaseAudience?: ReleaseAudience;
    /** Debug results for this offer frequency caps (null if no FC applicable) */
    frequencyCapsExecutionResult?: FrequencyCapsExecutionResult;
    /** Nile targeting tree with execution results */
    targetingTree?: TargetingTree;
}
/**
 * Entity, holding criteria(s) (rules or filters) for dealer runtime rule engine.
 * The rule engine decides if each offer is available to a user or not based on executing these rules
 * in real time.
 *
 * Generally it's a rule engine rules tree structure referencing itself. Actual structure depends on UI constraints.
 *
 * Optional execution_result field for each filter in the tree holds current rule execution results.
 * It's not empty only for offers coming from debug endpoints.
 */
export interface Targeting extends TargetingCriteriaOneOf {
    compound?: CompoundCriteria;
    customFilter?: CustomFilterCriteria;
    geo?: ListCriteria;
    language?: ListCriteria;
    userRole?: UserRoleCriteria;
    /** deprecated */
    userStatus?: UserStatusCriteria;
    /** deprecated */
    userColors?: ListCriteria;
    userGuids?: ListCriteria;
    /** deprecated */
    templateGuids?: ListCriteria;
    /** deprecated */
    postReg?: ListCriteria;
    connectedDomain?: ConnectedDomainCriteria;
    premiumPlan?: PremiumPlanCriteria;
    /** deprecated */
    excludeInSale?: boolean | null;
    mailbox?: MailboxCriteria;
    connectedOfferingGroup?: ListCriteria;
    installedApps?: ListCriteria;
    productGroups?: ListCriteria;
    /** deprecated */
    domainLength?: DomainLengthCriteria;
    mailboxSale?: ListCriteria;
    vouchers?: ListCriteria;
    /** deprecated */
    freeSite?: FreeSiteCriteria;
    brand?: BrandsCriteria;
    /**
     * petri spec conducted on runtime and determines if the offer will be retuned to the end user
     * the spec is conducted only after the user was eligable for all targeting rules
     */
    experiment?: ExperimentCriteria;
    customParam?: CustomParamCriteria;
    audience?: ListCriteria;
    premiumLandingTab?: PremiumLandingTabCriteria;
    premiumAccount?: PremiumAccountCriteria;
    eligibleForSale?: EligibleForSaleCriteria;
    externalCriteria?: ExternalCriteria;
    siteType?: SiteTypeCriteria;
    /** optional current targeting filter execution result (may be set in debug response) */
    executionResult?: ExecutionResult;
    /** Type of the criteria (criteria filter) */
    type?: CriteriaType;
    /**
     * Client usecase specific current targeting filter label. For example "v2" for root level targeting of
     * V2 targeting offers. Or "basic.geo" for V2 targeting GEO filter.
     */
    label?: string | null;
    /** If `true` this targeting result is NOT(criteria result) */
    negate?: boolean | null;
}
/** @oneof */
export interface TargetingCriteriaOneOf {
    compound?: CompoundCriteria;
    customFilter?: CustomFilterCriteria;
    geo?: ListCriteria;
    language?: ListCriteria;
    userRole?: UserRoleCriteria;
    /** deprecated */
    userStatus?: UserStatusCriteria;
    /** deprecated */
    userColors?: ListCriteria;
    userGuids?: ListCriteria;
    /** deprecated */
    templateGuids?: ListCriteria;
    /** deprecated */
    postReg?: ListCriteria;
    connectedDomain?: ConnectedDomainCriteria;
    premiumPlan?: PremiumPlanCriteria;
    /** deprecated */
    excludeInSale?: boolean | null;
    mailbox?: MailboxCriteria;
    connectedOfferingGroup?: ListCriteria;
    installedApps?: ListCriteria;
    productGroups?: ListCriteria;
    /** deprecated */
    domainLength?: DomainLengthCriteria;
    mailboxSale?: ListCriteria;
    vouchers?: ListCriteria;
    /** deprecated */
    freeSite?: FreeSiteCriteria;
    brand?: BrandsCriteria;
    /**
     * petri spec conducted on runtime and determines if the offer will be retuned to the end user
     * the spec is conducted only after the user was eligable for all targeting rules
     */
    experiment?: ExperimentCriteria;
    customParam?: CustomParamCriteria;
    audience?: ListCriteria;
    premiumLandingTab?: PremiumLandingTabCriteria;
    premiumAccount?: PremiumAccountCriteria;
    eligibleForSale?: EligibleForSaleCriteria;
    externalCriteria?: ExternalCriteria;
    siteType?: SiteTypeCriteria;
}
/**
 * Generic message for debug execution results.
 * Used for specific targeting criteria
 */
export interface ExecutionResult {
    /** if current criteria is applicable/eligible/valid */
    success?: boolean;
    /**
     * if set - it's JSON with either string, date utc string, boolean, array or object
     * depends on specific filter/criteria the result is calculated
     */
    currentValue?: string | null;
}
export declare enum CriteriaType {
    UNKNOWN = "UNKNOWN",
    COMPOUND = "COMPOUND",
    CUSTOM = "CUSTOM",
    GEO = "GEO",
    LANGUAGE = "LANGUAGE",
    USER_ROLE = "USER_ROLE",
    USER_STATUS = "USER_STATUS",
    USER_COLORS = "USER_COLORS",
    USER_GUIDS = "USER_GUIDS",
    TEMPLATE_GUIDS = "TEMPLATE_GUIDS",
    POST_REG = "POST_REG",
    CONNECTED_DOMAIN = "CONNECTED_DOMAIN",
    PREMIUM_PLAN = "PREMIUM_PLAN",
    EXCLUDE_IN_SALE = "EXCLUDE_IN_SALE",
    MAILBOX = "MAILBOX",
    CONNECTED_OFFERING_GROUP = "CONNECTED_OFFERING_GROUP",
    INSTALLED_APPS = "INSTALLED_APPS",
    PRODUCT_GROUPS = "PRODUCT_GROUPS",
    DOMAIN_LENGTH = "DOMAIN_LENGTH",
    MAILBOX_SALE = "MAILBOX_SALE",
    VOUCHERS = "VOUCHERS",
    FREE_SITE = "FREE_SITE",
    BRAND = "BRAND",
    EXPERIMENT = "EXPERIMENT",
    CUSTOM_PARAM = "CUSTOM_PARAM",
    AUDIENCE = "AUDIENCE",
    PREMIUM_LANDING_TAB = "PREMIUM_LANDING_TAB",
    PREMIUM_ACCOUNT = "PREMIUM_ACCOUNT",
    ELIGIBLE_FOR_SALE = "ELIGIBLE_FOR_SALE",
    EXTERNAL_CRITERIA = "EXTERNAL_CRITERIA",
    SITE_TYPE_CRITERIA = "SITE_TYPE_CRITERIA"
}
/** Aggregate criteria for AND/OR tree like structures */
export interface CompoundCriteria {
    operator?: Operator;
    children?: Targeting[];
}
export declare enum Operator {
    UNKNOWN = "UNKNOWN",
    OR = "OR",
    AND = "AND"
}
/** Criteria for targeting rules based on profile service data */
export interface CustomFilterCriteria {
    fieldId?: string;
    dataSource?: CustomFilterDataSource;
    operator?: CustomFilterOperator;
    listRestriction?: CustomFilterOperator;
}
export declare enum CustomFilterDataSource {
    UNKNOWN = "UNKNOWN",
    USER_PROFILE = "USER_PROFILE",
    SITE_PROFILE = "SITE_PROFILE",
    ACCOUNT_PROFILE = "ACCOUNT_PROFILE"
}
/** BI profile filter operator */
export interface CustomFilterOperator {
    /** BI field data type */
    valueType?: OperatorValueTypeEnum;
    /**
     * Expected value to be found in BI profile
     * @maxLength 2000
     */
    expectedValue?: string | null;
    /** Comparator to apply to value (i.e. if BI value EQUALS, LESS, GREATER than expected value etc.) */
    comparator?: ComparatorTypeEnum;
}
export declare enum OperatorValueTypeEnum {
    UNKNOWN = "UNKNOWN",
    NUMBER = "NUMBER",
    STRING = "STRING",
    LIST = "LIST",
    TIMESTAMP = "TIMESTAMP",
    BOOLEAN = "BOOLEAN"
}
export declare enum ComparatorTypeEnum {
    UNKNOWN = "UNKNOWN",
    EQUAL = "EQUAL",
    CONTAINED_IN = "CONTAINED_IN",
    CONTAINS_SOME = "CONTAINS_SOME",
    CONTAINS_NONE = "CONTAINS_NONE",
    NOT_CONTAINS = "NOT_CONTAINS",
    NOT_CONTAINED_IN = "NOT_CONTAINED_IN",
    BE_NOTHING = "BE_NOTHING",
    EXISTS = "EXISTS",
    MORE_THAN_DAYS = "MORE_THAN_DAYS",
    WITHIN_DAYS = "WITHIN_DAYS",
    LESS = "LESS",
    LESS_EQUAL = "LESS_EQUAL",
    GREATER = "GREATER",
    GREATER_EQUAL = "GREATER_EQUAL",
    SIZE_LESS_EQUAL = "SIZE_LESS_EQUAL",
    SIZE_GREATER_EQUAL = "SIZE_GREATER_EQUAL",
    NOT_EQUAL = "NOT_EQUAL"
}
/** Generic filter for list of included/excluded values */
export interface ListCriteria {
    values?: string[];
    included?: boolean;
}
/** Filter for metasite ownership rules */
export interface UserRoleCriteria {
    value?: UserRoleCriteriaEnum;
}
export declare enum UserRoleCriteriaEnum {
    UNKNOWN = "UNKNOWN",
    OWNER = "OWNER",
    NOT_OWNER = "NOT_OWNER"
}
export interface UserStatusCriteria {
    value?: UserStatusCriteriaEnum;
}
export declare enum UserStatusCriteriaEnum {
    UNKNOWN = "UNKNOWN",
    NEW = "NEW"
}
/** Filter for metasite domain validations */
export interface ConnectedDomainCriteria {
    value?: Enum;
}
export declare enum Enum {
    UNKNOWN = "UNKNOWN",
    CONNECTED = "CONNECTED",
    NOT_CONNECTED = "NOT_CONNECTED"
}
/** Filter for targeting based on premium plan eligibility */
export interface PremiumPlanCriteria {
    products?: number[];
    plan?: Plan;
}
export declare enum Plan {
    UNKNOWN = "UNKNOWN",
    PREMIUM = "PREMIUM",
    NONE = "NONE"
}
export interface MailboxCriteria {
    value?: MailboxCriteriaEnum;
}
export declare enum MailboxCriteriaEnum {
    UNKNOWN = "UNKNOWN",
    HAS_MAILBOX = "HAS_MAILBOX",
    NO_MAILBOX = "NO_MAILBOX"
}
export interface DomainLengthCriteria {
    /**
     * WARNING: bad naming for JS context => hidden bugs
     * For example lodash considers objects with `length` property ArrayLike
     */
    length?: number;
    shorterOrEqual?: boolean;
}
export interface FreeSiteCriteria {
    value?: FreeSiteCriteriaEnum;
}
export declare enum FreeSiteCriteriaEnum {
    UNKNOWN = "UNKNOWN",
    HAS_FREE = "HAS_FREE",
    NO_FREE = "NO_FREE"
}
/**
 * Filter for list of brands
 * (i.e. if given offer must be shown to user for "only [wix]",
 * of "only [wix, editorx]", or "except [editorx]" etc.)
 */
export interface BrandsCriteria {
    values?: Brand[];
    included?: boolean;
}
export declare enum Brand {
    UNKNOWN = "UNKNOWN",
    WIX = "WIX",
    EDITORX = "EDITORX",
    DAYFUL = "DAYFUL",
    STUDIO = "STUDIO"
}
export interface ExperimentCriteria {
    spec?: string | null;
    value?: string | null;
}
export interface CustomParamCriteria {
    operator?: CustomParamOperator;
    key?: string | null;
    values?: string[] | null;
    criteriaMetaData?: CriteriaMetaData;
}
export declare enum CustomParamOperator {
    UNKNOWN = "UNKNOWN",
    EQUALS = "EQUALS",
    NOT_EQUALS = "NOT_EQUALS",
    CONTAINS_ALL = "CONTAINS_ALL",
    NOT_CONTAINS_ALL = "NOT_CONTAINS_ALL",
    CONTAINS_ANY = "CONTAINS_ANY",
    NOT_CONTAINS_ANY = "NOT_CONTAINS_ANY",
    EXISTS = "EXISTS",
    NOT_EXISTS = "NOT_EXISTS"
}
/** DEPRECATED, use Targeting.label instead */
export interface CriteriaMetaData {
    label?: string;
}
export interface PremiumLandingTabCriteria {
    value?: PremiumLandingTabCriteriaEnum;
}
export declare enum PremiumLandingTabCriteriaEnum {
    UNKNOWN = "UNKNOWN",
    WEBSITE = "WEBSITE",
    BUSINESS = "BUSINESS"
}
export interface PremiumAccountCriteria {
    value?: PremiumAccountCriteriaEnum;
}
export declare enum PremiumAccountCriteriaEnum {
    UNKNOWN = "UNKNOWN",
    IS_PREMIUM = "IS_PREMIUM",
    IS_NOT_PREMIUM = "IS_NOT_PREMIUM"
}
export interface EligibleForSaleCriteria {
    value?: EligibleForSaleCriteriaEnum;
    customSale?: string | null;
    /** @format GUID */
    productTypeId?: string;
}
export declare enum EligibleForSaleCriteriaEnum {
    UNKNOWN = "UNKNOWN",
    NONE = "NONE",
    SEASONAL = "SEASONAL",
    PERSONAL = "PERSONAL",
    CUSTOM = "CUSTOM"
}
export interface ExternalCriteria {
    artifactName?: string | null;
    conditionType?: ConditionTypeEnum;
    /** This should be validated against ResponseType and ConditionType */
    expectedValue?: any;
    additionalParams?: Record<string, any> | null;
}
export declare enum ConditionTypeEnum {
    UNKNOWN = "UNKNOWN",
    EQUAL = "EQUAL",
    GREATER_THAN = "GREATER_THAN",
    SMALLER_THAN = "SMALLER_THAN"
}
export interface SiteTypeCriteria {
    /**
     * @minSize 1
     * @maxSize 10000
     */
    values?: SiteType[];
    included?: boolean;
}
export declare enum SiteType {
    UNKNOWN = "UNKNOWN",
    REGULAR = "REGULAR",
    HEADLESS = "HEADLESS"
}
/**
 * Current offer eligibility status related data:
 * - offer's availability for all users or employees only
 * - current timeframe eligibility
 * - offer's petri experiment based eligibility
 */
export interface ReleaseAudience {
    /** Who can see the offer (wix staff vs all users) */
    releaseStatus?: Status;
    /** Execution result of release_status filter (if current audience match offer's one) */
    releaseExecutionResult?: ExecutionResult;
    /** The offer is active from this timestamp */
    timeStart?: Date | null;
    /** The offer is inactive after this timestamp */
    timeStop?: Date | null;
    /** If current time is inside the offer timeframe */
    timeExecutionResult?: ExecutionResult;
    /** If offer is active only for some petri experiment - here is its key */
    experimentKey?: string | null;
    /** If offer is active only for some petri experiment - here is its required value */
    experimentValue?: string | null;
    /** If given user petri experiment matches offer's value */
    experimentExecutionResult?: ExecutionResult;
}
/** Target release audience scope of the offer */
export declare enum Status {
    UNKNOWN = "UNKNOWN",
    ALL = "ALL",
    WIX_EMPLOYEE = "WIX_EMPLOYEE"
}
/** Results of an offer frequency caps evaluation. */
export interface FrequencyCapsExecutionResult {
    /**
     * true — the offer is eligible based on frequency caps limits
     * false — the offer is limited (not returned from runtime) by frequency caps conditions
     */
    offerEligible?: boolean;
    /** The offer's frequency caps config being applied (either placement level FC or the offer's) */
    frequencyCaps?: FrequencyCaps;
    /** Frequency caps conditions with values set to current offer+user+metasite+events data */
    conditionsExecutionResult?: FrequencyCapsConditionsResult;
}
/**
 * FrequencyCaps is an entity containing some criterias (rules) for offer eligibility based on
 * past interactions of a user with the offer (or related offers).
 * By "interactions" we mean views, clicks, etc. Anything that is collected by deler-events API.
 *
 * FrequencyCaps can be set per offer or per placement. If set on placement level - it's like a default
 * value for all offers in the placement. While offer level FrequencyCaps is like specific value for the
 * offer only.
 */
export interface FrequencyCaps {
    /**
     * If this flag is set & true — an offer frequency caps are calculated not separately but together with
     * other offers belonging to same campaign & placement.
     *
     * For example frequencyCaps.views.limit = 5 with `count_with_related_offers` == false
     * means "stop this offer when it was viewed 5 times by this user".
     * While frequencyCaps.views.limit = 5 with `count_with_related_offers` == true
     * means "stop this offer when any of the offers within same campaign & placement
     * were together viewed 5 times by this user".
     */
    countWithRelatedOffers?: boolean | null;
    /** Actual limits imposed on the offer. Null if no limits. */
    conditions?: Conditions;
}
export declare enum CountType {
    UNKNOWN = "UNKNOWN",
    TOTAL = "TOTAL",
    DAYS = "DAYS"
}
/** Limit supporting number count or days aggregation count */
export interface EventsCountLimit {
    limit?: number;
    type?: CountType;
}
/** Simple number limit */
export interface LastEventLimit {
    limit?: number;
}
export interface Conditions {
    /** Max number of total offer VIEW events. */
    views?: EventsCountLimit;
    /** Max number of total offer MAIN_CTA clicks. */
    mainCtaClicks?: EventsCountLimit;
    /** Max number of total offer SKIP events. */
    skips?: EventsCountLimit;
    /** Max number of total offer CLOSE events. */
    closes?: EventsCountLimit;
    /** Max number of total offer SHOW_LATER events. */
    showLater?: LastEventLimit;
}
/**
 * Execution result per each FC limit type, currentValue is human readable representation of actual data
 * success = true means limit has not been reached (offer is eligible according to this limit)
 */
export interface FrequencyCapsConditionsResult {
    /** Number of total VIEW events */
    views?: ExecutionResult;
    /** Number of total MAIN_CTA events */
    mainCtaClicks?: ExecutionResult;
    /** Number of total SKIP events */
    skips?: ExecutionResult;
    /** Number of total CLOSE events */
    closes?: ExecutionResult;
    /** Number of total SHOW_LATER events */
    showLater?: ExecutionResult;
}
/**
 * Entity, holding criteria(s) (rules or filters) for dealer runtime rule engine
 * The rule engine decides if targeting eligible to a user or not based on executing these rules
 */
export interface TargetingTree extends TargetingTreeCriteriaOneOf {
    /** The compound of a user */
    compoundCriteria?: V1CompoundCriteria;
    /** A custom filter for targeting */
    customCriteria?: CustomCriteria;
    /** Country of the user */
    geoCriteria?: V1ListCriteria;
    /** Language of the user */
    languageCriteria?: V1ListCriteria;
    /** Filter based on "owner" vs "contributor" */
    userRoleCriteria?: V1UserRoleCriteria;
    /** User color */
    userColorsCriteria?: V1ListCriteria;
    /** List of user guids */
    userGuidsCriteria?: V1ListCriteria;
    /** List of connected domains */
    connectedDomainCriteria?: V1ConnectedDomainCriteria;
    /** Premium plan status of the user */
    premiumPlanCriteria?: V1PremiumPlanCriteria;
    /** Whether this site has added a mailbox */
    mailboxCriteria?: V1MailboxCriteria;
    /** Whether a specific app is currently installed on this site */
    installedAppsCriteria?: V1ListCriteria;
    /** Sites connected to a family of products such as combo, VIP, or unlimited */
    productGroupsCriteria?: V1ListCriteria;
    /** Users eligible for mailbox discounts */
    mailboxSaleCriteria?: V1ListCriteria;
    /** Users who have 1 or more sites that are not connected to a premium plan */
    freeSiteCriteria?: V1FreeSiteCriteria;
    /** Criteria brand */
    brandCriteria?: V1BrandsCriteria;
    /** Criteria custom params */
    customParamCriteria?: V1CustomParamCriteria;
    /** List of criteria audiences */
    audienceCriteria?: V1ListCriteria;
    /** Whether the default Package Picker tab is "Business" or "Website" */
    premiumLandingTabCriteria?: V1PremiumLandingTabCriteria;
    /** Users who have 1 or more sites that are connected to premium */
    premiumAccountCriteria?: V1PremiumAccountCriteria;
    /** Eligible for sale */
    eligibleForSaleCriteria?: V1EligibleForSaleCriteria;
    /** External_criteria */
    externalCriteria?: V1ExternalCriteria;
    /** SiteType criteria */
    siteTypeCriteria?: V1SiteTypeCriteria;
    /** optional current targeting filter execution result (may be set in debug response) */
    executionResult?: V1ExecutionResult;
    /** Type of the criteria (criteria filter) */
    type?: V1CriteriaType;
    /**
     * Client use case specific current targeting filter label. For example "v2" for root level targeting of
     * V2 targeting offers. Or "basic.geo" for V2 targeting GEO filter
     * @maxLength 100
     */
    label?: string | null;
    /** If `true` this targeting result is NOT(criteria result) */
    negate?: boolean | null;
}
/** @oneof */
export interface TargetingTreeCriteriaOneOf {
    /** The compound of a user */
    compoundCriteria?: V1CompoundCriteria;
    /** A custom filter for targeting */
    customCriteria?: CustomCriteria;
    /** Country of the user */
    geoCriteria?: V1ListCriteria;
    /** Language of the user */
    languageCriteria?: V1ListCriteria;
    /** Filter based on "owner" vs "contributor" */
    userRoleCriteria?: V1UserRoleCriteria;
    /** User color */
    userColorsCriteria?: V1ListCriteria;
    /** List of user guids */
    userGuidsCriteria?: V1ListCriteria;
    /** List of connected domains */
    connectedDomainCriteria?: V1ConnectedDomainCriteria;
    /** Premium plan status of the user */
    premiumPlanCriteria?: V1PremiumPlanCriteria;
    /** Whether this site has added a mailbox */
    mailboxCriteria?: V1MailboxCriteria;
    /** Whether a specific app is currently installed on this site */
    installedAppsCriteria?: V1ListCriteria;
    /** Sites connected to a family of products such as combo, VIP, or unlimited */
    productGroupsCriteria?: V1ListCriteria;
    /** Users eligible for mailbox discounts */
    mailboxSaleCriteria?: V1ListCriteria;
    /** Users who have 1 or more sites that are not connected to a premium plan */
    freeSiteCriteria?: V1FreeSiteCriteria;
    /** Criteria brand */
    brandCriteria?: V1BrandsCriteria;
    /** Criteria custom params */
    customParamCriteria?: V1CustomParamCriteria;
    /** List of criteria audiences */
    audienceCriteria?: V1ListCriteria;
    /** Whether the default Package Picker tab is "Business" or "Website" */
    premiumLandingTabCriteria?: V1PremiumLandingTabCriteria;
    /** Users who have 1 or more sites that are connected to premium */
    premiumAccountCriteria?: V1PremiumAccountCriteria;
    /** Eligible for sale */
    eligibleForSaleCriteria?: V1EligibleForSaleCriteria;
    /** External_criteria */
    externalCriteria?: V1ExternalCriteria;
    /** SiteType criteria */
    siteTypeCriteria?: V1SiteTypeCriteria;
}
/**
 * Generic message for debug execution results.
 * Used for specific targeting criteria
 */
export interface V1ExecutionResult {
    /** if current criteria is applicable/eligible/valid */
    success?: boolean;
    /**
     * if set - it's JSON with either string, date utc string, boolean, array or object
     * depends on specific filter/criteria the result is calculated
     * @maxLength 100
     */
    currentValue?: string | null;
}
/** CriteriaType - the type of criteria. */
export declare enum V1CriteriaType {
    /** Unknown criteria type. */
    UNKNOWN_CRITERIA_TYPE = "UNKNOWN_CRITERIA_TYPE",
    /** Compound criteria type - contain criteria array in children property. */
    COMPOUND = "COMPOUND",
    /** Custom criteria type - Used for comparing user/site BI Profile values. */
    CUSTOM = "CUSTOM",
    /** Geo criteria type - Used for geo targeting. */
    GEO = "GEO",
    /** User language criteria type - Used for language targeting. */
    LANGUAGE = "LANGUAGE",
    /** User role criteria type - Used for role targeting. */
    USER_ROLE = "USER_ROLE",
    USER_COLORS = "USER_COLORS",
    USER_GUIDS = "USER_GUIDS",
    CONNECTED_DOMAIN = "CONNECTED_DOMAIN",
    PREMIUM_PLAN = "PREMIUM_PLAN",
    MAILBOX = "MAILBOX",
    INSTALLED_APPS = "INSTALLED_APPS",
    PRODUCT_GROUPS = "PRODUCT_GROUPS",
    MAILBOX_SALE = "MAILBOX_SALE",
    FREE_SITE = "FREE_SITE",
    BRAND = "BRAND",
    CUSTOM_PARAM = "CUSTOM_PARAM",
    AUDIENCE = "AUDIENCE",
    PREMIUM_LANDING_TAB = "PREMIUM_LANDING_TAB",
    PREMIUM_ACCOUNT = "PREMIUM_ACCOUNT",
    ELIGIBLE_FOR_SALE = "ELIGIBLE_FOR_SALE",
    EXTERNAL = "EXTERNAL",
    SITE_TYPE = "SITE_TYPE"
}
/** Aggregate criteria for AND/OR tree like structures */
export interface V1CompoundCriteria {
    /** Operator */
    operator?: CompoundCriteriaOperator;
    /**
     * List of targeting
     * @maxSize 10000
     */
    children?: TargetingTree[];
}
export declare enum CompoundCriteriaOperator {
    UNKNOWN_OPERATOR = "UNKNOWN_OPERATOR",
    OR = "OR",
    AND = "AND"
}
/** Criteria for targeting rules based on profile service data */
export interface CustomCriteria {
    /**
     * Id field - string
     * @maxLength 100
     */
    fieldId?: string;
    /** Data_source */
    dataSource?: CustomDataSource;
    /** Operator */
    operator?: CustomOperator;
    /** List of restrictions */
    listRestriction?: CustomOperator;
}
export declare enum FieldType {
    UNKNOWN_FIELD_TYPE = "UNKNOWN_FIELD_TYPE",
    NUMBER = "NUMBER",
    STRING = "STRING",
    LIST = "LIST",
    TIMESTAMP = "TIMESTAMP",
    BOOLEAN = "BOOLEAN"
}
export declare enum Comparator {
    UNKNOWN_COMPARATOR = "UNKNOWN_COMPARATOR",
    EQUAL = "EQUAL",
    CONTAINED_IN = "CONTAINED_IN",
    CONTAINS_SOME = "CONTAINS_SOME",
    CONTAINS_NONE = "CONTAINS_NONE",
    NOT_CONTAINS = "NOT_CONTAINS",
    NOT_CONTAINED_IN = "NOT_CONTAINED_IN",
    BE_NOTHING = "BE_NOTHING",
    EXISTS = "EXISTS",
    MORE_THAN_DAYS = "MORE_THAN_DAYS",
    WITHIN_DAYS = "WITHIN_DAYS",
    LESS = "LESS",
    LESS_EQUAL = "LESS_EQUAL",
    GREATER = "GREATER",
    GREATER_EQUAL = "GREATER_EQUAL",
    SIZE_LESS_EQUAL = "SIZE_LESS_EQUAL",
    SIZE_GREATER_EQUAL = "SIZE_GREATER_EQUAL",
    NOT_EQUAL = "NOT_EQUAL"
}
export declare enum CustomDataSource {
    UNKNOWN_CUSTOM_DATA_SOURCE = "UNKNOWN_CUSTOM_DATA_SOURCE",
    USER_PROFILE = "USER_PROFILE",
    SITE_PROFILE = "SITE_PROFILE",
    ACCOUNT_PROFILE = "ACCOUNT_PROFILE"
}
/** BI profile filter operator */
export interface CustomOperator {
    /** BI field data type */
    fieldType?: FieldType;
    /**
     * Expected value to be found in BI profile
     * @maxLength 2000
     */
    expectedValue?: string | null;
    /** Comparator to apply to value (i.e. if BI value EQUALS, LESS, GREATER than expected value etc.) */
    comparator?: Comparator;
}
/** Generic filter for list of included/excluded values */
export interface V1ListCriteria {
    /**
     * List of criteria values
     * @maxSize 1000
     * @maxLength 100
     */
    values?: string[];
    /** Is included - boolean */
    included?: boolean;
}
/** Filter for MetaSite ownership rules */
export interface V1UserRoleCriteria {
    /** User role criteria */
    value?: UserRoleCriteriaValue;
}
export declare enum UserRoleCriteriaValue {
    UNKNOWN_VALUE = "UNKNOWN_VALUE",
    OWNER = "OWNER",
    NOT_OWNER = "NOT_OWNER"
}
/** Filter for MetaSite domain validations */
export interface V1ConnectedDomainCriteria {
    /** Connected domain criteria */
    value?: Value;
}
export declare enum Value {
    UNKNOWN_VALUE = "UNKNOWN_VALUE",
    CONNECTED = "CONNECTED",
    NOT_CONNECTED = "NOT_CONNECTED"
}
/** Filter for targeting based on premium plan eligibility */
export interface V1PremiumPlanCriteria {
    /**
     * List of products number
     * @maxSize 10000
     */
    products?: number[];
    /** The user plan */
    plan?: PremiumPlanCriteriaPlan;
}
export declare enum PremiumPlanCriteriaPlan {
    UNKNOWN_PLAN = "UNKNOWN_PLAN",
    PREMIUM = "PREMIUM",
    NONE = "NONE"
}
/** Filter for MetaSite mailbox validations */
export interface V1MailboxCriteria {
    /** Mailbox criteria */
    value?: MailboxCriteriaValue;
}
export declare enum MailboxCriteriaValue {
    UNKNOWN_VALUE = "UNKNOWN_VALUE",
    HAS_MAILBOX = "HAS_MAILBOX",
    NO_MAILBOX = "NO_MAILBOX"
}
/** Site level filter - is free site or not */
export interface V1FreeSiteCriteria {
    /** FreeSite criteria */
    value?: FreeSiteCriteriaValue;
}
export declare enum FreeSiteCriteriaValue {
    UNKNOWN_VALUE = "UNKNOWN_VALUE",
    HAS_FREE = "HAS_FREE",
    NO_FREE = "NO_FREE"
}
/** Filter for list of brands */
export interface V1BrandsCriteria {
    /**
     * List of brands
     * @maxSize 10
     */
    values?: BrandsCriteriaBrand[];
    /** Brand included status */
    included?: boolean;
}
/** Filter for list of custom params - comes from the request. */
export interface V1CustomParamCriteria {
    /** Custom param operator */
    operator?: CustomParamCriteriaCustomParamOperator;
    /**
     * Key of criteria
     * @maxLength 100
     */
    key?: string | null;
    /**
     * List of criteria values
     * @maxSize 100
     * @maxLength 100
     */
    values?: string[] | null;
}
export declare enum CustomParamCriteriaCustomParamOperator {
    UNKNOWN_CUSTOM_PARAM_OPERATOR = "UNKNOWN_CUSTOM_PARAM_OPERATOR",
    EQUALS = "EQUALS",
    CONTAINS_ALL = "CONTAINS_ALL",
    CONTAINS_ANY = "CONTAINS_ANY",
    EXISTS = "EXISTS"
}
/** Filter for Premium Landing Tab types */
export interface V1PremiumLandingTabCriteria {
    /** Landing tab criteria */
    value?: PremiumLandingTabCriteriaValue;
}
export declare enum PremiumLandingTabCriteriaValue {
    UNKNOWN_VALUE = "UNKNOWN_VALUE",
    WEBSITE = "WEBSITE",
    BUSINESS = "BUSINESS"
}
export interface V1PremiumAccountCriteria {
    /** Premium account criteria */
    value?: PremiumAccountCriteriaValue;
}
export declare enum PremiumAccountCriteriaValue {
    UNKNOWN_VALUE = "UNKNOWN_VALUE",
    IS_PREMIUM = "IS_PREMIUM",
    IS_NOT_PREMIUM = "IS_NOT_PREMIUM"
}
/** Filter for targeting based on product groups */
export interface V1EligibleForSaleCriteria {
    /** EligibleForSale criteria value */
    value?: EligibleForSaleCriteriaValue;
    /**
     * CustomSale value
     * @maxLength 100
     */
    customSale?: string | null;
    /**
     * Product id - guid
     * @format GUID
     */
    productTypeId?: string;
}
export declare enum EligibleForSaleCriteriaValue {
    UNKNOWN_VALUE = "UNKNOWN_VALUE",
    NONE = "NONE",
    SEASONAL = "SEASONAL",
    PERSONAL = "PERSONAL",
    CUSTOM = "CUSTOM"
}
/**
 * Filter for external criteria
 * implemented by external services
 */
export interface V1ExternalCriteria {
    /**
     * Artifact name
     * @maxLength 100
     */
    artifactName?: string | null;
    /** External criteria - condition type */
    conditionType?: ConditionType;
    /** External criteria - expected value */
    expectedValue?: any;
    /** External criteria - additional params */
    additionalParams?: Record<string, any> | null;
}
export declare enum ConditionType {
    UNKNOWN_CONDITION_TYPE = "UNKNOWN_CONDITION_TYPE",
    EQUAL = "EQUAL",
    GREATER_THAN = "GREATER_THAN",
    SMALLER_THAN = "SMALLER_THAN"
}
/** Filter for list of site types. */
export interface V1SiteTypeCriteria {
    /**
     * Array of siteType options
     * @minSize 1
     * @maxSize 10
     */
    values?: SiteTypeCriteriaSiteType[];
    /** isIncluded bool */
    included?: boolean;
}
/** SiteType options */
export declare enum SiteTypeCriteriaSiteType {
    UNKNOWN_SITE_TYPE = "UNKNOWN_SITE_TYPE",
    REGULAR = "REGULAR",
    HEADLESS = "HEADLESS"
}
/** Input params for evaluating the offer's creative. */
export interface GetOfferRequest {
    /** Offer guid to evaluate */
    offerId: string;
    /** Explicit request context params. Optional. */
    context?: RequestContext;
}
/** Return the requested offer with personalized content for given request params & aspects. */
export interface GetOfferResponse {
    /** Offer being inspected */
    offer?: Offer;
}
/** Params required to list offers for given placement (real estate). */
export interface ListOffersRequest {
    /** Dealer placement guid (product location). Required. */
    realEstateId: string;
    /** Only <= limit number of offers returned if more are applicable. Optional, default limit is 30 offers */
    limit?: number | null;
    /**
     * Which offers to exclude from results. Optional.
     * @format GUID
     */
    excludeOfferIds?: string[];
    /**
     * DEPRECATED - plz use server signer.
     * Optional - override specific fields that by default coming from aspects
     * if not set will be taken implicitly from request
     */
    extensions?: RequestExtensions;
    /** Deviant Art specific use-case: signed jwt token with uuid of deviant art user in wix bi infra */
    deviantArtUserId?: string | null;
    /** List of custom param's values, some offers are targeted by those values. Optional */
    customParams?: CustomParam[];
    /**
     * Optional - Enable to override or abort frequency caps configuration
     * if not set, the default offer or placement frequency caps hierarchy will be used (if configured)
     */
    frequencyCapsOverrides?: FrequencyCapsRequestOverrides;
    /** SkipTargeting flag allows bypassing the targeting validation and retrieving all live offers, regardless of user/site eligibility. Optional. */
    skipTargeting?: boolean | null;
    /** Optional - Enable to override the placement default prioritization strategy configuration */
    prioritizationStrategyOverrides?: PrioritizationStrategyOverrides;
}
export declare enum FrequencyCapsOverridesType {
    UNKNOWN = "UNKNOWN",
    PLACEMENT_LEVEL = "PLACEMENT_LEVEL",
    OFFER_LEVEL = "OFFER_LEVEL"
}
export interface PrioritizationStrategyConfig extends PrioritizationStrategyConfigStrategyParamsOneOf {
    defaultParams?: PrioritizationStrategyParams;
    abTestStrategies?: PrioritizationABTestStrategies;
    shadowedStrategy?: ShadowedStrategy;
}
/** @oneof */
export interface PrioritizationStrategyConfigStrategyParamsOneOf {
    defaultParams?: PrioritizationStrategyParams;
    abTestStrategies?: PrioritizationABTestStrategies;
    shadowedStrategy?: ShadowedStrategy;
}
export interface PrioritizationStrategyParams extends PrioritizationStrategyParamsConfigurationOneOf {
    abCtrConfig?: ABCTRConfig;
    whatsNextConfig?: WHATSNEXTConfig;
    advicesConfig?: AdvicesConfig;
    strategy?: PrioritizationStrategy;
    /**
     * Learning rate for the supporting strategy
     * should be between 0 and 1
     * @decimalValue options { gte:0.000, lte:1, maxScale:3 }
     */
    learningAllocation?: string | null;
    /** @maxSize 20 */
    fixedItems?: FixedItem[];
}
/** @oneof */
export interface PrioritizationStrategyParamsConfigurationOneOf {
    abCtrConfig?: ABCTRConfig;
    whatsNextConfig?: WHATSNEXTConfig;
    advicesConfig?: AdvicesConfig;
}
export declare enum PrioritizationStrategy {
    UNKNOWN = "UNKNOWN",
    /**
     * Manual - Prioritize by weight of the items.
     * - The items with the largest weight will have the highest priority
     * - Undefined weights will have the lowest priority
     */
    MANUAL = "MANUAL",
    /** CTR based, item prioritized from highest CTR to the lowest */
    CTR = "CTR",
    /** Random based item prioritization */
    RANDOM = "RANDOM",
    /** AB test based item prioritization */
    ABCTR = "ABCTR",
    /** Premium based item prioritization */
    PremiumCTR = "PremiumCTR",
    /** ML Model item prioritization */
    MLModel = "MLModel",
    /** Advices item prioritization */
    ADVICES = "ADVICES",
    /** Collections based item prioritization */
    COLLECTIONS = "COLLECTIONS"
}
export interface WhatsNextConfiguration {
    /** customParams - Custom parameters to be used for the WhatsNext Completion. */
    customParams?: Record<string, any> | null;
    /**
     * The fixed number of advices to be returned.
     * Default: 5
     */
    totalAdvices?: number | null;
    /**
     * llmTimeout - The maximum time to wait for the WhatsNext Completion.
     * Maximum 10 seconds, WIX Cancels requests after 10 seconds.
     * Represented in milliseconds.
     * @max 10000
     */
    llmTimeoutInMs?: number;
}
export interface Advices {
    /** @maxSize 20 */
    advices?: string[];
}
export interface FixedItem {
    /** @format GUID */
    itemId?: string;
    priority?: number;
}
export interface ABCTRConfig {
    specName?: string | null;
}
export interface WHATSNEXTConfig {
    customParams?: Record<string, any> | null;
}
export interface AdvicesConfig extends AdvicesConfigAdvicesCustomConfigOneOf {
    whatsNextCustomParams?: WhatsNextConfiguration;
    advices?: Advices;
    /** @decimalValue options { gte:0.000, lte:1, maxScale:3 } */
    vespaThreshold?: string | null;
    fallbackStrategy?: PrioritizationStrategy;
}
/** @oneof */
export interface AdvicesConfigAdvicesCustomConfigOneOf {
    whatsNextCustomParams?: WhatsNextConfiguration;
    advices?: Advices;
}
export interface PrioritizationABTestStrategies {
    /**
     * the spec name of the test
     * @minLength 1
     * @maxLength 100
     */
    specName?: string;
    paramsA?: PrioritizationStrategyParams;
    paramsB?: PrioritizationStrategyParams;
}
export interface ShadowedStrategy {
    mainStrategy?: PrioritizationStrategyParams;
    shadowedStrategy?: PrioritizationStrategyParams;
}
/**
 * DEPRECATED
 * Explicit metasite id request option.
 */
export interface RequestExtensions {
    /**
     * User needs permission DEALER.OFFERS_SERVING_SITE_TARGETING to pass it. Optional.
     * @format GUID
     */
    siteId?: string | null;
}
export interface FrequencyCapsRequestOverrides {
    /**
     * Set of frequency caps conditions to use in the request
     * Set as null if you want to abort the frequency caps for this request (this will also follow the override type behaviour)
     */
    conditions?: Conditions;
    /**
     * Mandatory - this controls the conditions overrides behaviour and must be one of those 2 types:
     * PLACEMENT_LEVEL - Will only be applied for offers without frequency caps
     * OFFER_LEVEL - Will be applied to all offers with or without frequency caps
     */
    type?: FrequencyCapsOverridesType;
}
export interface PrioritizationStrategyOverrides {
    /** Set of prioritization strategy conditions to use in the request */
    prioritizationStrategyConfig?: PrioritizationStrategyConfig;
}
/** All eligible offers with personalized content for given request params & aspects. */
export interface ListOffersResponse {
    /** Offers eligible for correspondent request at the moment of the call */
    offers?: Offer[];
}
/** Input params for evaluating the offer. */
export interface ResolveOfferRequest {
    /** Offer guid to evaluate */
    offerId: string;
    /** List of custom param's values, some offers are targeted by those values. Optional */
    customParams?: CustomParam[];
}
/** Return the requested offer (if eligible) with personalized content for given request params & aspects. */
export interface ResolveOfferResponse {
    /** Offer being inspected */
    offer?: Offer;
}
/** Params required to list offers for multiple placements (real estates) in a single call. */
export interface ListOffersBulkRequest {
    /**
     * List of dealer real estates (placements). Required.
     * @minSize 1
     */
    realEstateIds: string[];
    /**
     * Excluded offer ids will never be returend to the user. Optional
     * @format GUID
     */
    excludeOfferIds?: string[];
    /**
     * DEPRECATED
     * This data overrides specific fields coming from aspects if not set will be taken implicitly from request.
     * Optional.
     */
    extensions?: RequestExtensions;
    /** List of custom param's values, some offers are targeted by those values. Optional. */
    customParams?: CustomParam[];
    /** SkipTargeting flag allows bypassing the targeting validation and retrieving all live offers, regardless of user/site eligibility. Optional. */
    skipTargeting?: boolean | null;
}
export interface ListOffersBulkResponse {
    /** a map from realEstate(placement) id to list of offers */
    realEstates?: Record<string, ListOffersResponse>;
}
