← back to Wine Finder Next

lib/types/affiliate.ts

45 lines

// Affiliate Partner Types
export type PartnerType = 'marketplace' | 'club' | 'retailer' | 'gift' | 'auction';

export interface AffiliatePartner {
  id: string;
  name: string;
  type: PartnerType;
  baseUrl: string;
  affiliateParam: string;
  affiliateId?: string;
  deeplinkPattern?: string;
  commissionRate?: string;
  cookieDuration?: number; // in days
  enabled: boolean;
  logo?: string;
  description?: string;
  signupUrl?: string;
  network?: 'CJ' | 'ShareASale' | 'Impact' | 'Rakuten' | 'Direct';
  priority?: number; // Higher priority = shown first
}

export interface AffiliateClick {
  id?: string;
  timestamp: string;
  wineId?: string;
  wineName: string;
  partnerId: string;
  partnerName: string;
  affiliateUrl: string;
  userAgent?: string;
  referrer?: string;
  ipAddress?: string;
}

export interface AffiliateStats {
  partnerId: string;
  partnerName: string;
  totalClicks: number;
  clicksToday: number;
  clicksThisWeek: number;
  clicksThisMonth: number;
  conversionRate?: number;
  estimatedCommissions?: number;
}