type ApiRequestOptions = {
    readonly method: 'GET' | 'PUT' | 'POST' | 'DELETE' | 'OPTIONS' | 'HEAD' | 'PATCH';
    readonly url: string;
    readonly path?: Record<string, any>;
    readonly cookies?: Record<string, any>;
    readonly headers?: Record<string, any>;
    readonly query?: Record<string, any>;
    readonly formData?: Record<string, any>;
    readonly body?: any;
    readonly mediaType?: string;
    readonly responseHeader?: string;
    readonly errors?: Record<number, string>;
};

declare class CancelError extends Error {
    constructor(message: string);
    get isCancelled(): boolean;
}
interface OnCancel {
    readonly isResolved: boolean;
    readonly isRejected: boolean;
    readonly isCancelled: boolean;
    (cancelHandler: () => void): void;
}
declare class CancelablePromise<T> implements Promise<T> {
    #private;
    constructor(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void, onCancel: OnCancel) => void);
    get [Symbol.toStringTag](): string;
    then<TResult1 = T, TResult2 = never>(onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null, onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
    catch<TResult = never>(onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<T | TResult>;
    finally(onFinally?: (() => void) | null): Promise<T>;
    cancel(): void;
    get isCancelled(): boolean;
}

type Resolver<T> = (options: ApiRequestOptions) => Promise<T>;
type Headers = Record<string, string>;
type OpenAPIConfig = {
    BASE: string;
    VERSION: string;
    WITH_CREDENTIALS: boolean;
    CREDENTIALS: 'include' | 'omit' | 'same-origin';
    TOKEN?: string | Resolver<string> | undefined;
    USERNAME?: string | Resolver<string> | undefined;
    PASSWORD?: string | Resolver<string> | undefined;
    HEADERS?: Headers | Resolver<Headers> | undefined;
    ENCODE_PATH?: ((path: string) => string) | undefined;
};
declare const OpenAPI: OpenAPIConfig;

declare abstract class BaseHttpRequest {
    readonly config: OpenAPIConfig;
    constructor(config: OpenAPIConfig);
    abstract request<T>(options: ApiRequestOptions): CancelablePromise<T>;
}

declare class ApprovalSheetsV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Retrieve a list of approval sheets
     * Retrieve a list of approval sheets confirming suggested changes to files of on hold orders.
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param orderId Order ID.
     * @returns any OK
     * @throws ApiError
     */
    getApprovalSheets(xPfStoreId?: string, orderId?: number): CancelablePromise<any>;
}

declare enum TechniqueEnum {
    DTG = "dtg",
    DIGITAL = "digital",
    CUT_SEW = "cut-sew",
    UV = "uv",
    EMBROIDERY = "embroidery",
    SUBLIMATION = "sublimation",
    DTFILM = "dtfilm"
}

