import { Cart, CartPagedQueryResponse, OrderPagedQueryResponse, Payment, PaymentDraft, PaymentPagedQueryResponse, PaymentUpdateAction, PaymentMethod, PaymentMethodDraft, PaymentMethodPagedQueryResponse, PaymentMethodUpdateAction, Type, TypeDraft, TypeUpdate } from '@commercetools/platform-sdk'; import { ByProjectKeyRequestBuilder } from '@commercetools/platform-sdk/dist/declarations/src/generated/client/by-project-key-request-builder'; export type CommercetoolsClient = ByProjectKeyRequestBuilder; export type CommercetoolsSessionClient = ByProjectKeyRequestBuilder; export interface APIOpts { client: CommercetoolsClient; } export type UpdateResource = { id: string; version: number; }; export type AddPayment = { resource: UpdateResource; paymentId: string; }; export type UpdatePayment = { resource: UpdateResource; actions: PaymentUpdateAction[]; }; export type OauthToken = { accessToken: string; expiresIn: number; tokenType: string; scope: string; refreshToken?: string; }; export type UpdatePaymentMethod = { resource: UpdateResource; actions: PaymentMethodUpdateAction[]; }; export type FindPaymentMethods = { queryString: string; }; export type GetPaymentMethod = { id: string; }; export type DeletePaymentMethod = { id: string; version: number; }; export type CheckIfExistsByPredicate = { queryString: string; }; export interface AuthorizationAPI { getToken(): Promise; } export interface CartAPI { getCartById(id: string): Promise; find(queryPredicate: string): Promise; addPayment(opts: AddPayment): Promise; } export interface PaymentAPI { getPaymentById(id: string): Promise; find(queryPredicate: string): Promise; createPayment(paymentDraft: PaymentDraft): Promise; updatePayment(opts: UpdatePayment): Promise; } export interface PaymentMethodAPI { find(opts: FindPaymentMethods): Promise; get(opts: GetPaymentMethod): Promise; create(draft: PaymentMethodDraft): Promise; update(opts: UpdatePaymentMethod): Promise; delete(opts: DeletePaymentMethod): Promise; checkIfExistsByPredicate(opts: CheckIfExistsByPredicate): Promise; } export interface OrderAPI { find(queryPredicate: string): Promise; } export interface CustomTypeAPI { getByKey(key: string): Promise; existsByKey(key: string): Promise; create(draft: TypeDraft): Promise; update(key: string, update: TypeUpdate): Promise; } export interface CommercetoolsAPI { cart: CartAPI; payment: PaymentAPI; order: OrderAPI; paymentMethod: PaymentMethodAPI; customType: CustomTypeAPI; }