import { PaymentMethodType } from "@bitwarden/common/billing/enums"; import { ExpandedTaxInfoUpdateRequest } from "@bitwarden/common/billing/models/request/expanded-tax-info-update.request"; import { TokenizedPaymentMethodRequest } from "@bitwarden/common/billing/models/request/tokenized-payment-method.request"; import { VerifyBankAccountRequest } from "@bitwarden/common/billing/models/request/verify-bank-account.request"; import { InvoicesResponse } from "@bitwarden/common/billing/models/response/invoices.response"; import { PaymentInformationResponse } from "@bitwarden/common/billing/models/response/payment-information.response"; import { SubscriptionCancellationRequest } from "../../billing/models/request/subscription-cancellation.request"; import { OrganizationBillingMetadataResponse } from "../../billing/models/response/organization-billing-metadata.response"; import { OrganizationBillingStatusResponse } from "../../billing/models/response/organization-billing-status.response"; import { OrganizationSubscriptionResponse } from "../../billing/models/response/organization-subscription.response"; import { PlanResponse } from "../../billing/models/response/plan.response"; import { ListResponse } from "../../models/response/list.response"; import { CreateClientOrganizationRequest } from "../models/request/create-client-organization.request"; import { UpdateClientOrganizationRequest } from "../models/request/update-client-organization.request"; import { ProviderSubscriptionResponse } from "../models/response/provider-subscription-response"; export abstract class BillingApiServiceAbstraction { cancelOrganizationSubscription: ( organizationId: string, request: SubscriptionCancellationRequest, ) => Promise; cancelPremiumUserSubscription: (request: SubscriptionCancellationRequest) => Promise; createClientOrganization: ( providerId: string, request: CreateClientOrganizationRequest, ) => Promise; createSetupIntent: (paymentMethodType: PaymentMethodType) => Promise; getBillingStatus: (id: string) => Promise; getOrganizationBillingMetadata: ( organizationId: string, ) => Promise; getOrganizationSubscription: ( organizationId: string, ) => Promise; getPlans: () => Promise>; getProviderClientInvoiceReport: (providerId: string, invoiceId: string) => Promise; getProviderInvoices: (providerId: string) => Promise; getProviderPaymentInformation: (providerId: string) => Promise; getProviderSubscription: (providerId: string) => Promise; updateClientOrganization: ( providerId: string, organizationId: string, request: UpdateClientOrganizationRequest, ) => Promise; updateProviderPaymentMethod: ( providerId: string, request: TokenizedPaymentMethodRequest, ) => Promise; updateProviderTaxInformation: ( providerId: string, request: ExpandedTaxInfoUpdateRequest, ) => Promise; verifyProviderBankAccount: ( providerId: string, request: VerifyBankAccountRequest, ) => Promise; }