export interface IPaddleCheckoutData<TPassthrough = null> {
  checkout: {
    created_at: string;
    completed: boolean;
    id: string;
    coupon: {
      coupon_code?: string;
    };
    passthrough?: TPassthrough;
    prices: {
      customer: {
        currency: string;
        unit: string;
        unit_tax: string;
        total: string;
        total_tax: string;
        items: Array<{
          checkout_product_id: number;
          product_id: number;
          name: string;
          custom_message: string;
          quantity: number;
          allow_quantity: false;
          icon_url: string;
          min_quantity: number;
          max_quantity: number;
          currency: string;
          unit_price: {
            net: number;
            gross: number;
            net_discount: number;
            gross_discount: number;
            net_after_discount: number;
            gross_after_discount: number;
            tax: number;
            tax_after_discount: number;
          };
          line_price: {
            net: number;
            gross: number;
            net_discount: number;
            gross_discount: number;
            net_after_discount: number;
            gross_after_discount: number;
            tax: number;
            tax_after_discount: number;
          };
          discounts: [];
          /**
           * factorised, not percentage, so looks like 0.19 for Germany.
           */
          tax_rate: number;
          recurring: {
            period: string;
            interval: number;
            trial_days: number;
            currency: string;
            unit_price: {
              net: number;
              gross: number;
              net_discount: number;
              gross_discount: number;
              net_after_discount: number;
              gross_after_discount: number;
              tax: number;
              tax_after_discount: number;
            };
            line_price: {
              net: number;
              gross: number;
              net_discount: number;
              gross_discount: number;
              net_after_discount: number;
              gross_after_discount: number;
              tax: number;
              tax_after_discount: number;
            };
            discounts: [];
            tax_rate: number;
          };
        }>;
      };
      vendor: {
        currency: string;
        unit: string;
        unit_tax: string;
        total: string;
        total_tax: string;
        items: [
          {
            checkout_product_id: number;
            product_id: number;
            name: string;
            custom_message: string;
            quantity: number;
            allow_quantity: false;
            icon_url: string;
            min_quantity: number;
            max_quantity: number;
            currency: string;
            unit_price: {
              net: number;
              gross: number;
              net_discount: number;
              gross_discount: number;
              net_after_discount: number;
              gross_after_discount: number;
              tax: number;
              tax_after_discount: number;
            };
            line_price: {
              net: number;
              gross: number;
              net_discount: number;
              gross_discount: number;
              net_after_discount: number;
              gross_after_discount: number;
              tax: number;
              tax_after_discount: number;
            };
            discounts: [];
            tax_rate: number;
            recurring: {
              period: string;
              interval: number;
              trial_days: number;
              currency: string;
              unit_price: {
                net: number;
                gross: number;
                net_discount: number;
                gross_discount: number;
                net_after_discount: number;
                gross_after_discount: number;
                tax: number;
                tax_after_discount: number;
              };
              line_price: {
                net: number;
                gross: number;
                net_discount: number;
                gross_discount: number;
                net_after_discount: number;
                gross_after_discount: number;
                tax: number;
                tax_after_discount: number;
              };
              discounts: [];
              tax_rate: number;
            };
          }
        ];
      };
    };
    redirect_url: null;
    test_variant: 'newCheckout';
    recurring_prices: {
      customer: {
        currency: string;
        unit: string;
        unit_tax: string;
        total: string;
        total_tax: string;
        items: [
          {
            checkout_product_id: number;
            product_id: number;
            name: string;
            custom_message: string;
            quantity: number;
            allow_quantity: false;
            icon_url: string;
            min_quantity: number;
            max_quantity: number;
            currency: string;
            unit_price: {
              net: number;
              gross: number;
              net_discount: number;
              gross_discount: number;
              net_after_discount: number;
              gross_after_discount: number;
              tax: number;
              tax_after_discount: number;
            };
            line_price: {
              net: number;
              gross: number;
              net_discount: number;
              gross_discount: number;
              net_after_discount: number;
              gross_after_discount: number;
              tax: number;
              tax_after_discount: number;
            };
            discounts: [];
            tax_rate: number;
            recurring: {
              period: string;
              interval: number;
              trial_days: number;
              currency: string;
              unit_price: {
                net: number;
                gross: number;
                net_discount: number;
                gross_discount: number;
                net_after_discount: number;
                gross_after_discount: number;
                tax: number;
                tax_after_discount: number;
              };
              line_price: {
                net: number;
                gross: number;
                net_discount: number;
                gross_discount: number;
                net_after_discount: number;
                gross_after_discount: number;
                tax: number;
                tax_after_discount: number;
              };
              discounts: [];
              tax_rate: number;
            };
          }
        ];
      };
      interval: {
        length: number;
        type: string;
      };
      vendor: {
        currency: string;
        unit: string;
        unit_tax: string;
        total: string;
        total_tax: string;
        items: [
          {
            checkout_product_id: number;
            product_id: number;
            name: string;
            custom_message: string;
            quantity: number;
            allow_quantity: false;
            icon_url: string;
            min_quantity: number;
            max_quantity: number;
            currency: string;
            unit_price: {
              net: number;
              gross: number;
              net_discount: number;
              gross_discount: number;
              net_after_discount: number;
              gross_after_discount: number;
              tax: number;
              tax_after_discount: number;
            };
            line_price: {
              net: number;
              gross: number;
              net_discount: number;
              gross_discount: number;
              net_after_discount: number;
              gross_after_discount: number;
              tax: number;
              tax_after_discount: number;
            };
            discounts: [];
            tax_rate: number;
            recurring: {
              period: string;
              interval: number;
              trial_days: number;
              currency: string;
              unit_price: {
                net: number;
                gross: number;
                net_discount: number;
                gross_discount: number;
                net_after_discount: number;
                gross_after_discount: number;
                tax: number;
                tax_after_discount: number;
              };
              line_price: {
                net: number;
                gross: number;
                net_discount: number;
                gross_discount: number;
                net_after_discount: number;
                gross_after_discount: number;
                tax: number;
                tax_after_discount: number;
              };
              discounts: [];
              tax_rate: number;
            };
          }
        ];
      };
    };
  };
  product: {
    quantity: number;
    id: number;
    name: string;
  };
  user: {
    id: string;
    email: string;
    country: string;
  };
}
