import { CustomerResource } from '../customer/types.cjs';
import { PaymentIntentResource } from '../payment-intent/types.cjs';
import { StatementLineResource } from '../statement-line-item/types.cjs';
import { AvailablePaymentMethods } from '../types.cjs';

type CreateBillingStatementPayload = {
    customer_id: string;
    description?: string;
    billing_details_collection?: string;
    payment_settings: {
        payment_methods: AvailablePaymentMethods;
    };
    metadata?: Record<string, string>;
};
type UpdateBillingStatementPayload = Partial<Omit<CreateBillingStatementPayload, "billing_details_collection">> & {
    id: string;
};
type BillingStatementResource = {
    id: string;
    resource: string;
    amount: number;
    currency: string;
    customer_id: string;
    description: string | null;
    status: string;
    line_items: StatementLineResource[];
    livemode: boolean;
    url: string;
    customer: Pick<CustomerResource, "id" | "name" | "email">;
    payment_intent: PaymentIntentResource;
    metadata: Record<string, string> | null;
    payment_settings: {
        payment_methods: AvailablePaymentMethods;
    };
    billing_details_collection: string;
    due_at: number;
    created_at: number;
    updated_at: number;
};
type BillingStatementSearchParams = {
    limit?: number;
    before?: string;
    after?: string;
};

export type { BillingStatementResource, BillingStatementSearchParams, CreateBillingStatementPayload, UpdateBillingStatementPayload };
