import { Modules } from '@medusajs/utils';
import type { IPrintfulService, PrintfulOptions } from '../../../types';
import { CalculateShippingRatesData, Order, PackingSlip, SyncProduct, SyncVariant } from '../../../core';
import type { IFulfillmentModuleService, IProductModuleService, Logger, MedusaContainer, OrderDTO, ProductDTO } from '@medusajs/types';
type InjectedDependencies = {
    logger: Logger;
    [Modules.PRODUCT]: IProductModuleService;
    [Modules.FULFILLMENT]: IFulfillmentModuleService;
};
type Options = Pick<PrintfulOptions, 'confirmOrder' | 'logo_url'>;
export default class PrintFulService implements IPrintfulService {
    protected readonly logger_: Logger;
    protected readonly fulfillmentService: IFulfillmentModuleService;
    protected readonly productModuleService: IProductModuleService;
    private readonly options;
    constructor({ logger, fulfillment, product }: InjectedDependencies, options: Options);
    protected get confirmOrder(): boolean;
    getShippingRates(data: CalculateShippingRatesData['body']): Promise<import("../../../core").ShippingInfo[]>;
    createOrder(order: OrderDTO): Promise<Order>;
    confirmOrderById(orderId: string | number): Promise<Order>;
    cancelOrder(orderId: string | number): Promise<Order>;
    deleteMedusaProduct(productOrProductId: string, container: MedusaContainer): Promise<void>;
    getSyncProduct(id: number): Promise<{
        sync_product?: SyncProduct;
        sync_variants?: Array<SyncVariant>;
    }>;
    createOrUpdateProduct(productId: number, container: MedusaContainer): Promise<void>;
    deleteProduct(productId: number, container: MedusaContainer): Promise<void>;
    syncProducts(container: MedusaContainer): Promise<void>;
    protected buildProductId(productId: number): string;
    protected getProductByPrintfulProductId(productId: number): Promise<ProductDTO>;
    protected getPackingSlip(order: OrderDTO): Promise<PackingSlip>;
    private syncProduct;
    private getPrintfulTag;
}
export {};
