export interface StripeConnectStatusResponse {
    has_account: boolean;
    account_id: string;
    onboarding_complete: boolean;
    charges_enabled: boolean;
    payouts_enabled: boolean;
    is_ready_for_payments: boolean;
    commission_percent: {
        mentor: number;
        course: number;
    };
}
export interface StripeConnectOnboardArgs {
    platform_key: string;
    return_url: string;
    refresh_url: string;
    business_type: string;
}
export interface StripeConnectOnboardResponse {
    account_id: string;
    onboarding_url: string;
}
export interface StripeConnectDashboardResponse {
    dashboard_url: string;
}
export interface PaywallPrice {
    id: string;
    name: string;
    description: string;
    amount: number;
    currency: string;
    interval: string;
    is_active: boolean;
    features: string[];
    sort_order: number;
    stripe_price_id: string;
}
export interface PaywallConfigResponse {
    item_type: string;
    item_id: string;
    item_name: string;
    is_enabled: boolean;
    allow_free_tier: boolean;
    trial_period_days: number;
    grandfathering_strategy: string;
    stripe_product_id: string | null;
    paywall_enabled_at: string | null;
    prices: PaywallPrice[];
}
export interface PaywallItemParams {
    platform_key: string;
    item_type: string;
    item_id: string;
}
export interface EnablePaywallArgs extends PaywallItemParams {
    is_enabled: boolean;
    allow_free_tier: boolean;
    trial_period_days: number;
    grandfathering_strategy: 'free_forever' | 'require_subscription';
}
export interface CreatePriceArgs extends PaywallItemParams {
    name: string;
    amount: number;
    currency?: string;
    interval?: 'month' | 'year' | 'one_time';
    features?: string[];
    description?: string;
    is_active?: boolean;
    sort_order?: number;
}
export interface UpdatePriceArgs extends PaywallItemParams {
    price_unique_id: string;
    name?: string;
    amount?: number;
    currency?: string;
    interval?: 'month' | 'year' | 'one_time';
    features?: string[];
    description?: string;
    is_active?: boolean;
    sort_order?: number;
}
export interface DeletePriceArgs extends PaywallItemParams {
    price_unique_id: string;
}
export interface PublicPricingResponse {
    item_type: string;
    item_id: string;
    item_name: string;
    is_paywalled: boolean;
    allow_free_tier: boolean;
    trial_period_days: number;
    prices: {
        unique_id: string;
        name: string;
        amount: number;
        currency: string;
        interval: string;
        is_active: boolean;
        features: string[];
    }[];
}
export interface AccessCheckResponse {
    has_access: boolean;
    item_type: string;
    item_id: string;
    reason: string;
    requires_payment: boolean;
    pricing_available: boolean;
    pricing: {
        item_name: string;
        prices: PaywallPrice[];
    } | null;
    subscription: SubscriptionObject | null;
}
export interface UnscopedAccessCheckParams {
    item_type: string;
    item_id: string;
    platform_key: string;
}
export interface CheckoutArgs extends PaywallItemParams {
    price_id: string;
    success_url: string;
    cancel_url: string;
}
export interface GuestCheckoutArgs extends PaywallItemParams {
    email: string;
    price_id: string;
    success_url: string;
    cancel_url: string;
}
export interface CheckoutResponse {
    checkout_url: string;
    session_id: string;
}
export interface CancelSubscriptionArgs extends PaywallItemParams {
    return_url?: string;
}
export interface CancelSubscriptionResponse {
    unique_id?: string;
    status?: string;
    canceled_at?: string;
    portal_url?: string;
}
export interface SubscriptionPrice {
    id: string;
    name: string;
    description: string;
    amount: string;
    currency: string;
    interval: string;
    stripe_price_id: string;
    is_active: boolean;
    features: string[];
    remark: string;
    sort_order: number;
    created_at: string;
    updated_at: string;
}
export interface SubscriptionObject {
    unique_id: string;
    user_id?: number;
    username?: string;
    email?: string;
    item_type: string;
    item_id: string;
    item_name: string;
    status: string;
    price: SubscriptionPrice;
    current_period_end: string;
    cancel_at_period_end: boolean;
    is_grandfathered: boolean;
    created_at: string;
    updated_at?: string;
}
export interface MySubscriptionsParams {
    platform_key: string;
    status?: string;
    item_type?: string;
    item_name?: string;
    page?: number;
    page_size?: number;
}
export interface MySubscriptionsResponse {
    count: number;
    next_page: number | null;
    previous_page: number | null;
    results: SubscriptionObject[];
}
export interface ListPaywallsParams {
    platform_key: string;
    item_type?: string;
    is_enabled?: boolean;
    page?: number;
    page_size?: number;
}
export interface ListPaywallsResponse {
    count: number;
    next_page: number | null;
    previous_page: number | null;
    results: PaywallConfigResponse[];
}
export interface ListSubscribersParams {
    platform_key: string;
    status?: string;
    item_type?: string;
    page?: number;
    page_size?: number;
}
export interface ListSubscribersResponse {
    count: number;
    next_page: number | null;
    previous_page: number | null;
    results: (SubscriptionObject & {
        user: unknown;
    })[];
}
export interface ListItemSubscribersParams extends PaywallItemParams {
    status?: string;
}
export interface RevenueResponse {
    sales_volume: number;
    sales_count: number;
    currency: string;
}
