import { AmountType } from '@pv-frontend/pv-shared-components/amount-quantity-input'; import { CardStyleOverrideConfig } from '@pv-frontend/pv-shared-components/card'; import { OverrideStyleConfig } from '@pv-frontend/pv-shared-components/common/types/types'; import { ValueOf } from '@pv-frontend/pv-shared-services/common'; export interface ContextualEnvironment { apiPerksServiceUrl: string; apiPerksServiceUrlV2: string; apiClientsServiceUrl: string; apiBookingServiceUrl: string; apiUrlPaV1: string; campaignPath: string; campaignEnterprisePath: string; coreServicePath: string; } export type KnowMoreClick = { campaignId?: string; benefitType?: BenefitTypes; benefitID?: string; campaignRedemptionType?: CampaignRedemptionType; }; export type BenefitTypes = ValueOf; export declare const BenefitTypeConstant: { readonly MEMBERSHIP: "memberships"; readonly GIFT_CARD: "giftcards"; readonly OFFER: "offers"; }; export type ExtraItem = { icon?: string; val: string; }; export type PageData = { redeemption_id: string; merchant_image_url: string; originalPrice: string | number; type: BenefitTypes; image_url: string; title: string; merchant_name: string; expiry: ExtraItem; redemption_steps: ExtraItem; terms: ExtraItem; about: ExtraItem; description: ExtraItem; offerPricing?: ExtraItem; website: string; redemptionUrl?: string; id?: string; endDate?: string; name?: string; }; export type AccordionItems = { id: string; title: string; /** * text content for the accordion to be shown via the [innerHtml] directive */ content: string; }; export declare const CampaignRedemptionOptionsType: { readonly GIFT_CARD: "gift_card_redemption_options"; readonly MEMBERSHIP: "membership_redemption_options"; readonly OFFER: "offer_redemption_options"; }; export type CampaignRedemptionOptions = ValueOf; export type RedemptionOptionCategories = { id: string; name: string; parent_id: null | string; }; export type BenefitRedemptionData = { id: string; type: 'gift_card' | 'membership' | 'offers'; item_id?: string; attributes: { id: string; title: string; description: string; terms: string; redemption_steps: string; redemption_type: string[]; poshvine_commission: null; is_sclp: boolean; card_type: string; price_type: AmountType; popular: boolean; denominations: number[]; min_price: string; max_price: string; end_date: string; redemption_url: string; image_url: string; max_quantity_per_order: number; offer_details: { data: BenefitRedemptionData; }; provider: { id: string; name: string; logo: { name: string; record: { id: string; id_v1: number; name: string; token: null | string; secret: null | string; token_expires_at: null | string; benefits_count: number; benefit_type: 'offer' | 'gift_card' | 'membership'[]; poshvine_commission: null | string; config: unknown; currency_mapping: unknown; created_at: string; updated_at: string; display_name: null | string; client_id: null | string; }; }; config: unknown; benefits_count: number; benefit_type: 'offer' | 'gift_card' | 'membership'[]; currency_mapping: unknown; }; categories: RedemptionOptionCategories[]; claimable: boolean; discount: null; membership_url: string; start_date: string; source: string; membership_type: string; original_price: number; updated_at: string; cost_price: null; live?: boolean; merchant: RedemptionMerchant; offer_type: string; discount_type: string; discount_value: null | string; offer_value: null; merchant_details: { data: { id: string; type: 'merchant'; attributes: { id_v1: null; company_id: null; name: string; description: string; website: string; external_id: null; created_at: string; updated_at: string; code: string; logo_url: string; }; }; }; }; relationships: { merchant: { data: { id: string; type: string; }; }; categories: { data: { id: string; type: string; }[]; }; }; }; export type GiftcardRedemption = { id: string; type: 'gift_card_redemption_detail'; attributes: { id: string; gift_card_details: { data: BenefitRedemptionData; }; gift_card_redemption_option: { data: { id: string; type: 'gift_card_redemption_option'; attributes: { id: string; gift_card_id: string; denominations: number[]; price_type: AmountType; min_price: null; max_price: null; }; }; }; redemption_type: string; redemption_value: number; campaign_claimable: { claimable: boolean; non_claimable_reason: string; }; redemptions?: { data: { id: string; type: 'user_redemption'; attributes: { id: string; status: string; details: null; redemption_option: { data: { id: string; type: 'redemption_option'; attributes: { id: string; campaign_id: string; }; relationships: { eligiblity_renewals: { data: [ { id: string; type: 'eligiblity_renewal'; } ]; }; redeemable: { data: { id: string; type: 'gift_card_redemption_option'; }; }; }; }; }; }; }[]; }; }; }; export type RedemptionMerchant = { id_v1: null | string; company_id: null | string; name: string; description: string; website: string; external_id: null | string; created_at: string; updated_at: string; code: string; logo_url: string; }; export type MembershipRedemption = { id: string; type: 'membership_redemption_detail'; attributes: { id: string; membership_details: { data: BenefitRedemptionData; included: MembershipInclusionTypes[]; }; membership_redemption_option: { data: { id: string; type: 'membership_redemption_option'; attributes: { id: string; membership_id: string; merchant_id: string; }; }; }; redemption_type: 'credit_points'; redemption_value: number; campaign_claimable: { claimable: false; non_claimable_reason: string; }; redemptions: { data: []; }; }; }; export type OfferRedemption = { id: string; type: 'offer_redemption_detail'; attributes: { id: string; offer_details: { data: BenefitRedemptionData; }; existing_redemption_details: { existing_offer_redemption: boolean; redemption_id: string; voucher_code: string; }; offer_redemption_option: { data: { id: string; type: 'offer_redemption_option'; attributes: { id: string; offer_id: string; merchant_id: string; }; }; }; redemption_type: 'direct_claim'; redemption_value: null | string; campaign_claimable: { claimable: boolean; non_claimable_reason: 'campaign is inactive'; }; }; }; export type UserCampaignPointsDetails = { user_current_campaign_points?: number; user_campaign_points?: number; user_campaign_redemptions?: number; }; export type Meta = { meta: { user_campaign_point_details: UserCampaignPointsDetails; }; }; export type RedemptionOptions = { data: T[]; } & Meta; export type RedemptionOption = { data: T; } & Meta; export type MembershipRedemptionOptions = RedemptionOptions; export type GiftcardRedemptionOptions = RedemptionOptions; export type OfferRedemptionOptions = RedemptionOptions; export type MembershipRedemptionOption = RedemptionOption; export type GiftcardRedemptionOption = RedemptionOption; export type OfferRedemptionOption = RedemptionOption; export declare const CampaignRedemptionTypeMap: { readonly CREDIT_REWARD_POINTS_INCENTIVE: "credit_reward_points_incentive"; readonly EXISTING_PERKS_INCENTIVE: "existing_perks_incentive"; readonly CASHBACK_INCENTIVE: "cashback_incentive"; }; export type CampaignRedemptionType = ValueOf; export type MembershipRedemptionSuccessful = { data: { id: string; type: 'membership_voucher'; attributes: { code: string; pin: string | number; state: 'claimed'; voucher_end_date: string; redemption_id: string; }; }; redemption_url: string; order_value: number | null; unlocked_benefit_orders: { data: []; }; }; export type GiftcardRedemptionSuccessful = { id: string; type: 'gift_card_booking'; attributes: { user_card_id: null; status: 'success' | 'failed'; created_at: string; gift_card_orders: { gift_card_id: string; denomination: string; quantity: number; status: string; api_resp: string; recipient_info: unknown; order_no: string; provider_order_no: undefined | ''; redemption_ids: string[]; poshvine_commission: null; gift_card_title: string; gift_card_image: null | string; merchant: { id: string; name: string; website: null | string; logo_url: null | string; }; vouchers: VoucherData[]; is_sclp: boolean; tnc: '' | string; redemption_steps: string | ''; redemption_type: string[]; redemption_url: '' | string; }[]; unlocked_benefit_orders: []; }; }; export interface VoucherData { card_number: string; pin: string; denomination: number; code: string; validity: string; activation_url: null | string; } export type GiftcardSuccessfulRedemptionResponse = SuccessfulRedemptionBase; export type SuccessfulRedemptionBase = { data: T; unlocked_benefit_orders: { data: []; }; }; export type CampaignBenefitRedemptionSuccessfulModalData = { title?: string; description?: string; }; export type BenefitRedemptionSuccessfulModal = { merchantLogoUrl: string; merchantName: string; type: string; originalPrice?: string; offerPrice?: string; offerType?: string; voucher_code: string | number | null; voucher_pin: string | number | null; endDate: string | number | null; redemptionUrl: string; id?: string; offerTitle?: string; isNearby?: boolean; forCampaign?: boolean; image_url?: string; denomination?: number; quantity?: number; merchantId?: string; giftcards?: CampaignContentCartItem[]; } & CampaignBenefitRedemptionSuccessfulModalData; export type AddToCartResponse = { data: CampaignContentCartItem[]; campaign: { id: string; name: string; project_id: string; client_id: string; updated_at: string; created_at: string; approval_status: string; import_status: string; start_date: string; end_date: string; version_number: number; evaluation_variation: 'card'; run_status: 'live'; code: string; min_perk_value: number; external_version_number: null | number; }; error?: string; }; export type CartItem = { item_id: string; name: string; denomination: number; quantity: number; recipient_type: 'self'; item_type: 'GiftCard'; }; export type AddToCartRequest = { category: string; campaign_id: string; items: CartItem[]; }; export type MultipleGiftcardCreditRedemptionSuccessResponse = { data: { id: string; type: 'gift_card_booking'; attributes: { user_card_id: string; status: string; created_at: string; gift_card_orders: { gift_card_id: string; denomination: number | string; quantity: number; status: string; api_resp: null; recipient_info: unknown; order_no: null; provider_order_no: null; vouchers: []; redemption_ids: string[]; poshvine_commission: null; }[]; }; }; }; export type CampaignContentCartItem = { id?: string; type?: 'cart_item'; attributes: Partial<{ item_id: string; item_type: 'GiftCard'; denomination: number; quantity: number; recipient_type: 'self' | 'guest'; item_value: string; type: string; offerType?: 'voucher'; merchant: { merchant_logo: string; merchant_title: string; }; item: { id: string; id_v1: null | number; merchant_id: string; provider_id: string; country: null; country_code: null; title: string; description: string; card_type: 'digital'; price_type: AmountType; min_price: null | number; max_price: null | number; denominations: number[]; occasions: []; expiry_in_months: null | string; terms: string; redemption_steps: string; external_id: string; active: boolean; start_date: string; end_date: string; poshvine_commission: null | string; redemption_type: string[]; is_sclp: boolean; popular: boolean; created_at: string; updated_at: string; redemption_url: string | null; benefit_id: string; max_transaction_value: null | number; redeem_configs: unknown; image: string; }; details?: { gift_card_id: string; }; item_image: string; bundle: unknown; voucher_code?: null | string; voucher_pin?: null | string; endDate?: null | string; gift_card_id?: string; }>; }; export type CampaignContentResponseAttribute = { cart_value: number; items_count: number; user_id: string; user_card_id: string; client_id: string; bundle_id: null | string; cart_items: { data: CampaignContentCartItem[]; }; }; export type CampaignContentResponse = { data: { id: string; type: 'cart'; attributes: CampaignContentResponseAttribute; }; }; export type OfferBenefitRedemptionResponse = { [x: string]: { success: boolean; voucher_code: string | null; redemption_id: string; pin: string | null; }; }; export type ConfigDefaultItems = { styles?: OverrideStyleConfig; config?: Record; }; export type RedeemedVoucherCardConfig = { backdrop: ConfigDefaultItems; voucherCard: ConfigDefaultItems & { denominationItemsContainer?: { firstItem?: ConfigDefaultItems & { label?: ConfigDefaultItems; value?: ConfigDefaultItems; }; secondItem?: ConfigDefaultItems & { label?: ConfigDefaultItems; value?: ConfigDefaultItems; }; }; styles?: OverrideStyleConfig; container?: ConfigDefaultItems & Partial<{ header: ConfigDefaultItems & { image: ConfigDefaultItems & { imgURL: string; }; closeIcon?: ConfigDefaultItems; }; merchantName: ConfigDefaultItems; voucherItemsContainer: ConfigDefaultItems & { imageContainer: ConfigDefaultItems; }; offerTitle: ConfigDefaultItems; giftVoucherItemsContainer: ConfigDefaultItems & { imageContainer: ConfigDefaultItems; image: ConfigDefaultItems; merchantName: ConfigDefaultItems; denominationContainer: ConfigDefaultItems; }; voucherStub: ConfigDefaultItems & { codeContainer: ConfigDefaultItems & { label: ConfigDefaultItems; value: ConfigDefaultItems; }; }; voucherExpiry: ConfigDefaultItems & { label: string; date?: ConfigDefaultItems; }; tAndC: ConfigDefaultItems & { text: string; }; howToRedeem: ConfigDefaultItems; redeemButton: ConfigDefaultItems; giftCardVoucherSuccessContainer: ConfigDefaultItems & { successIcon: ConfigDefaultItems & { label?: string; imgURL: string; }; successText: ConfigDefaultItems & { label: string; }; successDescription: ConfigDefaultItems & { label: string; }; redemptionButtonContainer?: ConfigDefaultItems; redemptionButton?: ConfigDefaultItems; }; }>; }; checkRedemptionNavigationPath?: string[]; }; export type DetailsPageDisplayConfig = { pageContainer: ConfigDefaultItems; merchantImageContainer: ConfigDefaultItems; merchantImage: ConfigDefaultItems; merchantName: ConfigDefaultItems; benefitTitle: ConfigDefaultItems; knowMore: ConfigDefaultItems; claimButtonContainer: ConfigDefaultItems; claimButton: ConfigDefaultItems; detailsAndSelection?: ConfigDefaultItems; goToWebsite?: ConfigDefaultItems; accordionContainer?: ConfigDefaultItems; accordion?: ConfigDefaultItems; accordionTitle?: ConfigDefaultItems; accordionButtonContainer: ConfigDefaultItems; accordionIcon: ConfigDefaultItems; accordionContent: ConfigDefaultItems; backButtonAndHeadingContainer: ConfigDefaultItems; backButtonContainer: ConfigDefaultItems; backButtonImage: ConfigDefaultItems; backButton: ConfigDefaultItems & { label: string; }; navigationURLArrayPostRedemptionModalClose?: string[]; showOnlyCardNumber?: boolean; }; export type KnowMoreDisplayConfig = { pageContainer: ConfigDefaultItems; merchantImageContainer: ConfigDefaultItems; merchantImage: ConfigDefaultItems; merchantName: ConfigDefaultItems; benefitTitle: ConfigDefaultItems; backButton: ConfigDefaultItems; accordionContainer?: ConfigDefaultItems; accordion?: ConfigDefaultItems; accordionTitle?: ConfigDefaultItems; accordionButtonContainer: ConfigDefaultItems; accordionIcon: ConfigDefaultItems; accordionContent: ConfigDefaultItems; }; export declare const RedeemableOptionsMap: { readonly giftcard: "GiftCardRedemptionOption"; readonly membership: "MembershipRedemptionOption"; readonly offers: "OfferRedemptionOption"; }; export type RedeemableOptions = ValueOf; export type CampaignActiveIncentiveDetails = { data: { id: string; type: 'existing_perks_incentive'; attributes: { id: string; benefits_value: number; status: 'active' | string; }; }; }; export type ContextualCampaignDataItem = { id: string; type: 'campaign'; attributes: { name: string; client_id: string; project_id: string; approval_status: 'approved'; import_status: 'in_process'; start_date: string; end_date: string; version_number: number; run_status: 'live'; campaign_rules: { data: { id: string; type: 'campaign_rule'; attributes: { id: string; type: 'ProfileRule'; rule_details: { data: { id: string; type: 'profile_rule'; attributes: { id: string; criterion_join_type: string; profile_rule_criterion_groups: { data: [ { id: string; type: 'profile_rule_criterion_group'; attributes: { id: string; created_at: string; profile_rule_criterions: { data: [ { id: string; type: string; attributes: { id: string; created_at: string; rule_type: 'issuer_id'; rule_val: string[]; display_name: null; }; } ]; }; }; } ]; }; }; }; }; }; }[]; }; request_url_suffix: 'approved'; campaign_active_incentive: { data: { id: string; type: 'campaign_incentive'; attributes: { id: string; status: string; incentive_details: CampaignActiveIncentiveDetails; }; }[]; }; events: { data: { id: string; type: string; attributes: { id: string; name: string; named_event_type: null; event_rule_criterions: { data: { id: string; type: string; attributes: { id: string; type: 'SpendEventRuleCriterion'; created_at: string; modifiable: true; amount_quantity: number; display_name: string; quantity_variation: string; duration_type: 'previous_duration'; duration: 'last_calendar_month'; display_title: null; display_description: null; fields_metadata: { type: { required: boolean; displayed: boolean; allowed_type: string; allowed_values: 'SpendEventRuleCriterion'; }; amount_quantity: { required: boolean; displayed: boolean; allowed_type: 'integer'; allowed_values: string; }; quantity_variation: { required: true; displayed: true; allowed_type: 'dropdown'; allowed_values: 'min' | 'max' | 'range'[]; }; duration_type: { required: boolean; displayed: boolean; allowed_type: string; allowed_values: 'previous_duration'; }; duration: { required: boolean; displayed: boolean; allowed_type: 'dropdown'; allowed_values: 'last_calendar_month' | 'last_calendar_quarter' | 'last_calendar_year'[]; }; }; }; }[]; }; }; }[]; }; redeemable_options: RedeemableOptions[]; redemption_options: { data: { id: string; type: 'redemption_option'; attributes: { id: string; campaign_id: string; }; relationships: { eligiblity_renewals: { data: []; }; redeemable: { data: { id: string; type: 'gift_card_redemption_option'; }; }; }; }[]; included: { id: string; type: 'gift_card_redemption_option'; attributes: { id: string; gift_card_id: string; price_type: AmountType; min_price: null; max_price: null; denominations: number[]; }; }[]; }; eligibility_expiry_date: string; eligibility_renewals: { details: null | Record; eligibility_end_date: string; external_id: string; }[]; claimable: boolean; accumulated_rewards: { accumulated_points: { total_accumulated_rewards: number; claimed_rewards: number; }; user_points: Record; }; user_redemptions: { data: []; }; valid_bins: number[]; merchants_info: { GiftCardRedemptionOption: { id: string; name: string; logo_url: string; }[]; }; benefit_state: string; payment_enabled: boolean; amount_to_pay: number; campaign_eligible_user_id: string; campaign_eligiblity_id: string; referral_campaign: null | boolean; }; }; export type ContextualCampaignDataList = { data: ContextualCampaignDataItem[]; }; export type ContextualGlobalDisplayConfig = { global: { config: { benefitDefaultImage: string; }; style: OverrideStyleConfig; }; detailPage: Partial; redeemedVoucherCardConfig: Partial; knowMorePage: Partial; merchantListDisplay: Partial; giftTableConfigOverride: Partial; }; export declare const STATUS_TYPES: { readonly COMPLETE: "complete"; readonly BOOKING_CONFIRMED: "booking_confirmed"; readonly REFUNDED: "refunded"; readonly FAILED: "failed"; readonly INITIATED: "initiated"; readonly AWAITING: "awaiting"; readonly SUCCESS: "success"; readonly FAILURE: "failure"; }; export type PushToCartFormData = { category: 'GiftCard'; campaign_id: string; items: FormDataItem[]; }; export type FormDataItem = { item_id: string; name: string; denomination: number; quantity: number; recipient_type: string; item_type: 'GiftCard'; }; export type TotalQuantity = { totalQuantity: number; totalValue: number; }; export type GiftRange = { quantity: number; denomination: number; }[]; export type CardData = { id: string; name: string; valueNum: number[]; recipient_type: string; denominations: number[]; }; export type ClientBanners = { data: ClientBanner[]; }; export type ClientBanner = { id: string; type: string; attributes: { banner_image: string; banner_url: string; client_id: string; code: string; name: string; position: number; project_id: null | string; sub_tagline: string; tagline: string; }; }; export type MerchantListComponent = { creditsIcon: string | undefined; cardStylingDisabled: CardStyleOverrideConfig; cardStyling: CardStyleOverrideConfig; cardContent: { description: string; }; drawerStyling: OverrideStyleConfig; }; export type GiftTableConfigOverride = { container?: ConfigDefaultItems & { cartItemLabel: ConfigDefaultItems; cartItemValue: ConfigDefaultItems; bottomFooterButtonSection: ConfigDefaultItems & { button: ConfigDefaultItems; }; }; }; export type RedemptionDetailsOnNext = ((res: OfferRedemptionOption) => void) | ((res: MembershipRedemptionOption) => void) | ((res: GiftcardRedemptionOption) => void); export type PostClaimRedemptionOnNext = ((res: OfferBenefitRedemptionResponse) => void) | ((res: MembershipRedemptionSuccessful) => void) | ((res: GiftcardSuccessfulRedemptionResponse) => void); export type DenomDataProcessor = { valueNum: number[]; selectedValues: TotalQuantity; isIncrement: boolean; denomination: number; }; export type OpenGiftEvent = { cartItems: CampaignContentCartItem[]; res: MultipleGiftcardCreditRedemptionSuccessResponse; }; export type AllRedemptionOptions = GiftcardRedemptionOption | MembershipRedemptionOption | OfferRedemptionOption; export type MembershipInclusionTypes = { id: string; type: string | 'merchant'; attributes: { id_v1: null | string; company_id: null | string; name: string; description: string; website: string; external_id: null | string; created_at: string; updated_at: string; code: string; logo_url: string; }; };