import type { BillingInterval } from '../plans/types';
export type SubscriptionStatus = 'incomplete' | 'trialing' | 'active' | 'past_due' | 'canceled' | 'unpaid';
export interface SubscriptionRecord {
    id: string;
    userId: string;
    customerId: string;
    planId: string;
    interval: BillingInterval;
    status: SubscriptionStatus;
    currentPeriodEnd: string;
    cancelAtPeriodEnd: boolean;
    trialEnds_at?: string | null;
    raw?: Record<string, unknown>;
}
export interface SubscriptionRepository {
    upsert(record: SubscriptionRecord): Promise<void>;
    getByUserId(userId: string): Promise<SubscriptionRecord | null>;
    getBySubscriptionId(subscriptionId: string): Promise<SubscriptionRecord | null>;
    removeBySubscriptionId(subscriptionId: string): Promise<void>;
}
export declare class InMemorySubscriptionRepository implements SubscriptionRepository {
    private byUser;
    private byId;
    upsert(record: SubscriptionRecord): Promise<void>;
    getByUserId(userId: string): Promise<SubscriptionRecord | null>;
    getBySubscriptionId(subscriptionId: string): Promise<SubscriptionRecord | null>;
    removeBySubscriptionId(subscriptionId: string): Promise<void>;
}
