declare namespace IRecurring {
    interface CreateRequest {
        amount: string;
        cardNumber: string;
        cardName?: string;
        expiryMonth: string;
        expiryYear: string;
        cvv: string;
        callbackUrl: string;
        billingCycle: string;
        subscriptionAmount?: string;
        billingPeriod: string;
        country: string;
        currency: string;
        startDate: string;
        paymentReference: string;
        email: string;
        planId?: string;
        mobileNumber?: string;
        customerId?: string;
        productDescription?: string | null;
        productId?: string | null;
        publicKey?: string;
    }
    interface ChargeRequest {
        amount: string;
        authorizationCode: string;
        currency: string;
        email: string;
        paymentReference: string;
        publicKey?: string;
    }
    interface UpdateRequest {
        amount: string;
        mobileNumber: string;
        country: string;
        currency: string;
        status: string;
        publicKey?: string;
    }
    interface Response {
        code: string;
        payments: {};
        message: string;
    }
    interface UpdateResponse {
        code: string;
        subscriptions: {};
        message: string;
    }
    interface GetSubscriptionRequest {
        customerId?: string;
        query?: string;
        publicKey?: string;
    }
    interface GetSubscriptionsResponse {
        code: string;
        subscriptions: Array<{
            publicKey: string;
            amount: string;
            country: string;
            customerId: string;
            cardName: string;
            cardNumber: string;
            plan: string;
            status: string;
            billingId: string;
            authorizationCode: string;
            startDate: string;
            createdAt: number;
        }>;
        message?: string;
    }
    interface SubscriptionStatusRequest {
        billingId: string;
        query?: string;
        publicKey?: string;
    }
    interface GetSubscriptionStatusResponse {
        code: string;
        subscriptions: {
            publicKey: string;
            amount: string;
            country: string;
            customerId: string;
            cardName: string;
            cardNumber: string;
            plan: string;
            status: string;
            billingId: string;
            authorizationCode: string;
            startDate: string;
            createdAt: number;
        };
        message?: string;
    }
}