declare class CatalogV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Retrieve a list of catalog products
     * This endpoint retrieves a list of the products available in Printful's catalog. The list is paginated and can be filtered using various filters. The information returned includes details on how each product can be designed, such as the available placements, techniques, and additional options.
     * For a visual representation of the design data, please see the following diagram:
     * [<img src="images/catalog/design_data_diagram.png#center" width="700"/>](images/catalog/design_data_diagram.png)
     *
     * @param categoryIds One or more category IDs to return only products in those categories. The IDs can be found in the response of the
     * operation _[Get Categories](#operation/getCategories)_.
     *
     * @param colors One or more color names to return only products with variants of one the those colors.
     *
     * @param limit The number of results to return per page.
     * @param _new If true only new Products will be returned.
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @param placements One or more identifiers of a placement to return only products with variants that have that placement. The complete list of placements can be found [here](https://developers.printful.com/docs/#section/Placements).
     * @param sellingRegionName Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
     * @param sortDirection This parameter only is used if sort_type is also present and it changes the order of the returned products.
     * The exact meaning varies depending on the value of `sort_type`:
     * * `sort_type=new`
     * * ascending sorts from newest to oldest.
     * * descending sorts from oldest to newest.
     * * `sort_type=rating`
     * * ascending from lowest to highest rated.
     * * descending from highest to lowest rated.
     * * `sort_type=price`
     * * ascending from lowest to highest price.
     * * descending from highest to lowest price.
     * * `sort_type=bestseller`
     * * ascending from non bestsellers to bestsellers.
     * * descending from bestsellers to non bestsellers.
     *
     * @param sortType The sorting strategy to use when sorting the result. When it's not present, no specific order is guaranteed.
     *
     * @param techniques One or more techniques to return only products with variants that can be printed using one of the techniques.
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getProducts(categoryIds?: Array<number>, colors?: Array<string>, limit?: number, _new?: boolean, offset?: number, placements?: Array<string>, sellingRegionName?: 'worldwide' | 'north_america' | 'canada' | 'europe' | 'spain' | 'latvia' | 'uk' | 'france' | 'germany' | 'australia' | 'japan' | 'new_zealand' | 'italy' | 'brazil' | 'southeast_asia' | 'republic_of_korea' | 'english_speaking_regions' | 'all', sortDirection?: 'ascending' | 'descending', sortType?: 'new' | 'rating' | 'price' | 'bestseller', techniques?: Array<TechniqueEnum>, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve a single catalog product
     * Returns information about a single specified catalog product. [See catalog product](#tag/Catalog-v2/What-is-a-catalog-product)
     *
     * @param id Product ID.
     * @param sellingRegionName Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getProductById(id: number, sellingRegionName?: 'worldwide' | 'north_america' | 'canada' | 'europe' | 'spain' | 'latvia' | 'uk' | 'france' | 'germany' | 'australia' | 'japan' | 'new_zealand' | 'italy' | 'brazil' | 'southeast_asia' | 'republic_of_korea' | 'english_speaking_regions' | 'all', xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve information about specific catalog variant
     * Returns information about single specified catalog variant. [See catalog variant](#tag/Catalog-v2/What-is-a-catalog-variant)
     *
     * @param id Variant ID
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getVariantById(id: number, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve information about catalog product variants
     * Returns information about all catalog variants associated with the specified
     * catalog product. [See catalog variant](#tag/Catalog-v2/What-is-a-catalog-variant)
     *
     * @param id Product ID.
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getProductVariantsById(id: number, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve a list of catalog categories
     * Returns list of all categories that are present in the catalog. The categories specify the type of the product that is associated with it. For example, the category "Men’s T-shirts" indicates that the product is a subgroup of T-shirts specifically targeted at Men.
     * Categories can be used to filter the product list by specific tags [See categories_ids](#operation/getProducts)
     *
     * @returns any OK
     * @throws ApiError
     */
    getCategories(): CancelablePromise<any>;
    /**
     * Retrieve information about specific category
     * Returns information about a specific catalog category. The categories specify the type of the product that is associated with it. For example, the category "Men’s T-shirts" indicates that the product is a subgroup of T-shirts specifically targeted at Men.
     * Categories can be used to filter the product list by specific tags [See categories_ids](#operation/getProducts)
     *
     * @param id Category ID
     * @returns any OK
     * @throws ApiError
     */
    getCategoryById(id: number): CancelablePromise<any>;
    /**
     * Retrieve a list of catalog product categories
     * To retrieve information about a particular products categories, use this feature. It returns details about the catalog categories associated with the catalog product. Categories help identify the type of product associated with them. For instance, the category "Men's T-shirts" denotes that the product is a subgroup of T-shirts intended for men.
     *
     * @param id Product ID.
     * @param sellingRegionName Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
     * @returns any OK
     * @throws ApiError
     */
    getCategoriesByProductId(id: number, sellingRegionName?: 'worldwide' | 'north_america' | 'canada' | 'europe' | 'spain' | 'latvia' | 'uk' | 'france' | 'germany' | 'australia' | 'japan' | 'new_zealand' | 'italy' | 'brazil' | 'southeast_asia' | 'republic_of_korea' | 'english_speaking_regions' | 'all'): CancelablePromise<any>;
    /**
     * Retrieve size guide for a catalog product
     * Returns information about the size guide for a specific product.
     * @param id Product ID.
     * @param unit A comma-separated list of measurement unit in which size tables are to be returned (`inches` or `cm`).
     * The default value is determined based on the locale country. The inches are used for United States, Liberia
     * and Myanmar, for other countries the unit defaults to centimeters.
     *
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getProductSizeGuideById(id: number, unit?: string, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve catalog product prices
     *
     * Calculates prices for specific catalog product based on selling region and specified currency. Calculations also include Store discounts. Selling region is used to specify product production currency, that is the price that the product is natively manufactured in. Different selling regions might affect the overall price amount. Currency parameter is used only to define the currency that the prices will be displayed in.
     *
     * For more information on product pricing please refer to the information provided at https://www.printful.com/pricing
     * <div class="alert alert-info" style="word-wrap: break-word; padding: 16px; border-radius: 0; cursor: default; color: #31708f; background-color: #d9edf7; border-color: #bce8f1;">
     * <p>
     * When developing against either API be sure to inform your customers that a placement will be included in the price of the product. If one placement is provided that placement will be included in the price, if multiple are provided the included placement will generally be the placement that comes earliest in the list of placements at `/v2/catalog-products/71` (though the discount will generally be up to the price of the first placement in that list). Certain placements come with additional service fees, such as large embroidery, this additional price will never be included even if the only placement is large embroidery.
     * </p>
     * <p>
     * There is a minor difference in the handling of prices for placements between V1 and V2.
     * In V1 the price of the first placement is always null, this is because there
     * is always a placement included in the price of each product. In V2 the price of placements
     * is always displayed even if it is included in the price of the product because any
     * placement can be included.
     * </p>
     * </div>
     *
     * @param id Product ID.
     * @param sellingRegionName Specifies the region production currency that the product prices will be calculated in
     * @param currency The currency (3-letter code) used to determine currency in which the prices will be displayed. The store currency will be used by default. The format is compliant with ISO 4217 standard.
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getProductPricesById(id: number, sellingRegionName?: string, currency?: string, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve pricing information for the catalog variant
     * Return pricing information from a single variant and the parent product
     * @param id Variant ID
     * @param sellingRegionName Specifies the region production currency that the product prices will be calculated in
     * @param currency The currency (3-letter code) used to determine currency in which the prices will be displayed. The store currency will be used by default. The format is compliant with ISO 4217 standard.
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getVariantPricesById(id: number, sellingRegionName?: string, currency?: string, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve blank images for a catalog product
     * This feature helps to fetch blank images for a catalog product. These blank images are always white and semi-transparent and can be colored by the user on the client-side as per the specified color in the `data.images.background_color` field. For some mockups the `data.images.background_image` could apply. The endpoint allows filtering of the result based on the type of the mockup, the placement, and the color of the product.
     *
     * @param id Product ID.
     * @param mockupStyleIds Used to specify style of images For example:
     * * On the hanger
     * * On the Male/Female model
     * * Flat on the table
     * * etc.
     * Available mockup styles for catalog product can be found under _[Retrieve catalog product mockup styles](#operation/retrieveMockupStylesByProductId)_.
     *
     * @param colors String values separated by comma. You can specify multiple variant colors filters.
     * @param placement Filters result by specified placement
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getProductImagesById(id: number, mockupStyleIds?: number, colors?: string, placement?: string, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve blank images for a catalog variant
     * Returns images for a specified Variant.
     * @param id Variant ID
     * @param mockupStyleIds Used to specify style of images For example:
     * * On the hanger
     * * On the Male/Female model
     * * Flat on the table
     * * etc.
     * Available mockup styles for catalog product can be found under _[Retrieve catalog product mockup styles](#operation/retrieveMockupStylesByProductId)_.
     *
     * @param placement Filters result by specified placement
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getVariantImagesById(id: number, mockupStyleIds?: number, placement?: string, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve catalog product mockup styles
     * Returns information about available mockup styles for specified catalog product.
     *
     * @param id Product ID.
     * @param placements One or more placement idenitifiers used to filter in mockup styles that match a given placement. The complete list of placements can be found [here](https://developers.printful.com/docs/#section/Placements).
     * @param sellingRegionName Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
     * @param offset Result set offset
     * @param limit Number of items per page (max 100)
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    retrieveMockupStylesByProductId(id: number, placements?: Array<string>, sellingRegionName?: 'worldwide' | 'north_america' | 'canada' | 'europe' | 'spain' | 'latvia' | 'uk' | 'france' | 'germany' | 'australia' | 'japan' | 'new_zealand' | 'italy' | 'brazil' | 'southeast_asia' | 'republic_of_korea' | 'english_speaking_regions' | 'all', offset?: number, limit?: number, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve catalog product mockup templates
     * Returns positional data for specified catalog product mockups. The data from this endpoint could be used
     * to generate your own mockups without the need to use Printful's mockup generator.
     * ![Mockup template](images/mockups/mockup_template.png)
     *
     * @param id Product ID.
     * @param placements One or more identifiers of a placement to return only products with variants that have that placement. The complete list of placements can be found [here](https://developers.printful.com/docs/#section/Placements).
     * @param sellingRegionName Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
     * @param limit The number of results to return per page.
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getMockupTemplatesByProductId(id: number, placements?: Array<string>, sellingRegionName?: 'worldwide' | 'north_america' | 'canada' | 'europe' | 'spain' | 'latvia' | 'uk' | 'france' | 'germany' | 'australia' | 'japan' | 'new_zealand' | 'italy' | 'brazil' | 'southeast_asia' | 'republic_of_korea' | 'english_speaking_regions' | 'all', limit?: number, offset?: number, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve catalog product stock availability
     * Provides information about the catalog product stock status. Stock availability is grouped by variants &rarr; techniques &rarr; selling regions.
     *
     * @param id Product ID.
     * @param techniques One or more techniques to return only products with variants that can be printed using one of the techniques.
     * @param sellingRegionName Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
     * @param limit The number of results to return per page.
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getProductStockAvailabilityById(id: number, techniques?: Array<TechniqueEnum>, sellingRegionName?: 'worldwide' | 'north_america' | 'canada' | 'europe' | 'spain' | 'latvia' | 'uk' | 'france' | 'germany' | 'australia' | 'japan' | 'new_zealand' | 'italy' | 'brazil' | 'southeast_asia' | 'republic_of_korea' | 'english_speaking_regions' | 'all', limit?: number, offset?: number, xPfLanguage?: string): CancelablePromise<any>;
    /**
     * Retrieve catalog variant stock availability
     * Provides information about the catalog variant stock status. Stock availability is grouped by variants &rarr; techniques &rarr; selling regions.
     *
     * @param id Variant ID
     * @param techniques One or more techniques to return only products with variants that can be printed using one of the techniques.
     * @param sellingRegionName Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @returns any OK
     * @throws ApiError
     */
    getVariantStockAvailabilityById(id: number, techniques?: Array<TechniqueEnum>, sellingRegionName?: 'worldwide' | 'north_america' | 'canada' | 'europe' | 'spain' | 'latvia' | 'uk' | 'france' | 'germany' | 'australia' | 'japan' | 'new_zealand' | 'italy' | 'brazil' | 'southeast_asia' | 'republic_of_korea' | 'english_speaking_regions' | 'all', xPfLanguage?: string): CancelablePromise<any>;
}

declare class CountriesV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Retrieve a list of countries
     * Get information about all countries where Printful is available
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @param limit The number of results to return per page.
     * @returns any OK
     * @throws ApiError
     */
    getCountries(offset?: number, limit?: number): CancelablePromise<any>;
}

/**
 * Information about the added File
 */
type AddFile = {
    /**
     * Role of the file
     */
    role?: AddFile.role;
    /**
     * Source URL where the file is to be downloaded from. The use of .ai, .psd, and .tiff files has been deprecated, if your application uses these file types or accepts these types from users you will need to add validation.
     */
    url: string;
    /**
     * If the filename is not provided, and something looking like a filename is present in the URL (e.g. "something.jpg"), it will be used.
     * Otherwise, it will default to `{file_id}.{file_extension}`, with file extension determined based on the media type of the file.
     *
     */
    filename?: string;
    /**
     * Show file in the Printfile Library
     */
    visible?: boolean;
};
declare namespace AddFile {
    /**
     * Role of the file
     */
    enum role {
        PRINTFILE = "printfile",
        LABEL = "label",
        PREVIEW = "preview"
    }
}

declare class FilesV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Add a new file
     * Adds a new File to the library by providing URL of the file.
     *
     * If a file with identical URL already exists, then the original file is returned. If a file does not exist, a new file is created.
     *
     * [See examples](#tag/Examples/Files-API-examples/Add-a-new-file)
     *
     * @param requestBody POST request body
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    addFile(requestBody: AddFile, xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Retrieve a single file from the file library
     * Get basic information about the file stored in the file library
     * @param id File ID.
     * @returns any OK
     * @throws ApiError
     */
    getFileById(id: number): CancelablePromise<any>;
}

type BaseMockupProduct = {
    /**
     * Mockup product source
     */
    source: string;
    /**
     * Used to specify style of mockups that should be generated. For example:
     * * On the hanger
     * * On the Male/Female model
     * * Flat on the table
     * * etc.
     * Available mockup styles for catalog product can be found under _[Retrieve catalog product mockup styles](#operation/retrieveMockupStylesByProductId)_.
     *
     */
    mockup_style_ids: Array<number>;
};

type CatalogMockupProduct = BaseMockupProduct;

type TemplateMockupProduct = BaseMockupProduct;

type MockupTaskCreation = {
    /**
     * Generated file format. PNG will have a transparent background, JPG will have a smaller file size.
     */
    format: MockupTaskCreation.format;
    products: Array<(CatalogMockupProduct | TemplateMockupProduct)>;
};
declare namespace MockupTaskCreation {
    /**
     * Generated file format. PNG will have a transparent background, JPG will have a smaller file size.
     */
    enum format {
        JPG = "jpg",
        PNG = "png"
    }
}

declare class MockupGeneratorV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Create Mockup Generator tasks
     * Create Mockup Generator tasks
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param requestBody This action schedules asynchronous mockup generation tasks. In the response of this request `id` will be returned which can be used to retrieve the result of the tasks _[Retrieve mockup generator tasks](#operation/getMockupGeneratorTasks)_. In addition, the webhook event will be sent informing about the task completion, if the correct webhook has been subscribed to _[Mockup generator task finished event](#operation/mockupTaskFinished)_. You can subscribe to webhook events by using _[Set up event configuration](#operation/createWebhookEventConfiguration)_.
     * @returns any OK
     * @throws ApiError
     */
    createMockupGeneratorTasks(xPfStoreId?: string, requestBody?: MockupTaskCreation): CancelablePromise<any>;
    /**
     * Retrieve Mockup Generator tasks
     * Returns result of Mockup Generator tasks
     * @param id One or more mockup generator task IDs to return only specified tasks. The IDs can be found in the response of the operation _[Create mockup generator tasks](#operation/createMockupGeneratorTasks)_.
     * @param limit The number of results to return per page.
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @returns any OK
     * @throws ApiError
     */
    getMockupGeneratorTasks(id: Array<string>, limit?: number, offset?: number): CancelablePromise<any>;
}

declare class OAuthScopesV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Retrieve OAuth scopes
     * This endpoint will retrieve all OAuth scopes associated with the used token
     * @returns any OK
     * @throws ApiError
     */
    getOAuthScopes(): CancelablePromise<any>;
}

/**
 * Information about the address
 */
type Address = {
    /**
     * Full name
     */
    name?: string;
    /**
     * Company name
     */
    company?: string;
    /**
     * Address line 1
     */
    address1?: string;
    /**
     * Address line 2
     */
    address2?: string;
    /**
     * City
     */
    city?: string;
    /**
     * State code
     */
    state_code?: string;
    /**
     * State name
     */
    state_name?: string;
    /**
     * Country code
     */
    country_code?: string;
    /**
     * Country name
     */
    country_name?: string;
    /**
     * ZIP/Postal code
     */
    zip?: string;
    /**
     * Phone number
     */
    phone?: string;
    /**
     * Email address
     */
    email?: string;
    /**
     * TAX number (`optional`, but in case of Brazil country this field becomes `required` and will be used as CPF/CNPJ number)<br> CPF format is 000.000.000-00 (14 characters);<br> CNPJ format is 00.000.000/0000-00 (18 characters).
     */
    tax_number?: string;
};

type HateoasLink = {
    /**
     * The HREF of the linked resource.
     */
    href: string;
};

/**
 * Item user specified external ID
 */
type ItemExternalId = string | null;

/**
 * Should thread use 3d puff technique
 */
type dPuffOption = {
    /**
     * Option identifier
     */
    name: dPuffOption.name;
    /**
     * Whether the 3d puff technique should be used for the layer.
     */
    value: boolean;
};
declare namespace dPuffOption {
    /**
     * Option identifier
     */
    enum name {
        _3D_PUFF = "3d_puff"
    }
}

/**
 * Option value
 */
declare enum KnitwearOptionValue {
    _090909 = "#090909",
    _404040 = "#404040",
    _563C33 = "#563c33",
    _D52213 = "#d52213",
    _6E5242 = "#6e5242",
    _7F6A53 = "#7f6a53",
    _CD5E38 = "#cd5e38",
    _B57648 = "#b57648",
    _D1773B = "#d1773b",
    _D68785 = "#d68785",
    _C6B5A7 = "#c6b5a7",
    _D6C6B4 = "#d6c6b4",
    _DCD3CC = "#dcd3cc",
    _EDD9D9 = "#edd9d9",
    _E2DFDC = "#e2dfdc",
    _FDFAFA = "#fdfafa",
    _999996 = "#999996",
    _DDA032 = "#dda032",
    _D1C6AE = "#d1c6ae",
    _EDDEA4 = "#eddea4",
    _48542E = "#48542e",
    _6E8C4B = "#6e8c4b",
    _C0C1BD = "#c0c1bd",
    _243F33 = "#243f33",
    _C5D1D0 = "#c5d1d0",
    _175387 = "#175387",
    _237D96 = "#237d96",
    _787979 = "#787979",
    _343D55 = "#343d55",
    _4E59BE = "#4e59be",
    _566E99 = "#566e99",
    _504372 = "#504372",
    _4C1C29 = "#4c1c29",
    _F66274 = "#f66274",
    _EDA6B4 = "#eda6b4",
    _DDABC8 = "#ddabc8"
}

/**
 * Used to specify the yarn colors for the whole product. These are the colors that will be used across the whole product.
 */
type KnitwearYarnColor = {
    /**
     * Option identifier
     */
    name: KnitwearYarnColor.name;
    /**
     * Option value
     */
    value: Array<KnitwearOptionValue>;
};
declare namespace KnitwearYarnColor {
    /**
     * Option identifier
     */
    enum name {
        YARN_COLORS = "yarn_colors"
    }
}

/**
 * Specify thread colors for embroidery technique
 */
type ThreadColorsOption = {
    /**
     * Option identifier
     */
    name: ThreadColorsOption.name;
    /**
     * Thread colors for embroidery technique
     */
    value: Array<string>;
};
declare namespace ThreadColorsOption {
    /**
     * Option identifier
     */
    enum name {
        THREAD_COLORS = "thread_colors"
    }
}

/**
 * List of layer options
 */
type LayerOptions = Array<(dPuffOption | ThreadColorsOption | KnitwearYarnColor)>;

/**
 * Information about the Layer position. If the positions are not provided then the design will be automatically centered.
 */
type LayerPosition = {
    /**
     * Layer width in inches
     */
    width: number;
    /**
     * Layer height in inches
     */
    height: number;
    /**
     * Layer top position in inches
     */
    top: number;
    /**
     * Layer left position in inches
     */
    left: number;
};

/**
 * Information about the Layer
 */
type Layer = {
    /**
     * Type of layer (e.g. file, text)
     */
    type: string;
    /**
     * File image URL if layer type is file
     */
    url: string;
    layer_options?: LayerOptions;
    position?: LayerPosition;
};

/**
 * Specify the type of inside label
 */
type InsideLabelTypeOption = {
    /**
     * Option identifier
     */
    name: InsideLabelTypeOption.name;
    /**
     * Specifies type of inside label design that should be used
     */
    value: InsideLabelTypeOption.value;
};
declare namespace InsideLabelTypeOption {
    /**
     * Option identifier
     */
    enum name {
        INSIDE_LABEL_TYPE = "inside_label_type"
    }
    /**
     * Specifies type of inside label design that should be used
     */
    enum value {
        NATIVE = "native",
        CUSTOM = "custom"
    }
}

/**
 * Specify if the design should use unlimited color technique
 */
type UnlimitedColorOption = {
    /**
     * Option identifier
     */
    name: UnlimitedColorOption.name;
    /**
     * Whether the design should use unlimited color technique.
     */
    value: boolean;
};
declare namespace UnlimitedColorOption {
    /**
     * Option identifier
     */
    enum name {
        UNLIMITED_COLOR = "unlimited_color"
    }
}

/**
 * List of placement options
 */
type PlacementOptions = Array<(UnlimitedColorOption | InsideLabelTypeOption)>;

/**
 * A placement is used to represent the physical area in which a design will be printed, and the technique used. It includes the layers that will be printed on the placement.
 */
type Placement = {
    /**
     * Name of the placement
     */
    placement: string;
    /**
     * Placement's technique
     */
    technique: string;
    /**
     * Type of the print area. Defaults to simple. Advanced type might be specified only for some specific products
     * for example All-over Tote bag. In that case both sides of the product will be designed.
     * Advanced designs are often more complicated so it's advised to refer to the [mockup templates endpoint](#tag/Catalog-v2/operation/getMockupTemplatesByProductId) when using advanced designs.
     * Available print area types for a specific product can be found in [Mockup Styles endpoint](/docs/#operation/createMockupGeneratorTasks).
     *
     */
    print_area_type?: Placement.print_area_type;
    /**
     * Information about placement's layers
     */
    layers: Array<Layer>;
    placement_options?: PlacementOptions;
    /**
     * Status of the placement design
     */
    readonly status?: Placement.status;
    /**
     * Reason behind failed status
     */
    readonly status_explanation?: string;
};
declare namespace Placement {
    /**
     * Type of the print area. Defaults to simple. Advanced type might be specified only for some specific products
     * for example All-over Tote bag. In that case both sides of the product will be designed.
     * Advanced designs are often more complicated so it's advised to refer to the [mockup templates endpoint](#tag/Catalog-v2/operation/getMockupTemplatesByProductId) when using advanced designs.
     * Available print area types for a specific product can be found in [Mockup Styles endpoint](/docs/#operation/createMockupGeneratorTasks).
     *
     */
    enum print_area_type {
        SIMPLE = "simple",
        ADVANCED = "advanced"
    }
    /**
     * Status of the placement design
     */
    enum status {
        OK = "ok",
        FAILED = "failed"
    }
}

/**
 * Each entry in this list represents a placement on the physical product and the design that will be printed in that location.
 */
type PlacementsList = Array<Placement>;

/**
 * Used to specify the border color of a sticker
 */
type CustomBorderColorOption = {
    /**
     * Option identifier
     */
    name: CustomBorderColorOption.name;
    /**
     * Color defined in hexadecimal format
     */
    value: string;
};
declare namespace CustomBorderColorOption {
    /**
     * Option identifier
     */
    enum name {
        CUSTOM_BORDER_COLOR = "custom_border_color"
    }
}

/**
 * Specify if inside pocket should be added to the product
 */
type InsidePocketOption = {
    /**
     * Option identifier
     */
    name: InsidePocketOption.name;
    /**
     * Whether inside pocket should be added to the product.
     */
    value: boolean;
};
declare namespace InsidePocketOption {
    /**
     * Option identifier
     */
    enum name {
        INSIDE_POCKET = "inside_pocket"
    }
}

/**
 * Used to specify the base color on a knitwear product.
 */
type KnitwearBaseColor = {
    /**
     * Option identifier
     */
    name: KnitwearBaseColor.name;
    value: KnitwearOptionValue;
};
declare namespace KnitwearBaseColor {
    /**
     * Option identifier
     */
    enum name {
        BASE_COLOR = "base_color"
    }
}

/**
 * Used to set the color reduction mode for a knitwear product
 */
type KnitwearColorReductionMode = {
    /**
     * Option identifier
     */
    name: KnitwearColorReductionMode.name;
    /**
     * Option value
     */
    value: KnitwearColorReductionMode.value;
};
declare namespace KnitwearColorReductionMode {
    /**
     * Option identifier
     */
    enum name {
        COLOR_REDUCTION_MODE = "color_reduction_mode"
    }
    /**
     * Option value
     */
    enum value {
        SOLID = "solid",
        PIXELATED = "pixelated"
    }
}

/**
 * Used to specify the color of the trim on a knitwear product.
 */
type KnitwearTrimColor = {
    /**
     * Option identifier
     */
    name: KnitwearTrimColor.name;
    value: KnitwearOptionValue;
};
declare namespace KnitwearTrimColor {
    /**
     * Option identifier
     */
    enum name {
        TRIM_COLOR = "trim_color"
    }
}

/**
 * Specifies if generated mockup should use lifelike effect
 */
type LifelikeOption = {
    /**
     * Option identifier
     */
    name: LifelikeOption.name;
    /**
     * Whether generated mockup should use lifelike effect.
     */
    value: boolean;
};
declare namespace LifelikeOption {
    /**
     * Option identifier
     */
    enum name {
        LIFELIKE = "lifelike"
    }
}

/**
 * Include additional notes for fulfillment for embroidery prints
 */
type NotesOption = {
    /**
     * Option identifier
     */
    name: NotesOption.name;
    /**
     * Additional notes for fulfillment for embroidery prints.
     */
    value: string;
};
declare namespace NotesOption {
    /**
     * Option identifier
     */
    enum name {
        NOTES = "notes"
    }
}

/**
 * Specified what color should be used for stitches
 */
type StitchColorOption = {
    /**
     * Option identifier
     */
    name: StitchColorOption.name;
    /**
     * Option value
     */
    value: string;
};
declare namespace StitchColorOption {
    /**
     * Option identifier
     */
    enum name {
        STITCH_COLOR = "stitch_color"
    }
}

/**
 * List of product options
 */
type ProductOptions = Array<(InsidePocketOption | StitchColorOption | NotesOption | LifelikeOption | CustomBorderColorOption | KnitwearBaseColor | KnitwearTrimColor | KnitwearColorReductionMode)>;

/**
 * Information about the Item
 */
type Item = {
    /**
     * Item ID
     */
    readonly id?: number;
    external_id?: ItemExternalId;
    /**
     * Item quantity
     */
    quantity?: number;
    /**
     * Item retail price
     */
    retail_price?: string;
    /**
     * Item custom name
     */
    name?: string;
    placements?: PlacementsList;
    product_options?: ProductOptions;
    /**
     * HATEOAS links
     */
    readonly _links?: {
        self?: HateoasLink;
    };
};

type CatalogItem = ({
    /**
     * Catalog source
     */
    source: CatalogItem.source;
    /**
     * ID of catalog variant
     */
    catalog_variant_id: number;
} & Item);
declare namespace CatalogItem {
    /**
     * Catalog source
     */
    enum source {
        CATALOG = "catalog"
    }
}

/**
 * The gift subject and message
 */
type Gift = {
    /**
     * Gift message subject
     */
    subject?: string;
    /**
     * Gift message
     */
    message?: string;
};

/**
 * The values for customized packing slip
 */
type PackingSlip = {
    /**
     * Customer service email
     */
    email?: string;
    /**
     * Customer service phone
     */
    phone?: string;
    /**
     * Custom packing slip message
     */
    message?: string;
    /**
     * URL address to a sticker we will put on a package
     */
    logo_url?: string;
    /**
     * Store name override for the return address
     */
    store_name?: string;
    /**
     * Your own Order ID that will be printed instead of Printful's Order ID
     */
    custom_order_id?: string;
};

/**
 * The Order's customization values
 */
type Customization = {
    gift?: Gift;
    packing_slip?: PackingSlip;
};

/**
 * Information about the address for estimations.
 */
type EstimationAddress = {
    /**
     * State code.
     */
    state_code?: string;
    /**
     * Country code
     */
    country_code: string;
    /**
     * ZIP/Postal code
     */
    zip: string;
};

/**
 * Retail costs
 */
type RetailCosts_2 = {
    /**
     * The code of the currency in which the retail costs are returned.
     */
    currency?: string;
    /**
     * Discount sum.
     */
    discount?: string;
    /**
     * Shipping costs.
     */
    shipping?: string;
    /**
     * Sum of taxes (not included in the item price).
     */
    tax?: string;
};

declare class OrdersV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Retrieve a list of orders
     * Retrieve a list of orders from a specific store. The order list will be paginated with twenty items per page by default.
     * @param limit The number of results to return per page.
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getOrders(limit?: number, offset?: number, xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Create a new order
     * This endpoint allows the creation of a new order in which the default status will be `draft`.
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param requestBody POST request body
     * @returns any OK
     * @throws ApiError
     */
    createOrder(xPfStoreId?: string, requestBody?: {
        /**
         * Order ID from the external system
         */
        external_id?: string;
        /**
         * Shipping method. Defaults to 'STANDARD'
         */
        shipping?: string;
        /**
         * The recipient data.
         */
        recipient: Address;
        /**
         * Array of order items
         */
        order_items: Array<CatalogItem>;
        customization?: Customization;
        retail_costs?: RetailCosts_2;
    }): CancelablePromise<any>;
    /**
     * Retrieve a single order
     * Retrieve a single order from the specified store. The result object will contain links to the same resource, order items, and shipments.
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getOrder(orderId: (number | string), xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Delete an order
     * <div class="alert alert-danger">
     * <strong>Warning:</strong> The DELETE HTTP method in version 2 of order in the
     * API will delete the order if the order can be deleted. This is distinct from
     * version 1 where the DELETE method will actually cancel the order rather than
     * delete it. Please, keep this in mind if you are migrating to version 2 from
     * version 1
     * </div>
     *
     * Delete the order if it can be deleted. An order can be deleted if it's status is
     * `draft`, `failed` or `cancelled`. The order must also have not been charged yet
     * and there must be no payments pending.
     *
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns void
     * @throws ApiError
     */
    deleteOrder(orderId: (number | string), xPfStoreId?: string): CancelablePromise<void>;
    /**
     * Update an order
     * Make a partial update of an order.
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param requestBody PATCH request body
     * @returns any OK
     * @throws ApiError
     */
    updateOrder(orderId: (number | string), xPfStoreId?: string, requestBody?: {
        /**
         * Order ID from the external system
         */
        external_id?: string;
        /**
         * Shipping method. Defaults to 'STANDARD'
         */
        shipping?: string;
        /**
         * The recipient data.
         */
        recipient?: Address;
        /**
         * Array of order items
         */
        order_items?: Array<CatalogItem>;
        customization?: Customization;
        /**
         * Retail costs
         */
        retail_costs?: {
            /**
             * The code of the currency in which the retail costs are returned.
             */
            currency?: string;
            /**
             * Discount sum.
             */
            discount?: string;
            /**
             * Shipping costs.
             */
            shipping?: string;
            /**
             * Sum of taxes (not included in the item price).
             */
            tax?: string;
        };
    }): CancelablePromise<any>;
    /**
     * Confirm an order
     * This endpoint allows customers to confirm the order and start the fulfillment in the production facility.
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    confirmOrder(orderId: (number | string), xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Retrieve a list of order items
     * This endpoint retrieves the list of items that belong to the order.
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param type Type of items returned (order_item, branding_item). By default all items are returned.
     * @param limit The number of results to return per page.
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getItemsByOrderId(orderId: (number | string), type?: string, limit?: number, offset?: number, xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Create a new order item
     * This endpoint allows the creation of a new item that will be added to an existing order.
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param requestBody POST request body
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    createItemByOrderId(orderId: (number | string), requestBody: CatalogItem, xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Retrieve a single order item
     * This endpoint will retrieve a single order item specified in the request.
     * @param orderItemId Item ID (integer) or Item External ID (string prepended with "@" symbol)
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getItemById(orderItemId: (number | string), orderId: (number | string), xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Update an order item
     * Make a partial update of an order item. NOTE that the source of the order item can't be changed via a PATCH request, to create an order item from another source you must delete the current one and add a new one.
     * @param orderItemId Item ID (integer) or Item External ID (string prepended with "@" symbol)
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param requestBody PATCH request body
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    updateItem(orderItemId: (number | string), orderId: (number | string), requestBody: CatalogItem, xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Delete Order Item
     * Remove a single item from the order.
     * @param orderItemId Item ID (integer) or Item External ID (string prepended with "@" symbol)
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns void
     * @throws ApiError
     */
    deleteItemById(orderItemId: (number | string), orderId: (number | string), xPfStoreId?: string): CancelablePromise<void>;
    /**
     * Retrieve a list of shipments
     * Shipments contain information about how and when your orders items will be delivered and fulfilled.
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param limit The number of results to return per page.
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @returns any OK
     * @throws ApiError
     */
    getShipments(orderId: (number | string), xPfStoreId?: string, limit?: number, offset?: number): CancelablePromise<any>;
    /**
     * Retrieve an invoice
     * Returns the invoice for an order as a base64 encoded document. Decoding the base64 content can be different depending on the client, for most browsers this format will alow you to view and display the invoice `data:application/pdf;base64,{the_base_64_content_string}`.
     * @param orderId Order ID (integer) or Order External ID (string prepended with "@" symbol)
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getInvoiceByOrderId(orderId: (number | string), xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Retrieve an order estimation task
     * Retrieve an order cost estimation task from a specific store.
     * Estimation results are only available for one hour after cost estimation task is done.
     *
     * @param id Order estimation task ID.
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getOrderEstimationTask(id: string, xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Create a new order estimation task
     * Use this endpoint to estimate orders with items.
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param requestBody POST request body
     * @returns any OK
     * @throws ApiError
     */
    createOrderEstimationTask(xPfStoreId?: string, requestBody?: {
        /**
         * The recipient data.
         */
        recipient: EstimationAddress;
        /**
         * Array of order items
         */
        order_items: Array<CatalogItem>;
        retail_costs?: RetailCosts_2;
    }): CancelablePromise<any>;
}

type CatalogShippingRateItem = {
    /**
     * Catalog source
     */
    source: CatalogShippingRateItem.source;
    /**
     * Item quantity
     */
    quantity: number;
    /**
     * ID of catalog variant
     */
    catalog_variant_id: number;
};
declare namespace CatalogShippingRateItem {
    /**
     * Catalog source
     */
    enum source {
        CATALOG = "catalog"
    }
}

/**
 * Information about the address
 */
type ShippingRatesAddress = {
    /**
     * Address line 1
     */
    address1: string;
    /**
     * Address line 2
     */
    address2?: string | null;
    /**
     * City
     */
    city: string;
    /**
     * State code this property is required for certain countries like the USA, Australia and Japan
     */
    state_code?: string | null;
    /**
     * Country code
     */
    country_code: string;
    /**
     * ZIP/Postal code
     */
    zip?: string | null;
};

type WarehouseShippingRateItem = {
    /**
     * Warehouse source
     */
    source: WarehouseShippingRateItem.source;
    /**
     * Item quantity
     */
    quantity: number;
    /**
     * ID of catalog variant
     */
    warehouse_variant_id: number;
};
declare namespace WarehouseShippingRateItem {
    /**
     * Warehouse source
     */
    enum source {
        CATALOG = "catalog"
    }
}

declare class ShippingRatesV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Calculate Shipping Rates
     * Returns available shipping options and rates for the given list of products.
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param xPfLanguage Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
     *
     * @param requestBody POST request body
     * @returns any OK
     * @throws ApiError
     */
    calculateShppingRates(xPfStoreId?: string, xPfLanguage?: string, requestBody?: {
        /**
         * The recipient data.
         */
        recipient: ShippingRatesAddress;
        /**
         * Array of order items
         */
        order_items: Array<(CatalogShippingRateItem | WarehouseShippingRateItem)>;
        /**
         * Currency code in which the rate is returned. If not provided will use the default currency for the store.
         */
        currency?: string;
    }): CancelablePromise<any>;
}

/**
 * ID of the resource, assigned by Printful
 */
type InternalId = number;

/**
 * Average fulfillment time report
 */
type AverageFulfillmentTime = {
    /**
     * Average time it took Printful to fulfill your orders.
     */
    value: string;
    /**
     * Relative difference from the value from the previous period. -1 means 100% decrease, 1 means 100% increase. 0 is returned if there is no change or the previous value was 0.
     */
    relative_difference: string | null;
};

/**
 * Costs by amount report
 */
type CostsByAmount = Array<{
    /**
     * The date of the value: day in `Y-m-d` format, month in `Y-m` format or "Total" for the first element of the list which shows the total values for the whole requested period
     */
    date: string;
    /**
     * Product & fulfillment costs
     */
    product_amount: string;
    /**
     * Embroidery digitization costs
     */
    digitization: string;
    /**
     * Pack-in costs
     */
    branding: string;
    /**
     * Tax amounts. If not applicable, it will be 0.
     */
    vat: string;
    /**
     * Tax amounts. If not applicable, it will be 0.
     */
    sales_tax: string;
    /**
     * Shipping costs that were charged by Printful
     */
    shipping: string;
    /**
     * Any fulfillment discounts (such as the monthly discount) set up on Printful's side
     */
    discount: string;
    /**
     * Summary of all costs
     */
    total: string;
}>;

/**
 * Costs by product report
 */
type CostsByProduct = Array<{
    /**
     * Product ID. See [Catalog API](#tag/Catalog-API).
     */
    product_id: number;
    /**
     * Product name.
     */
    product_name: string;
    /**
     * All fulfillment costs that are charged by Printful, excluding shipping.
     */
    fulfillment: string;
    /**
     * Order retail price data. Available only if retail price fields are properly set up on the integration's side.
     */
    sales: string;
    /**
     * Total quantity of items ordered from this product in the selected period.
     */
    quantity: number;
}>;

/**
 * Costs by variant report
 */
type CostsByVariant = Array<{
    /**
     * Variant ID. See [Catalog API](#tag/Catalog-API).
     */
    variant_id: number;
    /**
     * Variant name.
     */
    variant_name: string;
    /**
     * Product ID. See [Catalog API](#tag/Catalog-API).
     */
    product_id: number;
    /**
     * All fulfillment costs that are charged by Printful, excluding shipping.
     */
    fulfillment: string;
    /**
     * Order retail price data. Available only if retail price fields are properly set up on the integration's side.
     */
    sales: string;
    /**
     * Total quantity of items ordered from this product in the selected period.
     */
    quantity: number;
}>;

/**
 * Printful costs report
 */
type PrintfulCosts = {
    /**
     * Amount paid to Printful for fulfillment and shipping.
     */
    value: string;
    /**
     * Relative difference from the value from the previous period. -1 means 100% decrease, 1 means 100% increase. 0 is returned if there is no change or the previous value was 0.
     */
    relative_difference: string | null;
};

/**
 * Profit report
 */
type Profit = {
    /**
     * The difference between Sales and Fulfillment. If retail price data is not available, profit might be negative
     */
    value: string;
    /**
     * Relative difference from the value from the previous period. -1 means 100% decrease, 1 means 100% increase. 0 is returned if there is no change or the previous value was 0.
     */
    relative_difference: string | null;
};

/**
 * Sales and costs report
 */
type SalesAndCosts = Array<{
    /**
     * The date of the value: day in `Y-m-d` format, month in `Y-m` format or "Total" for the first element of the list which shows the total values for the whole requested period
     */
    date: string;
    /**
     * Order retail price data. Available only if retail price fields are properly set up on the integration's side
     */
    sales: string;
    /**
     * Product fulfillment, digitization, branding, shipping costs and taxes that are charged by Printful
     */
    fulfillment: string;
    /**
     * The difference between Sales and Fulfillment. If retail price data is not available, profit might be negative
     */
    profit: string;
    /**
     * Any retail price discounts set up on the integration's side
     */
    sales_discount: string;
    /**
     * Any fulfillment discounts (such as the monthly discount) set up on Printful's side
     */
    fulfillment_discount: string;
    /**
     * The retail shipping price that was paid by the buyer
     */
    sales_shipping: string;
    /**
     * Shipping costs that were charged by Printful
     */
    fulfillment_shipping: string;
}>;

/**
 * Sales and costs summary report
 */
type SalesAndCostsSummary = Array<{
    /**
     * The date of the value: day in `Y-m-d` format, month in `Y-m` format or "Total" for the first element of the list which shows the total values for the whole requested period
     */
    date?: string;
    /**
     * The order count in the aggregation period
     */
    order_count?: number;
    /**
     * Product fulfillment, digitization, branding, shipping costs and taxes that are charged by Printful
     */
    costs?: string;
    /**
     * The difference between Sales and Fulfillment. If retail price data is not available, profit might be negative
     */
    profit?: string;
}>;

/**
 * Total paid orders report
 */
type TotalPaidOrders = {
    /**
     * Number of unique orders for period
     */
    value: number;
    /**
     * Relative difference from the value from the previous period. -1 means 100% decrease, 1 means 100% increase. 0 is returned if there is no change or the previous value was 0.
     */
    relative_difference: string | null;
};

/**
 * Statistics for a single store
 */
type StoreStatistics = {
    /**
     * The ID of the store for which the statistics are returned
     */
    store_id: number;
    /**
     * The code of the currency in which the statistics are returned
     */
    currency: string;
    sales_and_costs?: SalesAndCosts;
    sales_and_costs_summary?: SalesAndCostsSummary;
    printful_costs?: PrintfulCosts;
    profit?: Profit;
    total_paid_orders?: TotalPaidOrders;
    costs_by_amount?: CostsByAmount;
    costs_by_product?: CostsByProduct;
    costs_by_variant?: CostsByVariant;
    average_fulfillment_time?: AverageFulfillmentTime;
};

declare class StoresV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Retrieve a single store
     * Get information about a single store.
     * @param storeId Store ID
     * @param xPfStoreId Use this to specify which store you want to use.
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getStoreById(storeId: InternalId, xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Retrieves a list of stores
     * Retrieves a list of all stores available to the token. If the token is a store level token it will return only the one store, if it is an account level token it will return all stores available to the account.
     * @param xPfStoreId Use this to specify which store you want to use.
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getStores(xPfStoreId?: string): CancelablePromise<any>;
    /**
     * Retrieve statistics for a single store
     * Returns statistics for specified report types.
     *
     * You need to specify the report types you want to retrieve in the `report_types` query parameter as a comma-separated list,
     * e.g. `report_types=sales_and_costs,profit`.
     *
     * **Note**: You cannot get statistics for a period longer than 6 months.
     *
     * #### Example
     *
     * To get statistics in the default currency of a store for `sales_and_costs` and `profit` reports for August 2022, you can use the
     * following
     * URL: https://api.printful.com/v2/stores/{id}/statistics?report_types=sales_and_costs,profit&date_from=2022-08-01&date_to=2022-08-31.
     *
     * ### Report types
     *
     * Currently, the following report types are available:
     *
     * | Report type                | Description                                              |
     * |----------------------------|----------------------------------------------------------|
     * | `sales_and_costs`          | Detailed information on sales and costs grouped by date. |
     * | `sales_and_costs_summary`  | Short information on sales and costs grouped by date.    |
     * | `printful_costs`           | Amount paid to Printful for fulfillment and shipping.    |
     * | `profit`                   | Profit in the specified period.                          |
     * | `total_paid_orders`        | The number of paid orders in the specified period.       |
     * | `costs_by_amount`          | Information on costs by amount grouped by date.          |
     * | `costs_by_product`         | Information on costs grouped by product.                 |
     * | `costs_by_variant`         | Information on costs grouped by variant.                 |
     * | `average_fulfillment_time` | Average time it took Printful to fulfill your orders.    |
     *
     * The response structure for the specific reports is documented in the response schema (`result.store_statistics.[reportName]`).
     *
     * @param storeId Use this to specify which store you want to use.
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param dateFrom The beginning of the period to get the statistics from (date in `Y-m-d` format).
     * @param dateTo The end of the period to get the statistics from (date in `Y-m-d` format).
     * @param reportTypes A comma-separated list of report types to be retrieved.
     * @param currency The currency (3-letter code) to return the statistics in.
     * The store currency will be used by default.
     *
     * @returns any OK
     * @throws ApiError
     */
    getReports(storeId: number, dateFrom: string, dateTo: string, reportTypes: 'sales_and_costs' | 'profit' | 'average_fulfillment_type' | 'costs_by_amount' | 'costs_by_product' | 'costs_by_variant' | 'printful_costs' | 'sales_and_costs_summary' | 'total_paid_orders', currency?: string): CancelablePromise<{
        data: StoreStatistics;
    }>;
}

/**
 * Paging information
 */
type Paging = {
    /**
     * Total number of items available
     */
    total: number;
    /**
     * Current result set page offset
     */
    offset: number;
    /**
     * Max number of items per page
     */
    limit: number;
};

declare class WarehouseProductsV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Retrieve a list of warehouse products
     * This endpoint returns paginated results containing detailed information about warehouse products, including their variants, stock levels, and dimensions.
     * @param filterName Wildcard match of the name value. Note that the value will be matched if the name property contains the value anywhere in the string.
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param limit The number of results to return per page.
     * @param offset The number of results to not include in the response starting from the beginning of the list.
     *
     * This can be used to return results after the initial 100. For example, sending offset 100
     *
     * @returns any OK
     * @throws ApiError
     */
    getWarehouseProducts(filterName?: string, xPfStoreId?: string, limit?: number, offset?: number): CancelablePromise<{
        data: Array<{
            /**
             * Unique identifier of the warehouse product
             */
            id: number;
            /**
             * Name of the warehouse product
             */
            name: string;
            /**
             * Current status of the warehouse product
             */
            status: 'draft' | 'awaiting_approval' | 'approved' | 'declined' | 'suspended';
            /**
             * Currency code for the product's pricing (e.g., "USD")
             */
            currency: string;
            /**
             * URL of the product's image
             */
            image_url: string;
            /**
             * Retail price of the product (base variant)
             */
            retail_price: string;
            /**
             * Array of variant details for the product
             */
            warehouse_variants: Array<{
                /**
                 * Unique identifier of the variant
                 */
                id: number;
                /**
                 * Name of the variant
                 */
                name: string;
                /**
                 * Stock Keeping Unit (SKU) of the variant
                 */
                sku: string;
                /**
                 * URL of the variant's image
                 */
                image_url: string;
                /**
                 * Retail price of the variant
                 */
                retail_price: string;
                /**
                 * Available quantity of the variant
                 */
                quantity: number;
                /**
                 * Dimensions of the variant
                 */
                dimensions: {
                    /**
                     * The system of measurement used for the dimensions.
                     */
                    measurement_system: 'imperial' | 'metric';
                    /**
                     * Width of the variant.
                     */
                    width: number;
                    /**
                     * Height of the variant.
                     */
                    height: number;
                    /**
                     * Length of the variant. (NEW)
                     */
                    length: number;
                    /**
                     * Weight of the variant.
                     */
                    weight: number;
                };
                _links: {
                    /**
                     * Link to same resource
                     */
                    self?: HateoasLink;
                };
            }>;
            /**
             * Links to related resources
             */
            _links: {
                /**
                 * Link to same resource
                 */
                self?: HateoasLink;
                /**
                 * Link to warehouse variants of the warehouse product
                 */
                warehouse_variants?: HateoasLink;
            };
        }>;
        paging: Paging;
        /**
         * HATEOAS links
         */
        _links: {
            /**
             * Link to same resource
             */
            self?: HateoasLink;
            /**
             * Link to the next page (absent if the current page is the last one or if there is only one page)
             */
            next?: HateoasLink;
            /**
             * Link to the previous page (absent if the current page is the first one or if there is only one page)
             */
            previous?: HateoasLink;
            /**
             * Link to the first page (absent if there is only one page)
             */
            first?: HateoasLink;
            /**
             * Link to the last page (absent if there is only one page)
             */
            last?: HateoasLink;
        };
    }>;
    /**
     * Retrieve a single warehouse product
     * Get information about a single warehouse product with it's stock location.
     * @param warehouseProductId Warehouse Product ID.
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    getWarehouseProductById(warehouseProductId: number, xPfStoreId?: string): CancelablePromise<{
        data: {
            /**
             * Unique identifier of the warehouse product
             */
            id: number;
            /**
             * Name of the warehouse product
             */
            name: string;
            /**
             * Current status of the warehouse product
             */
            status: 'draft' | 'awaiting_approval' | 'approved' | 'declined' | 'suspended';
            /**
             * Currency code for the product's pricing (e.g., "USD")
             */
            currency: string;
            /**
             * URL of the product's image
             */
            image_url: string;
            /**
             * Retail price of the product (base variant)
             */
            retail_price: string;
            /**
             * Array of variant details for the product
             */
            warehouse_variants: Array<{
                /**
                 * Unique identifier of the warehouse variant
                 */
                id: number;
                /**
                 * Name of the variant
                 */
                name: string;
                /**
                 * Stock Keeping Unit (SKU) of the warehouse variant
                 */
                sku: string;
                /**
                 * URL of the variant's image
                 */
                image_url: string;
                /**
                 * Retail price of the variant
                 */
                retail_price: string;
                /**
                 * Available quantity of the variant
                 */
                quantity: number;
                /**
                 * Stock location of the variant
                 */
                stock_location: Array<{
                    /**
                     * Name of the warehouse facility
                     */
                    facility: string;
                    /**
                     * Total quantity of product variant in our stock
                     */
                    stocked: number;
                    /**
                     * Available quantity of product variant in our stock
                     */
                    available: number;
                }>;
                /**
                 * Dimensions of the variant
                 */
                dimensions: {
                    /**
                     * The system of measurement used for the dimensions.
                     */
                    measurement_system: 'imperial' | 'metric';
                    /**
                     * Width of the variant.
                     */
                    width: number;
                    /**
                     * Height of the variant.
                     */
                    height: number;
                    /**
                     * Length of the variant. (NEW)
                     */
                    length: number;
                    /**
                     * Weight of the variant.
                     */
                    weight: number;
                };
                _links: {
                    /**
                     * Link to same resource
                     */
                    self?: HateoasLink;
                };
            }>;
            /**
             * Links to related resources
             */
            _links: {
                /**
                 * Link to same resource
                 */
                self?: HateoasLink;
                /**
                 * Link to warehouse variants of the warehouse product
                 */
                warehouse_variants?: HateoasLink;
            };
        };
    }>;
}

type DefaultEventConfigurationRequest = {};

type CatalogStockUpdatedEventConfigurationRequest = DefaultEventConfigurationRequest;

type EventConfigurationRequest = (DefaultEventConfigurationRequest | CatalogStockUpdatedEventConfigurationRequest);

type Response200 = {
    /**
     * Response status code `200`
     */
    code?: number;
};

type WebhookInfoRequest = {};

declare class WebhookV2Service {
    readonly httpRequest: BaseHttpRequest;
    constructor(httpRequest: BaseHttpRequest);
    /**
     * Get webhook configuration
     * Returns a configured webhook URL and a list of webhook event types enabled for the store
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param showExpired If this parameter is passed with value `true`, expired settings will be returned instead of a 404 warning.
     * @returns any OK
     * @throws ApiError
     */
    getWebhooks(xPfStoreId?: string, showExpired?: boolean): CancelablePromise<Response200>;
    /**
     * Set up webhook configuration
     * Use this endpoint to enable a webhook URL for a store and select webhook event types that will be sent to this URL.
     *
     * Note that only one webhook configuration can be active for each private OAuth token or app, calling this method will disable the previous webhook configuration.
     *
     * Setting up the [Catalog stock updated](#operation/catalogStockUpdated) webhook requires passing products (currently only IDs are taken into account).
     *
     * Stock update webhook (`catalog_stock_updated`) will only include information for the products specified in the `products` param.
     *
     * Configuring all other events require the same set of fields with no parameters.
     *
     * @param requestBody POST request body
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    createWebhook(requestBody: WebhookInfoRequest, xPfStoreId?: string): CancelablePromise<Response200>;
    /**
     * Disable webhook support
     * Removes the webhook URL and all event types from the store.
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns void
     * @throws ApiError
     */
    disableWebhook(xPfStoreId?: string): CancelablePromise<void>;
    /**
     * Get event configuration
     * Returns event configuration for store
     * @param eventType Event type
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @param showExpired If this parameter is passed with value `true`, expired settings will be returned instead of a 404 warning.
     * @returns any OK
     * @throws ApiError
     */
    getWebhookEventConfiguration(eventType: string, xPfStoreId?: string, showExpired?: boolean): CancelablePromise<Response200>;
    /**
     * Set up event configuration
     * Use this endpoint to create or replace specific event configuration for a store.
     *
     * Setting up the [Catalog stock updated](#operation/catalogStockUpdated) webhook requires passing products (currently only IDs are taken into account).
     *
     * Stock update webhook will only include information for the products specified in the `products` param.
     *
     * @param eventType Event type
     * @param requestBody POST request body
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns any OK
     * @throws ApiError
     */
    createWebhookEventConfiguration(eventType: string, requestBody: EventConfigurationRequest, xPfStoreId?: string): CancelablePromise<Response200>;
    /**
     * Disable support for event
     * Disables the event for a store and clears its configuration, leaving other webhooks intact.
     *
     * @param eventType Event type
     * @param xPfStoreId Use this to specify which store you want to use (required only for account level token).
     *
     * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
     *
     * @returns void
     * @throws ApiError
     */
    disableWebhookEvent(eventType: string, xPfStoreId?: string): CancelablePromise<void>;
}

type HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest;
declare class PrintfulClient {
    readonly approvalSheetsV2: ApprovalSheetsV2Service;
    readonly catalogV2: CatalogV2Service;
    readonly countriesV2: CountriesV2Service;
    readonly filesV2: FilesV2Service;
    readonly mockupGeneratorV2: MockupGeneratorV2Service;
    readonly oAuthScopesV2: OAuthScopesV2Service;
    readonly ordersV2: OrdersV2Service;
    readonly shippingRatesV2: ShippingRatesV2Service;
    readonly storesV2: StoresV2Service;
    readonly warehouseProductsV2: WarehouseProductsV2Service;
    readonly webhookV2: WebhookV2Service;
    readonly request: BaseHttpRequest;
    constructor(config?: Partial<OpenAPIConfig>, HttpRequest?: HttpRequestConstructor);
}

type ApiResult = {
    readonly url: string;
    readonly ok: boolean;
    readonly status: number;
    readonly statusText: string;
    readonly body: any;
};

declare class ApiError extends Error {
    readonly url: string;
    readonly status: number;
    readonly statusText: string;
    readonly body: any;
    readonly request: ApiRequestOptions;
    constructor(request: ApiRequestOptions, response: ApiResult, message: string);
}

/**
 * Info about additional product file option prices
 */
type FileOptionPrices = {
    /**
     * Option name
     */
    name: string;
    /**
     * Option value type
     */
    type: string;
    /**
     * Possible option values
     */
    values: any[];
    /**
     * Option description
     */
    description: string;
    /**
     * Additional price expressed in the region currency
     */
    price: Record<string, string>;
};

/**
 * Info about additional product item option prices
 */
type LayerOptionPrices = {
    /**
     * Option name
     */
    name: string;
    /**
     * Option value type
     */
    type: string;
    /**
     * Possible option values
     */
    values: any[];
    /**
     * Option description
     */
    description: string;
    /**
     * Additional price expressed in the region currency
     */
    price: Record<string, string>;
};

/**
 * Information about the layer prices
 */
type Layers = {
    /**
     * Type of layer
     */
    type: string;
    /**
     * Additional price for layer
     */
    additional_price: string;
    /**
     * Layer options prices
     */
    layer_options: Array<LayerOptionPrices>;
};

/**
 * Info about additional product placements prices.
 */
type AdditionalPlacements = {
    /**
     * ID or key of placement
     */
    id: string;
    /**
     * Title of the placement related
     */
    title: string;
    /**
     * Placement type
     */
    type: string;
    /**
     * Key associated to the available technique
     */
    technique_key: string;
    /**
     * Price converted to the region currency
     */
    price: string;
    /**
     * Discounted price per region
     */
    discounted_price: string;
    /**
     * Array containing the pricing information about the file options used
     */
    placement_options: Array<FileOptionPrices>;
    /**
     * Array containing the pricing information about the layers.
     */
    layers: Array<Layers>;
};

/**
 * Information about the address
 */
type AddressReadonly = {
    /**
     * Full name
     */
    name: string;
    /**
     * Company name
     */
    company: string;
    /**
     * Address line 1
     */
    address1: string;
    /**
     * Address line 2
     */
    address2: string;
    /**
     * City
     */
    city: string;
    /**
     * State code
     */
    state_code: string;
    /**
     * State name
     */
    state_name: string;
    /**
     * Country code
     */
    country_code: string;
    /**
     * Country name
     */
    country_name: string;
    /**
     * ZIP/Postal code
     */
    zip: string;
    /**
     * Phone number
     */
    phone: string;
    /**
     * Email address
     */
    email: string;
    /**
     * TAX number (`optional`, but in case of Brazil country this field becomes `required` and will be used as CPF/CNPJ number)<br> CPF format is 000.000.000-00 (14 characters);<br> CNPJ format is 00.000.000/0000-00 (18 characters).
     */
    tax_number: string;
};

/**
 * Approval sheet
 */
type ApprovalSheet = {
    /**
     * Confirmation hash value.
     */
    confirm_hash: string;
    /**
     * Status of Approval Sheet.
     */
    status: ApprovalSheet.status;
    /**
     * URL to submitted design.
     */
    submitted_design: string;
    /**
     * URL to recommended design.
     */
    recommended_design: string;
    /**
     * URL to Approval sheet.
     */
    approval_sheet: string;
    /**
     * Order ID.
     */
    order_id: number;
    /**
     * Item ID.
     */
    order_item_id: number;
    /**
     * HATEOAS links
     */
    _links: {
        order: HateoasLink;
        order_item: HateoasLink;
    };
};
declare namespace ApprovalSheet {
    /**
     * Status of Approval Sheet.
     */
    enum status {
        WAITING_FOR_ACTION = "waiting_for_action",
        APPROVAL_PENDING = "approval_pending",
        APPROVED = "approved",
        CHANGES_REQUESTED = "changes_requested",
        FILES_CHANGED = "files_changed"
    }
}

type ApprovalSheetWebhookFile = {
    confirm_hash?: string;
    submitted_design?: string;
    recommended_design?: string;
    approval_sheet?: string;
};

/**
 * If the costs are being calculated or recalculated, this will have the status `calculating`. Once finished the status will be `done`.
 */
declare enum CalculationStatus {
    DONE = "done",
    CALCULATING = "calculating",
    FAILED = "failed"
}

/**
 * Information about the Item
 */
type ItemReadonly = {
    /**
     * Item ID
     */
    readonly id: number;
    external_id: ItemExternalId;
    /**
     * Item quantity
     */
    quantity: number;
    /**
     * Item retail price
     */
    retail_price: string;
    /**
     * Item custom name
     */
    name: string;
    placements: PlacementsList;
    product_options: ProductOptions;
    /**
     * HATEOAS links
     */
    readonly _links: {
        self: HateoasLink;
    };
};

type CatalogItemReadonly = ({
    /**
     * Catalog source
     */
    source: CatalogItemReadonly.source;
    /**
     * ID of catalog variant
     */
    catalog_variant_id: number;
} & ItemReadonly);
declare namespace CatalogItemReadonly {
    /**
     * Catalog source
     */
    enum source {
        CATALOG = "catalog"
    }
}

/**
 * Simplified information about the Catalog Item
 */
type CatalogItemSummary = {
    /**
     * Item ID
     */
    readonly id: number;
    /**
     * The item type
     */
    type: CatalogItemSummary.type;
    /**
     * Item source
     */
    source: CatalogItemSummary.source;
    /**
     * Catalog Variant ID associated with the Item
     */
    catalog_variant_id: number;
    /**
     * Item user specified external ID
     */
    external_id: string | null;
    /**
     * Item quantity
     */
    quantity: number;
    /**
     * Item custom name
     */
    name?: string;
    /**
     * The price Printful charges for the Item
     */
    price: string;
    /**
     * Item retail price
     */
    retail_price: string;
    /**
     * The price currency
     */
    currency: string;
    /**
     * The retail price currency
     */
    retail_currency: string;
    /**
     * HATEOAS links
     */
    readonly _links: {
        self: HateoasLink;
    };
};
declare namespace CatalogItemSummary {
    /**
     * The item type
     */
    enum type {
        ORDER_ITEM = "order_item",
        BRANDING_ITEM = "branding_item"
    }
    /**
     * Item source
     */
    enum source {
        CATALOG = "catalog"
    }
}

/**
 * Catalog option definition
 */
type CatalogOption = {
    /**
     * Option identifier
     */
    name: string;
    /**
     * Available techniques for option
     */
    techniques: Array<string>;
    /**
     * Type of accepted value
     */
    type: string;
    /**
     * List of available option values.
     */
    values: any[];
};

/**
 * Information about the Category
 */
type Category = {
    /**
     * Category ID
     */
    id: number;
    /**
     * ID of the parent Category. If there is no parent Category, null is returned.
     */
    parent_id: number | null;
    /**
     * The URL of the Category image
     */
    image_url: string;
    /**
     * Category title
     */
    title: string;
    /**
     * HATEOAS links
     */
    _links: {
        /**
         * Link to single category
         */
        self?: HateoasLink;
    };
};

/**
 * Category ID
 */
type CategoryId = number;

/**
 * One or more color names to return only products with variants of one the those colors.
 *
 */
type ColorsFilter = Array<string>;

/**
 * The Order costs (Printful prices)
 */
type Costs = {
    calculation_status: CalculationStatus;
    /**
     * The code of the currency in which the costs are returned.
     */
    currency: string | null;
    /**
     * Total cost of all items.
     */
    subtotal: string | null;
    /**
     * Discount sum.
     */
    discount: string | null;
    /**
     * Shipping costs.
     */
    shipping: string | null;
    /**
     * Digitization costs.
     */
    digitization: string | null;
    /**
     * Additional fee for custom product.
     */
    additional_fee: string | null;
    /**
     * Custom product fulfillment fee.
     */
    fulfillment_fee: string | null;
    /**
     * Retail delivery fee.
     */
    retail_delivery_fee: string | null;
    /**
     * Sum of vat (not included in the item price).
     */
    vat: string | null;
    /**
     * Sum of taxes (not included in the item price).
     */
    tax: string | null;
    /**
     * Grand Total (subtotal-discount+tax+vat+shipping).
     */
    total: string | null;
};

type Country = {
    /**
     * Country code
     */
    code: string;
    /**
     * Country name
     */
    name: string;
    /**
     * This array contains all states available for a country. If states are not required or not applicable for a given country this array will be empty.
     */
    states: Array<{
        /**
         * State code
         */
        code?: string;
        /**
         * State name
         */
        name?: string;
    }>;
};

/**
 * The currency (3-letter code) used to determine currency in which the prices will be displayed. The store currency will be used by default. The format is compliant with ISO 4217 standard.
 */
type Currency = string;

/**
 * The currency (3-letter code) to return the statistics in.
 * The store currency will be used by default.
 *
 */
type Currency_2 = string;

/**
 * The values for customized packing slip
 */
type PackingSlipReadonly = {
    /**
     * Customer service email
     */
    email: string;
    /**
     * Customer service phone
     */
    phone: string;
    /**
     * Custom packing slip message
     */
    message: string;
    /**
     * URL address to a sticker we will put on a package
     */
    logo_url: string;
    /**
     * Store name override for the return address
     */
    store_name: string;
    /**
     * Your own Order ID that will be printed instead of Printful's Order ID
     */
    custom_order_id: string;
};

/**
 * The Order's customization values
 */
type CustomizationReadonly = {
    gift: Gift;
    packing_slip: PackingSlipReadonly;
};

/**
 * The beginning of the period to get the statistics from (date in `Y-m-d` format).
 */
type DateFrom = string;

/**
 * The end of the period to get the statistics from (date in `Y-m-d` format).
 */
type DateTo = string;

type FileLayer = {
    /**
     * File type layer
     */
    type: string;
    /**
     * Possible layer options
     */
    layer_options?: Array<CatalogOption>;
};

/**
 * Information about the product placements that can be used to specify the design placement
 */
type DesignPlacement = {
    /**
     * Name of placement that can be used to place design in a correct spot on a product
     */
    placement: string;
    /**
     * Indicates technique for which the placements are available
     */
    technique: string;
    /**
     * Print area width for that placement
     */
    print_area_width?: number;
    /**
     * Print area height for that placement
     */
    print_area_height?: number;
    /**
     * Available layers for that product
     */
    layers: Array<FileLayer>;
    /**
     * Possible placement options
     */
    placement_options?: Array<CatalogOption>;
};

type HeaderSource = {
    /**
     * Name of the header which is incorrect
     */
    header?: string;
};

type ParameterSource = {
    /**
     * Name of the URL query parameter that is incorrect
     */
    parameter?: string;
};

type PointerSource = {
    /**
     * Pointer to an invalid value in request body
     */
    pointer?: string;
};

type Error$1 = {
    /**
     * a URI that uniquely identifies the validation rule that failed. If it’s a URL, it should point to an explanation of the constraint in the documentation.
     */
    type?: string;
    /**
     * A human-readable explanation of the error
     */
    detail?: string;
    /**
     * Source of the value that caused the issue
     */
    source?: (HeaderSource | ParameterSource | PointerSource);
    /**
     * List of valid values that could be used instead to avoid the error
     */
    valid_values?: Array<string>;
};

type EventConfigurationResponse = {};

/**
 * Event type
 */
type EventType = string;

/**
 * Information about the File
 */
type File = {
    /**
     * File ID
     */
    readonly id: number;
    /**
     * Source URL where the file was downloaded from.
     */
    url: string;
    /**
     * MD5 checksum of the file
     */
    readonly hash: string | null;
    /**
     * File name
     */
    filename: string | null;
    /**
     * MIME type of the file
     */
    readonly mime_type: string | null;
    /**
     * Size in bytes
     */
    readonly size: number;
    /**
     * Width in pixels
     */
    readonly width: number | null;
    /**
     * Height in pixels
     */
    readonly height: number | null;
    /**
     * Resolution DPI.<br>**Note:** for vector files this may be indicated as only 72dpi, but it doesn't affect print quality since the vector files are resolution independent.
     */
    readonly dpi: number | null;
    /**
     * File processing status
     */
    readonly status: File.status;
    /**
     * File creation date
     */
    created: string;
    /**
     * Small thumbnail URL
     */
    readonly thumbnail_url: string | null;
    /**
     * Medium preview image URL
     */
    readonly preview_url: string | null;
    /**
     * Whether the file is shown in the Printfile Library.
     */
    visible: boolean;
    /**
     * Whether it is a temporary printfile.
     */
    readonly is_temporary: boolean;
    /**
     * HATEOAS links
     */
    readonly _links: {
        /**
         * Link to same resource
         */
        self: HateoasLink;
    };
};
declare namespace File {
    /**
     * File processing status
     */
    enum status {
        WAITING = "waiting",
        OK = "ok",
        FAILED = "failed",
        DELETED = "deleted"
    }
}

/**
 * File ID.
 */
type FileId = number;

/**
 * The list of the filters that were used in the request
 */
type FilterSettings = Array<{
    /**
     * Name of the filter
     */
    name: string;
    /**
     * Value of the filter
     */
    value: string;
}>;

/**
 * Item ID (integer) or Item External ID (string prepended with "@" symbol)
 */
type ItemId = (number | string);

/**
 * Information about the Item
 */
type ItemWithoutPlacementsReadonly = {
    /**
     * Item ID
     */
    readonly id: number;
    external_id: ItemExternalId;
    /**
     * Item quantity
     */
    quantity: number;
    /**
     * Item retail price
     */
    retail_price: string;
    /**
     * Item custom name
     */
    name: string;
    /**
     * HATEOAS links
     */
    readonly _links: {
        self: HateoasLink;
    };
};

/**
 * The number of results to return per page.
 */
type Limit = number;

/**
 * Number of items per page (max 100)
 */
type Limit_2 = number;

/**
 * Use this to specify which locale you would like to use in the responses, for some endpoints this can affect translations.
 *
 */
type Locale = string;

/**
 * The measurement value for a specific size
 */
type MeasurementValue = {
    /**
     * The size with which the value is associated
     */
    size: string;
    /**
     * The single value associated with a size (whether this or `min_value` and `max_value` will be present)
     */
    value?: string;
    /**
     * The lower boundary of the value range (whether this and `max_value` or `value` will be present)
     */
    min_value?: string;
    /**
     * The upper boundary of the value range (whether this and `min_value` or `value` will be present)
     */
    max_value?: string;
};

/**
 * The information about a single size table measurement
 */
type Measurement = {
    /**
     * Measurement type
     */
    type_label: string;
    /**
     * The measurement unit if it's not defined on the size table level or is different
     */
    unit: string;
    /**
     * The measurement values for each size
     */
    values: Array<MeasurementValue>;
};

/**
 * A comma-separated list of measurement unit in which size tables are to be returned (`inches` or `cm`).
 * The default value is determined based on the locale country. The inches are used for United States, Liberia
 * and Myanmar, for other countries the unit defaults to centimeters.
 *
 */
type MeasurementUnit = string;

/**
 * Result of mockup generator tasks.
 */
type Mockup = {
    /**
     * Placement name for which the mockup was generated
     */
    placement: string;
    /**
     * This is a name that can be displayed to end customers.
     */
    display_name: string;
    /**
     * Technique name for which the mockup was generated
     */
    technique: string;
    /**
     * Mockup style identifier. Available mockup styles can be found under _[Retrieve catalog product mockup styles](#operation/retrieveMockupStylesByProductId)_.
     */
    style_id: number;
    /**
     * Temporary URL to generated mockup image. Image will be removed from the hosting after a day so make sure to persist a copy if needed.
     */
    mockup_url: string;
};

/**
 * One or more mockup generator task IDs to return only specified tasks. The IDs can be found in the response of the operation _[Create mockup generator tasks](#operation/createMockupGeneratorTasks)_.
 */
type MockupGeneratorIds = Array<string>;

/**
 * Result of mockup generator task
 */
type MockupGeneratorTask = {
    /**
     * Unique task identifier used to check status of the task and retrieve the results once the task is ready.
     */
    id: number;
    /**
     * Task status:
     * * `completed` – Mockup Generator task was successfully processed
     * * `pending` – Mockup Generator task is still being processed
     * * `failed` – Mockup Generator task failed
     *
     */
    status: MockupGeneratorTask.status;
    /**
     * A list of mockups grouped by variant. Note that the same list of mockups can appear under multiple variants, this happens in cases where the variants have the same mockups, for example if the only difference is the size of the variant.
     */
    catalog_variant_mockups: Array<{
        /**
         * ID of a catalog variant for which the mockup was generated.
         */
        catalog_variant_id: number;
        /**
         * List of generated mockups
         */
        mockups: Array<Mockup>;
    }>;
    failure_reasons: Array<Error$1>;
    /**
     * HATEOAS links
     */
    readonly _links: {
        /**
         * Link to the Generator Task details
         */
        self: HateoasLink;
    };
};
declare namespace MockupGeneratorTask {
    /**
     * Task status:
     * * `completed` – Mockup Generator task was successfully processed
     * * `pending` – Mockup Generator task is still being processed
     * * `failed` – Mockup Generator task failed
     *
     */
    enum status {
        COMPLETED = "completed",
        PENDING = "pending",
        FAILED = "failed"
    }
}

/**
 * One or more placement idenitifiers used to filter in mockup styles that match a given placement. The complete list of placements can be found [here](https://developers.printful.com/docs/#section/Placements).
 */
type MockupPlacementsFilter = Array<string>;

/**
 * Used to specify style of images For example:
 * * On the hanger
 * * On the Male/Female model
 * * Flat on the table
 * * etc.
 * Available mockup styles for catalog product can be found under _[Retrieve catalog product mockup styles](#operation/retrieveMockupStylesByProductId)_.
 *
 */
type MockupStyleIds = number;

/**
 * Data containing information about the available mockup styles
 */
type MockupStyles = {
    /**
     * Catalog product placement for which the mockup styles defined in `mockup_style_ids` could be used.
     */
    placement: string;
    /**
     * Placement display name that can be shown to end-customers.
     */
    display_name: string;
    /**
     * Technique name
     */
    technique: string;
    /**
     * Print area width of a placement defined in inches
     */
    print_area_width: number;
    /**
     * Print area height of a placement defined in inches
     */
    print_area_height: number;
    /**
     * Type of the print area.
     */
    print_area_type: MockupStyles.print_area_type | null;
    /**
     * Print area DPI
     */
    dpi: number;
    /**
     * A list of available mockup styles for example:
     * * On the hanger
     * * On the Male/Female model
     * * Flat on the table
     * * etc.
     */
    mockup_styles: Array<{
        /**
         * Identifier of mockup style. This value is intended to be used when specifying the mockup styles during mockup generator task creation _[Create mockup generator tasks](#operation/createMockupGeneratorTasks)_.
         */
        id: number;
        /**
         * The category name of the mockup style
         */
        category_name: string;
        /**
         * Display name of mockup view. View determines a point of view of the camera. E.g to the right or left to the mockup.
         */
        view_name: string;
        /**
         * A list of variants that this style is restricted to. If `null`, this means that there are no restrictions and the style can be used with all variants
         */
        restricted_to_variants: any[] | null;
    }>;
};
declare namespace MockupStyles {
    /**
     * Type of the print area.
     */
    enum print_area_type {
        SIMPLE = "simple",
        ADVANCED = "advanced"
    }
}

/**
 * Data containing information about the available mockup templates which can be used for user-side positioning. For example for intention of generating mockups without the use of Printful's mockup generator.
 */
type MockupTemplates = {
    /**
     * A list of variant IDs for which the positions apply
     */
    catalog_variant_ids: Array<number>;
    /**
     * Catalog product placement that is used for the design
     */
    placement: string;
    /**
     * Catalog product technique that is used for the design
     */
    technique: string;
    /**
     * Semi-transparent main template image URL.
     */
    image_url: string;
    /**
     * Background image URL (optional). Used for certain mockups e.g. a wall behind hanged poster. If it's defined it is intended to be layered under the image defined in `image_url`.
     */
    background_url: string | null;
    /**
     * HEX color code that should be used as a background color of `image_url`.
     */
    background_color: number | null;
    /**
     * Width of the whole template in pixels.
     */
    template_width: number;
    /**
     * Height of the whole template in pixels.
     */
    template_height: number;
    /**
     * Print area width (image is positioned in this area).
     */
    print_area_width: number;
    /**
     * Print area height (image is positioned in this area).
     */
    print_area_height: number;
    /**
     * Print area top offset (offset in template).
     */
    print_area_top: number;
    /**
     * Print area left offset (offset in template).
     */
    print_area_left: number;
    /**
     * Should the main template image (image_url) be used as an overlay or as a background.
     */
    template_positioning: MockupTemplates.template_positioning;
    /**
     * Wall art product orientation. Possible values: horizontal, vertical, any
     */
    orientation: MockupTemplates.orientation;
};
declare namespace MockupTemplates {
    /**
     * Should the main template image (image_url) be used as an overlay or as a background.
     */
    enum template_positioning {
        OVERLAY = "overlay",
        BACKGROUND = "background"
    }
    /**
     * Wall art product orientation. Possible values: horizontal, vertical, any
     */
    enum orientation {
        HORIZONTAL = "horizontal",
        VERTICAL = "vertical",
        ANY = "any"
    }
}

/**
 * Wildcard match of the name value. Note that the value will be matched if the name property contains the value anywhere in the string.
 */
type NameFilter = string;

/**
 * If true only new Products will be returned.
 */
type NewFilter = boolean;

/**
 * Information about the OAuth scope
 */
type OAuthScope = {
    /**
     * Display name of the scope
     */
    name: OAuthScope.name;
    /**
     * The scope value
     */
    value: OAuthScope.value;
};
declare namespace OAuthScope {
    /**
     * Display name of the scope
     */
    enum name {
        VIEW_ORDERS_OF_THE_AUTHORIZED_STORE = "View orders of the authorized store",
        VIEW_AND_MANAGE_ORDERS_OF_THE_AUTHORIZED_STORE = "View and manage orders of the authorized store",
        VIEW_STORE_PRODUCTS = "View store products",
        VIEW_AND_MANAGE_STORE_PRODUCTS = "View and manage store products",
        VIEW_STORE_FILES = "View store files",
        VIEW_AND_MANAGE_STORE_FILES = "View and manage store files",
        VIEW_STORE_WEBHOOKS = "View store webhooks",
        VIEW_AND_MANAGE_STORE_WEBHOOKS = "View and manage store webhooks"
    }
    /**
     * The scope value
     */
    enum value {
        ORDERS_READ = "orders/read",
        ORDERS = "orders",
        SYNC_PRODUCTS_READ = "sync_products/read",
        SYNC_PRODUCTS = "sync_products",
        FILE_LIBRARY_READ = "file_library/read",
        FILE_LIBRARY = "file_library",
        WEBHOOKS_READ = "webhooks/read"
    }
}

/**
 * The number of results to not include in the response starting from the beginning of the list.
 *
 * This can be used to return results after the initial 100. For example, sending offset 100
 *
 */
type Offset = number;

/**
 * Result set offset
 */
type Offset_2 = number;

/**
 * The Order's retail costs
 */
type RetailCosts = {
    calculation_status: CalculationStatus;
    /**
     * The code of the currency in which the retail costs are returned.
     */
    currency: string;
    /**
     * Total cost of all items.
     */
    subtotal: string | null;
    /**
     * Discount sum.
     */
    discount: string;
    /**
     * Shipping costs.
     */
    shipping: string;
    /**
     * Sum of VAT (not included in the item price).
     */
    vat: string;
    /**
     * Sum of taxes (not included in the item price).
     */
    tax: string;
    /**
     * Grand Total (subtotal-discount+tax+vat+shipping).
     */
    total: string | null;
};

/**
 * Simplified information about the Warehouse Item
 */
type WarehouseItemSummary = {
    /**
     * Item ID
     */
    readonly id?: number;
    /**
     * The item type
     */
    type?: WarehouseItemSummary.type;
    /**
     * Item source
     */
    source?: WarehouseItemSummary.source;
    /**
     * ID of warehouse product associated with the Item
     */
    warehouse_product_variant_id?: number;
    /**
     * Item user specified external ID
     */
    external_id?: string | null;
    /**
     * Item quantity
     */
    quantity?: number;
    /**
     * Item custom name
     */
    name?: string;
    /**
     * The price Printful charges for the Item
     */
    price?: string;
    /**
     * Item retail price
     */
    retail_price?: string;
    /**
     * The price currency
     */
    currency?: string;
    /**
     * The retail price currency
     */
    retail_currency?: string;
    /**
     * HATEOAS links
     */
    readonly _links?: {
        self?: HateoasLink;
    };
};
declare namespace WarehouseItemSummary {
    /**
     * The item type
     */
    enum type {
        ORDER_ITEM = "order_item",
        BRANDING_ITEM = "branding_item"
    }
    /**
     * Item source
     */
    enum source {
        WAREHOUSE = "warehouse"
    }
}

/**
 * Order
 */
type Order = {
    /**
     * Order ID
     */
    id: number;
    /**
     * Order ID from the external system
     */
    external_id: string | null;
    /**
     * Store ID
     */
    store_id: number;
    /**
     * Shipping method. Defaults to 'STANDARD'
     */
    shipping: string;
    /**
     * Order status:<br />
     * **draft** - order is not submitted for fulfillment<br />
     * **failed** - order was submitted for fulfillment but was not accepted because of an error (problem with address, printfiles, charging, etc.)<br />
     * **pending** - order has been submitted for fulfillment<br />
     * **canceled** - order is canceled<br />
     * **onhold** - order has encountered a problem during the fulfillment that needs to be resolved together with the Printful customer service<br />
     * **inprocess** - order is being fulfilled and is no longer cancellable<br />
     * **partial** - order is partially fulfilled (some items are shipped already, the rest will follow)<br />
     * **fulfilled** - all items are shipped
     *
     */
    status: string;
    /**
     * Time when the order was created
     */
    created_at: string;
    /**
     * Time when the order was updated
     */
    updated_at: string;
    /**
     * The recipient data.
     */
    recipient: AddressReadonly;
    costs: Costs;
    retail_costs: RetailCosts;
    /**
     * Simplified order item list. For a full list of all items use the [Get Order Items](#operation/getItemsByOrderId) endpoint.
     */
    order_items: Array<(CatalogItemSummary | WarehouseItemSummary)>;
    customization?: CustomizationReadonly;
    /**
     * HATEOAS links
     */
    _links: {
        /**
         * Link to the order details
         */
        self: HateoasLink;
        /**
         * Link to the order confirmation
         */
        order_confirmation: HateoasLink;
        /**
         * Link to the order invoice
         */
        order_invoices: HateoasLink;
        /**
         * Link to all order items associated with the order
         */
        order_items: HateoasLink;
        /**
         * Link to the shipments associated with the order
         */
        shipments: HateoasLink;
    };
};

/**
 * Order estimation task ID.
 */
type OrderEstimationTaskId = string;

/**
 * Order ID (integer) or Order External ID (string prepended with "@" symbol)
 */
type OrderId = (number | string);

/**
 * Order ID.
 */
type OrderId_2 = number;

/**
 * Order summary
 */
type OrderSummary = {
    /**
     * Order ID
     */
    id: number;
    /**
     * Order ID from the external system
     */
    external_id: string | null;
    /**
     * Store ID
     */
    store_id: number;
    /**
     * Shipping method. Defaults to 'STANDARD'
     */
    shipping: string;
    /**
     * Order status:<br />
     * **draft** - order is not submitted for fulfillment<br />
     * **failed** - order was submitted for fulfillment but was not accepted because of an error (problem with address, printfiles, charging, etc.)<br />
     * **pending** - order has been submitted for fulfillment<br />
     * **canceled** - order is canceled<br />
     * **onhold** - order has encountered a problem during the fulfillment that needs to be resolved together with the Printful customer service<br />
     * **inprocess** - order is being fulfilled and is no longer cancellable<br />
     * **partial** - order is partially fulfilled (some items are shipped already, the rest will follow)<br />
     * **fulfilled** - all items are shipped
     *
     */
    status: string;
    /**
     * Time when the order was created
     */
    created_at: string;
    /**
     * Time when the order was updated
     */
    updated_at: string;
    /**
     * The recipient data.
     */
    recipient: Address;
    costs: Costs;
    retail_costs: RetailCosts;
    /**
     * Simplified order item list. For a full list of all items use the [Get Order Items](#operation/getItemsByOrderId) endpoint.
     */
    order_items: Array<(CatalogItemSummary | WarehouseItemSummary)>;
    /**
     * HATEOAS links
     */
    _links: {
        /**
         * Link to the order details
         */
        self: HateoasLink;
        /**
         * Link to all order items associated with the order
         */
        order_items: HateoasLink;
        /**
         * Link to the shipments associated with the order
         */
        shipments: HateoasLink;
    };
};

/**
 * Use this to specify which store you want to use.
 * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
 *
 */
type PathStoreId = number;

/**
 * Filters result by specified placement
 */
type PlacementFilter = string;

/**
 * One or more identifiers of a placement to return only products with variants that have that placement. The complete list of placements can be found [here](https://developers.printful.com/docs/#section/Placements).
 */
type PlacementsFilter = Array<string>;

type ProblemDetails = {
    /**
     * A URL that can be followed to get to our [documentation](#section/Errors) for the problem type.
     */
    type?: string;
    /**
     * The HTTP status code.
     */
    status?: number;
    /**
     * A human-readable summary of the problem type.
     */
    title?: string;
    /**
     * A human-readable explanation specific to the occurrence of the problem.
     */
    details?: string;
    /**
     * Optional. A URI that uniquely identifies the specific occurence of the problem
     */
    instance?: string;
};

/**
 * Information about the available Product's technique
 */
type Techniques = {
    /**
     * Technique key
     */
    key: string;
    /**
     * Technique display name
     */
    display_name: string;
    /**
     * This is the default product technique
     */
    is_default: boolean;
};

/**
 * Information about the Product
 */
type Product = {
    /**
     * Product ID
     */
    id: number;
    /**
     * Main category of product
     */
    main_category_id: number;
    /**
     * Product type
     */
    type: string;
    /**
     * Product name
     */
    name: string;
    /**
     * Brand name
     */
    brand: string | null;
    /**
     * Model name
     */
    model: string | null;
    /**
     * URL of a sample image for this product
     */
    image: string;
    /**
     * Number of available variants for this product
     */
    variant_count: number;
    /**
     * Product is discontinued and can no longer be ordered
     */
    is_discontinued: boolean;
    /**
     * Product description
     */
    description: string;
    /**
     * Product sizes
     */
    sizes: Array<string>;
    /**
     * Product colors
     */
    colors: Array<{
        /**
         * Name of the color
         */
        name: string;
        /**
         * Value of the color in HEX
         */
        value: string;
    }>;
    /**
     * Product's techniques
     */
    techniques: Array<Techniques>;
    /**
     * Product's design placements
     */
    placements: Array<DesignPlacement>;
    /**
     * Possible product options
     */
    product_options: Array<CatalogOption>;
};

/**
 * One or more category IDs to return only products in those categories. The IDs can be found in the response of the
 * operation _[Get Categories](#operation/getCategories)_.
 *
 */
type ProductCategoryIds = Array<number>;

type ProductData = {};

/**
 * Product ID.
 */
type ProductId = number;

/**
 * HATEOAS links
 */
type ProductLinks = {
    /**
     * Link to same resource
     */
    self: HateoasLink;
    /**
     * Link to product variants
     */
    variants: HateoasLink;
    /**
     * Link to product categories
     */
    categories: HateoasLink;
    /**
     * Link to product prices
     */
    product_prices: HateoasLink;
    /**
     * Link product size guides
     */
    product_sizes: HateoasLink;
    /**
     * Link product images
     */
    product_images: HateoasLink;
    /**
     * Link to product stock availability endpoint
     */
    availability: HateoasLink;
};

/**
 * Information about the Catalog Product
 */
type ProductInfo = (Product & {
    _links?: ProductLinks;
});

/**
 * Product prices information
 */
type VariantTechniquePrice = {
    /**
     * Key associated to the technique
     */
    technique_key: string;
    /**
     * Full technique name
     */
    technique_display_name: string;
    /**
     * Price converted to the region currency
     */
    price: string;
    /**
     * Discounted price per region
     */
    discounted_price: string;
};

/**
 * Variant with the pricing information
 */
type VariantsPriceData = {
    /**
     * Variant id
     */
    id: number;
    /**
     * Array containing pricing information about available techniques per variant
     */
    techniques: Array<VariantTechniquePrice>;
};

/**
 * Product prices information
 */
type ProductPrices = {
    /**
     * Abbreviation from the store currency or currency specified
     */
    currency: string;
    /**
     * Product related with the pricing information
     */
    product: {
        /**
         * Product Identifier
         */
        id: number;
        /**
         * Array containing the pricing information about the placement prices. The product price includes one print, pricing here only applies to each additional placement after the first. Note that while a placement might be included there is sometimes additional service fees that are applied to certain placement, for example large embroidery has an additional fee.
         */
        placements: Array<AdditionalPlacements>;
    };
    variants: Array<VariantsPriceData>;
};

/**
 * Size table for the Product
 */
type SizeTable = {
    /**
     * Size table type
     */
    type: SizeTable.type;
    /**
     * The unit the size table values are in
     */
    unit: SizeTable.unit;
    /**
     * The size table description (HTML)
     */
    description: string;
    /**
     * The URL of an image showing the measurements
     */
    image_url: string;
    /**
     * The description of the measurement image (HTML)
     */
    image_description: string;
    /**
     * The size table measurements
     */
    measurements: Array<Measurement>;
};
declare namespace SizeTable {
    /**
     * Size table type
     */
    enum type {
        MEASURE_YOURSELF = "measure_yourself",
        PRODUCT_MEASURE = "product_measure",
        INTERNATIONAL = "international"
    }
    /**
     * The unit the size table values are in
     */
    enum unit {
        INCHES = "inches",
        CM = "cm"
    }
}

/**
 * Size Guide information for the Product
 */
type ProductSizeGuide = {
    /**
     * Product ID
     */
    catalog_product_id: number;
    /**
     * The sizes available for the Product
     */
    available_sizes: Array<string>;
    /**
     * Size tables for the product
     */
    size_tables: Array<SizeTable>;
};

/**
 * HATEOAS links
 */
type ProductsLinks = {
    /**
     * Link to same resource
     */
    self: HateoasLink;
    /**
     * Link to next resource
     */
    next?: HateoasLink;
    /**
     * Link to first resource
     */
    first?: HateoasLink;
    /**
     * Link to the last resource
     */
    last?: HateoasLink;
};

type ProductsParam = {};

/**
 * A comma-separated list of report types to be retrieved.
 */
declare enum ReportTypes {
    SALES_AND_COSTS = "sales_and_costs",
    PROFIT = "profit",
    AVERAGE_FULFILLMENT_TYPE = "average_fulfillment_type",
    COSTS_BY_AMOUNT = "costs_by_amount",
    COSTS_BY_PRODUCT = "costs_by_product",
    COSTS_BY_VARIANT = "costs_by_variant",
    PRINTFUL_COSTS = "printful_costs",
    SALES_AND_COSTS_SUMMARY = "sales_and_costs_summary",
    TOTAL_PAID_ORDERS = "total_paid_orders"
}

/**
 * Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
 */
declare enum SellingRegion {
    WORLDWIDE = "worldwide",
    NORTH_AMERICA = "north_america",
    CANADA = "canada",
    EUROPE = "europe",
    SPAIN = "spain",
    LATVIA = "latvia",
    UK = "uk",
    FRANCE = "france",
    GERMANY = "germany",
    AUSTRALIA = "australia",
    JAPAN = "japan",
    NEW_ZEALAND = "new_zealand",
    ITALY = "italy",
    BRAZIL = "brazil",
    SOUTHEAST_ASIA = "southeast_asia",
    REPUBLIC_OF_KOREA = "republic_of_korea",
    ENGLISH_SPEAKING_REGIONS = "english_speaking_regions",
    ALL = "all"
}

/**
 * Only returns the products that can be sold in the specified region. If is set to 'all' returns each region availability for specified product.
 */
declare enum SellingRegionAll {
    WORLDWIDE = "worldwide",
    NORTH_AMERICA = "north_america",
    CANADA = "canada",
    EUROPE = "europe",
    SPAIN = "spain",
    LATVIA = "latvia",
    UK = "uk",
    FRANCE = "france",
    GERMANY = "germany",
    AUSTRALIA = "australia",
    JAPAN = "japan",
    NEW_ZEALAND = "new_zealand",
    ITALY = "italy",
    BRAZIL = "brazil",
    SOUTHEAST_ASIA = "southeast_asia",
    REPUBLIC_OF_KOREA = "republic_of_korea",
    ENGLISH_SPEAKING_REGIONS = "english_speaking_regions",
    ALL = "all"
}

/**
 * Specifies the region production currency that the product prices will be calculated in
 */
type SellingRegionPrice = string;

type SellingRegionStockAvailability = {
    /**
     * Name of the selling region for which the stock availability apply
     */
    name: SellingRegionStockAvailability.name;
    /**
     * Availability status:
     * * in stock: The product is stocked in this region and fulfillable with the specified technique
     * * out of stock: Product went out of stock at the supplier in this region but is fulfillable with the specified technique
     * * not fulfillable: (a) Printful does not stock this product in this region; or (b) the product is not fulfillable with the specified technique in this region
     * * unknown: The exact stock status could not be determined
     *
     */
    availability: SellingRegionStockAvailability.availability;
    /**
     * Availability of a placement options for a catalog variant in a specified selling region. If a placement option is present in this array and availability is set to true it means it is available for this product. If it is set to false it means that the placement option is available for the variant, but not currently fulfillable for the given selling region settings. If an option is not present in the array but is present as an option on the product (see: [Retrieve a single catalog product](#tag/Catalog-v2/operation/getProducts)) it means the option is always available for that product.
     *
     */
    placement_option_availability: Array<{
        name?: string;
        availability?: boolean;
    }>;
};
declare namespace SellingRegionStockAvailability {
    /**
     * Name of the selling region for which the stock availability apply
     */
    enum name {
        WORLDWIDE = "worldwide",
        NORTH_AMERICA = "north_america",
        CANADA = "canada",
        EUROPE = "europe",
        SPAIN = "spain",
        LATVIA = "latvia",
        UK = "uk",
        FRANCE = "france",
        GERMANY = "germany",
        AUSTRALIA = "australia",
        JAPAN = "japan",
        NEW_ZEALAND = "new_zealand",
        ITALY = "italy",
        BRAZIL = "brazil",
        SOUTHEAST_ASIA = "southeast_asia",
        REPUBLIC_OF_KOREA = "republic_of_korea",
        ENGLISH_SPEAKING_REGIONS = "english_speaking_regions"
    }
    /**
     * Availability status:
     * * in stock: The product is stocked in this region and fulfillable with the specified technique
     * * out of stock: Product went out of stock at the supplier in this region but is fulfillable with the specified technique
     * * not fulfillable: (a) Printful does not stock this product in this region; or (b) the product is not fulfillable with the specified technique in this region
     * * unknown: The exact stock status could not be determined
     *
     */
    enum availability {
        IN_STOCK = "in stock",
        OUT_OF_STOCK = "out of stock",
        NOT_FULFILLABLE = "not fulfillable",
        UNKNOWN = "unknown"
    }
}

type ServerErrorDetails = (ProblemDetails & {
    status?: number;
});

type ShipmentItem = {
    id?: number;
    order_item_id?: number;
    order_item_external_id?: string | null;
    order_item_name?: string | null;
    quantity?: number;
    _links?: {
        order_item?: {
            href?: string;
        };
    };
};

type TrackingEvent = {
    triggered_at?: string;
    description?: string;
};

type Shipment = {
    id?: number;
    order_id?: number;
    order_external_id?: string | null;
    /**
     * The carrier that will fulfill the shipment.
     */
    carrier?: string | null;
    /**
     * The service being used to fulfill the shipment.
     */
    service?: string | null;
    shipment_status?: Shipment.shipment_status;
    shipped_at?: string | null;
    delivery_status?: Shipment.delivery_status;
    delivered_at?: string | null;
    departure_address?: {
        country_name?: string;
        country_code?: string;
        state_code?: string;
    };
    /**
     * If there is an issue with items in a shipment, a reshipment might be necessary. This property will be false if it is the original shipment and true if it is a reshipment
     */
    is_reshipment?: boolean;
    tracking_url?: string;
    tracking_events?: Array<TrackingEvent>;
    estimated_delivery?: {
        /**
         * Earliest estimated date the shipment will arrive
         */
        from_date?: string;
        /**
         * Latest estimated date the shipment will arrive
         */
        to_date?: string;
        calculated_at?: string;
    } | null;
    shipment_items?: Array<ShipmentItem>;
    _links?: {
        self?: {
            href?: string;
        };
        order?: {
            href?: string;
        };
    };
};
declare namespace Shipment {
    enum shipment_status {
        PENDING = "pending",
        ONHOLD = "onhold",
        CANCELED = "canceled",
        PACKAGED = "packaged",
        SHIPPED = "shipped",
        RETURNED = "returned",
        OUTSTOCK = "outstock"
    }
    enum delivery_status {
        UNKNOWN = "unknown",
        DELIVERED = "delivered",
        PRE_TRANSIT = "pre_transit",
        IN_TRANSIT = "in_transit",
        OUT_FOR_DELIVERY = "out_for_delivery",
        AVAILABLE_FOR_PICKUP = "available_for_pickup",
        RETURN_TO_SENDER = "return_to_sender",
        FAILURE = "failure",
        CANCELED = "canceled"
    }
}

/**
 * Basic info about the shipment item.
 */
type ShipmentItem_2 = {
    /**
     * Catalog Variant ID of the shipment item.
     */
    catalog_variant_id: number;
    /**
     * List of items included in the shipment.
     */
    quantity: number;
};

/**
 * Basic info about the shipment.
 */
type Shipment_2 = {
    /**
     * Two-letter code (ISO 3166-1 alpha-2) associated with the departure country.
     */
    departure_country: string | null;
    /**
     * List of items included in the shipment.
     */
    shipment_items: Array<ShipmentItem_2>;
    /**
     * Whether customs fees may be required for this shipment.
     */
    customs_fees_possible: boolean;
};

/**
 * If this parameter is passed with value `true`, expired settings will be returned instead of a 404 warning.
 */
type ShowExpired = boolean;

/**
 * This parameter only is used if sort_type is also present and it changes the order of the returned products.
 * The exact meaning varies depending on the value of `sort_type`:
 * * `sort_type=new`
 * * ascending sorts from newest to oldest.
 * * descending sorts from oldest to newest.
 * * `sort_type=rating`
 * * ascending from lowest to highest rated.
 * * descending from highest to lowest rated.
 * * `sort_type=price`
 * * ascending from lowest to highest price.
 * * descending from highest to lowest price.
 * * `sort_type=bestseller`
 * * ascending from non bestsellers to bestsellers.
 * * descending from bestsellers to non bestsellers.
 *
 */
declare enum SortDirection {
    ASCENDING = "ascending",
    DESCENDING = "descending"
}

/**
 * The sorting strategy to use when sorting the result. When it's not present, no specific order is guaranteed.
 *
 */
declare enum SortType {
    NEW = "new",
    RATING = "rating",
    PRICE = "price",
    BESTSELLER = "bestseller"
}

/**
 * Use this to specify which store you want to use (required only for account level token).
 *
 * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
 *
 */
type StoreId = string;

/**
 * Store ID
 */
type StoreId_2 = InternalId;

/**
 * Use this to specify which store you want to use.
 *
 * The store IDs can be retrieved with the [Get basic information about stores](/docs/#operation/getStores) endpoint.
 *
 */
type StoreIdNotRequired = string;

/**
 * Information about the Store
 */
type StoreSchema = {
    /**
     * Store ID
     */
    id: number;
    /**
     * The type of the store is a reference to the type of integration used, Shopify, Etsy, etc. If no first party integration is used, the type will be `native`.
     */
    type: string;
    /**
     * The name given to the store, chosen by the user.
     */
    name: string;
};

/**
 * Order estimation task summary
 */
type TaskSummary = {
    /**
     * Task ID
     */
    id: string;
    /**
     * Task status
     */
    status: TaskSummary.status;
    costs: (Costs & Record<string, any> | null);
    retail_costs: (RetailCosts & Record<string, any> | null);
    /**
     * Reasons why calculation failed.
     */
    failure_reasons: Array<string>;
};
declare namespace TaskSummary {
    /**
     * Task status
     */
    enum status {
        PENDING = "pending",
        FAILED = "failed",
        COMPLETED = "completed"
    }
}

/**
 * One or more techniques to return only products with variants that can be printed using one of the techniques.
 */
type TechniquesFilter = Array<TechniqueEnum>;

type TechniqueStockAvailability = {
    technique: TechniqueEnum;
    /**
     * List of selling regions with stock availability
     */
    selling_regions: Array<SellingRegionStockAvailability>;
};

/**
 * Type of items returned (order_item, branding_item). By default all items are returned.
 */
type Type = string;

type Variant = {
    /**
     * Variant ID, use this to specify the product when creating orders
     */
    id: number;
    /**
     * ID of the product that this variant belongs to
     */
    catalog_product_id: number;
    /**
     * Display name
     */
    name: string;
    /**
     * Item size
     */
    size: string;
    /**
     * Item color
     */
    color: string | null;
    /**
     * Hexadecimal RGB color code. May not exactly reflect the real-world color
     */
    color_code: string | null;
    /**
     * Secondary hexadecimal RGB color code. May not exactly reflect the real-world color
     */
    color_code2: string | null;
    /**
     * URL of a preview image for this variant
     */
    image: string;
    /**
     * HATEOAS links
     */
    _links: {
        /**
         * Link to same resource
         */
        self: HateoasLink;
        /**
         * Link to details about the product
         */
        product_details: HateoasLink;
        /**
         * Link to a list of all catalog variants that are siblings of this catalog variant, relating to the same catalog product
         */
        product_variants: HateoasLink;
        /**
         * Link to pricing information about this catalog variant
         */
        variant_prices: HateoasLink;
        /**
         * Link to images related to this variant and details about those images
         */
        variant_images: HateoasLink;
        /**
         * Link to information about the availability of this variant
         */
        variant_availability: HateoasLink;
    };
};

/**
 * String values separated by comma. You can specify multiple variant colors filters.
 */
type VariantColor = string;

/**
 * Variant ID
 */
type VariantId = number;

type VariantImage = {
    /**
     * Placement associated with the image
     */
    placement: string;
    /**
     * image URL
     */
    image_url: string | null;
    /**
     * Background color of an image. Null if background transparent
     */
    background_color: string;
    /**
     * Background image of an image specified in the `image_url`. Null if no background image
     */
    background_image: string | null;
};

type VariantImages = {
    /**
     * Variant ID
     */
    catalog_variant_id: number;
    /**
     * Variant color
     */
    color: string | null;
    /**
     * Primary variant hex color used. Use this hex color to fill the mockup.
     */
    primary_hex_color: string | null;
    /**
     * Secondary variant hex color used. Use this hex color to fill the mockup.
     */
    secondary_hex_color: string | null;
    /**
     * Variant's images
     */
    images: Array<VariantImage>;
};

/**
 * Variant prices information
 */
type VariantPrices = {
    /**
     * Currency in which prices are returned
     */
    currency: string;
    product: {
        /**
         * Product Identifier
         */
        id?: number;
        /**
         * Array containing the pricing information about the placement prices
         */
        placements?: Array<AdditionalPlacements>;
    };
    variant: VariantsPriceData;
};

/**
 * Stock availability data for a specific catalog variant
 */
type VariantStockAvailability = {
    /**
     * Catalog variant ID for which the the stock availability data apply
     */
    catalog_variant_id: number;
    /**
     * Stock availability data for specific techniques of a catalog variant
     */
    techniques: Array<TechniqueStockAvailability>;
    /**
     * HATEOAS links
     */
    _links: {
        /**
         * Link to the catalog variant details
         */
        variant?: HateoasLink;
    };
};

type WarehouseItemReadonly = ({
    /**
     * Warehouse source
     */
    source: WarehouseItemReadonly.source;
    /**
     * ID of warehouse variant
     */
    warehouse_product_variant_id: number;
} & ItemWithoutPlacementsReadonly);
declare namespace WarehouseItemReadonly {
    /**
     * Warehouse source
     */
    enum source {
        WAREHOUSE = "warehouse"
    }
}

/**
 * Warehouse Product ID.
 */
type WarehouseProductId = number;

type Webhook = {};

type WebhookInfoResponse = {};

type WebhookCreated = WebhookInfoResponse;

type WebhookOrderData = {};

type WebhookShipmentData = {};

export { AddFile, AdditionalPlacements, Address, AddressReadonly, ApiError, ApprovalSheet, ApprovalSheetWebhookFile, ApprovalSheetsV2Service, AverageFulfillmentTime, BaseHttpRequest, BaseMockupProduct, CalculationStatus, CancelError, CancelablePromise, CatalogItem, CatalogItemReadonly, CatalogItemSummary, CatalogMockupProduct, CatalogOption, CatalogShippingRateItem, CatalogStockUpdatedEventConfigurationRequest, CatalogV2Service, Category, CategoryId, ColorsFilter, Costs, CostsByAmount, CostsByProduct, CostsByVariant, CountriesV2Service, Country, Currency, Currency_2, CustomBorderColorOption, Customization, CustomizationReadonly, DateFrom, DateTo, DefaultEventConfigurationRequest, DesignPlacement, Error$1 as Error, EstimationAddress, EventConfigurationRequest, EventConfigurationResponse, EventType, File, FileId, FileLayer, FileOptionPrices, FilesV2Service, FilterSettings, Gift, HateoasLink, HeaderSource, InsideLabelTypeOption, InsidePocketOption, InternalId, Item, ItemExternalId, ItemId, ItemReadonly, ItemWithoutPlacementsReadonly, KnitwearBaseColor, KnitwearColorReductionMode, KnitwearOptionValue, KnitwearTrimColor, KnitwearYarnColor, Layer, LayerOptionPrices, LayerOptions, LayerPosition, Layers, LifelikeOption, Limit, Limit_2, Locale, Measurement, MeasurementUnit, MeasurementValue, Mockup, MockupGeneratorIds, MockupGeneratorTask, MockupGeneratorV2Service, MockupPlacementsFilter, MockupStyleIds, MockupStyles, MockupTaskCreation, MockupTemplates, NameFilter, NewFilter, NotesOption, OAuthScope, OAuthScopesV2Service, Offset, Offset_2, OpenAPI, OpenAPIConfig, Order, OrderEstimationTaskId, OrderId, OrderId_2, OrderSummary, OrdersV2Service, PackingSlip, PackingSlipReadonly, Paging, ParameterSource, PathStoreId, Placement, PlacementFilter, PlacementOptions, PlacementsFilter, PlacementsList, PointerSource, PrintfulClient, PrintfulCosts, ProblemDetails, Product, ProductCategoryIds, ProductData, ProductId, ProductInfo, ProductLinks, ProductOptions, ProductPrices, ProductSizeGuide, ProductsLinks, ProductsParam, Profit, ReportTypes, Response200, RetailCosts, RetailCosts_2, SalesAndCosts, SalesAndCostsSummary, SellingRegion, SellingRegionAll, SellingRegionPrice, SellingRegionStockAvailability, ServerErrorDetails, Shipment, ShipmentItem, ShipmentItem_2, Shipment_2, ShippingRatesAddress, ShippingRatesV2Service, ShowExpired, SizeTable, SortDirection, SortType, StitchColorOption, StoreId, StoreIdNotRequired, StoreId_2, StoreSchema, StoreStatistics, StoresV2Service, TaskSummary, TechniqueEnum, TechniqueStockAvailability, Techniques, TechniquesFilter, TemplateMockupProduct, ThreadColorsOption, TotalPaidOrders, TrackingEvent, Type, UnlimitedColorOption, Variant, VariantColor, VariantId, VariantImage, VariantImages, VariantPrices, VariantStockAvailability, VariantTechniquePrice, VariantsPriceData, WarehouseItemReadonly, WarehouseItemSummary, WarehouseProductId, WarehouseProductsV2Service, WarehouseShippingRateItem, Webhook, WebhookCreated, WebhookInfoRequest, WebhookInfoResponse, WebhookOrderData, WebhookShipmentData, WebhookV2Service, dPuffOption };
