import { CurrencyCode } from "../../core/commonTypes";
export declare enum LoyaltyTypes {
    Survey = "survey",
    Reward = "reward",
    Level = "level",
    Milestone = "milestone",
    Promo = "promo"
}
export declare enum PromoAction {
    Apply = "apply",
    View = "view",
    Other = "other"
}
export declare enum PromoType {
    AddToCart = "add_to_cart",
    Coupon = "coupon",
    Other = "other"
}
export declare enum PromoItemType {
    Blood = "blood",
    Book = "book",
    Clothing = "clothing",
    Drug = "drug",
    Grocery = "grocery",
    Electronics = "electronics",
    Misc = "misc",
    Oxygen = "oxygen",
    Subscription = "subscription",
    Facility = "facility",
    Other = "other"
}
export declare enum SurveyType {
    OpenEnded = "open_ended",
    ClosedEnded = "closed_ended",
    Nominal = "nominal",
    LikertScale = "likert_scale",
    RatingScale = "rating_scale",
    YesNo = "yes_no",
    Interview = "interview",
    Other = "other"
}
export declare enum SurveyAction {
    View = "view",
    Impression = "impression",
    Start = "start",
    Submit = "submit",
    Other = "other"
}
export declare enum RewardAction {
    View = "view",
    Add = "add",
    Redeem = "redeem",
    Other = "other"
}
export declare enum RedeemType {
    Cash = "cash",
    Airtime = "airtime",
    Other = "other"
}
export interface PromoItem {
    id: string;
    type: PromoItemType;
}
export interface SurveyObject {
    id: string;
    type: SurveyType;
    is_completed: boolean;
    reward_id?: string;
}
export interface ResponseObject {
    id: string;
    type: SurveyType;
    question: string;
    response?: string;
}
export interface RedeemObject {
    type: RedeemType;
    is_successful: boolean;
    points_withdrawn: number;
    converted_value: number;
    currency?: CurrencyCode;
}
export interface PromoProperties {
    id: string;
    action: PromoAction;
    items: PromoItem[];
    title: string;
    type: PromoType;
    meta?: any;
}
export interface LevelProperties {
    prev_level: number;
    new_level: number;
    module_id?: string;
    meta?: any;
}
export declare enum MilestoneAction {
    Achieved = "achieved",
    Other = "other"
}
export interface MilestoneProperties {
    id: string;
    action: MilestoneAction;
    meta?: any;
}
export interface SurveyProperties {
    action: SurveyAction;
    survey: SurveyObject;
    response: Array<ResponseObject>;
    meta?: any;
}
export interface RewardProperties {
    id: string;
    action: RewardAction;
    acc_points?: number;
    total_points: number;
    redeem?: RedeemObject;
    meta?: any;
}
export interface SurveyCatalog {
    name: string;
    description?: string;
    type: string;
    duration?: number;
    organization_id?: string;
    organization_name?: string;
    questions_list: Array<string>;
    reward_id: string;
    creation_date?: string;
    expiry_date?: string;
}
/**
 * @internal
 */
export interface InternalSurveyCatalog extends SurveyCatalog {
    id: string;
}
export interface RewardCatalog {
    name: string;
    description?: string;
    type: string;
    required_points: number;
    creation_date?: string;
    expiry_date?: string;
    organization_id?: string;
    organization_name?: string;
}
/**
 * @internal
 */
export interface InternalRewardCatalog extends RewardCatalog {
    id: string;
}
