ok / src /types.ts
luguog's picture
Upload folder using huggingface_hub
b5662ef verified
Raw
History Blame Contribute Delete
2.15 kB
import { randomUUID } from "node:crypto";
export type EventType =
| "click"
| "booking"
| "offer_presented"
| "payment_succeeded"
| "payment_failed"
| "refund"
| "dispute"
| "fulfillment_completed";
export type ConversionState =
| "traffic"
| "pipeline"
| "revenue"
| "retained"
| "lost";
export interface CommercialEvent {
id: string;
type: EventType;
timestamp: string;
campaignId?: string;
visitorId?: string;
sessionId?: string;
linkId?: string;
bookingId?: string;
offerId?: string;
customerId?: string;
paymentId?: string;
amountCents?: number;
currency?: string;
refundCents?: number;
fulfillmentCostCents?: number;
routeId?: string;
source: string;
raw: Record<string, unknown>;
}
export interface Visitor {
id: string;
firstSeen: string;
lastSeen: string;
clickCount: number;
bookingCount: number;
paymentCount: number;
totalRevenueCents: number;
totalRefundCents: number;
}
export interface Customer {
id: string;
stripeCustomerId?: string;
calendlyInviteeId?: string;
visitorId?: string;
email?: string;
name?: string;
totalRevenueCents: number;
totalRefundCents: number;
repeatPurchaseCount: number;
}
export interface Offer {
id: string;
campaignId: string;
name: string;
priceCents: number;
currency: string;
bookingType?: string;
fulfillmentCostCents: number;
refundProbability: number;
active: boolean;
metadata: Record<string, unknown>;
}
export interface Route {
id: string;
campaignId: string;
offerId: string;
linkId: string;
bookingType?: string;
expectedBookingProbability: number;
expectedPaymentProbability: number;
expectedPaymentCents: number;
expectedRefundProbability: number;
expectedFulfillmentCostCents: number;
presentationCount: number;
bookingCount: number;
paymentCount: number;
revenueCents: number;
refundCents: number;
retainedCents: number;
}
export interface LedgerEntry {
event: CommercialEvent;
conversionState: ConversionState;
attributedRouteId?: string;
attributedOfferId?: string;
attributedCustomerId?: string;
retainedCents?: number;
}