type Fetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
type FetchResponse = any;
type FetchRequestOptions = RequestInit;
declare class FetchError extends Error {
    #private;
    static isFetchError: (error: any) => error is FetchError;
    constructor(status: number, statusText: string, body?: any, request?: FetchRequestOptions);
    get errors(): any[] | undefined;
    get status(): number;
    get statusText(): string;
    get request(): Partial<FetchRequestOptions> | undefined;
}

type InterceptorEventManager<S extends (RequestInterceptor | ResponseInterceptor), F extends (ErrorInterceptor | ResponseInterceptor)> = {
    onSuccess?: S;
    onFailure?: F;
};
type RequestEventManager = InterceptorEventManager<RequestInterceptor, ErrorInterceptor>;
type ResponseEventManager = InterceptorEventManager<ResponseInterceptor, ErrorInterceptor>;
type ErrorEventManager = InterceptorEventManager<ResponseInterceptor, ResponseInterceptor>;
type InterceptorManager = {
    request?: RequestEventManager;
    response?: ResponseEventManager;
    rawReader?: ErrorEventManager;
};
type RequestObj = {
    url: URL;
    options: FetchRequestOptions;
};
type RequestInterceptor = (request: RequestObj) => RequestObj | Promise<RequestObj>;
type ResponseObj = Response;
type ResponseInterceptor = (response: ResponseObj) => ResponseObj | Promise<ResponseObj>;
type ApiHeadersList = 'x-ratelimit-limit' | 'x-ratelimit-interval' | 'x-ratelimit-remaining';
type ApiHeaders = {
    [key in ApiHeadersList]: string | number | boolean;
};
type HeadersObj = Record<string, string> | ApiHeaders;
type ErrorObj = FetchError;
type ErrorInterceptor = (error: ErrorObj) => ErrorObj | Promise<ErrorObj>;
type InterceptorType = 'request' | 'response';

type RawResponseReader = {
    id: number;
    rawResponse?: any;
    headers?: HeadersObj;
    ok: boolean;
};

type RequestParams = Record<string, string | number | boolean>;
type RequestHeaders = Record<string, string>;
type RefreshToken = (expiredToken: string) => Promise<string>;
type RequestConfig = {
    timeout?: number;
    params?: RequestParams;
    headers?: RequestHeaders;
    userAgent?: string;
    fetch?: Fetch;
    refreshToken?: RefreshToken;
};
type ApiConfig = {
    organization?: string;
    domain?: string;
    accessToken: string;
};
type ApiClientInitConfig = ApiConfig & RequestConfig;
type ApiClientConfig = Partial<ApiClientInitConfig>;
type Method = 'GET' | 'DELETE' | 'POST' | 'PUT' | 'PATCH';
declare class ApiClient {
    #private;
    static create(options: ApiClientInitConfig): ApiClient;
    private constructor();
    get interceptors(): InterceptorManager;
    get requestHeaders(): RequestHeaders;
    config(config: ApiClientConfig): this;
    userAgent(userAgent: string): this;
    request(method: Method, path: string, body?: any, options?: ApiClientConfig): Promise<FetchResponse>;
    private customHeaders;
    get currentAccessToken(): string;
}

type CreateArrayWithLengthX<LENGTH extends number, ACC extends unknown[] = []> = ACC['length'] extends LENGTH ? ACC : CreateArrayWithLengthX<LENGTH, [...ACC, 1]>;
type NumericNumberRange<START_ARR extends number[], END extends number, ACC extends number = never> = START_ARR['length'] extends END ? ACC | END : NumericNumberRange<[...START_ARR, 1], END, ACC | START_ARR['length']>;
type PositiveNumberRange<MAX extends number> = NumericNumberRange<CreateArrayWithLengthX<1>, MAX>;
type StringKey<T> = Extract<keyof T, string>;

type QueryResType<T extends Resource> = T['type'];
type QueryInclude = string[];
type QueryResourceFields<R extends ResourceTypeLock> = keyof ResourceFields[R];
type QueryArrayFields<R extends Resource> = Array<QueryResourceFields<QueryResType<R>>>;
type QueryRecordFields = {
    [key in keyof ResourceFields]?: Array<(QueryResourceFields<key>)>;
};
type QueryFields<R extends Resource> = QueryArrayFields<R> | QueryRecordFields;
interface QueryParamsRetrieve<R extends Resource = Resource> {
    include?: QueryInclude;
    fields?: QueryFields<R>;
}
type QuerySortType = 'asc' | 'desc';
type QueryResourceSortable<R extends Resource> = ResourceSortFields[QueryResType<R>];
type QueryResourceSortableFields<R extends Resource> = StringKey<QueryResourceSortable<R>>;
type QueryArraySortable<R extends Resource> = Array<QueryResourceSortableFields<R> | `-${QueryResourceSortableFields<R>}`>;
type QueryRecordSortable<R extends Resource> = Partial<Record<keyof QueryResourceSortable<R>, QuerySortType>>;
type QuerySort<R extends Resource> = QueryArraySortable<R> | QueryRecordSortable<R>;
type QueryFilter = Record<string, string | number | boolean | object | Array<string | number>>;
type QueryPageNumber = number;
type QueryPageSize = PositiveNumberRange<25>;
interface QueryParamsList<R extends Resource = Resource> extends QueryParamsRetrieve<R> {
    sort?: QuerySort<R>;
    filters?: QueryFilter;
    pageNumber?: QueryPageNumber;
    pageSize?: QueryPageSize;
}
type QueryParams<R extends Resource = Resource> = QueryParamsRetrieve<R> | QueryParamsList<R>;
declare const isParamsList: <R extends Resource>(params: any) => params is QueryParamsList<R>;
type QueryStringParams = Record<string, string>;
declare const generateQueryStringParams: <R extends Resource>(params: QueryParams<R> | undefined, res: string | ResourceType) => QueryStringParams;
declare const generateSearchString: (params?: QueryStringParams, questionMark?: boolean) => string;

type ResourceNull = {
    id: null;
} & ResourceType;
type ResourceRel = ResourceId | ResourceNull;
type Metadata = Record<string, any>;
interface ResourceType {
    readonly type: ResourceTypeLock;
}
interface ResourceId extends ResourceType {
    readonly id: string;
}
interface ResourceBase {
    reference?: string | null;
    reference_origin?: string | null;
    metadata?: Metadata;
}
interface Resource extends ResourceBase, ResourceId {
    readonly created_at: string;
    readonly updated_at: string;
}
interface ResourceCreate extends ResourceBase {
}
interface ResourceUpdate extends ResourceBase {
    readonly id: string;
}
type ListMeta = {
    readonly pageCount: number;
    readonly recordCount: number;
    readonly currentPage: number;
    readonly recordsPerPage: number;
};
declare class ListResponse<R extends Resource = Resource> extends Array<R> {
    readonly meta: ListMeta;
    constructor(meta: ListMeta, data: R[]);
    first(): R | undefined;
    last(): R | undefined;
    get(index: number): R | undefined;
    hasNextPage(): boolean;
    hasPrevPage(): boolean;
    getRecordCount(): number;
    getPageCount(): number;
    get recordCount(): number;
    get pageCount(): number;
}

type ResourceSort = Pick<Resource, 'id' | 'reference' | 'reference_origin' | 'created_at' | 'updated_at'>;
type ResourceFilter = Pick<Resource, 'id' | 'reference' | 'reference_origin' | 'metadata' | 'created_at' | 'updated_at'>;
type ResourceAdapterConfig = {};
type ResourcesInitConfig = ResourceAdapterConfig & ApiClientInitConfig;
type ResourcesConfig = Partial<ResourcesInitConfig>;
declare const apiResourceAdapter: (config: ResourcesInitConfig) => ResourceAdapter;
declare class ResourceAdapter {
    #private;
    constructor(config: ResourcesInitConfig);
    private localConfig;
    config(config: ResourcesConfig): this;
    get client(): Readonly<ApiClient>;
    singleton<R extends Resource>(resource: ResourceType, params?: QueryParamsRetrieve<R>, options?: ResourcesConfig, path?: string): Promise<R>;
    retrieve<R extends Resource>(resource: ResourceId, params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R>;
    list<R extends Resource>(resource: ResourceType, params?: QueryParamsList<R>, options?: ResourcesConfig): Promise<ListResponse<R>>;
    create<C extends ResourceCreate, R extends Resource>(resource: C & ResourceType, params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R>;
    update<U extends ResourceUpdate, R extends Resource>(resource: U & ResourceId, params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R>;
    delete(resource: ResourceId, options?: ResourcesConfig): Promise<void>;
    fetch<R extends Resource>(resource: string | ResourceType, path: string, params?: QueryParams<R>, options?: ResourcesConfig): Promise<R | ListResponse<R>>;
}
declare abstract class ApiResourceBase<R extends Resource> {
    static readonly TYPE: ResourceTypeLock;
    protected readonly resources: ResourceAdapter;
    constructor(adapter: ResourceAdapter);
    abstract relationship(id: string | ResourceId | null): ResourceRel;
    protected relationshipOneToOne<RR extends ResourceRel>(id: string | ResourceId | null): RR;
    protected relationshipOneToMany<RR extends ResourceRel>(...ids: string[]): RR[];
    abstract type(): ResourceTypeLock;
    protected path(): string;
    update(resource: ResourceUpdate, params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R>;
}
declare abstract class ApiResource<R extends Resource> extends ApiResourceBase<R> {
    retrieve(id: string | ResourceId, params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R>;
    list(params?: QueryParamsList<R>, options?: ResourcesConfig): Promise<ListResponse<R>>;
    count(filter?: QueryFilter | QueryParamsList<R>, options?: ResourcesConfig): Promise<number>;
}
declare abstract class ApiSingleton<R extends Resource> extends ApiResourceBase<R> {
    retrieve(params?: QueryParamsRetrieve<R>, options?: ResourcesConfig): Promise<R>;
}

type TagType = 'tags';
type TagRel$l = ResourceRel & {
    type: TagType;
};
type TagSort = Pick<Tag, 'id' | 'name'> & ResourceSort;
interface Tag extends Resource {
    readonly type: TagType;
    /**
     * The tag name.
     * @example ```"new_campaign"```
     */
    name: string;
}
interface TagCreate extends ResourceCreate {
    /**
     * The tag name.
     * @example ```"new_campaign"```
     */
    name: string;
}
interface TagUpdate extends ResourceUpdate {
    /**
     * The tag name.
     * @example ```"new_campaign"```
     */
    name?: string | null;
}
declare class Tags extends ApiResource<Tag> {
    static readonly TYPE: TagType;
    create(resource: TagCreate, params?: QueryParamsRetrieve<Tag>, options?: ResourcesConfig): Promise<Tag>;
    update(resource: TagUpdate, params?: QueryParamsRetrieve<Tag>, options?: ResourcesConfig): Promise<Tag>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    isTag(resource: any): resource is Tag;
    relationship(id: string | ResourceId | null): TagRel$l;
    relationshipToMany(...ids: string[]): TagRel$l[];
    type(): TagType;
}

type VersionType = 'versions';
type VersionRel = ResourceRel & {
    type: VersionType;
};
type VersionSort = Pick<Version, 'id'> & ResourceSort;
interface Version extends Resource {
    readonly type: VersionType;
    /**
     * The type of the versioned resource.
     * @example ```"orders"```
     */
    resource_type?: string | null;
    /**
     * The versioned resource id.
     * @example ```"PzdJhdLdYV"```
     */
    resource_id?: string | null;
    /**
     * The event which generates the version.
     * @example ```"update"```
     */
    event?: string | null;
    /**
     * The object changes payload.
     * @example ```{"status":["draft","placed"]}```
     */
    changes?: Record<string, any> | null;
    /**
     * Information about who triggered the change.
     * @example ```{"application":{"id":"DNOPYiZYpn","kind":"sales_channel","public":true},"owner":{"id":"yQQrBhLBmQ","type":"Customer"}}```
     */
    who?: Record<string, any> | null;
}
declare class Versions extends ApiResource<Version> {
    static readonly TYPE: VersionType;
    isVersion(resource: any): resource is Version;
    relationship(id: string | ResourceId | null): VersionRel;
    relationshipToMany(...ids: string[]): VersionRel[];
    type(): VersionType;
}

type ShippingCategoryType = 'shipping_categories';
type ShippingCategoryRel$4 = ResourceRel & {
    type: ShippingCategoryType;
};
type ShippingCategorySort = Pick<ShippingCategory, 'id' | 'name' | 'code'> & ResourceSort;
interface ShippingCategory extends Resource {
    readonly type: ShippingCategoryType;
    /**
     * The shipping category name.
     * @example ```"Merchandise"```
     */
    name: string;
    /**
     * A string that you can use to identify the shipping category (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    skus?: Sku[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface ShippingCategoryCreate extends ResourceCreate {
    /**
     * The shipping category name.
     * @example ```"Merchandise"```
     */
    name: string;
    /**
     * A string that you can use to identify the shipping category (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
}
interface ShippingCategoryUpdate extends ResourceUpdate {
    /**
     * The shipping category name.
     * @example ```"Merchandise"```
     */
    name?: string | null;
    /**
     * A string that you can use to identify the shipping category (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
}
declare class ShippingCategories extends ApiResource<ShippingCategory> {
    static readonly TYPE: ShippingCategoryType;
    create(resource: ShippingCategoryCreate, params?: QueryParamsRetrieve<ShippingCategory>, options?: ResourcesConfig): Promise<ShippingCategory>;
    update(resource: ShippingCategoryUpdate, params?: QueryParamsRetrieve<ShippingCategory>, options?: ResourcesConfig): Promise<ShippingCategory>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    skus(shippingCategoryId: string | ShippingCategory, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    attachments(shippingCategoryId: string | ShippingCategory, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(shippingCategoryId: string | ShippingCategory, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isShippingCategory(resource: any): resource is ShippingCategory;
    relationship(id: string | ResourceId | null): ShippingCategoryRel$4;
    relationshipToMany(...ids: string[]): ShippingCategoryRel$4[];
    type(): ShippingCategoryType;
}

type InventoryReturnLocationType = 'inventory_return_locations';
type InventoryReturnLocationRel = ResourceRel & {
    type: InventoryReturnLocationType;
};
type StockLocationRel$a = ResourceRel & {
    type: StockLocationType;
};
type InventoryModelRel$4 = ResourceRel & {
    type: InventoryModelType;
};
type InventoryReturnLocationSort = Pick<InventoryReturnLocation, 'id' | 'priority'> & ResourceSort;
interface InventoryReturnLocation extends Resource {
    readonly type: InventoryReturnLocationType;
    /**
     * The inventory return location priority within the associated invetory model.
     * @example ```1```
     */
    priority: number;
    stock_location?: StockLocation | null;
    inventory_model?: InventoryModel | null;
    versions?: Version[] | null;
}
interface InventoryReturnLocationCreate extends ResourceCreate {
    /**
     * The inventory return location priority within the associated invetory model.
     * @example ```1```
     */
    priority: number;
    stock_location: StockLocationRel$a;
    inventory_model: InventoryModelRel$4;
}
interface InventoryReturnLocationUpdate extends ResourceUpdate {
    /**
     * The inventory return location priority within the associated invetory model.
     * @example ```1```
     */
    priority?: number | null;
    stock_location?: StockLocationRel$a | null;
    inventory_model?: InventoryModelRel$4 | null;
}
declare class InventoryReturnLocations extends ApiResource<InventoryReturnLocation> {
    static readonly TYPE: InventoryReturnLocationType;
    create(resource: InventoryReturnLocationCreate, params?: QueryParamsRetrieve<InventoryReturnLocation>, options?: ResourcesConfig): Promise<InventoryReturnLocation>;
    update(resource: InventoryReturnLocationUpdate, params?: QueryParamsRetrieve<InventoryReturnLocation>, options?: ResourcesConfig): Promise<InventoryReturnLocation>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    stock_location(inventoryReturnLocationId: string | InventoryReturnLocation, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    inventory_model(inventoryReturnLocationId: string | InventoryReturnLocation, params?: QueryParamsRetrieve<InventoryModel>, options?: ResourcesConfig): Promise<InventoryModel>;
    versions(inventoryReturnLocationId: string | InventoryReturnLocation, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isInventoryReturnLocation(resource: any): resource is InventoryReturnLocation;
    relationship(id: string | ResourceId | null): InventoryReturnLocationRel;
    relationshipToMany(...ids: string[]): InventoryReturnLocationRel[];
    type(): InventoryReturnLocationType;
}

type InventoryModelType = 'inventory_models';
type InventoryModelRel$3 = ResourceRel & {
    type: InventoryModelType;
};
type InventoryModelSort = Pick<InventoryModel, 'id' | 'name' | 'strategy' | 'stock_locations_cutoff' | 'stock_reservation_cutoff'> & ResourceSort;
interface InventoryModel extends Resource {
    readonly type: InventoryModelType;
    /**
     * The inventory model's internal name.
     * @example ```"EU Inventory Model"```
     */
    name: string;
    /**
     * The inventory model's shipping strategy: one between 'no_split' (default), 'split_shipments', 'ship_from_primary' and 'ship_from_first_available_or_primary'.
     * @example ```"no_split"```
     */
    strategy?: string | null;
    /**
     * The maximum number of stock locations used for inventory computation.
     * @example ```3```
     */
    stock_locations_cutoff?: number | null;
    /**
     * The duration in seconds of the generated stock reservations.
     * @example ```3600```
     */
    stock_reservation_cutoff?: number | null;
    /**
     * Indicates if the the stock transfers must be put on hold automatically with the associated shipment.
     * @example ```true```
     */
    put_stock_transfers_on_hold?: boolean | null;
    /**
     * Indicates if the the stock will be decremented manually after the order approval.
     * @example ```true```
     */
    manual_stock_decrement?: boolean | null;
    inventory_stock_locations?: InventoryStockLocation[] | null;
    inventory_return_locations?: InventoryReturnLocation[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface InventoryModelCreate extends ResourceCreate {
    /**
     * The inventory model's internal name.
     * @example ```"EU Inventory Model"```
     */
    name: string;
    /**
     * The inventory model's shipping strategy: one between 'no_split' (default), 'split_shipments', 'ship_from_primary' and 'ship_from_first_available_or_primary'.
     * @example ```"no_split"```
     */
    strategy?: string | null;
    /**
     * The maximum number of stock locations used for inventory computation.
     * @example ```3```
     */
    stock_locations_cutoff?: number | null;
    /**
     * The duration in seconds of the generated stock reservations.
     * @example ```3600```
     */
    stock_reservation_cutoff?: number | null;
    /**
     * Indicates if the the stock transfers must be put on hold automatically with the associated shipment.
     * @example ```true```
     */
    put_stock_transfers_on_hold?: boolean | null;
    /**
     * Indicates if the the stock will be decremented manually after the order approval.
     * @example ```true```
     */
    manual_stock_decrement?: boolean | null;
}
interface InventoryModelUpdate extends ResourceUpdate {
    /**
     * The inventory model's internal name.
     * @example ```"EU Inventory Model"```
     */
    name?: string | null;
    /**
     * The inventory model's shipping strategy: one between 'no_split' (default), 'split_shipments', 'ship_from_primary' and 'ship_from_first_available_or_primary'.
     * @example ```"no_split"```
     */
    strategy?: string | null;
    /**
     * The maximum number of stock locations used for inventory computation.
     * @example ```3```
     */
    stock_locations_cutoff?: number | null;
    /**
     * The duration in seconds of the generated stock reservations.
     * @example ```3600```
     */
    stock_reservation_cutoff?: number | null;
    /**
     * Indicates if the the stock transfers must be put on hold automatically with the associated shipment.
     * @example ```true```
     */
    put_stock_transfers_on_hold?: boolean | null;
    /**
     * Indicates if the the stock will be decremented manually after the order approval.
     * @example ```true```
     */
    manual_stock_decrement?: boolean | null;
}
declare class InventoryModels extends ApiResource<InventoryModel> {
    static readonly TYPE: InventoryModelType;
    create(resource: InventoryModelCreate, params?: QueryParamsRetrieve<InventoryModel>, options?: ResourcesConfig): Promise<InventoryModel>;
    update(resource: InventoryModelUpdate, params?: QueryParamsRetrieve<InventoryModel>, options?: ResourcesConfig): Promise<InventoryModel>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    inventory_stock_locations(inventoryModelId: string | InventoryModel, params?: QueryParamsList<InventoryStockLocation>, options?: ResourcesConfig): Promise<ListResponse<InventoryStockLocation>>;
    inventory_return_locations(inventoryModelId: string | InventoryModel, params?: QueryParamsList<InventoryReturnLocation>, options?: ResourcesConfig): Promise<ListResponse<InventoryReturnLocation>>;
    attachments(inventoryModelId: string | InventoryModel, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(inventoryModelId: string | InventoryModel, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isInventoryModel(resource: any): resource is InventoryModel;
    relationship(id: string | ResourceId | null): InventoryModelRel$3;
    relationshipToMany(...ids: string[]): InventoryModelRel$3[];
    type(): InventoryModelType;
}

type InventoryStockLocationType = 'inventory_stock_locations';
type InventoryStockLocationRel$1 = ResourceRel & {
    type: InventoryStockLocationType;
};
type StockLocationRel$9 = ResourceRel & {
    type: StockLocationType;
};
type InventoryModelRel$2 = ResourceRel & {
    type: InventoryModelType;
};
type InventoryStockLocationSort = Pick<InventoryStockLocation, 'id' | 'priority' | 'on_hold'> & ResourceSort;
interface InventoryStockLocation extends Resource {
    readonly type: InventoryStockLocationType;
    /**
     * The stock location priority within the associated invetory model.
     * @example ```1```
     */
    priority: number;
    /**
     * Indicates if the shipment should be put on hold if fulfilled from the associated stock location. This is useful to manage use cases like back-orders, pre-orders or personalized orders that need to be customized before being fulfilled.
     */
    on_hold?: boolean | null;
    stock_location?: StockLocation | null;
    inventory_model?: InventoryModel | null;
    versions?: Version[] | null;
}
interface InventoryStockLocationCreate extends ResourceCreate {
    /**
     * The stock location priority within the associated invetory model.
     * @example ```1```
     */
    priority: number;
    /**
     * Indicates if the shipment should be put on hold if fulfilled from the associated stock location. This is useful to manage use cases like back-orders, pre-orders or personalized orders that need to be customized before being fulfilled.
     */
    on_hold?: boolean | null;
    stock_location: StockLocationRel$9;
    inventory_model: InventoryModelRel$2;
}
interface InventoryStockLocationUpdate extends ResourceUpdate {
    /**
     * The stock location priority within the associated invetory model.
     * @example ```1```
     */
    priority?: number | null;
    /**
     * Indicates if the shipment should be put on hold if fulfilled from the associated stock location. This is useful to manage use cases like back-orders, pre-orders or personalized orders that need to be customized before being fulfilled.
     */
    on_hold?: boolean | null;
    stock_location?: StockLocationRel$9 | null;
    inventory_model?: InventoryModelRel$2 | null;
}
declare class InventoryStockLocations extends ApiResource<InventoryStockLocation> {
    static readonly TYPE: InventoryStockLocationType;
    create(resource: InventoryStockLocationCreate, params?: QueryParamsRetrieve<InventoryStockLocation>, options?: ResourcesConfig): Promise<InventoryStockLocation>;
    update(resource: InventoryStockLocationUpdate, params?: QueryParamsRetrieve<InventoryStockLocation>, options?: ResourcesConfig): Promise<InventoryStockLocation>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    stock_location(inventoryStockLocationId: string | InventoryStockLocation, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    inventory_model(inventoryStockLocationId: string | InventoryStockLocation, params?: QueryParamsRetrieve<InventoryModel>, options?: ResourcesConfig): Promise<InventoryModel>;
    versions(inventoryStockLocationId: string | InventoryStockLocation, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isInventoryStockLocation(resource: any): resource is InventoryStockLocation;
    relationship(id: string | ResourceId | null): InventoryStockLocationRel$1;
    relationshipToMany(...ids: string[]): InventoryStockLocationRel$1[];
    type(): InventoryStockLocationType;
}

type CustomerGroupType = 'customer_groups';
type CustomerGroupRel$3 = ResourceRel & {
    type: CustomerGroupType;
};
type CustomerGroupSort = Pick<CustomerGroup, 'id' | 'name' | 'code'> & ResourceSort;
interface CustomerGroup extends Resource {
    readonly type: CustomerGroupType;
    /**
     * The customer group's internal name.
     * @example ```"VIP"```
     */
    name: string;
    /**
     * A string that you can use to identify the customer group (must be unique within the environment).
     * @example ```"vip1"```
     */
    code?: string | null;
    customers?: Customer[] | null;
    markets?: Market[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface CustomerGroupCreate extends ResourceCreate {
    /**
     * The customer group's internal name.
     * @example ```"VIP"```
     */
    name: string;
    /**
     * A string that you can use to identify the customer group (must be unique within the environment).
     * @example ```"vip1"```
     */
    code?: string | null;
}
interface CustomerGroupUpdate extends ResourceUpdate {
    /**
     * The customer group's internal name.
     * @example ```"VIP"```
     */
    name?: string | null;
    /**
     * A string that you can use to identify the customer group (must be unique within the environment).
     * @example ```"vip1"```
     */
    code?: string | null;
}
declare class CustomerGroups extends ApiResource<CustomerGroup> {
    static readonly TYPE: CustomerGroupType;
    create(resource: CustomerGroupCreate, params?: QueryParamsRetrieve<CustomerGroup>, options?: ResourcesConfig): Promise<CustomerGroup>;
    update(resource: CustomerGroupUpdate, params?: QueryParamsRetrieve<CustomerGroup>, options?: ResourcesConfig): Promise<CustomerGroup>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customers(customerGroupId: string | CustomerGroup, params?: QueryParamsList<Customer>, options?: ResourcesConfig): Promise<ListResponse<Customer>>;
    markets(customerGroupId: string | CustomerGroup, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    attachments(customerGroupId: string | CustomerGroup, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(customerGroupId: string | CustomerGroup, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isCustomerGroup(resource: any): resource is CustomerGroup;
    relationship(id: string | ResourceId | null): CustomerGroupRel$3;
    relationshipToMany(...ids: string[]): CustomerGroupRel$3[];
    type(): CustomerGroupType;
}

type EventCallbackType = 'event_callbacks';
type EventCallbackRel = ResourceRel & {
    type: EventCallbackType;
};
type EventCallbackSort = Pick<EventCallback, 'id' | 'response_code' | 'response_message'> & ResourceSort;
interface EventCallback extends Resource {
    readonly type: EventCallbackType;
    /**
     * The URI of the callback, inherited by the associated webhook.
     * @example ```"https://yourapp.com/webhooks"```
     */
    callback_url: string;
    /**
     * The payload sent to the callback endpoint, including the event affected resource and the specified includes.
     * @example ```{"data":{"attributes":{"id":"PYWehaoXJj","type":"orders"}}}```
     */
    payload?: Record<string, any> | null;
    /**
     * The HTTP response code of the callback endpoint.
     * @example ```"200"```
     */
    response_code?: string | null;
    /**
     * The HTTP response message of the callback endpoint.
     * @example ```"OK"```
     */
    response_message?: string | null;
    webhook?: Webhook | null;
}
declare class EventCallbacks extends ApiResource<EventCallback> {
    static readonly TYPE: EventCallbackType;
    webhook(eventCallbackId: string | EventCallback, params?: QueryParamsRetrieve<Webhook>, options?: ResourcesConfig): Promise<Webhook>;
    isEventCallback(resource: any): resource is EventCallback;
    relationship(id: string | ResourceId | null): EventCallbackRel;
    relationshipToMany(...ids: string[]): EventCallbackRel[];
    type(): EventCallbackType;
}

type WebhookType = 'webhooks';
type WebhookRel = ResourceRel & {
    type: WebhookType;
};
type WebhookSort = Pick<Webhook, 'id' | 'disabled_at' | 'circuit_state' | 'circuit_failure_count'> & ResourceSort;
interface Webhook extends Resource {
    readonly type: WebhookType;
    /**
     * Unique name for the webhook.
     * @example ```"myorg-orders.place"```
     */
    name?: string | null;
    /**
     * The identifier of the resource/event that will trigger the webhook.
     * @example ```"orders.place"```
     */
    topic: string;
    /**
     * URI where the webhook subscription should send the POST request when the event occurs.
     * @example ```"https://yourapp.com/webhooks"```
     */
    callback_url: string;
    /**
     * List of related resources that should be included in the webhook body.
     * @example ```["customer","shipping_address","billing_address"]```
     */
    include_resources?: string[] | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The circuit breaker state, by default it is 'closed'. It can become 'open' once the number of consecutive failures overlaps the specified threshold, in such case no further calls to the failing callback are made.
     * @example ```"closed"```
     */
    circuit_state?: string | null;
    /**
     * The number of consecutive failures recorded by the circuit breaker associated to this resource, will be reset on first successful call to callback.
     * @example ```5```
     */
    circuit_failure_count?: number | null;
    /**
     * The shared secret used to sign the external request payload.
     * @example ```"1c0994cc4e996e8c6ee56a2198f66f3c"```
     */
    shared_secret: string;
    last_event_callbacks?: EventCallback[] | null;
    versions?: Version[] | null;
}
interface WebhookCreate extends ResourceCreate {
    /**
     * Unique name for the webhook.
     * @example ```"myorg-orders.place"```
     */
    name?: string | null;
    /**
     * The identifier of the resource/event that will trigger the webhook.
     * @example ```"orders.place"```
     */
    topic: string;
    /**
     * URI where the webhook subscription should send the POST request when the event occurs.
     * @example ```"https://yourapp.com/webhooks"```
     */
    callback_url: string;
    /**
     * List of related resources that should be included in the webhook body.
     * @example ```["customer","shipping_address","billing_address"]```
     */
    include_resources?: string[] | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
}
interface WebhookUpdate extends ResourceUpdate {
    /**
     * Unique name for the webhook.
     * @example ```"myorg-orders.place"```
     */
    name?: string | null;
    /**
     * The identifier of the resource/event that will trigger the webhook.
     * @example ```"orders.place"```
     */
    topic?: string | null;
    /**
     * URI where the webhook subscription should send the POST request when the event occurs.
     * @example ```"https://yourapp.com/webhooks"```
     */
    callback_url?: string | null;
    /**
     * List of related resources that should be included in the webhook body.
     * @example ```["customer","shipping_address","billing_address"]```
     */
    include_resources?: string[] | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Send this attribute if you want to reset the circuit breaker associated to this resource to 'closed' state and zero failures count. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reset_circuit?: boolean | null;
}
declare class Webhooks extends ApiResource<Webhook> {
    static readonly TYPE: WebhookType;
    create(resource: WebhookCreate, params?: QueryParamsRetrieve<Webhook>, options?: ResourcesConfig): Promise<Webhook>;
    update(resource: WebhookUpdate, params?: QueryParamsRetrieve<Webhook>, options?: ResourcesConfig): Promise<Webhook>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    last_event_callbacks(webhookId: string | Webhook, params?: QueryParamsList<EventCallback>, options?: ResourcesConfig): Promise<ListResponse<EventCallback>>;
    versions(webhookId: string | Webhook, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _disable(id: string | Webhook, params?: QueryParamsRetrieve<Webhook>, options?: ResourcesConfig): Promise<Webhook>;
    _enable(id: string | Webhook, params?: QueryParamsRetrieve<Webhook>, options?: ResourcesConfig): Promise<Webhook>;
    _reset_circuit(id: string | Webhook, params?: QueryParamsRetrieve<Webhook>, options?: ResourcesConfig): Promise<Webhook>;
    isWebhook(resource: any): resource is Webhook;
    relationship(id: string | ResourceId | null): WebhookRel;
    relationshipToMany(...ids: string[]): WebhookRel[];
    type(): WebhookType;
}

type EventType = 'events';
type EventRel = ResourceRel & {
    type: EventType;
};
type EventSort = Pick<Event, 'id' | 'name'> & ResourceSort;
interface Event extends Resource {
    readonly type: EventType;
    /**
     * The event's internal name.
     * @example ```"orders.create"```
     */
    name: string;
    webhooks?: Webhook[] | null;
    last_event_callbacks?: EventCallback[] | null;
}
interface EventUpdate extends ResourceUpdate {
    /**
     * Send this attribute if you want to force webhooks execution for this event. Cannot be passed by sales channels.
     * @example ```true```
     */
    _trigger?: boolean | null;
}
declare class Events extends ApiResource<Event> {
    static readonly TYPE: EventType;
    update(resource: EventUpdate, params?: QueryParamsRetrieve<Event>, options?: ResourcesConfig): Promise<Event>;
    webhooks(eventId: string | Event, params?: QueryParamsList<Webhook>, options?: ResourcesConfig): Promise<ListResponse<Webhook>>;
    last_event_callbacks(eventId: string | Event, params?: QueryParamsList<EventCallback>, options?: ResourcesConfig): Promise<ListResponse<EventCallback>>;
    _trigger(id: string | Event, params?: QueryParamsRetrieve<Event>, options?: ResourcesConfig): Promise<Event>;
    isEvent(resource: any): resource is Event;
    relationship(id: string | ResourceId | null): EventRel;
    relationshipToMany(...ids: string[]): EventRel[];
    type(): EventType;
}

type CustomerAddressType = 'customer_addresses';
type CustomerAddressRel = ResourceRel & {
    type: CustomerAddressType;
};
type CustomerRel$8 = ResourceRel & {
    type: CustomerType;
};
type AddressRel$5 = ResourceRel & {
    type: AddressType;
};
type CustomerAddressSort = Pick<CustomerAddress, 'id'> & ResourceSort;
interface CustomerAddress extends Resource {
    readonly type: CustomerAddressType;
    /**
     * Returns the associated address' name.
     * @example ```"John Smith, 2883 Geraldine Lane Apt.23, 10013 New York NY (US) (212) 646-338-1228"```
     */
    name?: string | null;
    /**
     * The email of the customer associated to the address.
     * @example ```"john@example.com"```
     */
    customer_email: string;
    customer?: Customer | null;
    address?: Address | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface CustomerAddressCreate extends ResourceCreate {
    /**
     * The email of the customer associated to the address.
     * @example ```"john@example.com"```
     */
    customer_email: string;
    customer: CustomerRel$8;
    address: AddressRel$5;
}
interface CustomerAddressUpdate extends ResourceUpdate {
    customer?: CustomerRel$8 | null;
    address?: AddressRel$5 | null;
}
declare class CustomerAddresses extends ApiResource<CustomerAddress> {
    static readonly TYPE: CustomerAddressType;
    create(resource: CustomerAddressCreate, params?: QueryParamsRetrieve<CustomerAddress>, options?: ResourcesConfig): Promise<CustomerAddress>;
    update(resource: CustomerAddressUpdate, params?: QueryParamsRetrieve<CustomerAddress>, options?: ResourcesConfig): Promise<CustomerAddress>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customer(customerAddressId: string | CustomerAddress, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    address(customerAddressId: string | CustomerAddress, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    events(customerAddressId: string | CustomerAddress, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(customerAddressId: string | CustomerAddress, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isCustomerAddress(resource: any): resource is CustomerAddress;
    relationship(id: string | ResourceId | null): CustomerAddressRel;
    relationshipToMany(...ids: string[]): CustomerAddressRel[];
    type(): CustomerAddressType;
}

type PaymentGatewayType = 'payment_gateways';
type PaymentGatewayRel$1 = ResourceRel & {
    type: PaymentGatewayType;
};
type PaymentGatewaySort = Pick<PaymentGateway, 'id' | 'name'> & ResourceSort;
interface PaymentGateway extends Resource {
    readonly type: PaymentGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
}
declare class PaymentGateways extends ApiResource<PaymentGateway> {
    static readonly TYPE: PaymentGatewayType;
    payment_methods(paymentGatewayId: string | PaymentGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(paymentGatewayId: string | PaymentGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isPaymentGateway(resource: any): resource is PaymentGateway;
    relationship(id: string | ResourceId | null): PaymentGatewayRel$1;
    relationshipToMany(...ids: string[]): PaymentGatewayRel$1[];
    type(): PaymentGatewayType;
}

type StoreType = 'stores';
type StoreRel$2 = ResourceRel & {
    type: StoreType;
};
type MarketRel$j = ResourceRel & {
    type: MarketType;
};
type MerchantRel$3 = ResourceRel & {
    type: MerchantType;
};
type StockLocationRel$8 = ResourceRel & {
    type: StockLocationType;
};
type StoreSort = Pick<Store, 'id' | 'name' | 'code'> & ResourceSort;
interface Store extends Resource {
    readonly type: StoreType;
    /**
     * The store's internal name.
     * @example ```"Rome Shop"```
     */
    name: string;
    /**
     * A string that you can use to identify the store (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    market?: Market | null;
    merchant?: Merchant | null;
    stock_location?: StockLocation | null;
    orders?: Order[] | null;
    payment_methods?: PaymentMethod[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface StoreCreate extends ResourceCreate {
    /**
     * The store's internal name.
     * @example ```"Rome Shop"```
     */
    name: string;
    /**
     * A string that you can use to identify the store (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    market: MarketRel$j;
    merchant?: MerchantRel$3 | null;
    stock_location?: StockLocationRel$8 | null;
}
interface StoreUpdate extends ResourceUpdate {
    /**
     * The store's internal name.
     * @example ```"Rome Shop"```
     */
    name?: string | null;
    /**
     * A string that you can use to identify the store (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    market?: MarketRel$j | null;
    merchant?: MerchantRel$3 | null;
    stock_location?: StockLocationRel$8 | null;
}
declare class Stores extends ApiResource<Store> {
    static readonly TYPE: StoreType;
    create(resource: StoreCreate, params?: QueryParamsRetrieve<Store>, options?: ResourcesConfig): Promise<Store>;
    update(resource: StoreUpdate, params?: QueryParamsRetrieve<Store>, options?: ResourcesConfig): Promise<Store>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(storeId: string | Store, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    merchant(storeId: string | Store, params?: QueryParamsRetrieve<Merchant>, options?: ResourcesConfig): Promise<Merchant>;
    stock_location(storeId: string | Store, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    orders(storeId: string | Store, params?: QueryParamsList<Order>, options?: ResourcesConfig): Promise<ListResponse<Order>>;
    payment_methods(storeId: string | Store, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    events(storeId: string | Store, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(storeId: string | Store, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isStore(resource: any): resource is Store;
    relationship(id: string | ResourceId | null): StoreRel$2;
    relationshipToMany(...ids: string[]): StoreRel$2[];
    type(): StoreType;
}

type PaymentMethodType = 'payment_methods';
type PaymentMethodRel$5 = ResourceRel & {
    type: PaymentMethodType;
};
type MarketRel$i = ResourceRel & {
    type: MarketType;
};
type PaymentGatewayRel = ResourceRel & {
    type: PaymentGatewayType;
};
type StoreRel$1 = ResourceRel & {
    type: StoreType;
};
type PaymentMethodSort = Pick<PaymentMethod, 'id' | 'name' | 'payment_source_type' | 'currency_code' | 'price_amount_cents' | 'disabled_at'> & ResourceSort;
interface PaymentMethod extends Resource {
    readonly type: PaymentMethodType;
    /**
     * The payment method's internal name.
     * @example ```"Stripe Payment"```
     */
    name?: string | null;
    /**
     * The payment source type. One of 'adyen_payments', 'axerve_payments', 'braintree_payments', 'checkout_com_payments', 'external_payments', 'klarna_payments', 'paypal_payments', 'satispay_payments', 'stripe_payments', or 'wire_transfers'.
     * @example ```"stripe_payments"```
     */
    payment_source_type: 'adyen_payments' | 'axerve_payments' | 'braintree_payments' | 'checkout_com_payments' | 'external_payments' | 'klarna_payments' | 'paypal_payments' | 'satispay_payments' | 'stripe_payments' | 'wire_transfers';
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Send this attribute if you want to mark the payment as MOTO, must be supported by payment gateway.
     */
    moto?: boolean | null;
    /**
     * Send this attribute if you want to require the payment capture before fulfillment.
     * @example ```true```
     */
    require_capture?: boolean | null;
    /**
     * Send this attribute if you want to automatically place the order upon authorization performed asynchronously.
     * @example ```true```
     */
    auto_place?: boolean | null;
    /**
     * Send this attribute if you want to automatically capture the payment upon authorization.
     */
    auto_capture?: boolean | null;
    /**
     * The payment method's price, in cents.
     */
    price_amount_cents: number;
    /**
     * The payment method's price, float.
     */
    price_amount_float?: number | null;
    /**
     * The payment method's price, formatted.
     * @example ```"€0,00"```
     */
    formatted_price_amount?: string | null;
    /**
     * Send this attribute if you want to limit automatic capture to orders for which the total amount is equal or less than the specified value, in cents.
     */
    auto_capture_max_amount_cents?: number | null;
    /**
     * The automatic capture max amount, float.
     */
    auto_capture_max_amount_float?: number | null;
    /**
     * The automatic capture max amount, formatted.
     * @example ```"€0,00"```
     */
    formatted_auto_capture_max_amount?: string | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    market?: Market | null;
    payment_gateway?: PaymentGateway | null;
    store?: Store | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface PaymentMethodCreate extends ResourceCreate {
    /**
     * The payment method's internal name.
     * @example ```"Stripe Payment"```
     */
    name?: string | null;
    /**
     * The payment source type. One of 'adyen_payments', 'axerve_payments', 'braintree_payments', 'checkout_com_payments', 'external_payments', 'klarna_payments', 'paypal_payments', 'satispay_payments', 'stripe_payments', or 'wire_transfers'.
     * @example ```"stripe_payments"```
     */
    payment_source_type: 'adyen_payments' | 'axerve_payments' | 'braintree_payments' | 'checkout_com_payments' | 'external_payments' | 'klarna_payments' | 'paypal_payments' | 'satispay_payments' | 'stripe_payments' | 'wire_transfers';
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Send this attribute if you want to mark the payment as MOTO, must be supported by payment gateway.
     */
    moto?: boolean | null;
    /**
     * Send this attribute if you want to require the payment capture before fulfillment.
     * @example ```true```
     */
    require_capture?: boolean | null;
    /**
     * Send this attribute if you want to automatically place the order upon authorization performed asynchronously.
     * @example ```true```
     */
    auto_place?: boolean | null;
    /**
     * Send this attribute if you want to automatically capture the payment upon authorization.
     */
    auto_capture?: boolean | null;
    /**
     * The payment method's price, in cents.
     */
    price_amount_cents: number;
    /**
     * Send this attribute if you want to limit automatic capture to orders for which the total amount is equal or less than the specified value, in cents.
     */
    auto_capture_max_amount_cents?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    market?: MarketRel$i | null;
    payment_gateway: PaymentGatewayRel;
    store?: StoreRel$1 | null;
}
interface PaymentMethodUpdate extends ResourceUpdate {
    /**
     * The payment method's internal name.
     * @example ```"Stripe Payment"```
     */
    name?: string | null;
    /**
     * The payment source type. One of 'adyen_payments', 'axerve_payments', 'braintree_payments', 'checkout_com_payments', 'external_payments', 'klarna_payments', 'paypal_payments', 'satispay_payments', 'stripe_payments', or 'wire_transfers'.
     * @example ```"stripe_payments"```
     */
    payment_source_type?: 'adyen_payments' | 'axerve_payments' | 'braintree_payments' | 'checkout_com_payments' | 'external_payments' | 'klarna_payments' | 'paypal_payments' | 'satispay_payments' | 'stripe_payments' | 'wire_transfers' | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Send this attribute if you want to mark the payment as MOTO, must be supported by payment gateway.
     */
    moto?: boolean | null;
    /**
     * Send this attribute if you want to require the payment capture before fulfillment.
     * @example ```true```
     */
    require_capture?: boolean | null;
    /**
     * Send this attribute if you want to automatically place the order upon authorization performed asynchronously.
     * @example ```true```
     */
    auto_place?: boolean | null;
    /**
     * Send this attribute if you want to automatically capture the payment upon authorization.
     */
    auto_capture?: boolean | null;
    /**
     * The payment method's price, in cents.
     */
    price_amount_cents?: number | null;
    /**
     * Send this attribute if you want to limit automatic capture to orders for which the total amount is equal or less than the specified value, in cents.
     */
    auto_capture_max_amount_cents?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    market?: MarketRel$i | null;
    payment_gateway?: PaymentGatewayRel | null;
    store?: StoreRel$1 | null;
}
declare class PaymentMethods extends ApiResource<PaymentMethod> {
    static readonly TYPE: PaymentMethodType;
    create(resource: PaymentMethodCreate, params?: QueryParamsRetrieve<PaymentMethod>, options?: ResourcesConfig): Promise<PaymentMethod>;
    update(resource: PaymentMethodUpdate, params?: QueryParamsRetrieve<PaymentMethod>, options?: ResourcesConfig): Promise<PaymentMethod>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(paymentMethodId: string | PaymentMethod, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    payment_gateway(paymentMethodId: string | PaymentMethod, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    store(paymentMethodId: string | PaymentMethod, params?: QueryParamsRetrieve<Store>, options?: ResourcesConfig): Promise<Store>;
    attachments(paymentMethodId: string | PaymentMethod, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(paymentMethodId: string | PaymentMethod, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _disable(id: string | PaymentMethod, params?: QueryParamsRetrieve<PaymentMethod>, options?: ResourcesConfig): Promise<PaymentMethod>;
    _enable(id: string | PaymentMethod, params?: QueryParamsRetrieve<PaymentMethod>, options?: ResourcesConfig): Promise<PaymentMethod>;
    isPaymentMethod(resource: any): resource is PaymentMethod;
    relationship(id: string | ResourceId | null): PaymentMethodRel$5;
    relationshipToMany(...ids: string[]): PaymentMethodRel$5[];
    type(): PaymentMethodType;
}

type AdyenPaymentType = 'adyen_payments';
type AdyenPaymentRel$3 = ResourceRel & {
    type: AdyenPaymentType;
};
type OrderRel$k = ResourceRel & {
    type: OrderType;
};
type AdyenPaymentSort = Pick<AdyenPayment, 'id'> & ResourceSort;
interface AdyenPayment extends Resource {
    readonly type: AdyenPaymentType;
    /**
     * The public key linked to your API credential.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    public_key?: string | null;
    /**
     * The merchant available payment methods for the assoiated order (i.e. country and amount). Required by the Adyen JS SDK.
     * @example ```{"foo":"bar"}```
     */
    payment_methods: Record<string, any>;
    /**
     * The Adyen payment request data, collected by client.
     * @example ```{"foo":"bar"}```
     */
    payment_request_data?: Record<string, any> | null;
    /**
     * The Adyen additional details request data, collected by client.
     * @example ```{"foo":"bar"}```
     */
    payment_request_details?: Record<string, any> | null;
    /**
     * The Adyen payment response, used by client (includes 'resultCode' and 'action').
     * @example ```{"foo":"bar"}```
     */
    payment_response?: Record<string, any> | null;
    /**
     * Indicates if the order current amount differs form the one of the associated authorization.
     */
    mismatched_amounts?: boolean | null;
    /**
     * The balance remaining on a shopper's gift card, must be computed by using its related trigger attribute.
     * @example ```1000```
     */
    balance?: number | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    versions?: Version[] | null;
}
interface AdyenPaymentCreate extends ResourceCreate {
    order: OrderRel$k;
}
interface AdyenPaymentUpdate extends ResourceUpdate {
    /**
     * The Adyen payment request data, collected by client.
     * @example ```{"foo":"bar"}```
     */
    payment_request_data?: Record<string, any> | null;
    /**
     * The Adyen additional details request data, collected by client.
     * @example ```{"foo":"bar"}```
     */
    payment_request_details?: Record<string, any> | null;
    /**
     * Send this attribute if you want to authorize the payment.
     * @example ```true```
     */
    _authorize?: boolean | null;
    /**
     * Send this attribute if you want to send additional details the payment request.
     * @example ```true```
     */
    _details?: boolean | null;
    /**
     * Send this attribute if you want retrieve the balance remaining on a shopper's gift card.
     * @example ```true```
     */
    _balance?: boolean | null;
    order?: OrderRel$k | null;
}
declare class AdyenPayments extends ApiResource<AdyenPayment> {
    static readonly TYPE: AdyenPaymentType;
    create(resource: AdyenPaymentCreate, params?: QueryParamsRetrieve<AdyenPayment>, options?: ResourcesConfig): Promise<AdyenPayment>;
    update(resource: AdyenPaymentUpdate, params?: QueryParamsRetrieve<AdyenPayment>, options?: ResourcesConfig): Promise<AdyenPayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(adyenPaymentId: string | AdyenPayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(adyenPaymentId: string | AdyenPayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    versions(adyenPaymentId: string | AdyenPayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _authorize(id: string | AdyenPayment, params?: QueryParamsRetrieve<AdyenPayment>, options?: ResourcesConfig): Promise<AdyenPayment>;
    _details(id: string | AdyenPayment, params?: QueryParamsRetrieve<AdyenPayment>, options?: ResourcesConfig): Promise<AdyenPayment>;
    _balance(id: string | AdyenPayment, params?: QueryParamsRetrieve<AdyenPayment>, options?: ResourcesConfig): Promise<AdyenPayment>;
    isAdyenPayment(resource: any): resource is AdyenPayment;
    relationship(id: string | ResourceId | null): AdyenPaymentRel$3;
    relationshipToMany(...ids: string[]): AdyenPaymentRel$3[];
    type(): AdyenPaymentType;
}

type AxervePaymentType = 'axerve_payments';
type AxervePaymentRel$3 = ResourceRel & {
    type: AxervePaymentType;
};
type OrderRel$j = ResourceRel & {
    type: OrderType;
};
type AxervePaymentSort = Pick<AxervePayment, 'id'> & ResourceSort;
interface AxervePayment extends Resource {
    readonly type: AxervePaymentType;
    /**
     * The merchant login code.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    login: string;
    /**
     * The URL where the payer is redirected after they approve the payment.
     * @example ```"https://yourdomain.com/thankyou"```
     */
    return_url: string;
    /**
     * The Axerve payment request data, collected by client.
     * @example ```{"foo":"bar"}```
     */
    payment_request_data?: Record<string, any> | null;
    /**
     * The IP adress of the client creating the payment.
     * @example ```"213.45.120.5"```
     */
    client_ip?: string | null;
    /**
     * The details of the buyer creating the payment.
     * @example ```{"cardHolder":{"email":"george.harrison@gmail.com"},"shippingAddress":{"firstName":"George"}}```
     */
    buyer_details?: Record<string, any> | null;
    /**
     * Requires the creation of a token to represent this payment, mandatory to use customer's wallet and order subscriptions.
     * @example ```true```
     */
    request_token?: boolean | null;
    /**
     * Indicates if the order current amount differs form the one of the associated authorization.
     */
    mismatched_amounts?: boolean | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    versions?: Version[] | null;
}
interface AxervePaymentCreate extends ResourceCreate {
    /**
     * The URL where the payer is redirected after they approve the payment.
     * @example ```"https://yourdomain.com/thankyou"```
     */
    return_url: string;
    /**
     * The IP adress of the client creating the payment.
     * @example ```"213.45.120.5"```
     */
    client_ip?: string | null;
    /**
     * The details of the buyer creating the payment.
     * @example ```{"cardHolder":{"email":"george.harrison@gmail.com"},"shippingAddress":{"firstName":"George"}}```
     */
    buyer_details?: Record<string, any> | null;
    /**
     * Requires the creation of a token to represent this payment, mandatory to use customer's wallet and order subscriptions.
     * @example ```true```
     */
    request_token?: boolean | null;
    order: OrderRel$j;
}
interface AxervePaymentUpdate extends ResourceUpdate {
    /**
     * The Axerve payment request data, collected by client.
     * @example ```{"foo":"bar"}```
     */
    payment_request_data?: Record<string, any> | null;
    /**
     * Send this attribute if you want to update the payment with fresh order data.
     * @example ```true```
     */
    _update?: boolean | null;
    order?: OrderRel$j | null;
}
declare class AxervePayments extends ApiResource<AxervePayment> {
    static readonly TYPE: AxervePaymentType;
    create(resource: AxervePaymentCreate, params?: QueryParamsRetrieve<AxervePayment>, options?: ResourcesConfig): Promise<AxervePayment>;
    update(resource: AxervePaymentUpdate, params?: QueryParamsRetrieve<AxervePayment>, options?: ResourcesConfig): Promise<AxervePayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(axervePaymentId: string | AxervePayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(axervePaymentId: string | AxervePayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    versions(axervePaymentId: string | AxervePayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _update(id: string | AxervePayment, params?: QueryParamsRetrieve<AxervePayment>, options?: ResourcesConfig): Promise<AxervePayment>;
    isAxervePayment(resource: any): resource is AxervePayment;
    relationship(id: string | ResourceId | null): AxervePaymentRel$3;
    relationshipToMany(...ids: string[]): AxervePaymentRel$3[];
    type(): AxervePaymentType;
}

type BraintreePaymentType = 'braintree_payments';
type BraintreePaymentRel$3 = ResourceRel & {
    type: BraintreePaymentType;
};
type OrderRel$i = ResourceRel & {
    type: OrderType;
};
type BraintreePaymentSort = Pick<BraintreePayment, 'id'> & ResourceSort;
interface BraintreePayment extends Resource {
    readonly type: BraintreePaymentType;
    /**
     * The Braintree payment client token. Required by the Braintree JS SDK.
     * @example ```"xxxx.yyyy.zzzz"```
     */
    client_token: string;
    /**
     * The Braintree payment method nonce. Sent by the Braintree JS SDK.
     * @example ```"xxxx.yyyy.zzzz"```
     */
    payment_method_nonce?: string | null;
    /**
     * The Braintree payment ID used by local payment and sent by the Braintree JS SDK.
     * @example ```"xxxx.yyyy.zzzz"```
     */
    payment_id?: string | null;
    /**
     * Indicates if the payment is local, in such case Braintree will trigger a webhook call passing the "payment_id" and "payment_method_nonce" in order to complete the transaction.
     * @example ```true```
     */
    local?: boolean | null;
    /**
     * Braintree payment options, 'customer_id' and 'payment_method_token'.
     * @example ```{"customer_id":"1234567890"}```
     */
    options?: Record<string, any> | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    versions?: Version[] | null;
}
interface BraintreePaymentCreate extends ResourceCreate {
    /**
     * The Braintree payment ID used by local payment and sent by the Braintree JS SDK.
     * @example ```"xxxx.yyyy.zzzz"```
     */
    payment_id?: string | null;
    /**
     * Indicates if the payment is local, in such case Braintree will trigger a webhook call passing the "payment_id" and "payment_method_nonce" in order to complete the transaction.
     * @example ```true```
     */
    local?: boolean | null;
    /**
     * Braintree payment options, 'customer_id' and 'payment_method_token'.
     * @example ```{"customer_id":"1234567890"}```
     */
    options?: Record<string, any> | null;
    order: OrderRel$i;
}
interface BraintreePaymentUpdate extends ResourceUpdate {
    /**
     * The Braintree payment method nonce. Sent by the Braintree JS SDK.
     * @example ```"xxxx.yyyy.zzzz"```
     */
    payment_method_nonce?: string | null;
    /**
     * The Braintree payment ID used by local payment and sent by the Braintree JS SDK.
     * @example ```"xxxx.yyyy.zzzz"```
     */
    payment_id?: string | null;
    /**
     * Indicates if the payment is local, in such case Braintree will trigger a webhook call passing the "payment_id" and "payment_method_nonce" in order to complete the transaction.
     * @example ```true```
     */
    local?: boolean | null;
    /**
     * Braintree payment options, 'customer_id' and 'payment_method_token'.
     * @example ```{"customer_id":"1234567890"}```
     */
    options?: Record<string, any> | null;
    order?: OrderRel$i | null;
}
declare class BraintreePayments extends ApiResource<BraintreePayment> {
    static readonly TYPE: BraintreePaymentType;
    create(resource: BraintreePaymentCreate, params?: QueryParamsRetrieve<BraintreePayment>, options?: ResourcesConfig): Promise<BraintreePayment>;
    update(resource: BraintreePaymentUpdate, params?: QueryParamsRetrieve<BraintreePayment>, options?: ResourcesConfig): Promise<BraintreePayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(braintreePaymentId: string | BraintreePayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(braintreePaymentId: string | BraintreePayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    versions(braintreePaymentId: string | BraintreePayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isBraintreePayment(resource: any): resource is BraintreePayment;
    relationship(id: string | ResourceId | null): BraintreePaymentRel$3;
    relationshipToMany(...ids: string[]): BraintreePaymentRel$3[];
    type(): BraintreePaymentType;
}

type CheckoutComPaymentType = 'checkout_com_payments';
type CheckoutComPaymentRel$3 = ResourceRel & {
    type: CheckoutComPaymentType;
};
type OrderRel$h = ResourceRel & {
    type: OrderType;
};
type CheckoutComPaymentSort = Pick<CheckoutComPayment, 'id'> & ResourceSort;
interface CheckoutComPayment extends Resource {
    readonly type: CheckoutComPaymentType;
    /**
     * The Checkout.com publishable API key.
     * @example ```"pk_test_xxxx-yyyy-zzzz"```
     */
    public_key?: string | null;
    /**
     * The Checkout.com payment or digital wallet token.
     * @example ```"tok_4gzeau5o2uqubbk6fufs3m7p54"```
     */
    token: string;
    /**
     * The session object which initializes payment.
     * @example ```{"id":"ps_xxxx_yyyy_zzzz","payment_session_secret":"pss_xxxx_yyy_zzzz","payment_session_token":"xxxxx_yyyyy_zzzzz","_links":{"self":{"href":"https://api.sandbox.checkout.com/payment-sessions/ps_xxxx_yyyy_zzzz"}}}```
     */
    payment_session: Record<string, any>;
    /**
     * The URL to redirect your customer upon 3DS succeeded authentication.
     * @example ```"http://commercelayer.dev/checkout_com/success"```
     */
    success_url: string;
    /**
     * The URL to redirect your customer upon 3DS failed authentication.
     * @example ```"http://commercelayer.dev/checkout_com/failure"```
     */
    failure_url: string;
    /**
     * The payment source identifier that can be used for subsequent payments.
     * @example ```"src_nwd3m4in3hkuddfpjsaevunhdy"```
     */
    source_id?: string | null;
    /**
     * The customer's unique identifier. This can be passed as a source when making a payment.
     * @example ```"cus_udst2tfldj6upmye2reztkmm4i"```
     */
    customer_token?: string | null;
    /**
     * The URI that the customer should be redirected to in order to complete the payment.
     * @example ```"https://api.checkout.com/3ds/pay_mbabizu24mvu3mela5njyhpit4"```
     */
    redirect_uri?: string | null;
    /**
     * The Checkout.com payment response, used to fetch internal data.
     * @example ```{"foo":"bar"}```
     */
    payment_response?: Record<string, any> | null;
    /**
     * Indicates if the order current amount differs form the one of the associated authorization.
     */
    mismatched_amounts?: boolean | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    versions?: Version[] | null;
}
interface CheckoutComPaymentCreate extends ResourceCreate {
    /**
     * The Checkout.com payment or digital wallet token.
     * @example ```"tok_4gzeau5o2uqubbk6fufs3m7p54"```
     */
    token: string;
    /**
     * The URL to redirect your customer upon 3DS succeeded authentication.
     * @example ```"http://commercelayer.dev/checkout_com/success"```
     */
    success_url: string;
    /**
     * The URL to redirect your customer upon 3DS failed authentication.
     * @example ```"http://commercelayer.dev/checkout_com/failure"```
     */
    failure_url: string;
    order: OrderRel$h;
}
interface CheckoutComPaymentUpdate extends ResourceUpdate {
    /**
     * The Checkout.com payment or digital wallet token.
     * @example ```"tok_4gzeau5o2uqubbk6fufs3m7p54"```
     */
    token?: string | null;
    /**
     * Send this attribute if you want to send additional details the payment request (i.e. upon 3DS check).
     * @example ```true```
     */
    _details?: boolean | null;
    /**
     * Send this attribute if you want to refresh all the pending transactions, can be used as webhooks fallback logic.
     * @example ```true```
     */
    _refresh?: boolean | null;
    order?: OrderRel$h | null;
}
declare class CheckoutComPayments extends ApiResource<CheckoutComPayment> {
    static readonly TYPE: CheckoutComPaymentType;
    create(resource: CheckoutComPaymentCreate, params?: QueryParamsRetrieve<CheckoutComPayment>, options?: ResourcesConfig): Promise<CheckoutComPayment>;
    update(resource: CheckoutComPaymentUpdate, params?: QueryParamsRetrieve<CheckoutComPayment>, options?: ResourcesConfig): Promise<CheckoutComPayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(checkoutComPaymentId: string | CheckoutComPayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(checkoutComPaymentId: string | CheckoutComPayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    versions(checkoutComPaymentId: string | CheckoutComPayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _details(id: string | CheckoutComPayment, params?: QueryParamsRetrieve<CheckoutComPayment>, options?: ResourcesConfig): Promise<CheckoutComPayment>;
    _refresh(id: string | CheckoutComPayment, params?: QueryParamsRetrieve<CheckoutComPayment>, options?: ResourcesConfig): Promise<CheckoutComPayment>;
    isCheckoutComPayment(resource: any): resource is CheckoutComPayment;
    relationship(id: string | ResourceId | null): CheckoutComPaymentRel$3;
    relationshipToMany(...ids: string[]): CheckoutComPaymentRel$3[];
    type(): CheckoutComPaymentType;
}

type ExternalPaymentType = 'external_payments';
type ExternalPaymentRel$2 = ResourceRel & {
    type: ExternalPaymentType;
};
type OrderRel$g = ResourceRel & {
    type: OrderType;
};
type ExternalPaymentSort = Pick<ExternalPayment, 'id'> & ResourceSort;
interface ExternalPayment extends Resource {
    readonly type: ExternalPaymentType;
    /**
     * The payment source token, as generated by the external gateway SDK. Credit Card numbers are rejected.
     * @example ```"xxxx.yyyy.zzzz"```
     */
    payment_source_token: string;
    /**
     * External payment options.
     * @example ```{"foo":"bar"}```
     */
    options?: Record<string, any> | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    wallet?: CustomerPaymentSource | null;
    versions?: Version[] | null;
}
interface ExternalPaymentCreate extends ResourceCreate {
    /**
     * The payment source token, as generated by the external gateway SDK. Credit Card numbers are rejected.
     * @example ```"xxxx.yyyy.zzzz"```
     */
    payment_source_token: string;
    /**
     * External payment options.
     * @example ```{"foo":"bar"}```
     */
    options?: Record<string, any> | null;
    order: OrderRel$g;
}
interface ExternalPaymentUpdate extends ResourceUpdate {
    /**
     * External payment options.
     * @example ```{"foo":"bar"}```
     */
    options?: Record<string, any> | null;
    order?: OrderRel$g | null;
}
declare class ExternalPayments extends ApiResource<ExternalPayment> {
    static readonly TYPE: ExternalPaymentType;
    create(resource: ExternalPaymentCreate, params?: QueryParamsRetrieve<ExternalPayment>, options?: ResourcesConfig): Promise<ExternalPayment>;
    update(resource: ExternalPaymentUpdate, params?: QueryParamsRetrieve<ExternalPayment>, options?: ResourcesConfig): Promise<ExternalPayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(externalPaymentId: string | ExternalPayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(externalPaymentId: string | ExternalPayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    wallet(externalPaymentId: string | ExternalPayment, params?: QueryParamsRetrieve<CustomerPaymentSource>, options?: ResourcesConfig): Promise<CustomerPaymentSource>;
    versions(externalPaymentId: string | ExternalPayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isExternalPayment(resource: any): resource is ExternalPayment;
    relationship(id: string | ResourceId | null): ExternalPaymentRel$2;
    relationshipToMany(...ids: string[]): ExternalPaymentRel$2[];
    type(): ExternalPaymentType;
}

type KlarnaPaymentType = 'klarna_payments';
type KlarnaPaymentRel$3 = ResourceRel & {
    type: KlarnaPaymentType;
};
type OrderRel$f = ResourceRel & {
    type: OrderType;
};
type KlarnaPaymentSort = Pick<KlarnaPayment, 'id'> & ResourceSort;
interface KlarnaPayment extends Resource {
    readonly type: KlarnaPaymentType;
    /**
     * The identifier of the payment session.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    session_id?: string | null;
    /**
     * The public token linked to your API credential. Available upon session creation.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    client_token?: string | null;
    /**
     * The merchant available payment methods for the assoiated order. Available upon session creation.
     * @example ```[{"foo":"bar"}]```
     */
    payment_methods: Array<Record<string, any>>;
    /**
     * The token returned by a successful client authorization, mandatory to place the order.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    auth_token?: string | null;
    /**
     * Indicates if the order current amount differs form the one of the created payment intent.
     */
    mismatched_amounts?: boolean | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    versions?: Version[] | null;
}
interface KlarnaPaymentCreate extends ResourceCreate {
    order: OrderRel$f;
}
interface KlarnaPaymentUpdate extends ResourceUpdate {
    /**
     * The token returned by a successful client authorization, mandatory to place the order.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    auth_token?: string | null;
    /**
     * Send this attribute if you want to update the payment session with fresh order data.
     * @example ```true```
     */
    _update?: boolean | null;
    order?: OrderRel$f | null;
}
declare class KlarnaPayments extends ApiResource<KlarnaPayment> {
    static readonly TYPE: KlarnaPaymentType;
    create(resource: KlarnaPaymentCreate, params?: QueryParamsRetrieve<KlarnaPayment>, options?: ResourcesConfig): Promise<KlarnaPayment>;
    update(resource: KlarnaPaymentUpdate, params?: QueryParamsRetrieve<KlarnaPayment>, options?: ResourcesConfig): Promise<KlarnaPayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(klarnaPaymentId: string | KlarnaPayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(klarnaPaymentId: string | KlarnaPayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    versions(klarnaPaymentId: string | KlarnaPayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _update(id: string | KlarnaPayment, params?: QueryParamsRetrieve<KlarnaPayment>, options?: ResourcesConfig): Promise<KlarnaPayment>;
    isKlarnaPayment(resource: any): resource is KlarnaPayment;
    relationship(id: string | ResourceId | null): KlarnaPaymentRel$3;
    relationshipToMany(...ids: string[]): KlarnaPaymentRel$3[];
    type(): KlarnaPaymentType;
}

type PaypalPaymentType = 'paypal_payments';
type PaypalPaymentRel$2 = ResourceRel & {
    type: PaypalPaymentType;
};
type OrderRel$e = ResourceRel & {
    type: OrderType;
};
type PaypalPaymentSort = Pick<PaypalPayment, 'id'> & ResourceSort;
interface PaypalPayment extends Resource {
    readonly type: PaypalPaymentType;
    /**
     * The URL where the payer is redirected after they approve the payment.
     * @example ```"https://yourdomain.com/thankyou"```
     */
    return_url: string;
    /**
     * The URL where the payer is redirected after they cancel the payment.
     * @example ```"https://yourdomain.com/checkout/payment"```
     */
    cancel_url: string;
    /**
     * A free-form field that you can use to send a note to the payer on PayPal.
     * @example ```"Thank you for shopping with us!"```
     */
    note_to_payer?: string | null;
    /**
     * The id of the payer that PayPal passes in the return_url.
     * @example ```"ABCDEFGHG123456"```
     */
    paypal_payer_id?: string | null;
    /**
     * The PayPal payer id (if present).
     * @example ```"ABCDEFGHG123456"```
     */
    name?: string | null;
    /**
     * The id of the PayPal payment object.
     * @example ```"1234567890"```
     */
    paypal_id?: string | null;
    /**
     * The PayPal payment status. One of 'created', or 'approved'.
     * @example ```"created"```
     */
    status?: 'created' | 'approved' | null;
    /**
     * The URL the customer should be redirected to approve the payment.
     * @example ```"https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-1234567890ABCDEFGHG"```
     */
    approval_url?: string | null;
    /**
     * Indicates if the order current amount differs form the one of the created payment intent.
     */
    mismatched_amounts?: boolean | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    versions?: Version[] | null;
}
interface PaypalPaymentCreate extends ResourceCreate {
    /**
     * The URL where the payer is redirected after they approve the payment.
     * @example ```"https://yourdomain.com/thankyou"```
     */
    return_url: string;
    /**
     * The URL where the payer is redirected after they cancel the payment.
     * @example ```"https://yourdomain.com/checkout/payment"```
     */
    cancel_url: string;
    /**
     * A free-form field that you can use to send a note to the payer on PayPal.
     * @example ```"Thank you for shopping with us!"```
     */
    note_to_payer?: string | null;
    order: OrderRel$e;
}
interface PaypalPaymentUpdate extends ResourceUpdate {
    /**
     * The id of the payer that PayPal passes in the return_url.
     * @example ```"ABCDEFGHG123456"```
     */
    paypal_payer_id?: string | null;
    order?: OrderRel$e | null;
}
declare class PaypalPayments extends ApiResource<PaypalPayment> {
    static readonly TYPE: PaypalPaymentType;
    create(resource: PaypalPaymentCreate, params?: QueryParamsRetrieve<PaypalPayment>, options?: ResourcesConfig): Promise<PaypalPayment>;
    update(resource: PaypalPaymentUpdate, params?: QueryParamsRetrieve<PaypalPayment>, options?: ResourcesConfig): Promise<PaypalPayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(paypalPaymentId: string | PaypalPayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(paypalPaymentId: string | PaypalPayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    versions(paypalPaymentId: string | PaypalPayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isPaypalPayment(resource: any): resource is PaypalPayment;
    relationship(id: string | ResourceId | null): PaypalPaymentRel$2;
    relationshipToMany(...ids: string[]): PaypalPaymentRel$2[];
    type(): PaypalPaymentType;
}

type SatispayPaymentType = 'satispay_payments';
type SatispayPaymentRel$3 = ResourceRel & {
    type: SatispayPaymentType;
};
type OrderRel$d = ResourceRel & {
    type: OrderType;
};
type SatispayPaymentSort = Pick<SatispayPayment, 'id' | 'flow' | 'status'> & ResourceSort;
interface SatispayPayment extends Resource {
    readonly type: SatispayPaymentType;
    /**
     * The payment unique identifier.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    payment_id?: string | null;
    /**
     * The Satispay payment flow, inspect gateway API details for more information.
     * @example ```"MATCH_CODE"```
     */
    flow?: string | null;
    /**
     * The Satispay payment status.
     * @example ```"PENDING"```
     */
    status?: string | null;
    /**
     * The url to redirect the customer after the payment flow is completed.
     * @example ```"http://commercelayer.dev/satispay/redirect"```
     */
    redirect_url?: string | null;
    /**
     * Redirect url to the payment page.
     * @example ```"https://online.satispay.com/pay/xxxx-yyyy-zzzz?redirect_url={redirect_url}"```
     */
    payment_url?: string | null;
    /**
     * The Satispay payment response, used to fetch internal data.
     * @example ```{"foo":"bar"}```
     */
    payment_response?: Record<string, any> | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    versions?: Version[] | null;
}
interface SatispayPaymentCreate extends ResourceCreate {
    /**
     * The Satispay payment flow, inspect gateway API details for more information.
     * @example ```"MATCH_CODE"```
     */
    flow?: string | null;
    /**
     * The url to redirect the customer after the payment flow is completed.
     * @example ```"http://commercelayer.dev/satispay/redirect"```
     */
    redirect_url?: string | null;
    order: OrderRel$d;
}
interface SatispayPaymentUpdate extends ResourceUpdate {
    /**
     * The url to redirect the customer after the payment flow is completed.
     * @example ```"http://commercelayer.dev/satispay/redirect"```
     */
    redirect_url?: string | null;
    /**
     * Send this attribute if you want to refresh all the pending transactions, can be used as webhooks fallback logic.
     * @example ```true```
     */
    _refresh?: boolean | null;
    order?: OrderRel$d | null;
}
declare class SatispayPayments extends ApiResource<SatispayPayment> {
    static readonly TYPE: SatispayPaymentType;
    create(resource: SatispayPaymentCreate, params?: QueryParamsRetrieve<SatispayPayment>, options?: ResourcesConfig): Promise<SatispayPayment>;
    update(resource: SatispayPaymentUpdate, params?: QueryParamsRetrieve<SatispayPayment>, options?: ResourcesConfig): Promise<SatispayPayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(satispayPaymentId: string | SatispayPayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(satispayPaymentId: string | SatispayPayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    versions(satispayPaymentId: string | SatispayPayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _refresh(id: string | SatispayPayment, params?: QueryParamsRetrieve<SatispayPayment>, options?: ResourcesConfig): Promise<SatispayPayment>;
    isSatispayPayment(resource: any): resource is SatispayPayment;
    relationship(id: string | ResourceId | null): SatispayPaymentRel$3;
    relationshipToMany(...ids: string[]): SatispayPaymentRel$3[];
    type(): SatispayPaymentType;
}

type StripePaymentType = 'stripe_payments';
type StripePaymentRel$2 = ResourceRel & {
    type: StripePaymentType;
};
type OrderRel$c = ResourceRel & {
    type: OrderType;
};
type StripePaymentSort = Pick<StripePayment, 'id'> & ResourceSort;
interface StripePayment extends Resource {
    readonly type: StripePaymentType;
    /**
     * The Stripe payment intent ID. Required to identify a payment session on stripe.
     * @example ```"pi_1234XXX"```
     */
    stripe_id?: string | null;
    /**
     * The Stripe payment intent client secret. Required to create a charge through Stripe.js.
     * @example ```"pi_1234XXX_secret_5678YYY"```
     */
    client_secret?: string | null;
    /**
     * The account (if any) for which the funds of the PaymentIntent are intended.
     * @example ```"acct_xxxx-yyyy-zzzz"```
     */
    connected_account?: string | null;
    /**
     * The Stripe charge ID. Identifies money movement upon the payment intent confirmation.
     * @example ```"ch_1234XXX"```
     */
    charge_id?: string | null;
    /**
     * The Stripe publishable API key.
     * @example ```"pk_live_xxxx-yyyy-zzzz"```
     */
    publishable_key?: string | null;
    /**
     * The Stripe account ID that these funds are intended for.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    on_behalf_of?: string | null;
    /**
     * A string that identifies the resulting payment as part of a group.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    transfer_group?: string | null;
    /**
     * Stripe payment options: 'customer', 'payment_method', 'return_url', etc. Check Stripe payment intent API for more details.
     * @example ```{"customer":"cus_xxx","payment_method":"pm_xxx"}```
     */
    options?: Record<string, any> | null;
    /**
     * Stripe 'payment_method', set by webhook.
     * @example ```{"id":"pm_xxx"}```
     */
    payment_method?: Record<string, any> | null;
    /**
     * Indicates if the order current amount differs form the one of the created payment intent.
     */
    mismatched_amounts?: boolean | null;
    /**
     * The URL to return to when a redirect payment is completed.
     * @example ```"https://yourdomain.com/thankyou"```
     */
    return_url?: string | null;
    /**
     * The email address to send the receipt to.
     * @example ```"john@example.com"```
     */
    receipt_email?: string | null;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    payment_gateway?: PaymentGateway | null;
    versions?: Version[] | null;
}
interface StripePaymentCreate extends ResourceCreate {
    /**
     * The Stripe payment intent ID. Required to identify a payment session on stripe.
     * @example ```"pi_1234XXX"```
     */
    stripe_id?: string | null;
    /**
     * The Stripe payment intent client secret. Required to create a charge through Stripe.js.
     * @example ```"pi_1234XXX_secret_5678YYY"```
     */
    client_secret?: string | null;
    /**
     * Stripe payment options: 'customer', 'payment_method', 'return_url', etc. Check Stripe payment intent API for more details.
     * @example ```{"customer":"cus_xxx","payment_method":"pm_xxx"}```
     */
    options?: Record<string, any> | null;
    /**
     * The URL to return to when a redirect payment is completed.
     * @example ```"https://yourdomain.com/thankyou"```
     */
    return_url?: string | null;
    /**
     * The email address to send the receipt to.
     * @example ```"john@example.com"```
     */
    receipt_email?: string | null;
    order: OrderRel$c;
}
interface StripePaymentUpdate extends ResourceUpdate {
    /**
     * Stripe payment options: 'customer', 'payment_method', 'return_url', etc. Check Stripe payment intent API for more details.
     * @example ```{"customer":"cus_xxx","payment_method":"pm_xxx"}```
     */
    options?: Record<string, any> | null;
    /**
     * The URL to return to when a redirect payment is completed.
     * @example ```"https://yourdomain.com/thankyou"```
     */
    return_url?: string | null;
    /**
     * Send this attribute if you want to update the created payment intent with fresh order data.
     * @example ```true```
     */
    _update?: boolean | null;
    /**
     * Send this attribute if you want to refresh the payment status, can be used as webhooks fallback logic.
     * @example ```true```
     */
    _refresh?: boolean | null;
    order?: OrderRel$c | null;
}
declare class StripePayments extends ApiResource<StripePayment> {
    static readonly TYPE: StripePaymentType;
    create(resource: StripePaymentCreate, params?: QueryParamsRetrieve<StripePayment>, options?: ResourcesConfig): Promise<StripePayment>;
    update(resource: StripePaymentUpdate, params?: QueryParamsRetrieve<StripePayment>, options?: ResourcesConfig): Promise<StripePayment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(stripePaymentId: string | StripePayment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    payment_gateway(stripePaymentId: string | StripePayment, params?: QueryParamsRetrieve<PaymentGateway>, options?: ResourcesConfig): Promise<PaymentGateway>;
    versions(stripePaymentId: string | StripePayment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _update(id: string | StripePayment, params?: QueryParamsRetrieve<StripePayment>, options?: ResourcesConfig): Promise<StripePayment>;
    _refresh(id: string | StripePayment, params?: QueryParamsRetrieve<StripePayment>, options?: ResourcesConfig): Promise<StripePayment>;
    isStripePayment(resource: any): resource is StripePayment;
    relationship(id: string | ResourceId | null): StripePaymentRel$2;
    relationshipToMany(...ids: string[]): StripePaymentRel$2[];
    type(): StripePaymentType;
}

type WireTransferType = 'wire_transfers';
type WireTransferRel$2 = ResourceRel & {
    type: WireTransferType;
};
type OrderRel$b = ResourceRel & {
    type: OrderType;
};
type WireTransferSort = Pick<WireTransfer, 'id'> & ResourceSort;
interface WireTransfer extends Resource {
    readonly type: WireTransferType;
    /**
     * Information about the payment instrument used in the transaction.
     * @example ```{"issuer":"cl bank","card_type":"visa"}```
     */
    payment_instrument?: Record<string, any> | null;
    order?: Order | null;
    versions?: Version[] | null;
}
interface WireTransferCreate extends ResourceCreate {
    order: OrderRel$b;
}
interface WireTransferUpdate extends ResourceUpdate {
    order?: OrderRel$b | null;
}
declare class WireTransfers extends ApiResource<WireTransfer> {
    static readonly TYPE: WireTransferType;
    create(resource: WireTransferCreate, params?: QueryParamsRetrieve<WireTransfer>, options?: ResourcesConfig): Promise<WireTransfer>;
    update(resource: WireTransferUpdate, params?: QueryParamsRetrieve<WireTransfer>, options?: ResourcesConfig): Promise<WireTransfer>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(wireTransferId: string | WireTransfer, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    versions(wireTransferId: string | WireTransfer, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isWireTransfer(resource: any): resource is WireTransfer;
    relationship(id: string | ResourceId | null): WireTransferRel$2;
    relationshipToMany(...ids: string[]): WireTransferRel$2[];
    type(): WireTransferType;
}

type CustomerPaymentSourceType = 'customer_payment_sources';
type CustomerPaymentSourceRel$1 = ResourceRel & {
    type: CustomerPaymentSourceType;
};
type CustomerRel$7 = ResourceRel & {
    type: CustomerType;
};
type PaymentMethodRel$4 = ResourceRel & {
    type: PaymentMethodType;
};
type AdyenPaymentRel$2 = ResourceRel & {
    type: AdyenPaymentType;
};
type AxervePaymentRel$2 = ResourceRel & {
    type: AxervePaymentType;
};
type BraintreePaymentRel$2 = ResourceRel & {
    type: BraintreePaymentType;
};
type CheckoutComPaymentRel$2 = ResourceRel & {
    type: CheckoutComPaymentType;
};
type ExternalPaymentRel$1 = ResourceRel & {
    type: ExternalPaymentType;
};
type KlarnaPaymentRel$2 = ResourceRel & {
    type: KlarnaPaymentType;
};
type PaypalPaymentRel$1 = ResourceRel & {
    type: PaypalPaymentType;
};
type SatispayPaymentRel$2 = ResourceRel & {
    type: SatispayPaymentType;
};
type StripePaymentRel$1 = ResourceRel & {
    type: StripePaymentType;
};
type WireTransferRel$1 = ResourceRel & {
    type: WireTransferType;
};
type CustomerPaymentSourceSort = Pick<CustomerPaymentSource, 'id'> & ResourceSort;
interface CustomerPaymentSource extends Resource {
    readonly type: CustomerPaymentSourceType;
    /**
     * Returns the associated payment source's name.
     * @example ```"XXXX-XXXX-XXXX-1111"```
     */
    name?: string | null;
    /**
     * Returns the customer gateway token stored in the gateway.
     * @example ```"cus_xxxyyyzzz"```
     */
    customer_token?: string | null;
    /**
     * Returns the payment source token stored in the gateway.
     * @example ```"pm_xxxyyyzzz"```
     */
    payment_source_token?: string | null;
    customer?: Customer | null;
    payment_method?: PaymentMethod | null;
    payment_source?: AdyenPayment | AxervePayment | BraintreePayment | CheckoutComPayment | ExternalPayment | KlarnaPayment | PaypalPayment | SatispayPayment | StripePayment | WireTransfer | null;
    versions?: Version[] | null;
}
interface CustomerPaymentSourceCreate extends ResourceCreate {
    /**
     * Returns the customer gateway token stored in the gateway.
     * @example ```"cus_xxxyyyzzz"```
     */
    customer_token?: string | null;
    /**
     * Returns the payment source token stored in the gateway.
     * @example ```"pm_xxxyyyzzz"```
     */
    payment_source_token?: string | null;
    customer: CustomerRel$7;
    payment_method?: PaymentMethodRel$4 | null;
    payment_source?: AdyenPaymentRel$2 | AxervePaymentRel$2 | BraintreePaymentRel$2 | CheckoutComPaymentRel$2 | ExternalPaymentRel$1 | KlarnaPaymentRel$2 | PaypalPaymentRel$1 | SatispayPaymentRel$2 | StripePaymentRel$1 | WireTransferRel$1 | null;
}
interface CustomerPaymentSourceUpdate extends ResourceUpdate {
    /**
     * Returns the customer gateway token stored in the gateway.
     * @example ```"cus_xxxyyyzzz"```
     */
    customer_token?: string | null;
    /**
     * Returns the payment source token stored in the gateway.
     * @example ```"pm_xxxyyyzzz"```
     */
    payment_source_token?: string | null;
    customer?: CustomerRel$7 | null;
    payment_method?: PaymentMethodRel$4 | null;
    payment_source?: AdyenPaymentRel$2 | AxervePaymentRel$2 | BraintreePaymentRel$2 | CheckoutComPaymentRel$2 | ExternalPaymentRel$1 | KlarnaPaymentRel$2 | PaypalPaymentRel$1 | SatispayPaymentRel$2 | StripePaymentRel$1 | WireTransferRel$1 | null;
}
declare class CustomerPaymentSources extends ApiResource<CustomerPaymentSource> {
    static readonly TYPE: CustomerPaymentSourceType;
    create(resource: CustomerPaymentSourceCreate, params?: QueryParamsRetrieve<CustomerPaymentSource>, options?: ResourcesConfig): Promise<CustomerPaymentSource>;
    update(resource: CustomerPaymentSourceUpdate, params?: QueryParamsRetrieve<CustomerPaymentSource>, options?: ResourcesConfig): Promise<CustomerPaymentSource>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customer(customerPaymentSourceId: string | CustomerPaymentSource, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    payment_method(customerPaymentSourceId: string | CustomerPaymentSource, params?: QueryParamsRetrieve<PaymentMethod>, options?: ResourcesConfig): Promise<PaymentMethod>;
    versions(customerPaymentSourceId: string | CustomerPaymentSource, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isCustomerPaymentSource(resource: any): resource is CustomerPaymentSource;
    relationship(id: string | ResourceId | null): CustomerPaymentSourceRel$1;
    relationshipToMany(...ids: string[]): CustomerPaymentSourceRel$1[];
    type(): CustomerPaymentSourceType;
}

type CustomerSubscriptionType = 'customer_subscriptions';
type CustomerSubscriptionRel = ResourceRel & {
    type: CustomerSubscriptionType;
};
type CustomerSubscriptionSort = Pick<CustomerSubscription, 'id'> & ResourceSort;
interface CustomerSubscription extends Resource {
    readonly type: CustomerSubscriptionType;
    /**
     * The email of the customer that owns the subscription.
     * @example ```"john@example.com"```
     */
    customer_email: string;
    customer?: Customer | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface CustomerSubscriptionCreate extends ResourceCreate {
    /**
     * The email of the customer that owns the subscription.
     * @example ```"john@example.com"```
     */
    customer_email: string;
}
type CustomerSubscriptionUpdate = ResourceUpdate;
declare class CustomerSubscriptions extends ApiResource<CustomerSubscription> {
    static readonly TYPE: CustomerSubscriptionType;
    create(resource: CustomerSubscriptionCreate, params?: QueryParamsRetrieve<CustomerSubscription>, options?: ResourcesConfig): Promise<CustomerSubscription>;
    update(resource: CustomerSubscriptionUpdate, params?: QueryParamsRetrieve<CustomerSubscription>, options?: ResourcesConfig): Promise<CustomerSubscription>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customer(customerSubscriptionId: string | CustomerSubscription, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    events(customerSubscriptionId: string | CustomerSubscription, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(customerSubscriptionId: string | CustomerSubscription, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isCustomerSubscription(resource: any): resource is CustomerSubscription;
    relationship(id: string | ResourceId | null): CustomerSubscriptionRel;
    relationshipToMany(...ids: string[]): CustomerSubscriptionRel[];
    type(): CustomerSubscriptionType;
}

type SubscriptionModelType = 'subscription_models';
type SubscriptionModelRel$2 = ResourceRel & {
    type: SubscriptionModelType;
};
type SubscriptionModelSort = Pick<SubscriptionModel, 'id' | 'name' | 'strategy'> & ResourceSort;
interface SubscriptionModel extends Resource {
    readonly type: SubscriptionModelType;
    /**
     * The subscription model's internal name.
     * @example ```"EU Subscription Model"```
     */
    name: string;
    /**
     * The subscription model's strategy used to generate order subscriptions: one between 'by_frequency' (default) and 'by_line_items'.
     * @example ```"by_frequency"```
     */
    strategy?: string | null;
    /**
     * An object that contains the frequencies available for this subscription model. Supported ones are 'hourly', 'daily', 'weekly', 'monthly', 'two-month', 'three-month', 'four-month', 'six-month', 'yearly', or your custom crontab expression (min unit is hour).
     * @example ```["hourly","10 * * * *","weekly","monthly","two-month"]```
     */
    frequencies: string[];
    /**
     * Indicates if the created subscriptions will be activated considering the placed source order as its first run, default to true.
     * @example ```true```
     */
    auto_activate?: boolean | null;
    /**
     * Indicates if the created subscriptions will be cancelled in case the source order is cancelled, default to false.
     */
    auto_cancel?: boolean | null;
    markets?: Market[] | null;
    order_subscriptions?: OrderSubscription[] | null;
    attachments?: Attachment[] | null;
}
interface SubscriptionModelCreate extends ResourceCreate {
    /**
     * The subscription model's internal name.
     * @example ```"EU Subscription Model"```
     */
    name: string;
    /**
     * The subscription model's strategy used to generate order subscriptions: one between 'by_frequency' (default) and 'by_line_items'.
     * @example ```"by_frequency"```
     */
    strategy?: string | null;
    /**
     * An object that contains the frequencies available for this subscription model. Supported ones are 'hourly', 'daily', 'weekly', 'monthly', 'two-month', 'three-month', 'four-month', 'six-month', 'yearly', or your custom crontab expression (min unit is hour).
     * @example ```["hourly","10 * * * *","weekly","monthly","two-month"]```
     */
    frequencies: string[];
    /**
     * Indicates if the created subscriptions will be activated considering the placed source order as its first run, default to true.
     * @example ```true```
     */
    auto_activate?: boolean | null;
    /**
     * Indicates if the created subscriptions will be cancelled in case the source order is cancelled, default to false.
     */
    auto_cancel?: boolean | null;
}
interface SubscriptionModelUpdate extends ResourceUpdate {
    /**
     * The subscription model's internal name.
     * @example ```"EU Subscription Model"```
     */
    name?: string | null;
    /**
     * The subscription model's strategy used to generate order subscriptions: one between 'by_frequency' (default) and 'by_line_items'.
     * @example ```"by_frequency"```
     */
    strategy?: string | null;
    /**
     * An object that contains the frequencies available for this subscription model. Supported ones are 'hourly', 'daily', 'weekly', 'monthly', 'two-month', 'three-month', 'four-month', 'six-month', 'yearly', or your custom crontab expression (min unit is hour).
     * @example ```["hourly","10 * * * *","weekly","monthly","two-month"]```
     */
    frequencies?: string[] | null;
    /**
     * Indicates if the created subscriptions will be activated considering the placed source order as its first run, default to true.
     * @example ```true```
     */
    auto_activate?: boolean | null;
    /**
     * Indicates if the created subscriptions will be cancelled in case the source order is cancelled, default to false.
     */
    auto_cancel?: boolean | null;
}
declare class SubscriptionModels extends ApiResource<SubscriptionModel> {
    static readonly TYPE: SubscriptionModelType;
    create(resource: SubscriptionModelCreate, params?: QueryParamsRetrieve<SubscriptionModel>, options?: ResourcesConfig): Promise<SubscriptionModel>;
    update(resource: SubscriptionModelUpdate, params?: QueryParamsRetrieve<SubscriptionModel>, options?: ResourcesConfig): Promise<SubscriptionModel>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(subscriptionModelId: string | SubscriptionModel, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    order_subscriptions(subscriptionModelId: string | SubscriptionModel, params?: QueryParamsList<OrderSubscription>, options?: ResourcesConfig): Promise<ListResponse<OrderSubscription>>;
    attachments(subscriptionModelId: string | SubscriptionModel, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    isSubscriptionModel(resource: any): resource is SubscriptionModel;
    relationship(id: string | ResourceId | null): SubscriptionModelRel$2;
    relationshipToMany(...ids: string[]): SubscriptionModelRel$2[];
    type(): SubscriptionModelType;
}

type SkuOptionType = 'sku_options';
type SkuOptionRel$2 = ResourceRel & {
    type: SkuOptionType;
};
type MarketRel$h = ResourceRel & {
    type: MarketType;
};
type TagRel$k = ResourceRel & {
    type: TagType;
};
type SkuOptionSort = Pick<SkuOption, 'id' | 'name' | 'currency_code' | 'price_amount_cents' | 'delay_hours' | 'delay_days'> & ResourceSort;
interface SkuOption extends Resource {
    readonly type: SkuOptionType;
    /**
     * The SKU option's internal name.
     * @example ```"Embossing"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * An internal description of the SKU option.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The price of this shipping method, in cents.
     * @example ```1000```
     */
    price_amount_cents?: number | null;
    /**
     * The price of this shipping method, float.
     * @example ```10```
     */
    price_amount_float?: number | null;
    /**
     * The price of this shipping method, formatted.
     * @example ```"€10,00"```
     */
    formatted_price_amount?: string | null;
    /**
     * The delay time (in hours) that should be added to the delivery lead time when this option is purchased.
     * @example ```48```
     */
    delay_hours?: number | null;
    /**
     * The delay time, in days (rounded).
     * @example ```2```
     */
    delay_days?: number | null;
    /**
     * The regex that will be evaluated to match the SKU codes, max size is 5000.
     * @example ```"^(A|B).*$"```
     */
    sku_code_regex?: string | null;
    market?: Market | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface SkuOptionCreate extends ResourceCreate {
    /**
     * The SKU option's internal name.
     * @example ```"Embossing"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * An internal description of the SKU option.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The price of this shipping method, in cents.
     * @example ```1000```
     */
    price_amount_cents?: number | null;
    /**
     * The delay time (in hours) that should be added to the delivery lead time when this option is purchased.
     * @example ```48```
     */
    delay_hours?: number | null;
    /**
     * The regex that will be evaluated to match the SKU codes, max size is 5000.
     * @example ```"^(A|B).*$"```
     */
    sku_code_regex?: string | null;
    market?: MarketRel$h | null;
    tags?: TagRel$k[] | null;
}
interface SkuOptionUpdate extends ResourceUpdate {
    /**
     * The SKU option's internal name.
     * @example ```"Embossing"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * An internal description of the SKU option.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The price of this shipping method, in cents.
     * @example ```1000```
     */
    price_amount_cents?: number | null;
    /**
     * The delay time (in hours) that should be added to the delivery lead time when this option is purchased.
     * @example ```48```
     */
    delay_hours?: number | null;
    /**
     * The regex that will be evaluated to match the SKU codes, max size is 5000.
     * @example ```"^(A|B).*$"```
     */
    sku_code_regex?: string | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    market?: MarketRel$h | null;
    tags?: TagRel$k[] | null;
}
declare class SkuOptions extends ApiResource<SkuOption> {
    static readonly TYPE: SkuOptionType;
    create(resource: SkuOptionCreate, params?: QueryParamsRetrieve<SkuOption>, options?: ResourcesConfig): Promise<SkuOption>;
    update(resource: SkuOptionUpdate, params?: QueryParamsRetrieve<SkuOption>, options?: ResourcesConfig): Promise<SkuOption>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(skuOptionId: string | SkuOption, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    attachments(skuOptionId: string | SkuOption, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(skuOptionId: string | SkuOption, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(skuOptionId: string | SkuOption, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(skuOptionId: string | SkuOption, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _add_tags(id: string | SkuOption, triggerValue: string, params?: QueryParamsRetrieve<SkuOption>, options?: ResourcesConfig): Promise<SkuOption>;
    _remove_tags(id: string | SkuOption, triggerValue: string, params?: QueryParamsRetrieve<SkuOption>, options?: ResourcesConfig): Promise<SkuOption>;
    isSkuOption(resource: any): resource is SkuOption;
    relationship(id: string | ResourceId | null): SkuOptionRel$2;
    relationshipToMany(...ids: string[]): SkuOptionRel$2[];
    type(): SkuOptionType;
}

type LineItemOptionType = 'line_item_options';
type LineItemOptionRel = ResourceRel & {
    type: LineItemOptionType;
};
type LineItemRel$5 = ResourceRel & {
    type: LineItemType;
};
type SkuOptionRel$1 = ResourceRel & {
    type: SkuOptionType;
};
type TagRel$j = ResourceRel & {
    type: TagType;
};
type LineItemOptionSort = Pick<LineItemOption, 'id' | 'name' | 'quantity' | 'currency_code' | 'unit_amount_cents' | 'delay_hours'> & ResourceSort;
interface LineItemOption extends Resource {
    readonly type: LineItemOptionType;
    /**
     * The name of the line item option. When blank, it gets populated with the name of the associated SKU option.
     * @example ```"Embossing"```
     */
    name?: string | null;
    /**
     * The line item option's quantity.
     * @example ```2```
     */
    quantity: number;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, automatically inherited from the order's market.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The unit amount of the line item option, in cents. When you add a line item option to an order, this is automatically populated from associated SKU option's price. Cannot be passed by sales channels.
     * @example ```990```
     */
    unit_amount_cents?: number | null;
    /**
     * The unit amount of the line item option, float. This can be useful to track the purchase on thrid party systems, e.g Google Analyitcs Enhanced Ecommerce.
     * @example ```9.9```
     */
    unit_amount_float?: number | null;
    /**
     * The unit amount of the line item option, formatted. This can be useful to display the amount with currency in you views.
     * @example ```"€9,90"```
     */
    formatted_unit_amount?: string | null;
    /**
     * The unit amount x quantity, in cents.
     * @example ```1880```
     */
    total_amount_cents?: number | null;
    /**
     * The unit amount x quantity, float. This can be useful to track the purchase on thrid party systems, e.g Google Analyitcs Enhanced Ecommerce.
     * @example ```18.8```
     */
    total_amount_float: number;
    /**
     * The unit amount x quantity, formatted. This can be useful to display the amount with currency in you views.
     * @example ```"€18,80"```
     */
    formatted_total_amount?: string | null;
    /**
     * The shipping delay that the customer can expect when adding this option (hours). Inherited from the associated SKU option.
     * @example ```48```
     */
    delay_hours?: number | null;
    /**
     * The shipping delay that the customer can expect when adding this option (days, rounded).
     * @example ```2```
     */
    delay_days?: number | null;
    /**
     * Set of key-value pairs that represent the selected options.
     * @example ```{"embossing_text":"Happy Birthday!"}```
     */
    options: Record<string, any>;
    line_item?: LineItem | null;
    sku_option?: SkuOption | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
}
interface LineItemOptionCreate extends ResourceCreate {
    /**
     * The name of the line item option. When blank, it gets populated with the name of the associated SKU option.
     * @example ```"Embossing"```
     */
    name?: string | null;
    /**
     * The line item option's quantity.
     * @example ```2```
     */
    quantity: number;
    /**
     * The unit amount of the line item option, in cents. When you add a line item option to an order, this is automatically populated from associated SKU option's price. Cannot be passed by sales channels.
     * @example ```990```
     */
    unit_amount_cents?: number | null;
    /**
     * Set of key-value pairs that represent the selected options.
     * @example ```{"embossing_text":"Happy Birthday!"}```
     */
    options: Record<string, any>;
    line_item: LineItemRel$5;
    sku_option: SkuOptionRel$1;
    tags?: TagRel$j[] | null;
}
interface LineItemOptionUpdate extends ResourceUpdate {
    /**
     * The name of the line item option. When blank, it gets populated with the name of the associated SKU option.
     * @example ```"Embossing"```
     */
    name?: string | null;
    /**
     * The line item option's quantity.
     * @example ```2```
     */
    quantity?: number | null;
    /**
     * The unit amount of the line item option, in cents. When you add a line item option to an order, this is automatically populated from associated SKU option's price. Cannot be passed by sales channels.
     * @example ```990```
     */
    unit_amount_cents?: number | null;
    /**
     * Set of key-value pairs that represent the selected options.
     * @example ```{"embossing_text":"Happy Birthday!"}```
     */
    options?: Record<string, any> | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    sku_option?: SkuOptionRel$1 | null;
    tags?: TagRel$j[] | null;
}
declare class LineItemOptions extends ApiResource<LineItemOption> {
    static readonly TYPE: LineItemOptionType;
    create(resource: LineItemOptionCreate, params?: QueryParamsRetrieve<LineItemOption>, options?: ResourcesConfig): Promise<LineItemOption>;
    update(resource: LineItemOptionUpdate, params?: QueryParamsRetrieve<LineItemOption>, options?: ResourcesConfig): Promise<LineItemOption>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    line_item(lineItemOptionId: string | LineItemOption, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    sku_option(lineItemOptionId: string | LineItemOption, params?: QueryParamsRetrieve<SkuOption>, options?: ResourcesConfig): Promise<SkuOption>;
    events(lineItemOptionId: string | LineItemOption, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(lineItemOptionId: string | LineItemOption, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    _add_tags(id: string | LineItemOption, triggerValue: string, params?: QueryParamsRetrieve<LineItemOption>, options?: ResourcesConfig): Promise<LineItemOption>;
    _remove_tags(id: string | LineItemOption, triggerValue: string, params?: QueryParamsRetrieve<LineItemOption>, options?: ResourcesConfig): Promise<LineItemOption>;
    isLineItemOption(resource: any): resource is LineItemOption;
    relationship(id: string | ResourceId | null): LineItemOptionRel;
    relationshipToMany(...ids: string[]): LineItemOptionRel[];
    type(): LineItemOptionType;
}

type VoidType = 'voids';
type VoidRel = ResourceRel & {
    type: VoidType;
};
type VoidSort = Pick<Void, 'id' | 'number' | 'amount_cents'> & ResourceSort;
interface Void extends Resource {
    readonly type: VoidType;
    /**
     * The transaction number, auto generated.
     * @example ```"42/T/001"```
     */
    number: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, inherited from the associated order.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * The transaction amount, in cents.
     * @example ```1500```
     */
    amount_cents: number;
    /**
     * The transaction amount, float.
     * @example ```15```
     */
    amount_float: number;
    /**
     * The transaction amount, formatted.
     * @example ```"€15,00"```
     */
    formatted_amount: string;
    /**
     * Indicates if the transaction is successful.
     */
    succeeded: boolean;
    /**
     * The message returned by the payment gateway.
     * @example ```"Accepted"```
     */
    message?: string | null;
    /**
     * The error code, if any, returned by the payment gateway.
     * @example ```"00001"```
     */
    error_code?: string | null;
    /**
     * The error detail, if any, returned by the payment gateway.
     * @example ```"Already settled"```
     */
    error_detail?: string | null;
    /**
     * The token identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    token?: string | null;
    /**
     * The ID identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    gateway_transaction_id?: string | null;
    order?: Order | null;
    payment_source?: AdyenPayment | AxervePayment | BraintreePayment | CheckoutComPayment | ExternalPayment | KlarnaPayment | PaypalPayment | SatispayPayment | StripePayment | WireTransfer | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
    reference_authorization?: Authorization | null;
}
interface VoidUpdate extends ResourceUpdate {
    /**
     * Indicates if the transaction is successful.
     */
    succeeded?: boolean | null;
    /**
     * Send this attribute if you want to forward a stuck transaction to succeeded and update associated order states accordingly.
     * @example ```true```
     */
    _forward?: boolean | null;
}
declare class Voids extends ApiResource<Void> {
    static readonly TYPE: VoidType;
    update(resource: VoidUpdate, params?: QueryParamsRetrieve<Void>, options?: ResourcesConfig): Promise<Void>;
    order(voidId: string | Void, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    attachments(voidId: string | Void, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(voidId: string | Void, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(voidId: string | Void, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    reference_authorization(voidId: string | Void, params?: QueryParamsRetrieve<Authorization>, options?: ResourcesConfig): Promise<Authorization>;
    _forward(id: string | Void, params?: QueryParamsRetrieve<Void>, options?: ResourcesConfig): Promise<Void>;
    isVoid(resource: any): resource is Void;
    relationship(id: string | ResourceId | null): VoidRel;
    relationshipToMany(...ids: string[]): VoidRel[];
    type(): VoidType;
}

type AuthorizationType = 'authorizations';
type AuthorizationRel = ResourceRel & {
    type: AuthorizationType;
};
type AuthorizationSort = Pick<Authorization, 'id' | 'number' | 'amount_cents'> & ResourceSort;
interface Authorization extends Resource {
    readonly type: AuthorizationType;
    /**
     * The transaction number, auto generated.
     * @example ```"42/T/001"```
     */
    number: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, inherited from the associated order.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * The transaction amount, in cents.
     * @example ```1500```
     */
    amount_cents: number;
    /**
     * The transaction amount, float.
     * @example ```15```
     */
    amount_float: number;
    /**
     * The transaction amount, formatted.
     * @example ```"€15,00"```
     */
    formatted_amount: string;
    /**
     * Indicates if the transaction is successful.
     */
    succeeded: boolean;
    /**
     * The message returned by the payment gateway.
     * @example ```"Accepted"```
     */
    message?: string | null;
    /**
     * The error code, if any, returned by the payment gateway.
     * @example ```"00001"```
     */
    error_code?: string | null;
    /**
     * The error detail, if any, returned by the payment gateway.
     * @example ```"Already settled"```
     */
    error_detail?: string | null;
    /**
     * The token identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    token?: string | null;
    /**
     * The ID identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    gateway_transaction_id?: string | null;
    /**
     * The CVV code returned by the payment gateway.
     * @example ```"000"```
     */
    cvv_code?: string | null;
    /**
     * The CVV message returned by the payment gateway.
     * @example ```"validated"```
     */
    cvv_message?: string | null;
    /**
     * The AVS code returned by the payment gateway.
     * @example ```"000"```
     */
    avs_code?: string | null;
    /**
     * The AVS message returned by the payment gateway.
     * @example ```"validated"```
     */
    avs_message?: string | null;
    /**
     * The fraud review message, if any, returned by the payment gateway.
     * @example ```"passed"```
     */
    fraud_review?: string | null;
    /**
     * The amount to be captured, in cents.
     * @example ```500```
     */
    capture_amount_cents?: number | null;
    /**
     * The amount to be captured, float.
     * @example ```5```
     */
    capture_amount_float?: number | null;
    /**
     * The amount to be captured, formatted.
     * @example ```"€5,00"```
     */
    formatted_capture_amount?: string | null;
    /**
     * The balance to be captured, in cents.
     * @example ```1000```
     */
    capture_balance_cents?: number | null;
    /**
     * The balance to be captured, float.
     * @example ```10```
     */
    capture_balance_float?: number | null;
    /**
     * The balance to be captured, formatted.
     * @example ```"€10,00"```
     */
    formatted_capture_balance?: string | null;
    /**
     * The balance to be voided, in cents.
     * @example ```1500```
     */
    void_balance_cents?: number | null;
    /**
     * The balance to be voided, float.
     * @example ```15```
     */
    void_balance_float?: number | null;
    /**
     * The balance to be voided, formatted.
     * @example ```"€15,00"```
     */
    formatted_void_balance?: string | null;
    order?: Order | null;
    payment_source?: AdyenPayment | AxervePayment | BraintreePayment | CheckoutComPayment | ExternalPayment | KlarnaPayment | PaypalPayment | SatispayPayment | StripePayment | WireTransfer | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
    captures?: Capture[] | null;
    voids?: Void[] | null;
}
interface AuthorizationUpdate extends ResourceUpdate {
    /**
     * Indicates if the transaction is successful.
     */
    succeeded?: boolean | null;
    /**
     * Send this attribute if you want to forward a stuck transaction to succeeded and update associated order states accordingly.
     * @example ```true```
     */
    _forward?: boolean | null;
    /**
     * Send this attribute if you want to create a capture for this authorization.
     * @example ```true```
     */
    _capture?: boolean | null;
    /**
     * Send this attribute as a value in cents if you want to overwrite the amount to be captured.
     * @example ```500```
     */
    _capture_amount_cents?: number | null;
    /**
     * Send this attribute if you want to create a void for this authorization.
     * @example ```true```
     */
    _void?: boolean | null;
    /**
     * Send this attribute if you want to void a succeeded authorization of a pending order (which is left unpaid).
     * @example ```true```
     */
    _cancel?: boolean | null;
}
declare class Authorizations extends ApiResource<Authorization> {
    static readonly TYPE: AuthorizationType;
    update(resource: AuthorizationUpdate, params?: QueryParamsRetrieve<Authorization>, options?: ResourcesConfig): Promise<Authorization>;
    order(authorizationId: string | Authorization, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    attachments(authorizationId: string | Authorization, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(authorizationId: string | Authorization, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(authorizationId: string | Authorization, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    captures(authorizationId: string | Authorization, params?: QueryParamsList<Capture>, options?: ResourcesConfig): Promise<ListResponse<Capture>>;
    voids(authorizationId: string | Authorization, params?: QueryParamsList<Void>, options?: ResourcesConfig): Promise<ListResponse<Void>>;
    _forward(id: string | Authorization, params?: QueryParamsRetrieve<Authorization>, options?: ResourcesConfig): Promise<Authorization>;
    _capture(id: string | Authorization, params?: QueryParamsRetrieve<Authorization>, options?: ResourcesConfig): Promise<Authorization>;
    _capture_amount_cents(id: string | Authorization, triggerValue: number, params?: QueryParamsRetrieve<Authorization>, options?: ResourcesConfig): Promise<Authorization>;
    _void(id: string | Authorization, params?: QueryParamsRetrieve<Authorization>, options?: ResourcesConfig): Promise<Authorization>;
    _cancel(id: string | Authorization, params?: QueryParamsRetrieve<Authorization>, options?: ResourcesConfig): Promise<Authorization>;
    isAuthorization(resource: any): resource is Authorization;
    relationship(id: string | ResourceId | null): AuthorizationRel;
    relationshipToMany(...ids: string[]): AuthorizationRel[];
    type(): AuthorizationType;
}

type RefundType = 'refunds';
type RefundRel = ResourceRel & {
    type: RefundType;
};
type RefundSort = Pick<Refund, 'id' | 'number' | 'amount_cents'> & ResourceSort;
interface Refund extends Resource {
    readonly type: RefundType;
    /**
     * The transaction number, auto generated.
     * @example ```"42/T/001"```
     */
    number: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, inherited from the associated order.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * The transaction amount, in cents.
     * @example ```1500```
     */
    amount_cents: number;
    /**
     * The transaction amount, float.
     * @example ```15```
     */
    amount_float: number;
    /**
     * The transaction amount, formatted.
     * @example ```"€15,00"```
     */
    formatted_amount: string;
    /**
     * Indicates if the transaction is successful.
     */
    succeeded: boolean;
    /**
     * The message returned by the payment gateway.
     * @example ```"Accepted"```
     */
    message?: string | null;
    /**
     * The error code, if any, returned by the payment gateway.
     * @example ```"00001"```
     */
    error_code?: string | null;
    /**
     * The error detail, if any, returned by the payment gateway.
     * @example ```"Already settled"```
     */
    error_detail?: string | null;
    /**
     * The token identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    token?: string | null;
    /**
     * The ID identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    gateway_transaction_id?: string | null;
    order?: Order | null;
    payment_source?: AdyenPayment | AxervePayment | BraintreePayment | CheckoutComPayment | ExternalPayment | KlarnaPayment | PaypalPayment | SatispayPayment | StripePayment | WireTransfer | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
    reference_capture?: Capture | null;
    return?: Return | null;
}
interface RefundUpdate extends ResourceUpdate {
    /**
     * Indicates if the transaction is successful.
     */
    succeeded?: boolean | null;
    /**
     * Send this attribute if you want to forward a stuck transaction to succeeded and update associated order states accordingly.
     * @example ```true```
     */
    _forward?: boolean | null;
}
declare class Refunds extends ApiResource<Refund> {
    static readonly TYPE: RefundType;
    update(resource: RefundUpdate, params?: QueryParamsRetrieve<Refund>, options?: ResourcesConfig): Promise<Refund>;
    order(refundId: string | Refund, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    attachments(refundId: string | Refund, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(refundId: string | Refund, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(refundId: string | Refund, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    reference_capture(refundId: string | Refund, params?: QueryParamsRetrieve<Capture>, options?: ResourcesConfig): Promise<Capture>;
    return(refundId: string | Refund, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _forward(id: string | Refund, params?: QueryParamsRetrieve<Refund>, options?: ResourcesConfig): Promise<Refund>;
    isRefund(resource: any): resource is Refund;
    relationship(id: string | ResourceId | null): RefundRel;
    relationshipToMany(...ids: string[]): RefundRel[];
    type(): RefundType;
}

type CaptureType = 'captures';
type CaptureRel$1 = ResourceRel & {
    type: CaptureType;
};
type CaptureSort = Pick<Capture, 'id' | 'number' | 'amount_cents'> & ResourceSort;
interface Capture extends Resource {
    readonly type: CaptureType;
    /**
     * The transaction number, auto generated.
     * @example ```"42/T/001"```
     */
    number: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, inherited from the associated order.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * The transaction amount, in cents.
     * @example ```1500```
     */
    amount_cents: number;
    /**
     * The transaction amount, float.
     * @example ```15```
     */
    amount_float: number;
    /**
     * The transaction amount, formatted.
     * @example ```"€15,00"```
     */
    formatted_amount: string;
    /**
     * Indicates if the transaction is successful.
     */
    succeeded: boolean;
    /**
     * The message returned by the payment gateway.
     * @example ```"Accepted"```
     */
    message?: string | null;
    /**
     * The error code, if any, returned by the payment gateway.
     * @example ```"00001"```
     */
    error_code?: string | null;
    /**
     * The error detail, if any, returned by the payment gateway.
     * @example ```"Already settled"```
     */
    error_detail?: string | null;
    /**
     * The token identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    token?: string | null;
    /**
     * The ID identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    gateway_transaction_id?: string | null;
    /**
     * The amount to be refunded, in cents.
     * @example ```500```
     */
    refund_amount_cents?: number | null;
    /**
     * The amount to be refunded, float.
     * @example ```5```
     */
    refund_amount_float?: number | null;
    /**
     * The amount to be refunded, formatted.
     * @example ```"€5,00"```
     */
    formatted_refund_amount?: string | null;
    /**
     * The balance to be refunded, in cents.
     * @example ```1000```
     */
    refund_balance_cents?: number | null;
    /**
     * The balance to be refunded, float.
     * @example ```10```
     */
    refund_balance_float?: number | null;
    /**
     * The balance to be refunded, formatted.
     * @example ```"€10,00"```
     */
    formatted_refund_balance?: string | null;
    order?: Order | null;
    payment_source?: AdyenPayment | AxervePayment | BraintreePayment | CheckoutComPayment | ExternalPayment | KlarnaPayment | PaypalPayment | SatispayPayment | StripePayment | WireTransfer | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
    reference_authorization?: Authorization | null;
    refunds?: Refund[] | null;
    return?: Return | null;
}
interface CaptureUpdate extends ResourceUpdate {
    /**
     * Indicates if the transaction is successful.
     */
    succeeded?: boolean | null;
    /**
     * Send this attribute if you want to forward a stuck transaction to succeeded and update associated order states accordingly.
     * @example ```true```
     */
    _forward?: boolean | null;
    /**
     * Send this attribute if you want to create a refund for this capture.
     * @example ```true```
     */
    _refund?: boolean | null;
    /**
     * Send this attribute as a value in cents if you want to overwrite the amount to be refunded.
     * @example ```500```
     */
    _refund_amount_cents?: number | null;
    /**
     * Send this attribute if you want to refund a succeeded capture of a pending order (which is left unpaid).
     * @example ```true```
     */
    _cancel?: boolean | null;
}
declare class Captures extends ApiResource<Capture> {
    static readonly TYPE: CaptureType;
    update(resource: CaptureUpdate, params?: QueryParamsRetrieve<Capture>, options?: ResourcesConfig): Promise<Capture>;
    order(captureId: string | Capture, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    attachments(captureId: string | Capture, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(captureId: string | Capture, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(captureId: string | Capture, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    reference_authorization(captureId: string | Capture, params?: QueryParamsRetrieve<Authorization>, options?: ResourcesConfig): Promise<Authorization>;
    refunds(captureId: string | Capture, params?: QueryParamsList<Refund>, options?: ResourcesConfig): Promise<ListResponse<Refund>>;
    return(captureId: string | Capture, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _forward(id: string | Capture, params?: QueryParamsRetrieve<Capture>, options?: ResourcesConfig): Promise<Capture>;
    _refund(id: string | Capture, params?: QueryParamsRetrieve<Capture>, options?: ResourcesConfig): Promise<Capture>;
    _refund_amount_cents(id: string | Capture, triggerValue: number, params?: QueryParamsRetrieve<Capture>, options?: ResourcesConfig): Promise<Capture>;
    _cancel(id: string | Capture, params?: QueryParamsRetrieve<Capture>, options?: ResourcesConfig): Promise<Capture>;
    isCapture(resource: any): resource is Capture;
    relationship(id: string | ResourceId | null): CaptureRel$1;
    relationshipToMany(...ids: string[]): CaptureRel$1[];
    type(): CaptureType;
}

type ResourceErrorType = 'resource_errors';
type ResourceErrorRel = ResourceRel & {
    type: ResourceErrorType;
};
type ResourceErrorSort = Pick<ResourceError, 'id' | 'name' | 'code'> & ResourceSort;
interface ResourceError extends Resource {
    readonly type: ResourceErrorType;
    /**
     * The resource attribute name related to the error.
     * @example ```"number"```
     */
    name: string;
    /**
     * The error code.
     * @example ```"BLANK"```
     */
    code: string;
    /**
     * The error message.
     * @example ```"can't be blank"```
     */
    message: string;
    resource?: Order | Return | null;
}
declare class ResourceErrors extends ApiResource<ResourceError> {
    static readonly TYPE: ResourceErrorType;
    isResourceError(resource: any): resource is ResourceError;
    relationship(id: string | ResourceId | null): ResourceErrorRel;
    relationshipToMany(...ids: string[]): ResourceErrorRel[];
    type(): ResourceErrorType;
}

type ReturnType = 'returns';
type ReturnRel$2 = ResourceRel & {
    type: ReturnType;
};
type OrderRel$a = ResourceRel & {
    type: OrderType;
};
type StockLocationRel$7 = ResourceRel & {
    type: StockLocationType;
};
type CaptureRel = ResourceRel & {
    type: CaptureType;
};
type TagRel$i = ResourceRel & {
    type: TagType;
};
type ReturnSort = Pick<Return, 'id' | 'number' | 'status' | 'approved_at' | 'cancelled_at' | 'shipped_at' | 'rejected_at' | 'received_at' | 'refunded_at' | 'archived_at'> & ResourceSort;
interface Return extends Resource {
    readonly type: ReturnType;
    /**
     * Unique identifier for the return.
     * @example ```"#1234/R/001"```
     */
    number?: string | null;
    /**
     * The return status. One of 'draft' (default), 'requested', 'approved', 'cancelled', 'shipped', 'rejected', 'received', or 'refunded'.
     * @example ```"draft"```
     */
    status: 'draft' | 'requested' | 'approved' | 'cancelled' | 'shipped' | 'rejected' | 'received' | 'refunded';
    /**
     * The email address of the associated customer.
     * @example ```"john@example.com"```
     */
    customer_email?: string | null;
    /**
     * The total number of SKUs in the return's line items. This can be useful to display a preview of the return content.
     * @example ```2```
     */
    skus_count?: number | null;
    /**
     * Time at which the return was approved.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    approved_at?: string | null;
    /**
     * Time at which the return was cancelled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    cancelled_at?: string | null;
    /**
     * Time at which the return was shipped.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    shipped_at?: string | null;
    /**
     * Time at which the return was rejected.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    rejected_at?: string | null;
    /**
     * Time at which the return was received.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    received_at?: string | null;
    /**
     * Time at which the return was refunded.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    refunded_at?: string | null;
    /**
     * Time at which the resource has been archived.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    archived_at?: string | null;
    /**
     * The amount to be refunded, estimated by associated return line items, in cents.
     * @example ```500```
     */
    estimated_refund_amount_cents?: number | null;
    /**
     * The amount to be refunded, estimated by associated return line items, float.
     * @example ```5```
     */
    estimated_refund_amount_float?: number | null;
    /**
     * The amount to be refunded, estimated by associated return line items, formatted.
     * @example ```"€5,00"```
     */
    formatted_estimated_refund_amount?: string | null;
    order?: Order | null;
    customer?: Customer | null;
    stock_location?: StockLocation | null;
    origin_address?: Address | null;
    destination_address?: Address | null;
    reference_capture?: Capture | null;
    reference_refund?: Refund | null;
    return_line_items?: ReturnLineItem[] | null;
    attachments?: Attachment[] | null;
    resource_errors?: ResourceError[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface ReturnCreate extends ResourceCreate {
    order: OrderRel$a;
    stock_location?: StockLocationRel$7 | null;
    reference_capture?: CaptureRel | null;
    tags?: TagRel$i[] | null;
}
interface ReturnUpdate extends ResourceUpdate {
    /**
     * Send this attribute if you want to activate this return.
     * @example ```true```
     */
    _request?: boolean | null;
    /**
     * Send this attribute if you want to mark this return as approved.
     * @example ```true```
     */
    _approve?: boolean | null;
    /**
     * Send this attribute if you want to mark this return as cancelled.
     * @example ```true```
     */
    _cancel?: boolean | null;
    /**
     * Send this attribute if you want to mark this return as shipped.
     * @example ```true```
     */
    _ship?: boolean | null;
    /**
     * Send this attribute if you want to mark this return as rejected.
     * @example ```true```
     */
    _reject?: boolean | null;
    /**
     * Send this attribute if you want to mark this return as received.
     * @example ```true```
     */
    _receive?: boolean | null;
    /**
     * Send this attribute if you want to restock all of the return line items.
     * @example ```true```
     */
    _restock?: boolean | null;
    /**
     * Send this attribute if you want to archive the return.
     * @example ```true```
     */
    _archive?: boolean | null;
    /**
     * Send this attribute if you want to unarchive the return.
     * @example ```true```
     */
    _unarchive?: boolean | null;
    /**
     * Send this attribute if you want to create a refund for this return.
     * @example ```true```
     */
    _refund?: boolean | null;
    /**
     * Send this attribute as a value in cents to specify the amount to be refunded.
     * @example ```500```
     */
    _refund_amount_cents?: number | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    stock_location?: StockLocationRel$7 | null;
    reference_capture?: CaptureRel | null;
    tags?: TagRel$i[] | null;
}
declare class Returns extends ApiResource<Return> {
    static readonly TYPE: ReturnType;
    create(resource: ReturnCreate, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    update(resource: ReturnUpdate, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(returnId: string | Return, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    customer(returnId: string | Return, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    stock_location(returnId: string | Return, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    origin_address(returnId: string | Return, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    destination_address(returnId: string | Return, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    reference_capture(returnId: string | Return, params?: QueryParamsRetrieve<Capture>, options?: ResourcesConfig): Promise<Capture>;
    reference_refund(returnId: string | Return, params?: QueryParamsRetrieve<Refund>, options?: ResourcesConfig): Promise<Refund>;
    return_line_items(returnId: string | Return, params?: QueryParamsList<ReturnLineItem>, options?: ResourcesConfig): Promise<ListResponse<ReturnLineItem>>;
    attachments(returnId: string | Return, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    resource_errors(returnId: string | Return, params?: QueryParamsList<ResourceError>, options?: ResourcesConfig): Promise<ListResponse<ResourceError>>;
    events(returnId: string | Return, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(returnId: string | Return, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(returnId: string | Return, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _request(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _approve(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _cancel(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _ship(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _reject(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _receive(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _restock(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _archive(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _unarchive(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _refund(id: string | Return, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _refund_amount_cents(id: string | Return, triggerValue: number, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _add_tags(id: string | Return, triggerValue: string, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    _remove_tags(id: string | Return, triggerValue: string, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    isReturn(resource: any): resource is Return;
    relationship(id: string | ResourceId | null): ReturnRel$2;
    relationshipToMany(...ids: string[]): ReturnRel$2[];
    type(): ReturnType;
}

type ReturnLineItemType = 'return_line_items';
type ReturnLineItemRel = ResourceRel & {
    type: ReturnLineItemType;
};
type ReturnRel$1 = ResourceRel & {
    type: ReturnType;
};
type LineItemRel$4 = ResourceRel & {
    type: LineItemType;
};
type ReturnLineItemSort = Pick<ReturnLineItem, 'id' | 'quantity' | 'total_amount_cents' | 'restocked_at'> & ResourceSort;
interface ReturnLineItem extends Resource {
    readonly type: ReturnLineItemType;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The return line item quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * The name of the line item.
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name?: string | null;
    /**
     * The image_url of the associated line item.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * Calculated as line item unit amount x returned quantity and applied discounts, if any.
     * @example ```8800```
     */
    total_amount_cents?: number | null;
    /**
     * The return line item total amount, float. This can be useful to track the purchase on thrid party systems, e.g Google Analyitcs Enhanced Ecommerce.
     * @example ```88```
     */
    total_amount_float: number;
    /**
     * The return line item total amount, formatted. This can be useful to display the amount with currency in you views.
     * @example ```"€88,00"```
     */
    formatted_total_amount?: string | null;
    /**
     * Set of key-value pairs that you can use to add details about return reason.
     * @example ```{"size":"was wrong"}```
     */
    return_reason?: Record<string, any> | null;
    /**
     * Time at which the return line item was restocked.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    restocked_at?: string | null;
    return?: Return | null;
    line_item?: LineItem | null;
}
interface ReturnLineItemCreate extends ResourceCreate {
    /**
     * The return line item quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * Set of key-value pairs that you can use to add details about return reason.
     * @example ```{"size":"was wrong"}```
     */
    return_reason?: Record<string, any> | null;
    return: ReturnRel$1;
    line_item: LineItemRel$4;
}
interface ReturnLineItemUpdate extends ResourceUpdate {
    /**
     * The return line item quantity.
     * @example ```4```
     */
    quantity?: number | null;
    /**
     * Send this attribute if you want to restock the line item.
     * @example ```true```
     */
    _restock?: boolean | null;
    /**
     * Set of key-value pairs that you can use to add details about return reason.
     * @example ```{"size":"was wrong"}```
     */
    return_reason?: Record<string, any> | null;
}
declare class ReturnLineItems extends ApiResource<ReturnLineItem> {
    static readonly TYPE: ReturnLineItemType;
    create(resource: ReturnLineItemCreate, params?: QueryParamsRetrieve<ReturnLineItem>, options?: ResourcesConfig): Promise<ReturnLineItem>;
    update(resource: ReturnLineItemUpdate, params?: QueryParamsRetrieve<ReturnLineItem>, options?: ResourcesConfig): Promise<ReturnLineItem>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    return(returnLineItemId: string | ReturnLineItem, params?: QueryParamsRetrieve<Return>, options?: ResourcesConfig): Promise<Return>;
    line_item(returnLineItemId: string | ReturnLineItem, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    _restock(id: string | ReturnLineItem, params?: QueryParamsRetrieve<ReturnLineItem>, options?: ResourcesConfig): Promise<ReturnLineItem>;
    isReturnLineItem(resource: any): resource is ReturnLineItem;
    relationship(id: string | ResourceId | null): ReturnLineItemRel;
    relationshipToMany(...ids: string[]): ReturnLineItemRel[];
    type(): ReturnLineItemType;
}

type StockLineItemType = 'stock_line_items';
type StockLineItemRel$1 = ResourceRel & {
    type: StockLineItemType;
};
type ShipmentRel$6 = ResourceRel & {
    type: ShipmentType;
};
type LineItemRel$3 = ResourceRel & {
    type: LineItemType;
};
type StockItemRel$3 = ResourceRel & {
    type: StockItemType;
};
type SkuRel$b = ResourceRel & {
    type: SkuType;
};
type StockLineItemSort = Pick<StockLineItem, 'id' | 'quantity'> & ResourceSort;
interface StockLineItem extends Resource {
    readonly type: StockLineItemType;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The line item quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * The internal name of the associated line item.
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name?: string | null;
    /**
     * The image_url of the associated line item.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    shipment?: Shipment | null;
    line_item?: LineItem | null;
    stock_item?: StockItem | null;
    sku?: Sku | null;
    stock_reservation?: StockReservation | null;
    versions?: Version[] | null;
}
interface StockLineItemCreate extends ResourceCreate {
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The line item quantity.
     * @example ```4```
     */
    quantity: number;
    shipment?: ShipmentRel$6 | null;
    line_item?: LineItemRel$3 | null;
    stock_item?: StockItemRel$3 | null;
    sku?: SkuRel$b | null;
}
interface StockLineItemUpdate extends ResourceUpdate {
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The line item quantity.
     * @example ```4```
     */
    quantity?: number | null;
    /**
     * Send this attribute if you want to automatically reserve the stock for this stock line item. Can be done only when fulfillment is in progress. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reserve_stock?: boolean | null;
    /**
     * Send this attribute if you want to automatically destroy the stock reservation for this stock line item. Can be done only when fulfillment is in progress. Cannot be passed by sales channels.
     * @example ```true```
     */
    _release_stock?: boolean | null;
    /**
     * Send this attribute if you want to automatically decrement and release the stock this stock line item. Can be done only when fulfillment is in progress. Cannot be passed by sales channels.
     * @example ```true```
     */
    _decrement_stock?: boolean | null;
    shipment?: ShipmentRel$6 | null;
    line_item?: LineItemRel$3 | null;
    stock_item?: StockItemRel$3 | null;
    sku?: SkuRel$b | null;
}
declare class StockLineItems extends ApiResource<StockLineItem> {
    static readonly TYPE: StockLineItemType;
    create(resource: StockLineItemCreate, params?: QueryParamsRetrieve<StockLineItem>, options?: ResourcesConfig): Promise<StockLineItem>;
    update(resource: StockLineItemUpdate, params?: QueryParamsRetrieve<StockLineItem>, options?: ResourcesConfig): Promise<StockLineItem>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    shipment(stockLineItemId: string | StockLineItem, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    line_item(stockLineItemId: string | StockLineItem, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    stock_item(stockLineItemId: string | StockLineItem, params?: QueryParamsRetrieve<StockItem>, options?: ResourcesConfig): Promise<StockItem>;
    sku(stockLineItemId: string | StockLineItem, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    stock_reservation(stockLineItemId: string | StockLineItem, params?: QueryParamsRetrieve<StockReservation>, options?: ResourcesConfig): Promise<StockReservation>;
    versions(stockLineItemId: string | StockLineItem, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _reserve_stock(id: string | StockLineItem, params?: QueryParamsRetrieve<StockLineItem>, options?: ResourcesConfig): Promise<StockLineItem>;
    _release_stock(id: string | StockLineItem, params?: QueryParamsRetrieve<StockLineItem>, options?: ResourcesConfig): Promise<StockLineItem>;
    _decrement_stock(id: string | StockLineItem, params?: QueryParamsRetrieve<StockLineItem>, options?: ResourcesConfig): Promise<StockLineItem>;
    isStockLineItem(resource: any): resource is StockLineItem;
    relationship(id: string | ResourceId | null): StockLineItemRel$1;
    relationshipToMany(...ids: string[]): StockLineItemRel$1[];
    type(): StockLineItemType;
}

type ReservedStockType = 'reserved_stocks';
type ReservedStockRel = ResourceRel & {
    type: ReservedStockType;
};
type ReservedStockSort = Pick<ReservedStock, 'id' | 'quantity'> & ResourceSort;
interface ReservedStock extends Resource {
    readonly type: ReservedStockType;
    /**
     * The stock item reserved quantity.
     * @example ```100```
     */
    quantity: number;
    stock_item?: StockItem | null;
    sku?: Sku | null;
    stock_reservations?: StockReservation[] | null;
    versions?: Version[] | null;
}
declare class ReservedStocks extends ApiResource<ReservedStock> {
    static readonly TYPE: ReservedStockType;
    stock_item(reservedStockId: string | ReservedStock, params?: QueryParamsRetrieve<StockItem>, options?: ResourcesConfig): Promise<StockItem>;
    sku(reservedStockId: string | ReservedStock, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    stock_reservations(reservedStockId: string | ReservedStock, params?: QueryParamsList<StockReservation>, options?: ResourcesConfig): Promise<ListResponse<StockReservation>>;
    versions(reservedStockId: string | ReservedStock, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isReservedStock(resource: any): resource is ReservedStock;
    relationship(id: string | ResourceId | null): ReservedStockRel;
    relationshipToMany(...ids: string[]): ReservedStockRel[];
    type(): ReservedStockType;
}

type StockReservationType = 'stock_reservations';
type StockReservationRel = ResourceRel & {
    type: StockReservationType;
};
type StockItemRel$2 = ResourceRel & {
    type: StockItemType;
};
type StockReservationSort = Pick<StockReservation, 'id' | 'status' | 'quantity' | 'expires_at'> & ResourceSort;
interface StockReservation extends Resource {
    readonly type: StockReservationType;
    /**
     * The stock reservation status. One of 'draft' (default), or 'pending'.
     * @example ```"draft"```
     */
    status: 'draft' | 'pending';
    /**
     * The stock reservation quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * The expiration date/time of this stock reservation.
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    line_item?: LineItem | null;
    order?: Order | null;
    stock_line_item?: StockLineItem | null;
    stock_transfer?: StockTransfer | null;
    stock_item?: StockItem | null;
    reserved_stock?: ReservedStock | null;
    sku?: Sku | null;
}
interface StockReservationCreate extends ResourceCreate {
    /**
     * The stock reservation quantity.
     * @example ```4```
     */
    quantity: number;
    stock_item: StockItemRel$2;
}
interface StockReservationUpdate extends ResourceUpdate {
    /**
     * The stock reservation quantity.
     * @example ```4```
     */
    quantity?: number | null;
    /**
     * Send this attribute if you want to mark this stock reservation as pending.
     * @example ```true```
     */
    _pending?: boolean | null;
}
declare class StockReservations extends ApiResource<StockReservation> {
    static readonly TYPE: StockReservationType;
    create(resource: StockReservationCreate, params?: QueryParamsRetrieve<StockReservation>, options?: ResourcesConfig): Promise<StockReservation>;
    update(resource: StockReservationUpdate, params?: QueryParamsRetrieve<StockReservation>, options?: ResourcesConfig): Promise<StockReservation>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    line_item(stockReservationId: string | StockReservation, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    order(stockReservationId: string | StockReservation, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    stock_line_item(stockReservationId: string | StockReservation, params?: QueryParamsRetrieve<StockLineItem>, options?: ResourcesConfig): Promise<StockLineItem>;
    stock_transfer(stockReservationId: string | StockReservation, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    stock_item(stockReservationId: string | StockReservation, params?: QueryParamsRetrieve<StockItem>, options?: ResourcesConfig): Promise<StockItem>;
    reserved_stock(stockReservationId: string | StockReservation, params?: QueryParamsRetrieve<ReservedStock>, options?: ResourcesConfig): Promise<ReservedStock>;
    sku(stockReservationId: string | StockReservation, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    _pending(id: string | StockReservation, params?: QueryParamsRetrieve<StockReservation>, options?: ResourcesConfig): Promise<StockReservation>;
    isStockReservation(resource: any): resource is StockReservation;
    relationship(id: string | ResourceId | null): StockReservationRel;
    relationshipToMany(...ids: string[]): StockReservationRel[];
    type(): StockReservationType;
}

type ShippingZoneType = 'shipping_zones';
type ShippingZoneRel$2 = ResourceRel & {
    type: ShippingZoneType;
};
type ShippingZoneSort = Pick<ShippingZone, 'id' | 'name'> & ResourceSort;
interface ShippingZone extends Resource {
    readonly type: ShippingZoneType;
    /**
     * The shipping zone's internal name.
     * @example ```"Europe (main countries)"```
     */
    name: string;
    /**
     * The regex that will be evaluated to match the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE|HU|LV|LT"```
     */
    country_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE"```
     */
    not_country_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]|D[CE]|FL"```
     */
    state_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]"```
     */
    not_state_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address zip code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3|JE4|JE5)"```
     */
    zip_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping zip country code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3)"```
     */
    not_zip_code_regex?: string | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface ShippingZoneCreate extends ResourceCreate {
    /**
     * The shipping zone's internal name.
     * @example ```"Europe (main countries)"```
     */
    name: string;
    /**
     * The regex that will be evaluated to match the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE|HU|LV|LT"```
     */
    country_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE"```
     */
    not_country_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]|D[CE]|FL"```
     */
    state_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]"```
     */
    not_state_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address zip code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3|JE4|JE5)"```
     */
    zip_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping zip country code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3)"```
     */
    not_zip_code_regex?: string | null;
}
interface ShippingZoneUpdate extends ResourceUpdate {
    /**
     * The shipping zone's internal name.
     * @example ```"Europe (main countries)"```
     */
    name?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE|HU|LV|LT"```
     */
    country_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE"```
     */
    not_country_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]|D[CE]|FL"```
     */
    state_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]"```
     */
    not_state_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address zip code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3|JE4|JE5)"```
     */
    zip_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping zip country code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3)"```
     */
    not_zip_code_regex?: string | null;
}
declare class ShippingZones extends ApiResource<ShippingZone> {
    static readonly TYPE: ShippingZoneType;
    create(resource: ShippingZoneCreate, params?: QueryParamsRetrieve<ShippingZone>, options?: ResourcesConfig): Promise<ShippingZone>;
    update(resource: ShippingZoneUpdate, params?: QueryParamsRetrieve<ShippingZone>, options?: ResourcesConfig): Promise<ShippingZone>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    attachments(shippingZoneId: string | ShippingZone, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(shippingZoneId: string | ShippingZone, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isShippingZone(resource: any): resource is ShippingZone;
    relationship(id: string | ResourceId | null): ShippingZoneRel$2;
    relationshipToMany(...ids: string[]): ShippingZoneRel$2[];
    type(): ShippingZoneType;
}

type DeliveryLeadTimeType = 'delivery_lead_times';
type DeliveryLeadTimeRel$1 = ResourceRel & {
    type: DeliveryLeadTimeType;
};
type StockLocationRel$6 = ResourceRel & {
    type: StockLocationType;
};
type ShippingMethodRel$6 = ResourceRel & {
    type: ShippingMethodType;
};
type DeliveryLeadTimeSort = Pick<DeliveryLeadTime, 'id' | 'min_hours' | 'max_hours' | 'min_days'> & ResourceSort;
interface DeliveryLeadTime extends Resource {
    readonly type: DeliveryLeadTimeType;
    /**
     * The delivery lead minimum time (in hours) when shipping from the associated stock location with the associated shipping method.
     * @example ```48```
     */
    min_hours: number;
    /**
     * The delivery lead maximun time (in hours) when shipping from the associated stock location with the associated shipping method.
     * @example ```72```
     */
    max_hours: number;
    /**
     * The delivery lead minimum time, in days (rounded).
     * @example ```2```
     */
    min_days?: number | null;
    /**
     * The delivery lead maximun time, in days (rounded).
     * @example ```3```
     */
    max_days?: number | null;
    stock_location?: StockLocation | null;
    shipping_method?: ShippingMethod | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface DeliveryLeadTimeCreate extends ResourceCreate {
    /**
     * The delivery lead minimum time (in hours) when shipping from the associated stock location with the associated shipping method.
     * @example ```48```
     */
    min_hours: number;
    /**
     * The delivery lead maximun time (in hours) when shipping from the associated stock location with the associated shipping method.
     * @example ```72```
     */
    max_hours: number;
    stock_location: StockLocationRel$6;
    shipping_method: ShippingMethodRel$6;
}
interface DeliveryLeadTimeUpdate extends ResourceUpdate {
    /**
     * The delivery lead minimum time (in hours) when shipping from the associated stock location with the associated shipping method.
     * @example ```48```
     */
    min_hours?: number | null;
    /**
     * The delivery lead maximun time (in hours) when shipping from the associated stock location with the associated shipping method.
     * @example ```72```
     */
    max_hours?: number | null;
    stock_location?: StockLocationRel$6 | null;
    shipping_method?: ShippingMethodRel$6 | null;
}
declare class DeliveryLeadTimes extends ApiResource<DeliveryLeadTime> {
    static readonly TYPE: DeliveryLeadTimeType;
    create(resource: DeliveryLeadTimeCreate, params?: QueryParamsRetrieve<DeliveryLeadTime>, options?: ResourcesConfig): Promise<DeliveryLeadTime>;
    update(resource: DeliveryLeadTimeUpdate, params?: QueryParamsRetrieve<DeliveryLeadTime>, options?: ResourcesConfig): Promise<DeliveryLeadTime>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    stock_location(deliveryLeadTimeId: string | DeliveryLeadTime, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    shipping_method(deliveryLeadTimeId: string | DeliveryLeadTime, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    attachments(deliveryLeadTimeId: string | DeliveryLeadTime, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(deliveryLeadTimeId: string | DeliveryLeadTime, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isDeliveryLeadTime(resource: any): resource is DeliveryLeadTime;
    relationship(id: string | ResourceId | null): DeliveryLeadTimeRel$1;
    relationshipToMany(...ids: string[]): DeliveryLeadTimeRel$1[];
    type(): DeliveryLeadTimeType;
}

type ShippingMethodTierType = 'shipping_method_tiers';
type ShippingMethodTierRel$2 = ResourceRel & {
    type: ShippingMethodTierType;
};
type ShippingMethodTierSort = Pick<ShippingMethodTier, 'id' | 'name' | 'up_to' | 'price_amount_cents'> & ResourceSort;
interface ShippingMethodTier extends Resource {
    readonly type: ShippingMethodTierType;
    /**
     * The shipping method tier's name.
     * @example ```"Light shipping under 3kg"```
     */
    name: string;
    /**
     * The tier upper limit. When 'null' it means infinity (useful to have an always matching tier).
     * @example ```20.5```
     */
    up_to?: number | null;
    /**
     * The price of this shipping method tier, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    /**
     * The price of this shipping method tier, float.
     * @example ```10```
     */
    price_amount_float?: number | null;
    /**
     * The price of this shipping method tier, formatted.
     * @example ```"€10,00"```
     */
    formatted_price_amount?: string | null;
    shipping_method?: ShippingMethod | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
declare class ShippingMethodTiers extends ApiResource<ShippingMethodTier> {
    static readonly TYPE: ShippingMethodTierType;
    shipping_method(shippingMethodTierId: string | ShippingMethodTier, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    attachments(shippingMethodTierId: string | ShippingMethodTier, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(shippingMethodTierId: string | ShippingMethodTier, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isShippingMethodTier(resource: any): resource is ShippingMethodTier;
    relationship(id: string | ResourceId | null): ShippingMethodTierRel$2;
    relationshipToMany(...ids: string[]): ShippingMethodTierRel$2[];
    type(): ShippingMethodTierType;
}

type ShippingWeightTierType = 'shipping_weight_tiers';
type ShippingWeightTierRel = ResourceRel & {
    type: ShippingWeightTierType;
};
type ShippingMethodRel$5 = ResourceRel & {
    type: ShippingMethodType;
};
type ShippingWeightTierSort = Pick<ShippingWeightTier, 'id' | 'name' | 'up_to' | 'price_amount_cents'> & ResourceSort;
interface ShippingWeightTier extends Resource {
    readonly type: ShippingWeightTierType;
    /**
     * The shipping method tier's name.
     * @example ```"Light shipping under 3kg"```
     */
    name: string;
    /**
     * The tier upper limit. When 'null' it means infinity (useful to have an always matching tier).
     * @example ```20.5```
     */
    up_to?: number | null;
    /**
     * The price of this shipping method tier, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    /**
     * The price of this shipping method tier, float.
     * @example ```10```
     */
    price_amount_float?: number | null;
    /**
     * The price of this shipping method tier, formatted.
     * @example ```"€10,00"```
     */
    formatted_price_amount?: string | null;
    shipping_method?: ShippingMethod | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface ShippingWeightTierCreate extends ResourceCreate {
    /**
     * The shipping method tier's name.
     * @example ```"Light shipping under 3kg"```
     */
    name: string;
    /**
     * The tier upper limit. When 'null' it means infinity (useful to have an always matching tier).
     * @example ```20.5```
     */
    up_to?: number | null;
    /**
     * The price of this shipping method tier, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    shipping_method: ShippingMethodRel$5;
}
interface ShippingWeightTierUpdate extends ResourceUpdate {
    /**
     * The shipping method tier's name.
     * @example ```"Light shipping under 3kg"```
     */
    name?: string | null;
    /**
     * The tier upper limit. When 'null' it means infinity (useful to have an always matching tier).
     * @example ```20.5```
     */
    up_to?: number | null;
    /**
     * The price of this shipping method tier, in cents.
     * @example ```1000```
     */
    price_amount_cents?: number | null;
    shipping_method?: ShippingMethodRel$5 | null;
}
declare class ShippingWeightTiers extends ApiResource<ShippingWeightTier> {
    static readonly TYPE: ShippingWeightTierType;
    create(resource: ShippingWeightTierCreate, params?: QueryParamsRetrieve<ShippingWeightTier>, options?: ResourcesConfig): Promise<ShippingWeightTier>;
    update(resource: ShippingWeightTierUpdate, params?: QueryParamsRetrieve<ShippingWeightTier>, options?: ResourcesConfig): Promise<ShippingWeightTier>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    shipping_method(shippingWeightTierId: string | ShippingWeightTier, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    attachments(shippingWeightTierId: string | ShippingWeightTier, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(shippingWeightTierId: string | ShippingWeightTier, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isShippingWeightTier(resource: any): resource is ShippingWeightTier;
    relationship(id: string | ResourceId | null): ShippingWeightTierRel;
    relationshipToMany(...ids: string[]): ShippingWeightTierRel[];
    type(): ShippingWeightTierType;
}

type ShippingMethodType = 'shipping_methods';
type ShippingMethodRel$4 = ResourceRel & {
    type: ShippingMethodType;
};
type MarketRel$g = ResourceRel & {
    type: MarketType;
};
type ShippingZoneRel$1 = ResourceRel & {
    type: ShippingZoneType;
};
type ShippingCategoryRel$3 = ResourceRel & {
    type: ShippingCategoryType;
};
type StockLocationRel$5 = ResourceRel & {
    type: StockLocationType;
};
type ShippingMethodTierRel$1 = ResourceRel & {
    type: ShippingMethodTierType;
};
type ShippingMethodSort = Pick<ShippingMethod, 'id' | 'name' | 'scheme' | 'currency_code' | 'price_amount_cents' | 'free_over_amount_cents' | 'disabled_at' | 'circuit_state' | 'circuit_failure_count'> & ResourceSort;
interface ShippingMethod extends Resource {
    readonly type: ShippingMethodType;
    /**
     * The shipping method's name.
     * @example ```"Standard shipping"```
     */
    name: string;
    /**
     * The shipping method's scheme. One of 'flat', 'weight_tiered', or 'external'.
     * @example ```"flat"```
     */
    scheme?: 'flat' | 'weight_tiered' | 'external' | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The URL used to overwrite prices by an external source.
     * @example ```"https://external_prices.yourbrand.com"```
     */
    external_prices_url?: string | null;
    /**
     * The price of this shipping method, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    /**
     * The price of this shipping method, float.
     * @example ```10```
     */
    price_amount_float?: number | null;
    /**
     * The price of this shipping method, formatted.
     * @example ```"€10,00"```
     */
    formatted_price_amount?: string | null;
    /**
     * Apply free shipping if the order amount is over this value, in cents.
     * @example ```9900```
     */
    free_over_amount_cents?: number | null;
    /**
     * Apply free shipping if the order amount is over this value, float.
     * @example ```99```
     */
    free_over_amount_float?: number | null;
    /**
     * Apply free shipping if the order amount is over this value, formatted.
     * @example ```"€99,00"```
     */
    formatted_free_over_amount?: string | null;
    /**
     * Send this attribute if you want to compare the free over amount with order's subtotal (excluding discounts, if any).
     * @example ```true```
     */
    use_subtotal?: boolean | null;
    /**
     * The calculated price (zero or price amount) when associated to a shipment, in cents.
     */
    price_amount_for_shipment_cents?: number | null;
    /**
     * The calculated price (zero or price amount) when associated to a shipment, float.
     */
    price_amount_for_shipment_float?: number | null;
    /**
     * The calculated price (zero or price amount) when associated to a shipment, formatted.
     * @example ```"€0,00"```
     */
    formatted_price_amount_for_shipment?: string | null;
    /**
     * The minimum weight for which this shipping method is available.
     * @example ```3```
     */
    min_weight?: number | null;
    /**
     * The maximum weight for which this shipping method is available.
     * @example ```300```
     */
    max_weight?: number | null;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight?: 'gr' | 'oz' | 'lb' | null;
    /**
     * The freight tax identifier code, specific for a particular tax calculator.
     * @example ```"FR010000"```
     */
    tax_code?: string | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The circuit breaker state, by default it is 'closed'. It can become 'open' once the number of consecutive failures overlaps the specified threshold, in such case no further calls to the failing callback are made.
     * @example ```"closed"```
     */
    circuit_state?: string | null;
    /**
     * The number of consecutive failures recorded by the circuit breaker associated to this resource, will be reset on first successful call to callback.
     * @example ```5```
     */
    circuit_failure_count?: number | null;
    /**
     * The shared secret used to sign the external request payload.
     * @example ```"1c0994cc4e996e8c6ee56a2198f66f3c"```
     */
    shared_secret: string;
    market?: Market | null;
    shipping_zone?: ShippingZone | null;
    shipping_category?: ShippingCategory | null;
    stock_location?: StockLocation | null;
    delivery_lead_time_for_shipment?: DeliveryLeadTime | null;
    shipping_method_tiers?: ShippingMethodTier[] | null;
    shipping_weight_tiers?: ShippingWeightTier[] | null;
    attachments?: Attachment[] | null;
    notifications?: Notification[] | null;
    versions?: Version[] | null;
}
interface ShippingMethodCreate extends ResourceCreate {
    /**
     * The shipping method's name.
     * @example ```"Standard shipping"```
     */
    name: string;
    /**
     * The shipping method's scheme. One of 'flat', 'weight_tiered', or 'external'.
     * @example ```"flat"```
     */
    scheme?: 'flat' | 'weight_tiered' | 'external' | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The URL used to overwrite prices by an external source.
     * @example ```"https://external_prices.yourbrand.com"```
     */
    external_prices_url?: string | null;
    /**
     * The price of this shipping method, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    /**
     * Apply free shipping if the order amount is over this value, in cents.
     * @example ```9900```
     */
    free_over_amount_cents?: number | null;
    /**
     * Send this attribute if you want to compare the free over amount with order's subtotal (excluding discounts, if any).
     * @example ```true```
     */
    use_subtotal?: boolean | null;
    /**
     * The minimum weight for which this shipping method is available.
     * @example ```3```
     */
    min_weight?: number | null;
    /**
     * The maximum weight for which this shipping method is available.
     * @example ```300```
     */
    max_weight?: number | null;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight?: 'gr' | 'oz' | 'lb' | null;
    /**
     * The freight tax identifier code, specific for a particular tax calculator.
     * @example ```"FR010000"```
     */
    tax_code?: string | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    market?: MarketRel$g | null;
    shipping_zone?: ShippingZoneRel$1 | null;
    shipping_category?: ShippingCategoryRel$3 | null;
    stock_location?: StockLocationRel$5 | null;
    shipping_method_tiers?: ShippingMethodTierRel$1[] | null;
}
interface ShippingMethodUpdate extends ResourceUpdate {
    /**
     * The shipping method's name.
     * @example ```"Standard shipping"```
     */
    name?: string | null;
    /**
     * The shipping method's scheme. One of 'flat', 'weight_tiered', or 'external'.
     * @example ```"flat"```
     */
    scheme?: 'flat' | 'weight_tiered' | 'external' | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The URL used to overwrite prices by an external source.
     * @example ```"https://external_prices.yourbrand.com"```
     */
    external_prices_url?: string | null;
    /**
     * The price of this shipping method, in cents.
     * @example ```1000```
     */
    price_amount_cents?: number | null;
    /**
     * Apply free shipping if the order amount is over this value, in cents.
     * @example ```9900```
     */
    free_over_amount_cents?: number | null;
    /**
     * Send this attribute if you want to compare the free over amount with order's subtotal (excluding discounts, if any).
     * @example ```true```
     */
    use_subtotal?: boolean | null;
    /**
     * The minimum weight for which this shipping method is available.
     * @example ```3```
     */
    min_weight?: number | null;
    /**
     * The maximum weight for which this shipping method is available.
     * @example ```300```
     */
    max_weight?: number | null;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight?: 'gr' | 'oz' | 'lb' | null;
    /**
     * The freight tax identifier code, specific for a particular tax calculator.
     * @example ```"FR010000"```
     */
    tax_code?: string | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Send this attribute if you want to reset the circuit breaker associated to this resource to 'closed' state and zero failures count. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reset_circuit?: boolean | null;
    market?: MarketRel$g | null;
    shipping_zone?: ShippingZoneRel$1 | null;
    shipping_category?: ShippingCategoryRel$3 | null;
    stock_location?: StockLocationRel$5 | null;
    shipping_method_tiers?: ShippingMethodTierRel$1[] | null;
}
declare class ShippingMethods extends ApiResource<ShippingMethod> {
    static readonly TYPE: ShippingMethodType;
    create(resource: ShippingMethodCreate, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    update(resource: ShippingMethodUpdate, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(shippingMethodId: string | ShippingMethod, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    shipping_zone(shippingMethodId: string | ShippingMethod, params?: QueryParamsRetrieve<ShippingZone>, options?: ResourcesConfig): Promise<ShippingZone>;
    shipping_category(shippingMethodId: string | ShippingMethod, params?: QueryParamsRetrieve<ShippingCategory>, options?: ResourcesConfig): Promise<ShippingCategory>;
    stock_location(shippingMethodId: string | ShippingMethod, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    delivery_lead_time_for_shipment(shippingMethodId: string | ShippingMethod, params?: QueryParamsRetrieve<DeliveryLeadTime>, options?: ResourcesConfig): Promise<DeliveryLeadTime>;
    shipping_method_tiers(shippingMethodId: string | ShippingMethod, params?: QueryParamsList<ShippingMethodTier>, options?: ResourcesConfig): Promise<ListResponse<ShippingMethodTier>>;
    shipping_weight_tiers(shippingMethodId: string | ShippingMethod, params?: QueryParamsList<ShippingWeightTier>, options?: ResourcesConfig): Promise<ListResponse<ShippingWeightTier>>;
    attachments(shippingMethodId: string | ShippingMethod, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    notifications(shippingMethodId: string | ShippingMethod, params?: QueryParamsList<Notification>, options?: ResourcesConfig): Promise<ListResponse<Notification>>;
    versions(shippingMethodId: string | ShippingMethod, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _disable(id: string | ShippingMethod, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    _enable(id: string | ShippingMethod, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    _reset_circuit(id: string | ShippingMethod, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    isShippingMethod(resource: any): resource is ShippingMethod;
    relationship(id: string | ResourceId | null): ShippingMethodRel$4;
    relationshipToMany(...ids: string[]): ShippingMethodRel$4[];
    type(): ShippingMethodType;
}

type NotificationType = 'notifications';
type NotificationRel = ResourceRel & {
    type: NotificationType;
};
type OrderRel$9 = ResourceRel & {
    type: OrderType;
};
type LineItemRel$2 = ResourceRel & {
    type: LineItemType;
};
type ShippingMethodRel$3 = ResourceRel & {
    type: ShippingMethodType;
};
type NotificationSort = Pick<Notification, 'id' | 'name' | 'flash'> & ResourceSort;
interface Notification extends Resource {
    readonly type: NotificationType;
    /**
     * The internal name of the notification.
     * @example ```"DDT transport document"```
     */
    name: string;
    /**
     * Indicates if the notification is temporary, valid for the ones created by external services.
     */
    flash?: boolean | null;
    /**
     * An internal body of the notification.
     * @example ```{"sku":"REDHANDBAG","name":"Enjoy your free item"}```
     */
    body?: Record<string, any> | null;
    notifiable?: Order | LineItem | ShippingMethod | null;
}
interface NotificationCreate extends ResourceCreate {
    /**
     * The internal name of the notification.
     * @example ```"DDT transport document"```
     */
    name: string;
    /**
     * Indicates if the notification is temporary, valid for the ones created by external services.
     */
    flash?: boolean | null;
    /**
     * An internal body of the notification.
     * @example ```{"sku":"REDHANDBAG","name":"Enjoy your free item"}```
     */
    body?: Record<string, any> | null;
    notifiable: OrderRel$9 | LineItemRel$2 | ShippingMethodRel$3;
}
interface NotificationUpdate extends ResourceUpdate {
    /**
     * The internal name of the notification.
     * @example ```"DDT transport document"```
     */
    name?: string | null;
    /**
     * Indicates if the notification is temporary, valid for the ones created by external services.
     */
    flash?: boolean | null;
    /**
     * An internal body of the notification.
     * @example ```{"sku":"REDHANDBAG","name":"Enjoy your free item"}```
     */
    body?: Record<string, any> | null;
    notifiable?: OrderRel$9 | LineItemRel$2 | ShippingMethodRel$3 | null;
}
declare class Notifications extends ApiResource<Notification> {
    static readonly TYPE: NotificationType;
    create(resource: NotificationCreate, params?: QueryParamsRetrieve<Notification>, options?: ResourcesConfig): Promise<Notification>;
    update(resource: NotificationUpdate, params?: QueryParamsRetrieve<Notification>, options?: ResourcesConfig): Promise<Notification>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    isNotification(resource: any): resource is Notification;
    relationship(id: string | ResourceId | null): NotificationRel;
    relationshipToMany(...ids: string[]): NotificationRel[];
    type(): NotificationType;
}

type SkuListItemType = 'sku_list_items';
type SkuListItemRel = ResourceRel & {
    type: SkuListItemType;
};
type SkuListRel$c = ResourceRel & {
    type: SkuListType;
};
type SkuRel$a = ResourceRel & {
    type: SkuType;
};
type SkuListItemSort = Pick<SkuListItem, 'id' | 'position' | 'quantity'> & ResourceSort;
interface SkuListItem extends Resource {
    readonly type: SkuListItemType;
    /**
     * The SKU list item's position.
     * @example ```2```
     */
    position?: number | null;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The SKU quantity for this SKU list item.
     * @example ```1```
     */
    quantity?: number | null;
    sku_list?: SkuList | null;
    sku?: Sku | null;
    versions?: Version[] | null;
}
interface SkuListItemCreate extends ResourceCreate {
    /**
     * The SKU list item's position.
     * @example ```2```
     */
    position?: number | null;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The SKU quantity for this SKU list item.
     * @example ```1```
     */
    quantity?: number | null;
    sku_list: SkuListRel$c;
    sku: SkuRel$a;
}
interface SkuListItemUpdate extends ResourceUpdate {
    /**
     * The SKU list item's position.
     * @example ```2```
     */
    position?: number | null;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The SKU quantity for this SKU list item.
     * @example ```1```
     */
    quantity?: number | null;
}
declare class SkuListItems extends ApiResource<SkuListItem> {
    static readonly TYPE: SkuListItemType;
    create(resource: SkuListItemCreate, params?: QueryParamsRetrieve<SkuListItem>, options?: ResourcesConfig): Promise<SkuListItem>;
    update(resource: SkuListItemUpdate, params?: QueryParamsRetrieve<SkuListItem>, options?: ResourcesConfig): Promise<SkuListItem>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    sku_list(skuListItemId: string | SkuListItem, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    sku(skuListItemId: string | SkuListItem, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    versions(skuListItemId: string | SkuListItem, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isSkuListItem(resource: any): resource is SkuListItem;
    relationship(id: string | ResourceId | null): SkuListItemRel;
    relationshipToMany(...ids: string[]): SkuListItemRel[];
    type(): SkuListItemType;
}

type LinkType = 'links';
type LinkRel = ResourceRel & {
    type: LinkType;
};
type OrderRel$8 = ResourceRel & {
    type: OrderType;
};
type SkuRel$9 = ResourceRel & {
    type: SkuType;
};
type SkuListRel$b = ResourceRel & {
    type: SkuListType;
};
type LinkSort = Pick<Link, 'id' | 'name' | 'starts_at' | 'expires_at' | 'item_type' | 'disabled_at'> & ResourceSort;
interface Link extends Resource {
    readonly type: LinkType;
    /**
     * The link internal name.
     * @example ```"FW SALE 2023"```
     */
    name: string;
    /**
     * The link application client id, used to fetch JWT.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    client_id: string;
    /**
     * The link application scope, used to fetch JWT.
     * @example ```"market:id:GhvCxsElAQ,market:id:kJhgVcxZDr"```
     */
    scope: string;
    /**
     * The activation date/time of this link.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this link (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * Indicates if the link is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The link status. One of 'disabled', 'expired', 'pending', or 'active'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | null;
    /**
     * The link URL second level domain.
     * @example ```"commercelayer.link"```
     */
    domain?: string | null;
    /**
     * The link URL.
     * @example ```"https://commercelayer.link/ZXUtd2VzdC0xLzE5ZjBlMGVlLTg4OGMtNDQ1Yi1iYTA0LTg3MTUxY2FjZjFmYQ"```
     */
    url?: string | null;
    /**
     * The type of the associated item. One of 'orders', 'skus', or 'sku_lists'.
     * @example ```"orders"```
     */
    item_type?: 'orders' | 'skus' | 'sku_lists' | null;
    /**
     * The link params to be passed in URL the query string.
     * @example ```{"param1":"ABC","param2":"XYZ"}```
     */
    params?: Record<string, any> | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    item?: Order | Sku | SkuList | null;
    events?: Event[] | null;
}
interface LinkCreate extends ResourceCreate {
    /**
     * The link internal name.
     * @example ```"FW SALE 2023"```
     */
    name: string;
    /**
     * The link application client id, used to fetch JWT.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    client_id: string;
    /**
     * The link application scope, used to fetch JWT.
     * @example ```"market:id:GhvCxsElAQ,market:id:kJhgVcxZDr"```
     */
    scope: string;
    /**
     * The activation date/time of this link.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this link (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The link URL second level domain.
     * @example ```"commercelayer.link"```
     */
    domain?: string | null;
    /**
     * The type of the associated item. One of 'orders', 'skus', or 'sku_lists'.
     * @example ```"orders"```
     */
    item_type?: 'orders' | 'skus' | 'sku_lists' | null;
    /**
     * The link params to be passed in URL the query string.
     * @example ```{"param1":"ABC","param2":"XYZ"}```
     */
    params?: Record<string, any> | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    item: OrderRel$8 | SkuRel$9 | SkuListRel$b;
}
interface LinkUpdate extends ResourceUpdate {
    /**
     * The link internal name.
     * @example ```"FW SALE 2023"```
     */
    name?: string | null;
    /**
     * The link application client id, used to fetch JWT.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    client_id?: string | null;
    /**
     * The link application scope, used to fetch JWT.
     * @example ```"market:id:GhvCxsElAQ,market:id:kJhgVcxZDr"```
     */
    scope?: string | null;
    /**
     * The activation date/time of this link.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this link (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The link URL second level domain.
     * @example ```"commercelayer.link"```
     */
    domain?: string | null;
    /**
     * The link params to be passed in URL the query string.
     * @example ```{"param1":"ABC","param2":"XYZ"}```
     */
    params?: Record<string, any> | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    item?: OrderRel$8 | SkuRel$9 | SkuListRel$b | null;
}
declare class Links extends ApiResource<Link> {
    static readonly TYPE: LinkType;
    create(resource: LinkCreate, params?: QueryParamsRetrieve<Link>, options?: ResourcesConfig): Promise<Link>;
    update(resource: LinkUpdate, params?: QueryParamsRetrieve<Link>, options?: ResourcesConfig): Promise<Link>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    events(linkId: string | Link, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    _disable(id: string | Link, params?: QueryParamsRetrieve<Link>, options?: ResourcesConfig): Promise<Link>;
    _enable(id: string | Link, params?: QueryParamsRetrieve<Link>, options?: ResourcesConfig): Promise<Link>;
    isLink(resource: any): resource is Link;
    relationship(id: string | ResourceId | null): LinkRel;
    relationshipToMany(...ids: string[]): LinkRel[];
    type(): LinkType;
}

type SkuListType = 'sku_lists';
type SkuListRel$a = ResourceRel & {
    type: SkuListType;
};
type CustomerRel$6 = ResourceRel & {
    type: CustomerType;
};
type SkuListSort = Pick<SkuList, 'id' | 'name' | 'slug' | 'manual'> & ResourceSort;
interface SkuList extends Resource {
    readonly type: SkuListType;
    /**
     * The SKU list's internal name.
     * @example ```"Personal list"```
     */
    name: string;
    /**
     * The SKU list's internal slug.
     * @example ```"personal-list-1"```
     */
    slug: string;
    /**
     * An internal description of the SKU list.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the SKU list.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * Indicates if the SKU list is populated manually.
     */
    manual?: boolean | null;
    /**
     * The regex that will be evaluated to match the SKU codes, max size is 5000.
     * @example ```"^(A|B).*$"```
     */
    sku_code_regex?: string | null;
    customer?: Customer | null;
    skus?: Sku[] | null;
    sku_list_items?: SkuListItem[] | null;
    bundles?: Bundle[] | null;
    attachments?: Attachment[] | null;
    links?: Link[] | null;
    versions?: Version[] | null;
}
interface SkuListCreate extends ResourceCreate {
    /**
     * The SKU list's internal name.
     * @example ```"Personal list"```
     */
    name: string;
    /**
     * An internal description of the SKU list.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the SKU list.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * Indicates if the SKU list is populated manually.
     */
    manual?: boolean | null;
    /**
     * The regex that will be evaluated to match the SKU codes, max size is 5000.
     * @example ```"^(A|B).*$"```
     */
    sku_code_regex?: string | null;
    customer?: CustomerRel$6 | null;
}
interface SkuListUpdate extends ResourceUpdate {
    /**
     * The SKU list's internal name.
     * @example ```"Personal list"```
     */
    name?: string | null;
    /**
     * An internal description of the SKU list.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the SKU list.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * Indicates if the SKU list is populated manually.
     */
    manual?: boolean | null;
    /**
     * The regex that will be evaluated to match the SKU codes, max size is 5000.
     * @example ```"^(A|B).*$"```
     */
    sku_code_regex?: string | null;
    customer?: CustomerRel$6 | null;
}
declare class SkuLists extends ApiResource<SkuList> {
    static readonly TYPE: SkuListType;
    create(resource: SkuListCreate, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    update(resource: SkuListUpdate, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customer(skuListId: string | SkuList, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    skus(skuListId: string | SkuList, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    sku_list_items(skuListId: string | SkuList, params?: QueryParamsList<SkuListItem>, options?: ResourcesConfig): Promise<ListResponse<SkuListItem>>;
    bundles(skuListId: string | SkuList, params?: QueryParamsList<Bundle>, options?: ResourcesConfig): Promise<ListResponse<Bundle>>;
    attachments(skuListId: string | SkuList, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    links(skuListId: string | SkuList, params?: QueryParamsList<Link>, options?: ResourcesConfig): Promise<ListResponse<Link>>;
    versions(skuListId: string | SkuList, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isSkuList(resource: any): resource is SkuList;
    relationship(id: string | ResourceId | null): SkuListRel$a;
    relationshipToMany(...ids: string[]): SkuListRel$a[];
    type(): SkuListType;
}

type BundleType = 'bundles';
type BundleRel$3 = ResourceRel & {
    type: BundleType;
};
type MarketRel$f = ResourceRel & {
    type: MarketType;
};
type SkuListRel$9 = ResourceRel & {
    type: SkuListType;
};
type TagRel$h = ResourceRel & {
    type: TagType;
};
type BundleSort = Pick<Bundle, 'id' | 'code' | 'currency_code' | 'price_amount_cents' | 'compare_at_amount_cents'> & ResourceSort;
interface Bundle extends Resource {
    readonly type: BundleType;
    /**
     * The bundle code, that uniquely identifies the bundle within the market.
     * @example ```"BUNDMM000000FFFFFFXLXX"```
     */
    code: string;
    /**
     * The internal name of the bundle.
     * @example ```"Men's Black T-shirt (XL) with Black Cap and Socks, all with White Logo"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * An internal description of the bundle.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the bundle.
     * @example ```"https://img.yourdomain.com/bundles/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * Indicates if the bundle doesn't generate shipments (all sku_list's SKUs must be do_not_ship).
     */
    do_not_ship?: boolean | null;
    /**
     * Indicates if the bundle doesn't track the stock inventory (all sku_list's SKUs must be do_not_track).
     */
    do_not_track?: boolean | null;
    /**
     * The bundle price amount for the associated market, in cents.
     * @example ```10000```
     */
    price_amount_cents?: number | null;
    /**
     * The bundle price amount for the associated market, float.
     * @example ```100```
     */
    price_amount_float?: number | null;
    /**
     * The bundle price amount for the associated market, formatted.
     * @example ```"€100,00"```
     */
    formatted_price_amount?: string | null;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * The compared price amount, float.
     * @example ```130```
     */
    compare_at_amount_float?: number | null;
    /**
     * The compared price amount, formatted.
     * @example ```"€130,00"```
     */
    formatted_compare_at_amount?: string | null;
    /**
     * The total number of SKUs in the bundle.
     * @example ```2```
     */
    skus_count?: number | null;
    market?: Market | null;
    sku_list?: SkuList | null;
    skus?: Sku[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface BundleCreate extends ResourceCreate {
    /**
     * The bundle code, that uniquely identifies the bundle within the market.
     * @example ```"BUNDMM000000FFFFFFXLXX"```
     */
    code: string;
    /**
     * The internal name of the bundle.
     * @example ```"Men's Black T-shirt (XL) with Black Cap and Socks, all with White Logo"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * An internal description of the bundle.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the bundle.
     * @example ```"https://img.yourdomain.com/bundles/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * The bundle price amount for the associated market, in cents.
     * @example ```10000```
     */
    price_amount_cents?: number | null;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * Send this attribute if you want to compute the price_amount_cents as the sum of the prices of the bundle SKUs for the market.
     * @example ```true```
     */
    _compute_price_amount?: boolean | null;
    /**
     * Send this attribute if you want to compute the compare_at_amount_cents as the sum of the prices of the bundle SKUs for the market.
     * @example ```true```
     */
    _compute_compare_at_amount?: boolean | null;
    market?: MarketRel$f | null;
    sku_list: SkuListRel$9;
    tags?: TagRel$h[] | null;
}
interface BundleUpdate extends ResourceUpdate {
    /**
     * The bundle code, that uniquely identifies the bundle within the market.
     * @example ```"BUNDMM000000FFFFFFXLXX"```
     */
    code?: string | null;
    /**
     * The internal name of the bundle.
     * @example ```"Men's Black T-shirt (XL) with Black Cap and Socks, all with White Logo"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * An internal description of the bundle.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the bundle.
     * @example ```"https://img.yourdomain.com/bundles/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * The bundle price amount for the associated market, in cents.
     * @example ```10000```
     */
    price_amount_cents?: number | null;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * Send this attribute if you want to compute the price_amount_cents as the sum of the prices of the bundle SKUs for the market.
     * @example ```true```
     */
    _compute_price_amount?: boolean | null;
    /**
     * Send this attribute if you want to compute the compare_at_amount_cents as the sum of the prices of the bundle SKUs for the market.
     * @example ```true```
     */
    _compute_compare_at_amount?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    tags?: TagRel$h[] | null;
}
declare class Bundles extends ApiResource<Bundle> {
    static readonly TYPE: BundleType;
    create(resource: BundleCreate, params?: QueryParamsRetrieve<Bundle>, options?: ResourcesConfig): Promise<Bundle>;
    update(resource: BundleUpdate, params?: QueryParamsRetrieve<Bundle>, options?: ResourcesConfig): Promise<Bundle>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(bundleId: string | Bundle, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    sku_list(bundleId: string | Bundle, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    skus(bundleId: string | Bundle, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    attachments(bundleId: string | Bundle, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(bundleId: string | Bundle, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(bundleId: string | Bundle, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(bundleId: string | Bundle, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _compute_price_amount(id: string | Bundle, params?: QueryParamsRetrieve<Bundle>, options?: ResourcesConfig): Promise<Bundle>;
    _compute_compare_at_amount(id: string | Bundle, params?: QueryParamsRetrieve<Bundle>, options?: ResourcesConfig): Promise<Bundle>;
    _add_tags(id: string | Bundle, triggerValue: string, params?: QueryParamsRetrieve<Bundle>, options?: ResourcesConfig): Promise<Bundle>;
    _remove_tags(id: string | Bundle, triggerValue: string, params?: QueryParamsRetrieve<Bundle>, options?: ResourcesConfig): Promise<Bundle>;
    isBundle(resource: any): resource is Bundle;
    relationship(id: string | ResourceId | null): BundleRel$3;
    relationshipToMany(...ids: string[]): BundleRel$3[];
    type(): BundleType;
}

type GiftCardRecipientType = 'gift_card_recipients';
type GiftCardRecipientRel$2 = ResourceRel & {
    type: GiftCardRecipientType;
};
type CustomerRel$5 = ResourceRel & {
    type: CustomerType;
};
type GiftCardRecipientSort = Pick<GiftCardRecipient, 'id' | 'email'> & ResourceSort;
interface GiftCardRecipient extends Resource {
    readonly type: GiftCardRecipientType;
    /**
     * The recipient email address.
     * @example ```"john@example.com"```
     */
    email: string;
    /**
     * The recipient first name.
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * The recipient last name.
     * @example ```"Smith"```
     */
    last_name?: string | null;
    customer?: Customer | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface GiftCardRecipientCreate extends ResourceCreate {
    /**
     * The recipient email address.
     * @example ```"john@example.com"```
     */
    email: string;
    /**
     * The recipient first name.
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * The recipient last name.
     * @example ```"Smith"```
     */
    last_name?: string | null;
    customer?: CustomerRel$5 | null;
}
interface GiftCardRecipientUpdate extends ResourceUpdate {
    /**
     * The recipient email address.
     * @example ```"john@example.com"```
     */
    email?: string | null;
    /**
     * The recipient first name.
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * The recipient last name.
     * @example ```"Smith"```
     */
    last_name?: string | null;
    customer?: CustomerRel$5 | null;
}
declare class GiftCardRecipients extends ApiResource<GiftCardRecipient> {
    static readonly TYPE: GiftCardRecipientType;
    create(resource: GiftCardRecipientCreate, params?: QueryParamsRetrieve<GiftCardRecipient>, options?: ResourcesConfig): Promise<GiftCardRecipient>;
    update(resource: GiftCardRecipientUpdate, params?: QueryParamsRetrieve<GiftCardRecipient>, options?: ResourcesConfig): Promise<GiftCardRecipient>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customer(giftCardRecipientId: string | GiftCardRecipient, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    attachments(giftCardRecipientId: string | GiftCardRecipient, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(giftCardRecipientId: string | GiftCardRecipient, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isGiftCardRecipient(resource: any): resource is GiftCardRecipient;
    relationship(id: string | ResourceId | null): GiftCardRecipientRel$2;
    relationshipToMany(...ids: string[]): GiftCardRecipientRel$2[];
    type(): GiftCardRecipientType;
}

type GiftCardType = 'gift_cards';
type GiftCardRel$2 = ResourceRel & {
    type: GiftCardType;
};
type MarketRel$e = ResourceRel & {
    type: MarketType;
};
type GiftCardRecipientRel$1 = ResourceRel & {
    type: GiftCardRecipientType;
};
type TagRel$g = ResourceRel & {
    type: TagType;
};
type GiftCardSort = Pick<GiftCard, 'id' | 'status' | 'currency_code' | 'balance_cents' | 'balance_max_cents' | 'expires_at'> & ResourceSort;
interface GiftCard extends Resource {
    readonly type: GiftCardType;
    /**
     * The gift card status. One of 'draft' (default), 'inactive', 'active', or 'redeemed'.
     * @example ```"draft"```
     */
    status: 'draft' | 'inactive' | 'active' | 'redeemed';
    /**
     * The gift card code UUID. If not set, it's automatically generated.
     * @example ```"32db311a-75d9-4c17-9e34-2be220137ad6"```
     */
    code?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The gift card initial balance, in cents.
     * @example ```15000```
     */
    initial_balance_cents: number;
    /**
     * The gift card initial balance, float.
     * @example ```150```
     */
    initial_balance_float: number;
    /**
     * The gift card initial balance, formatted.
     * @example ```"€150,00"```
     */
    formatted_initial_balance: string;
    /**
     * The gift card balance, in cents.
     * @example ```15000```
     */
    balance_cents: number;
    /**
     * The gift card balance, float.
     * @example ```150```
     */
    balance_float: number;
    /**
     * The gift card balance, formatted.
     * @example ```"€150,00"```
     */
    formatted_balance: string;
    /**
     * The gift card balance max, in cents.
     * @example ```100000```
     */
    balance_max_cents?: number | null;
    /**
     * The gift card balance max, float.
     * @example ```1000```
     */
    balance_max_float?: number | null;
    /**
     * The gift card balance max, formatted.
     * @example ```"€1000,00"```
     */
    formatted_balance_max?: string | null;
    /**
     * The gift card balance log. Tracks all the gift card transactions.
     * @example ```[{"datetime":"2019-12-23T12:00:00.000Z","balance_change_cents":-10000},{"datetime":"2020-02-01T12:00:00.000Z","balance_change_cents":5000}]```
     */
    balance_log: Array<Record<string, any>>;
    /**
     * The gift card usage log. Tracks all the gift card usage actions by orders.
     * @example ```{"eNoKkhmbNp":[{"action":"use","amount_cents":-1000,"balance_cents":4000,"order_number":"11111","datetime":"2020-02-01T12:00:00.000Z"}]}```
     */
    usage_log: Record<string, any>;
    /**
     * Indicates if the gift card can be used only one.
     */
    single_use?: boolean | null;
    /**
     * Indicates if the gift card can be recharged.
     * @example ```true```
     */
    rechargeable?: boolean | null;
    /**
     * Indicates if redeemed gift card amount is distributed for tax calculation.
     * @example ```true```
     */
    distribute_discount?: boolean | null;
    /**
     * The URL of an image that represents the gift card.
     * @example ```"https://img.yourdomain.com/gift_cards/32db311a.png"```
     */
    image_url?: string | null;
    /**
     * Time at which the gift card will expire.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The email address of the associated recipient. When creating or updating a gift card, this is a shortcut to find or create the associated recipient by email.
     * @example ```"john@example.com"```
     */
    recipient_email?: string | null;
    market?: Market | null;
    gift_card_recipient?: GiftCardRecipient | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface GiftCardCreate extends ResourceCreate {
    /**
     * The gift card code UUID. If not set, it's automatically generated.
     * @example ```"32db311a-75d9-4c17-9e34-2be220137ad6"```
     */
    code?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The gift card balance, in cents.
     * @example ```15000```
     */
    balance_cents: number;
    /**
     * The gift card balance max, in cents.
     * @example ```100000```
     */
    balance_max_cents?: number | null;
    /**
     * Indicates if the gift card can be used only one.
     */
    single_use?: boolean | null;
    /**
     * Indicates if the gift card can be recharged.
     * @example ```true```
     */
    rechargeable?: boolean | null;
    /**
     * Indicates if redeemed gift card amount is distributed for tax calculation.
     * @example ```true```
     */
    distribute_discount?: boolean | null;
    /**
     * The URL of an image that represents the gift card.
     * @example ```"https://img.yourdomain.com/gift_cards/32db311a.png"```
     */
    image_url?: string | null;
    /**
     * Time at which the gift card will expire.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The email address of the associated recipient. When creating or updating a gift card, this is a shortcut to find or create the associated recipient by email.
     * @example ```"john@example.com"```
     */
    recipient_email?: string | null;
    market?: MarketRel$e | null;
    gift_card_recipient?: GiftCardRecipientRel$1 | null;
    tags?: TagRel$g[] | null;
}
interface GiftCardUpdate extends ResourceUpdate {
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The gift card balance, in cents.
     * @example ```15000```
     */
    balance_cents?: number | null;
    /**
     * The gift card balance max, in cents.
     * @example ```100000```
     */
    balance_max_cents?: number | null;
    /**
     * Indicates if the gift card can be used only one.
     */
    single_use?: boolean | null;
    /**
     * Indicates if the gift card can be recharged.
     * @example ```true```
     */
    rechargeable?: boolean | null;
    /**
     * Indicates if redeemed gift card amount is distributed for tax calculation.
     * @example ```true```
     */
    distribute_discount?: boolean | null;
    /**
     * The URL of an image that represents the gift card.
     * @example ```"https://img.yourdomain.com/gift_cards/32db311a.png"```
     */
    image_url?: string | null;
    /**
     * Time at which the gift card will expire.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The email address of the associated recipient. When creating or updating a gift card, this is a shortcut to find or create the associated recipient by email.
     * @example ```"john@example.com"```
     */
    recipient_email?: string | null;
    /**
     * Send this attribute if you want to confirm a draft gift card. The gift card becomes 'inactive', waiting to be activated.
     * @example ```true```
     */
    _purchase?: boolean | null;
    /**
     * Send this attribute if you want to activate a gift card.
     * @example ```true```
     */
    _activate?: boolean | null;
    /**
     * Send this attribute if you want to deactivate a gift card.
     * @example ```true```
     */
    _deactivate?: boolean | null;
    /**
     * The balance change, in cents. Send a negative value to reduces the card balance by the specified amount. Send a positive value to recharge the gift card (if rechargeable).
     * @example ```-5000```
     */
    _balance_change_cents?: number | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    market?: MarketRel$e | null;
    gift_card_recipient?: GiftCardRecipientRel$1 | null;
    tags?: TagRel$g[] | null;
}
declare class GiftCards extends ApiResource<GiftCard> {
    static readonly TYPE: GiftCardType;
    create(resource: GiftCardCreate, params?: QueryParamsRetrieve<GiftCard>, options?: ResourcesConfig): Promise<GiftCard>;
    update(resource: GiftCardUpdate, params?: QueryParamsRetrieve<GiftCard>, options?: ResourcesConfig): Promise<GiftCard>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(giftCardId: string | GiftCard, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    gift_card_recipient(giftCardId: string | GiftCard, params?: QueryParamsRetrieve<GiftCardRecipient>, options?: ResourcesConfig): Promise<GiftCardRecipient>;
    attachments(giftCardId: string | GiftCard, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(giftCardId: string | GiftCard, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(giftCardId: string | GiftCard, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(giftCardId: string | GiftCard, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _purchase(id: string | GiftCard, params?: QueryParamsRetrieve<GiftCard>, options?: ResourcesConfig): Promise<GiftCard>;
    _activate(id: string | GiftCard, params?: QueryParamsRetrieve<GiftCard>, options?: ResourcesConfig): Promise<GiftCard>;
    _deactivate(id: string | GiftCard, params?: QueryParamsRetrieve<GiftCard>, options?: ResourcesConfig): Promise<GiftCard>;
    _balance_change_cents(id: string | GiftCard, triggerValue: number, params?: QueryParamsRetrieve<GiftCard>, options?: ResourcesConfig): Promise<GiftCard>;
    _add_tags(id: string | GiftCard, triggerValue: string, params?: QueryParamsRetrieve<GiftCard>, options?: ResourcesConfig): Promise<GiftCard>;
    _remove_tags(id: string | GiftCard, triggerValue: string, params?: QueryParamsRetrieve<GiftCard>, options?: ResourcesConfig): Promise<GiftCard>;
    isGiftCard(resource: any): resource is GiftCard;
    relationship(id: string | ResourceId | null): GiftCardRel$2;
    relationshipToMany(...ids: string[]): GiftCardRel$2[];
    type(): GiftCardType;
}

type AdjustmentType = 'adjustments';
type AdjustmentRel$2 = ResourceRel & {
    type: AdjustmentType;
};
type AdjustmentSort = Pick<Adjustment, 'id' | 'name' | 'currency_code' | 'amount_cents'> & ResourceSort;
interface Adjustment extends Resource {
    readonly type: AdjustmentType;
    /**
     * The adjustment name.
     * @example ```"Additional service"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * The adjustment amount, in cents.
     * @example ```1500```
     */
    amount_cents: number;
    /**
     * The adjustment amount, float.
     * @example ```15```
     */
    amount_float: number;
    /**
     * The adjustment amount, formatted.
     * @example ```"€15,00"```
     */
    formatted_amount: string;
    /**
     * Indicates if negative adjustment amount is distributed for tax calculation.
     * @example ```true```
     */
    distribute_discount?: boolean | null;
    versions?: Version[] | null;
}
interface AdjustmentCreate extends ResourceCreate {
    /**
     * The adjustment name.
     * @example ```"Additional service"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * The adjustment amount, in cents.
     * @example ```1500```
     */
    amount_cents: number;
    /**
     * Indicates if negative adjustment amount is distributed for tax calculation.
     * @example ```true```
     */
    distribute_discount?: boolean | null;
}
interface AdjustmentUpdate extends ResourceUpdate {
    /**
     * The adjustment name.
     * @example ```"Additional service"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The adjustment amount, in cents.
     * @example ```1500```
     */
    amount_cents?: number | null;
    /**
     * Indicates if negative adjustment amount is distributed for tax calculation.
     * @example ```true```
     */
    distribute_discount?: boolean | null;
}
declare class Adjustments extends ApiResource<Adjustment> {
    static readonly TYPE: AdjustmentType;
    create(resource: AdjustmentCreate, params?: QueryParamsRetrieve<Adjustment>, options?: ResourcesConfig): Promise<Adjustment>;
    update(resource: AdjustmentUpdate, params?: QueryParamsRetrieve<Adjustment>, options?: ResourcesConfig): Promise<Adjustment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    versions(adjustmentId: string | Adjustment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isAdjustment(resource: any): resource is Adjustment;
    relationship(id: string | ResourceId | null): AdjustmentRel$2;
    relationshipToMany(...ids: string[]): AdjustmentRel$2[];
    type(): AdjustmentType;
}

type DiscountEngineType = 'discount_engines';
type DiscountEngineRel$2 = ResourceRel & {
    type: DiscountEngineType;
};
type DiscountEngineSort = Pick<DiscountEngine, 'id' | 'name'> & ResourceSort;
interface DiscountEngine extends Resource {
    readonly type: DiscountEngineType;
    /**
     * The discount engine's internal name.
     * @example ```"Personal discount engine"```
     */
    name: string;
    /**
     * Indicates if the discount engine manages both promotions and gift cards application at once.
     */
    manage_gift_cards?: boolean | null;
    markets?: Market[] | null;
    discount_engine_items?: DiscountEngineItem[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
declare class DiscountEngines extends ApiResource<DiscountEngine> {
    static readonly TYPE: DiscountEngineType;
    markets(discountEngineId: string | DiscountEngine, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    discount_engine_items(discountEngineId: string | DiscountEngine, params?: QueryParamsList<DiscountEngineItem>, options?: ResourcesConfig): Promise<ListResponse<DiscountEngineItem>>;
    attachments(discountEngineId: string | DiscountEngine, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(discountEngineId: string | DiscountEngine, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isDiscountEngine(resource: any): resource is DiscountEngine;
    relationship(id: string | ResourceId | null): DiscountEngineRel$2;
    relationshipToMany(...ids: string[]): DiscountEngineRel$2[];
    type(): DiscountEngineType;
}

type DiscountEngineItemType = 'discount_engine_items';
type DiscountEngineItemRel$1 = ResourceRel & {
    type: DiscountEngineItemType;
};
type DiscountEngineItemSort = Pick<DiscountEngineItem, 'id'> & ResourceSort;
interface DiscountEngineItem extends Resource {
    readonly type: DiscountEngineItemType;
    /**
     * The body of the external discount engine response.
     * @example ```{"foo":"bar"}```
     */
    body: Record<string, any>;
    discount_engine?: DiscountEngine | null;
    order?: Order | null;
}
declare class DiscountEngineItems extends ApiResource<DiscountEngineItem> {
    static readonly TYPE: DiscountEngineItemType;
    discount_engine(discountEngineItemId: string | DiscountEngineItem, params?: QueryParamsRetrieve<DiscountEngine>, options?: ResourcesConfig): Promise<DiscountEngine>;
    order(discountEngineItemId: string | DiscountEngineItem, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    isDiscountEngineItem(resource: any): resource is DiscountEngineItem;
    relationship(id: string | ResourceId | null): DiscountEngineItemRel$1;
    relationshipToMany(...ids: string[]): DiscountEngineItemRel$1[];
    type(): DiscountEngineItemType;
}

type CouponRecipientType = 'coupon_recipients';
type CouponRecipientRel$2 = ResourceRel & {
    type: CouponRecipientType;
};
type CustomerRel$4 = ResourceRel & {
    type: CustomerType;
};
type CouponRecipientSort = Pick<CouponRecipient, 'id' | 'email'> & ResourceSort;
interface CouponRecipient extends Resource {
    readonly type: CouponRecipientType;
    /**
     * The recipient email address.
     * @example ```"john@example.com"```
     */
    email: string;
    /**
     * The recipient first name.
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * The recipient last name.
     * @example ```"Smith"```
     */
    last_name?: string | null;
    customer?: Customer | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface CouponRecipientCreate extends ResourceCreate {
    /**
     * The recipient email address.
     * @example ```"john@example.com"```
     */
    email: string;
    /**
     * The recipient first name.
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * The recipient last name.
     * @example ```"Smith"```
     */
    last_name?: string | null;
    customer?: CustomerRel$4 | null;
}
interface CouponRecipientUpdate extends ResourceUpdate {
    /**
     * The recipient email address.
     * @example ```"john@example.com"```
     */
    email?: string | null;
    /**
     * The recipient first name.
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * The recipient last name.
     * @example ```"Smith"```
     */
    last_name?: string | null;
    customer?: CustomerRel$4 | null;
}
declare class CouponRecipients extends ApiResource<CouponRecipient> {
    static readonly TYPE: CouponRecipientType;
    create(resource: CouponRecipientCreate, params?: QueryParamsRetrieve<CouponRecipient>, options?: ResourcesConfig): Promise<CouponRecipient>;
    update(resource: CouponRecipientUpdate, params?: QueryParamsRetrieve<CouponRecipient>, options?: ResourcesConfig): Promise<CouponRecipient>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customer(couponRecipientId: string | CouponRecipient, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    attachments(couponRecipientId: string | CouponRecipient, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(couponRecipientId: string | CouponRecipient, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isCouponRecipient(resource: any): resource is CouponRecipient;
    relationship(id: string | ResourceId | null): CouponRecipientRel$2;
    relationshipToMany(...ids: string[]): CouponRecipientRel$2[];
    type(): CouponRecipientType;
}

type CouponType = 'coupons';
type CouponRel$1 = ResourceRel & {
    type: CouponType;
};
type CouponCodesPromotionRuleRel$9 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type CouponRecipientRel$1 = ResourceRel & {
    type: CouponRecipientType;
};
type TagRel$f = ResourceRel & {
    type: TagType;
};
type CouponSort = Pick<Coupon, 'id' | 'code' | 'customer_single_use' | 'usage_limit' | 'usage_count' | 'expires_at'> & ResourceSort;
interface Coupon extends Resource {
    readonly type: CouponType;
    /**
     * The coupon code, that uniquely identifies the coupon within the promotion rule.
     * @example ```"04371af2-70b3-48d7-8f4e-316b374224c3"```
     */
    code: string;
    /**
     * Indicates if the coupon can be used just once per customer.
     */
    customer_single_use?: boolean | null;
    /**
     * The total number of times this coupon can be used.
     * @example ```50```
     */
    usage_limit?: number | null;
    /**
     * The number of times this coupon has been used.
     * @example ```20```
     */
    usage_count?: number | null;
    /**
     * The email address of the associated recipient. When creating or updating a coupon, this is a shortcut to find or create the associated recipient by email.
     * @example ```"john@example.com"```
     */
    recipient_email?: string | null;
    /**
     * Time at which the coupon will expire.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    expires_at?: string | null;
    promotion_rule?: CouponCodesPromotionRule | null;
    coupon_recipient?: CouponRecipient | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface CouponCreate extends ResourceCreate {
    /**
     * The coupon code, that uniquely identifies the coupon within the promotion rule.
     * @example ```"04371af2-70b3-48d7-8f4e-316b374224c3"```
     */
    code: string;
    /**
     * Indicates if the coupon can be used just once per customer.
     */
    customer_single_use?: boolean | null;
    /**
     * The total number of times this coupon can be used.
     * @example ```50```
     */
    usage_limit?: number | null;
    /**
     * The email address of the associated recipient. When creating or updating a coupon, this is a shortcut to find or create the associated recipient by email.
     * @example ```"john@example.com"```
     */
    recipient_email?: string | null;
    /**
     * Time at which the coupon will expire.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    expires_at?: string | null;
    promotion_rule: CouponCodesPromotionRuleRel$9;
    coupon_recipient?: CouponRecipientRel$1 | null;
    tags?: TagRel$f[] | null;
}
interface CouponUpdate extends ResourceUpdate {
    /**
     * The coupon code, that uniquely identifies the coupon within the promotion rule.
     * @example ```"04371af2-70b3-48d7-8f4e-316b374224c3"```
     */
    code?: string | null;
    /**
     * Indicates if the coupon can be used just once per customer.
     */
    customer_single_use?: boolean | null;
    /**
     * The total number of times this coupon can be used.
     * @example ```50```
     */
    usage_limit?: number | null;
    /**
     * The email address of the associated recipient. When creating or updating a coupon, this is a shortcut to find or create the associated recipient by email.
     * @example ```"john@example.com"```
     */
    recipient_email?: string | null;
    /**
     * Time at which the coupon will expire.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    promotion_rule?: CouponCodesPromotionRuleRel$9 | null;
    coupon_recipient?: CouponRecipientRel$1 | null;
    tags?: TagRel$f[] | null;
}
declare class Coupons extends ApiResource<Coupon> {
    static readonly TYPE: CouponType;
    create(resource: CouponCreate, params?: QueryParamsRetrieve<Coupon>, options?: ResourcesConfig): Promise<Coupon>;
    update(resource: CouponUpdate, params?: QueryParamsRetrieve<Coupon>, options?: ResourcesConfig): Promise<Coupon>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    promotion_rule(couponId: string | Coupon, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    coupon_recipient(couponId: string | Coupon, params?: QueryParamsRetrieve<CouponRecipient>, options?: ResourcesConfig): Promise<CouponRecipient>;
    events(couponId: string | Coupon, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(couponId: string | Coupon, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(couponId: string | Coupon, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _add_tags(id: string | Coupon, triggerValue: string, params?: QueryParamsRetrieve<Coupon>, options?: ResourcesConfig): Promise<Coupon>;
    _remove_tags(id: string | Coupon, triggerValue: string, params?: QueryParamsRetrieve<Coupon>, options?: ResourcesConfig): Promise<Coupon>;
    isCoupon(resource: any): resource is Coupon;
    relationship(id: string | ResourceId | null): CouponRel$1;
    relationshipToMany(...ids: string[]): CouponRel$1[];
    type(): CouponType;
}

type ExternalPromotionType = 'external_promotions';
type ExternalPromotionRel$5 = ResourceRel & {
    type: ExternalPromotionType;
};
type MarketRel$d = ResourceRel & {
    type: MarketType;
};
type OrderAmountPromotionRuleRel$7 = ResourceRel & {
    type: OrderAmountPromotionRuleType;
};
type SkuListPromotionRuleRel$7 = ResourceRel & {
    type: SkuListPromotionRuleType;
};
type CouponCodesPromotionRuleRel$8 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type CustomPromotionRuleRel$7 = ResourceRel & {
    type: CustomPromotionRuleType;
};
type SkuListRel$8 = ResourceRel & {
    type: SkuListType;
};
type TagRel$e = ResourceRel & {
    type: TagType;
};
type ExternalPromotionSort = Pick<ExternalPromotion, 'id' | 'name' | 'currency_code' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at' | 'circuit_state' | 'circuit_failure_count'> & ResourceSort;
interface ExternalPromotion extends Resource {
    readonly type: ExternalPromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The URL to the service that will compute the discount.
     * @example ```"https://external_promotion.yourbrand.com"```
     */
    promotion_url: string;
    /**
     * The circuit breaker state, by default it is 'closed'. It can become 'open' once the number of consecutive failures overlaps the specified threshold, in such case no further calls to the failing callback are made.
     * @example ```"closed"```
     */
    circuit_state?: string | null;
    /**
     * The number of consecutive failures recorded by the circuit breaker associated to this resource, will be reset on first successful call to callback.
     * @example ```5```
     */
    circuit_failure_count?: number | null;
    /**
     * The shared secret used to sign the external request payload.
     * @example ```"1c0994cc4e996e8c6ee56a2198f66f3c"```
     */
    shared_secret: string;
    market?: Market | null;
    promotion_rules?: PromotionRule[] | null;
    order_amount_promotion_rule?: OrderAmountPromotionRule | null;
    sku_list_promotion_rule?: SkuListPromotionRule | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    custom_promotion_rule?: CustomPromotionRule | null;
    sku_list?: SkuList | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
    skus?: Sku[] | null;
}
interface ExternalPromotionCreate extends ResourceCreate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * The URL to the service that will compute the discount.
     * @example ```"https://external_promotion.yourbrand.com"```
     */
    promotion_url: string;
    market?: MarketRel$d | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$7 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$7 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$8 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$7 | null;
    sku_list?: SkuListRel$8 | null;
    tags?: TagRel$e[] | null;
}
interface ExternalPromotionUpdate extends ResourceUpdate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    /**
     * The URL to the service that will compute the discount.
     * @example ```"https://external_promotion.yourbrand.com"```
     */
    promotion_url?: string | null;
    /**
     * Send this attribute if you want to reset the circuit breaker associated to this resource to 'closed' state and zero failures count. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reset_circuit?: boolean | null;
    market?: MarketRel$d | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$7 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$7 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$8 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$7 | null;
    sku_list?: SkuListRel$8 | null;
    tags?: TagRel$e[] | null;
}
declare class ExternalPromotions extends ApiResource<ExternalPromotion> {
    static readonly TYPE: ExternalPromotionType;
    create(resource: ExternalPromotionCreate, params?: QueryParamsRetrieve<ExternalPromotion>, options?: ResourcesConfig): Promise<ExternalPromotion>;
    update(resource: ExternalPromotionUpdate, params?: QueryParamsRetrieve<ExternalPromotion>, options?: ResourcesConfig): Promise<ExternalPromotion>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(externalPromotionId: string | ExternalPromotion, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    order_amount_promotion_rule(externalPromotionId: string | ExternalPromotion, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    sku_list_promotion_rule(externalPromotionId: string | ExternalPromotion, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    coupon_codes_promotion_rule(externalPromotionId: string | ExternalPromotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    custom_promotion_rule(externalPromotionId: string | ExternalPromotion, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    sku_list(externalPromotionId: string | ExternalPromotion, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    coupons(externalPromotionId: string | ExternalPromotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(externalPromotionId: string | ExternalPromotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(externalPromotionId: string | ExternalPromotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(externalPromotionId: string | ExternalPromotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(externalPromotionId: string | ExternalPromotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    skus(externalPromotionId: string | ExternalPromotion, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    _disable(id: string | ExternalPromotion, params?: QueryParamsRetrieve<ExternalPromotion>, options?: ResourcesConfig): Promise<ExternalPromotion>;
    _enable(id: string | ExternalPromotion, params?: QueryParamsRetrieve<ExternalPromotion>, options?: ResourcesConfig): Promise<ExternalPromotion>;
    _add_tags(id: string | ExternalPromotion, triggerValue: string, params?: QueryParamsRetrieve<ExternalPromotion>, options?: ResourcesConfig): Promise<ExternalPromotion>;
    _remove_tags(id: string | ExternalPromotion, triggerValue: string, params?: QueryParamsRetrieve<ExternalPromotion>, options?: ResourcesConfig): Promise<ExternalPromotion>;
    _reset_circuit(id: string | ExternalPromotion, params?: QueryParamsRetrieve<ExternalPromotion>, options?: ResourcesConfig): Promise<ExternalPromotion>;
    isExternalPromotion(resource: any): resource is ExternalPromotion;
    relationship(id: string | ResourceId | null): ExternalPromotionRel$5;
    relationshipToMany(...ids: string[]): ExternalPromotionRel$5[];
    type(): ExternalPromotionType;
}

type FixedAmountPromotionType = 'fixed_amount_promotions';
type FixedAmountPromotionRel$5 = ResourceRel & {
    type: FixedAmountPromotionType;
};
type MarketRel$c = ResourceRel & {
    type: MarketType;
};
type OrderAmountPromotionRuleRel$6 = ResourceRel & {
    type: OrderAmountPromotionRuleType;
};
type SkuListPromotionRuleRel$6 = ResourceRel & {
    type: SkuListPromotionRuleType;
};
type CouponCodesPromotionRuleRel$7 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type CustomPromotionRuleRel$6 = ResourceRel & {
    type: CustomPromotionRuleType;
};
type SkuListRel$7 = ResourceRel & {
    type: SkuListType;
};
type TagRel$d = ResourceRel & {
    type: TagType;
};
type FixedAmountPromotionSort = Pick<FixedAmountPromotion, 'id' | 'name' | 'currency_code' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at'> & ResourceSort;
interface FixedAmountPromotion extends Resource {
    readonly type: FixedAmountPromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The discount fixed amount to be applied, in cents.
     * @example ```1000```
     */
    fixed_amount_cents: number;
    /**
     * The discount fixed amount to be applied, float.
     * @example ```10```
     */
    fixed_amount_float?: number | null;
    /**
     * The discount fixed amount to be applied, formatted.
     * @example ```"€10,00"```
     */
    formatted_fixed_amount?: string | null;
    market?: Market | null;
    promotion_rules?: PromotionRule[] | null;
    order_amount_promotion_rule?: OrderAmountPromotionRule | null;
    sku_list_promotion_rule?: SkuListPromotionRule | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    custom_promotion_rule?: CustomPromotionRule | null;
    sku_list?: SkuList | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
    skus?: Sku[] | null;
}
interface FixedAmountPromotionCreate extends ResourceCreate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * The discount fixed amount to be applied, in cents.
     * @example ```1000```
     */
    fixed_amount_cents: number;
    market?: MarketRel$c | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$6 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$6 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$7 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$6 | null;
    sku_list?: SkuListRel$7 | null;
    tags?: TagRel$d[] | null;
}
interface FixedAmountPromotionUpdate extends ResourceUpdate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    /**
     * The discount fixed amount to be applied, in cents.
     * @example ```1000```
     */
    fixed_amount_cents?: number | null;
    market?: MarketRel$c | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$6 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$6 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$7 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$6 | null;
    sku_list?: SkuListRel$7 | null;
    tags?: TagRel$d[] | null;
}
declare class FixedAmountPromotions extends ApiResource<FixedAmountPromotion> {
    static readonly TYPE: FixedAmountPromotionType;
    create(resource: FixedAmountPromotionCreate, params?: QueryParamsRetrieve<FixedAmountPromotion>, options?: ResourcesConfig): Promise<FixedAmountPromotion>;
    update(resource: FixedAmountPromotionUpdate, params?: QueryParamsRetrieve<FixedAmountPromotion>, options?: ResourcesConfig): Promise<FixedAmountPromotion>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    order_amount_promotion_rule(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    sku_list_promotion_rule(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    coupon_codes_promotion_rule(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    custom_promotion_rule(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    sku_list(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    coupons(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    skus(fixedAmountPromotionId: string | FixedAmountPromotion, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    _disable(id: string | FixedAmountPromotion, params?: QueryParamsRetrieve<FixedAmountPromotion>, options?: ResourcesConfig): Promise<FixedAmountPromotion>;
    _enable(id: string | FixedAmountPromotion, params?: QueryParamsRetrieve<FixedAmountPromotion>, options?: ResourcesConfig): Promise<FixedAmountPromotion>;
    _add_tags(id: string | FixedAmountPromotion, triggerValue: string, params?: QueryParamsRetrieve<FixedAmountPromotion>, options?: ResourcesConfig): Promise<FixedAmountPromotion>;
    _remove_tags(id: string | FixedAmountPromotion, triggerValue: string, params?: QueryParamsRetrieve<FixedAmountPromotion>, options?: ResourcesConfig): Promise<FixedAmountPromotion>;
    isFixedAmountPromotion(resource: any): resource is FixedAmountPromotion;
    relationship(id: string | ResourceId | null): FixedAmountPromotionRel$5;
    relationshipToMany(...ids: string[]): FixedAmountPromotionRel$5[];
    type(): FixedAmountPromotionType;
}

type FlexPromotionType = 'flex_promotions';
type FlexPromotionRel$5 = ResourceRel & {
    type: FlexPromotionType;
};
type CouponCodesPromotionRuleRel$6 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type TagRel$c = ResourceRel & {
    type: TagType;
};
type FlexPromotionSort = Pick<FlexPromotion, 'id' | 'name' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at'> & ResourceSort;
interface FlexPromotion extends Resource {
    readonly type: FlexPromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * The discount rule to be applied.
     * @example ```{}```
     */
    rules: Record<string, any>;
    /**
     * The rule outcomes.
     * @example ```[]```
     */
    rule_outcomes?: Record<string, any> | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The payload used to evaluate the rules.
     * @example ```{}```
     */
    resource_payload?: Record<string, any> | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface FlexPromotionCreate extends ResourceCreate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The discount rule to be applied.
     * @example ```{}```
     */
    rules: Record<string, any>;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$6 | null;
    tags?: TagRel$c[] | null;
}
interface FlexPromotionUpdate extends ResourceUpdate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The discount rule to be applied.
     * @example ```{}```
     */
    rules?: Record<string, any> | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$6 | null;
    tags?: TagRel$c[] | null;
}
declare class FlexPromotions extends ApiResource<FlexPromotion> {
    static readonly TYPE: FlexPromotionType;
    create(resource: FlexPromotionCreate, params?: QueryParamsRetrieve<FlexPromotion>, options?: ResourcesConfig): Promise<FlexPromotion>;
    update(resource: FlexPromotionUpdate, params?: QueryParamsRetrieve<FlexPromotion>, options?: ResourcesConfig): Promise<FlexPromotion>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    coupon_codes_promotion_rule(flexPromotionId: string | FlexPromotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    coupons(flexPromotionId: string | FlexPromotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(flexPromotionId: string | FlexPromotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(flexPromotionId: string | FlexPromotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(flexPromotionId: string | FlexPromotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(flexPromotionId: string | FlexPromotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _disable(id: string | FlexPromotion, params?: QueryParamsRetrieve<FlexPromotion>, options?: ResourcesConfig): Promise<FlexPromotion>;
    _enable(id: string | FlexPromotion, params?: QueryParamsRetrieve<FlexPromotion>, options?: ResourcesConfig): Promise<FlexPromotion>;
    _add_tags(id: string | FlexPromotion, triggerValue: string, params?: QueryParamsRetrieve<FlexPromotion>, options?: ResourcesConfig): Promise<FlexPromotion>;
    _remove_tags(id: string | FlexPromotion, triggerValue: string, params?: QueryParamsRetrieve<FlexPromotion>, options?: ResourcesConfig): Promise<FlexPromotion>;
    isFlexPromotion(resource: any): resource is FlexPromotion;
    relationship(id: string | ResourceId | null): FlexPromotionRel$5;
    relationshipToMany(...ids: string[]): FlexPromotionRel$5[];
    type(): FlexPromotionType;
}

type PromotionRuleType = 'promotion_rules';
type PromotionRuleRel = ResourceRel & {
    type: PromotionRuleType;
};
type PromotionRuleSort = Pick<PromotionRule, 'id'> & ResourceSort;
interface PromotionRule extends Resource {
    readonly type: PromotionRuleType;
    promotion?: PercentageDiscountPromotion | FreeShippingPromotion | BuyXPayYPromotion | FreeGiftPromotion | FixedPricePromotion | ExternalPromotion | FixedAmountPromotion | FlexPromotion | null;
    versions?: Version[] | null;
}
declare class PromotionRules extends ApiResource<PromotionRule> {
    static readonly TYPE: PromotionRuleType;
    versions(promotionRuleId: string | PromotionRule, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isPromotionRule(resource: any): resource is PromotionRule;
    relationship(id: string | ResourceId | null): PromotionRuleRel;
    relationshipToMany(...ids: string[]): PromotionRuleRel[];
    type(): PromotionRuleType;
}

type FixedPricePromotionType = 'fixed_price_promotions';
type FixedPricePromotionRel$5 = ResourceRel & {
    type: FixedPricePromotionType;
};
type MarketRel$b = ResourceRel & {
    type: MarketType;
};
type OrderAmountPromotionRuleRel$5 = ResourceRel & {
    type: OrderAmountPromotionRuleType;
};
type SkuListPromotionRuleRel$5 = ResourceRel & {
    type: SkuListPromotionRuleType;
};
type CouponCodesPromotionRuleRel$5 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type CustomPromotionRuleRel$5 = ResourceRel & {
    type: CustomPromotionRuleType;
};
type SkuListRel$6 = ResourceRel & {
    type: SkuListType;
};
type TagRel$b = ResourceRel & {
    type: TagType;
};
type FixedPricePromotionSort = Pick<FixedPricePromotion, 'id' | 'name' | 'currency_code' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at'> & ResourceSort;
interface FixedPricePromotion extends Resource {
    readonly type: FixedPricePromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The price fixed amount to be applied on matching SKUs, in cents.
     * @example ```1000```
     */
    fixed_amount_cents: number;
    /**
     * The discount fixed amount to be applied, float.
     * @example ```10```
     */
    fixed_amount_float?: number | null;
    /**
     * The discount fixed amount to be applied, formatted.
     * @example ```"€10,00"```
     */
    formatted_fixed_amount?: string | null;
    market?: Market | null;
    promotion_rules?: PromotionRule[] | null;
    order_amount_promotion_rule?: OrderAmountPromotionRule | null;
    sku_list_promotion_rule?: SkuListPromotionRule | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    custom_promotion_rule?: CustomPromotionRule | null;
    sku_list?: SkuList | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
    skus?: Sku[] | null;
}
interface FixedPricePromotionCreate extends ResourceCreate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * The price fixed amount to be applied on matching SKUs, in cents.
     * @example ```1000```
     */
    fixed_amount_cents: number;
    market?: MarketRel$b | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$5 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$5 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$5 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$5 | null;
    sku_list: SkuListRel$6;
    tags?: TagRel$b[] | null;
}
interface FixedPricePromotionUpdate extends ResourceUpdate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    /**
     * The price fixed amount to be applied on matching SKUs, in cents.
     * @example ```1000```
     */
    fixed_amount_cents?: number | null;
    market?: MarketRel$b | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$5 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$5 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$5 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$5 | null;
    sku_list?: SkuListRel$6 | null;
    tags?: TagRel$b[] | null;
}
declare class FixedPricePromotions extends ApiResource<FixedPricePromotion> {
    static readonly TYPE: FixedPricePromotionType;
    create(resource: FixedPricePromotionCreate, params?: QueryParamsRetrieve<FixedPricePromotion>, options?: ResourcesConfig): Promise<FixedPricePromotion>;
    update(resource: FixedPricePromotionUpdate, params?: QueryParamsRetrieve<FixedPricePromotion>, options?: ResourcesConfig): Promise<FixedPricePromotion>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    order_amount_promotion_rule(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    sku_list_promotion_rule(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    coupon_codes_promotion_rule(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    custom_promotion_rule(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    sku_list(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    coupons(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    skus(fixedPricePromotionId: string | FixedPricePromotion, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    _disable(id: string | FixedPricePromotion, params?: QueryParamsRetrieve<FixedPricePromotion>, options?: ResourcesConfig): Promise<FixedPricePromotion>;
    _enable(id: string | FixedPricePromotion, params?: QueryParamsRetrieve<FixedPricePromotion>, options?: ResourcesConfig): Promise<FixedPricePromotion>;
    _add_tags(id: string | FixedPricePromotion, triggerValue: string, params?: QueryParamsRetrieve<FixedPricePromotion>, options?: ResourcesConfig): Promise<FixedPricePromotion>;
    _remove_tags(id: string | FixedPricePromotion, triggerValue: string, params?: QueryParamsRetrieve<FixedPricePromotion>, options?: ResourcesConfig): Promise<FixedPricePromotion>;
    isFixedPricePromotion(resource: any): resource is FixedPricePromotion;
    relationship(id: string | ResourceId | null): FixedPricePromotionRel$5;
    relationshipToMany(...ids: string[]): FixedPricePromotionRel$5[];
    type(): FixedPricePromotionType;
}

type CustomPromotionRuleType = 'custom_promotion_rules';
type CustomPromotionRuleRel$4 = ResourceRel & {
    type: CustomPromotionRuleType;
};
type PercentageDiscountPromotionRel$5 = ResourceRel & {
    type: PercentageDiscountPromotionType;
};
type FreeShippingPromotionRel$5 = ResourceRel & {
    type: FreeShippingPromotionType;
};
type BuyXPayYPromotionRel$5 = ResourceRel & {
    type: BuyXPayYPromotionType;
};
type FreeGiftPromotionRel$5 = ResourceRel & {
    type: FreeGiftPromotionType;
};
type FixedPricePromotionRel$4 = ResourceRel & {
    type: FixedPricePromotionType;
};
type ExternalPromotionRel$4 = ResourceRel & {
    type: ExternalPromotionType;
};
type FixedAmountPromotionRel$4 = ResourceRel & {
    type: FixedAmountPromotionType;
};
type FlexPromotionRel$4 = ResourceRel & {
    type: FlexPromotionType;
};
type CustomPromotionRuleSort = Pick<CustomPromotionRule, 'id'> & ResourceSort;
interface CustomPromotionRule extends Resource {
    readonly type: CustomPromotionRuleType;
    /**
     * The filters used to trigger promotion on the matching order and its relationships attributes.
     * @example ```{"status_eq":"pending","line_items_sku_code_eq":"AAA"}```
     */
    filters?: Record<string, any> | null;
    promotion?: PercentageDiscountPromotion | FreeShippingPromotion | BuyXPayYPromotion | FreeGiftPromotion | FixedPricePromotion | ExternalPromotion | FixedAmountPromotion | FlexPromotion | null;
    versions?: Version[] | null;
}
interface CustomPromotionRuleCreate extends ResourceCreate {
    /**
     * The filters used to trigger promotion on the matching order and its relationships attributes.
     * @example ```{"status_eq":"pending","line_items_sku_code_eq":"AAA"}```
     */
    filters?: Record<string, any> | null;
    promotion: PercentageDiscountPromotionRel$5 | FreeShippingPromotionRel$5 | BuyXPayYPromotionRel$5 | FreeGiftPromotionRel$5 | FixedPricePromotionRel$4 | ExternalPromotionRel$4 | FixedAmountPromotionRel$4 | FlexPromotionRel$4;
}
interface CustomPromotionRuleUpdate extends ResourceUpdate {
    /**
     * The filters used to trigger promotion on the matching order and its relationships attributes.
     * @example ```{"status_eq":"pending","line_items_sku_code_eq":"AAA"}```
     */
    filters?: Record<string, any> | null;
    promotion?: PercentageDiscountPromotionRel$5 | FreeShippingPromotionRel$5 | BuyXPayYPromotionRel$5 | FreeGiftPromotionRel$5 | FixedPricePromotionRel$4 | ExternalPromotionRel$4 | FixedAmountPromotionRel$4 | FlexPromotionRel$4 | null;
}
declare class CustomPromotionRules extends ApiResource<CustomPromotionRule> {
    static readonly TYPE: CustomPromotionRuleType;
    create(resource: CustomPromotionRuleCreate, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    update(resource: CustomPromotionRuleUpdate, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    versions(customPromotionRuleId: string | CustomPromotionRule, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isCustomPromotionRule(resource: any): resource is CustomPromotionRule;
    relationship(id: string | ResourceId | null): CustomPromotionRuleRel$4;
    relationshipToMany(...ids: string[]): CustomPromotionRuleRel$4[];
    type(): CustomPromotionRuleType;
}

type FreeGiftPromotionType = 'free_gift_promotions';
type FreeGiftPromotionRel$4 = ResourceRel & {
    type: FreeGiftPromotionType;
};
type MarketRel$a = ResourceRel & {
    type: MarketType;
};
type OrderAmountPromotionRuleRel$4 = ResourceRel & {
    type: OrderAmountPromotionRuleType;
};
type SkuListPromotionRuleRel$4 = ResourceRel & {
    type: SkuListPromotionRuleType;
};
type CouponCodesPromotionRuleRel$4 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type CustomPromotionRuleRel$3 = ResourceRel & {
    type: CustomPromotionRuleType;
};
type SkuListRel$5 = ResourceRel & {
    type: SkuListType;
};
type TagRel$a = ResourceRel & {
    type: TagType;
};
type FreeGiftPromotionSort = Pick<FreeGiftPromotion, 'id' | 'name' | 'currency_code' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at'> & ResourceSort;
interface FreeGiftPromotion extends Resource {
    readonly type: FreeGiftPromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The max quantity of free gifts globally applicable by the promotion.
     * @example ```3```
     */
    max_quantity?: number | null;
    market?: Market | null;
    promotion_rules?: PromotionRule[] | null;
    order_amount_promotion_rule?: OrderAmountPromotionRule | null;
    sku_list_promotion_rule?: SkuListPromotionRule | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    custom_promotion_rule?: CustomPromotionRule | null;
    sku_list?: SkuList | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
    skus?: Sku[] | null;
}
interface FreeGiftPromotionCreate extends ResourceCreate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * The max quantity of free gifts globally applicable by the promotion.
     * @example ```3```
     */
    max_quantity?: number | null;
    market?: MarketRel$a | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$4 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$4 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$4 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$3 | null;
    sku_list: SkuListRel$5;
    tags?: TagRel$a[] | null;
}
interface FreeGiftPromotionUpdate extends ResourceUpdate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    /**
     * The max quantity of free gifts globally applicable by the promotion.
     * @example ```3```
     */
    max_quantity?: number | null;
    market?: MarketRel$a | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$4 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$4 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$4 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$3 | null;
    sku_list?: SkuListRel$5 | null;
    tags?: TagRel$a[] | null;
}
declare class FreeGiftPromotions extends ApiResource<FreeGiftPromotion> {
    static readonly TYPE: FreeGiftPromotionType;
    create(resource: FreeGiftPromotionCreate, params?: QueryParamsRetrieve<FreeGiftPromotion>, options?: ResourcesConfig): Promise<FreeGiftPromotion>;
    update(resource: FreeGiftPromotionUpdate, params?: QueryParamsRetrieve<FreeGiftPromotion>, options?: ResourcesConfig): Promise<FreeGiftPromotion>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    order_amount_promotion_rule(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    sku_list_promotion_rule(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    coupon_codes_promotion_rule(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    custom_promotion_rule(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    sku_list(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    coupons(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    skus(freeGiftPromotionId: string | FreeGiftPromotion, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    _disable(id: string | FreeGiftPromotion, params?: QueryParamsRetrieve<FreeGiftPromotion>, options?: ResourcesConfig): Promise<FreeGiftPromotion>;
    _enable(id: string | FreeGiftPromotion, params?: QueryParamsRetrieve<FreeGiftPromotion>, options?: ResourcesConfig): Promise<FreeGiftPromotion>;
    _add_tags(id: string | FreeGiftPromotion, triggerValue: string, params?: QueryParamsRetrieve<FreeGiftPromotion>, options?: ResourcesConfig): Promise<FreeGiftPromotion>;
    _remove_tags(id: string | FreeGiftPromotion, triggerValue: string, params?: QueryParamsRetrieve<FreeGiftPromotion>, options?: ResourcesConfig): Promise<FreeGiftPromotion>;
    isFreeGiftPromotion(resource: any): resource is FreeGiftPromotion;
    relationship(id: string | ResourceId | null): FreeGiftPromotionRel$4;
    relationshipToMany(...ids: string[]): FreeGiftPromotionRel$4[];
    type(): FreeGiftPromotionType;
}

type CouponCodesPromotionRuleType = 'coupon_codes_promotion_rules';
type CouponCodesPromotionRuleRel$3 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type PercentageDiscountPromotionRel$4 = ResourceRel & {
    type: PercentageDiscountPromotionType;
};
type FreeShippingPromotionRel$4 = ResourceRel & {
    type: FreeShippingPromotionType;
};
type BuyXPayYPromotionRel$4 = ResourceRel & {
    type: BuyXPayYPromotionType;
};
type FreeGiftPromotionRel$3 = ResourceRel & {
    type: FreeGiftPromotionType;
};
type FixedPricePromotionRel$3 = ResourceRel & {
    type: FixedPricePromotionType;
};
type ExternalPromotionRel$3 = ResourceRel & {
    type: ExternalPromotionType;
};
type FixedAmountPromotionRel$3 = ResourceRel & {
    type: FixedAmountPromotionType;
};
type FlexPromotionRel$3 = ResourceRel & {
    type: FlexPromotionType;
};
type CouponRel = ResourceRel & {
    type: CouponType;
};
type CouponCodesPromotionRuleSort = Pick<CouponCodesPromotionRule, 'id'> & ResourceSort;
interface CouponCodesPromotionRule extends Resource {
    readonly type: CouponCodesPromotionRuleType;
    promotion?: PercentageDiscountPromotion | FreeShippingPromotion | BuyXPayYPromotion | FreeGiftPromotion | FixedPricePromotion | ExternalPromotion | FixedAmountPromotion | FlexPromotion | null;
    versions?: Version[] | null;
    coupons?: Coupon[] | null;
}
interface CouponCodesPromotionRuleCreate extends ResourceCreate {
    promotion: PercentageDiscountPromotionRel$4 | FreeShippingPromotionRel$4 | BuyXPayYPromotionRel$4 | FreeGiftPromotionRel$3 | FixedPricePromotionRel$3 | ExternalPromotionRel$3 | FixedAmountPromotionRel$3 | FlexPromotionRel$3;
    coupons?: CouponRel[] | null;
}
interface CouponCodesPromotionRuleUpdate extends ResourceUpdate {
    promotion?: PercentageDiscountPromotionRel$4 | FreeShippingPromotionRel$4 | BuyXPayYPromotionRel$4 | FreeGiftPromotionRel$3 | FixedPricePromotionRel$3 | ExternalPromotionRel$3 | FixedAmountPromotionRel$3 | FlexPromotionRel$3 | null;
    coupons?: CouponRel[] | null;
}
declare class CouponCodesPromotionRules extends ApiResource<CouponCodesPromotionRule> {
    static readonly TYPE: CouponCodesPromotionRuleType;
    create(resource: CouponCodesPromotionRuleCreate, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    update(resource: CouponCodesPromotionRuleUpdate, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    versions(couponCodesPromotionRuleId: string | CouponCodesPromotionRule, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    coupons(couponCodesPromotionRuleId: string | CouponCodesPromotionRule, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    isCouponCodesPromotionRule(resource: any): resource is CouponCodesPromotionRule;
    relationship(id: string | ResourceId | null): CouponCodesPromotionRuleRel$3;
    relationshipToMany(...ids: string[]): CouponCodesPromotionRuleRel$3[];
    type(): CouponCodesPromotionRuleType;
}

type BuyXPayYPromotionType = 'buy_x_pay_y_promotions';
type BuyXPayYPromotionRel$3 = ResourceRel & {
    type: BuyXPayYPromotionType;
};
type MarketRel$9 = ResourceRel & {
    type: MarketType;
};
type OrderAmountPromotionRuleRel$3 = ResourceRel & {
    type: OrderAmountPromotionRuleType;
};
type SkuListPromotionRuleRel$3 = ResourceRel & {
    type: SkuListPromotionRuleType;
};
type CouponCodesPromotionRuleRel$2 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type CustomPromotionRuleRel$2 = ResourceRel & {
    type: CustomPromotionRuleType;
};
type SkuListRel$4 = ResourceRel & {
    type: SkuListType;
};
type TagRel$9 = ResourceRel & {
    type: TagType;
};
type BuyXPayYPromotionSort = Pick<BuyXPayYPromotion, 'id' | 'name' | 'currency_code' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at' | 'x' | 'y'> & ResourceSort;
interface BuyXPayYPromotion extends Resource {
    readonly type: BuyXPayYPromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The quantity which defines the threshold for free items (works by multiple of x).
     * @example ```3```
     */
    x: number;
    /**
     * The quantity which defines how many items you get for free, with the formula x-y.
     * @example ```2```
     */
    y: number;
    /**
     * Indicates if the cheapest items are discounted, allowing all of the SKUs in the associated list to be eligible for counting.
     * @example ```true```
     */
    cheapest_free?: boolean | null;
    market?: Market | null;
    promotion_rules?: PromotionRule[] | null;
    order_amount_promotion_rule?: OrderAmountPromotionRule | null;
    sku_list_promotion_rule?: SkuListPromotionRule | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    custom_promotion_rule?: CustomPromotionRule | null;
    sku_list?: SkuList | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
    skus?: Sku[] | null;
}
interface BuyXPayYPromotionCreate extends ResourceCreate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * The quantity which defines the threshold for free items (works by multiple of x).
     * @example ```3```
     */
    x: number;
    /**
     * The quantity which defines how many items you get for free, with the formula x-y.
     * @example ```2```
     */
    y: number;
    /**
     * Indicates if the cheapest items are discounted, allowing all of the SKUs in the associated list to be eligible for counting.
     * @example ```true```
     */
    cheapest_free?: boolean | null;
    market?: MarketRel$9 | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$3 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$3 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$2 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$2 | null;
    sku_list: SkuListRel$4;
    tags?: TagRel$9[] | null;
}
interface BuyXPayYPromotionUpdate extends ResourceUpdate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    /**
     * The quantity which defines the threshold for free items (works by multiple of x).
     * @example ```3```
     */
    x?: number | null;
    /**
     * The quantity which defines how many items you get for free, with the formula x-y.
     * @example ```2```
     */
    y?: number | null;
    /**
     * Indicates if the cheapest items are discounted, allowing all of the SKUs in the associated list to be eligible for counting.
     * @example ```true```
     */
    cheapest_free?: boolean | null;
    market?: MarketRel$9 | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$3 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$3 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$2 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$2 | null;
    sku_list?: SkuListRel$4 | null;
    tags?: TagRel$9[] | null;
}
declare class BuyXPayYPromotions extends ApiResource<BuyXPayYPromotion> {
    static readonly TYPE: BuyXPayYPromotionType;
    create(resource: BuyXPayYPromotionCreate, params?: QueryParamsRetrieve<BuyXPayYPromotion>, options?: ResourcesConfig): Promise<BuyXPayYPromotion>;
    update(resource: BuyXPayYPromotionUpdate, params?: QueryParamsRetrieve<BuyXPayYPromotion>, options?: ResourcesConfig): Promise<BuyXPayYPromotion>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    order_amount_promotion_rule(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    sku_list_promotion_rule(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    coupon_codes_promotion_rule(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    custom_promotion_rule(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    sku_list(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    coupons(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    skus(buyXPayYPromotionId: string | BuyXPayYPromotion, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    _disable(id: string | BuyXPayYPromotion, params?: QueryParamsRetrieve<BuyXPayYPromotion>, options?: ResourcesConfig): Promise<BuyXPayYPromotion>;
    _enable(id: string | BuyXPayYPromotion, params?: QueryParamsRetrieve<BuyXPayYPromotion>, options?: ResourcesConfig): Promise<BuyXPayYPromotion>;
    _add_tags(id: string | BuyXPayYPromotion, triggerValue: string, params?: QueryParamsRetrieve<BuyXPayYPromotion>, options?: ResourcesConfig): Promise<BuyXPayYPromotion>;
    _remove_tags(id: string | BuyXPayYPromotion, triggerValue: string, params?: QueryParamsRetrieve<BuyXPayYPromotion>, options?: ResourcesConfig): Promise<BuyXPayYPromotion>;
    isBuyXPayYPromotion(resource: any): resource is BuyXPayYPromotion;
    relationship(id: string | ResourceId | null): BuyXPayYPromotionRel$3;
    relationshipToMany(...ids: string[]): BuyXPayYPromotionRel$3[];
    type(): BuyXPayYPromotionType;
}

type SkuListPromotionRuleType = 'sku_list_promotion_rules';
type SkuListPromotionRuleRel$2 = ResourceRel & {
    type: SkuListPromotionRuleType;
};
type PercentageDiscountPromotionRel$3 = ResourceRel & {
    type: PercentageDiscountPromotionType;
};
type FreeShippingPromotionRel$3 = ResourceRel & {
    type: FreeShippingPromotionType;
};
type BuyXPayYPromotionRel$2 = ResourceRel & {
    type: BuyXPayYPromotionType;
};
type FreeGiftPromotionRel$2 = ResourceRel & {
    type: FreeGiftPromotionType;
};
type FixedPricePromotionRel$2 = ResourceRel & {
    type: FixedPricePromotionType;
};
type ExternalPromotionRel$2 = ResourceRel & {
    type: ExternalPromotionType;
};
type FixedAmountPromotionRel$2 = ResourceRel & {
    type: FixedAmountPromotionType;
};
type FlexPromotionRel$2 = ResourceRel & {
    type: FlexPromotionType;
};
type SkuListRel$3 = ResourceRel & {
    type: SkuListType;
};
type SkuListPromotionRuleSort = Pick<SkuListPromotionRule, 'id'> & ResourceSort;
interface SkuListPromotionRule extends Resource {
    readonly type: SkuListPromotionRuleType;
    /**
     * Indicates if the rule is activated only when all of the SKUs of the list is also part of the order.
     * @example ```true```
     */
    all_skus?: boolean | null;
    /**
     * The min quantity of SKUs of the list that must be also part of the order. If positive, overwrites the 'all_skus' option. When the SKU list is manual, its items quantities are honoured.
     * @example ```3```
     */
    min_quantity?: number | null;
    promotion?: PercentageDiscountPromotion | FreeShippingPromotion | BuyXPayYPromotion | FreeGiftPromotion | FixedPricePromotion | ExternalPromotion | FixedAmountPromotion | FlexPromotion | null;
    versions?: Version[] | null;
    sku_list?: SkuList | null;
    skus?: Sku[] | null;
}
interface SkuListPromotionRuleCreate extends ResourceCreate {
    /**
     * Indicates if the rule is activated only when all of the SKUs of the list is also part of the order.
     * @example ```true```
     */
    all_skus?: boolean | null;
    /**
     * The min quantity of SKUs of the list that must be also part of the order. If positive, overwrites the 'all_skus' option. When the SKU list is manual, its items quantities are honoured.
     * @example ```3```
     */
    min_quantity?: number | null;
    promotion: PercentageDiscountPromotionRel$3 | FreeShippingPromotionRel$3 | BuyXPayYPromotionRel$2 | FreeGiftPromotionRel$2 | FixedPricePromotionRel$2 | ExternalPromotionRel$2 | FixedAmountPromotionRel$2 | FlexPromotionRel$2;
    sku_list?: SkuListRel$3 | null;
}
interface SkuListPromotionRuleUpdate extends ResourceUpdate {
    /**
     * Indicates if the rule is activated only when all of the SKUs of the list is also part of the order.
     * @example ```true```
     */
    all_skus?: boolean | null;
    /**
     * The min quantity of SKUs of the list that must be also part of the order. If positive, overwrites the 'all_skus' option. When the SKU list is manual, its items quantities are honoured.
     * @example ```3```
     */
    min_quantity?: number | null;
    promotion?: PercentageDiscountPromotionRel$3 | FreeShippingPromotionRel$3 | BuyXPayYPromotionRel$2 | FreeGiftPromotionRel$2 | FixedPricePromotionRel$2 | ExternalPromotionRel$2 | FixedAmountPromotionRel$2 | FlexPromotionRel$2 | null;
    sku_list?: SkuListRel$3 | null;
}
declare class SkuListPromotionRules extends ApiResource<SkuListPromotionRule> {
    static readonly TYPE: SkuListPromotionRuleType;
    create(resource: SkuListPromotionRuleCreate, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    update(resource: SkuListPromotionRuleUpdate, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    versions(skuListPromotionRuleId: string | SkuListPromotionRule, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    sku_list(skuListPromotionRuleId: string | SkuListPromotionRule, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    skus(skuListPromotionRuleId: string | SkuListPromotionRule, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    isSkuListPromotionRule(resource: any): resource is SkuListPromotionRule;
    relationship(id: string | ResourceId | null): SkuListPromotionRuleRel$2;
    relationshipToMany(...ids: string[]): SkuListPromotionRuleRel$2[];
    type(): SkuListPromotionRuleType;
}

type FreeShippingPromotionType = 'free_shipping_promotions';
type FreeShippingPromotionRel$2 = ResourceRel & {
    type: FreeShippingPromotionType;
};
type MarketRel$8 = ResourceRel & {
    type: MarketType;
};
type OrderAmountPromotionRuleRel$2 = ResourceRel & {
    type: OrderAmountPromotionRuleType;
};
type SkuListPromotionRuleRel$1 = ResourceRel & {
    type: SkuListPromotionRuleType;
};
type CouponCodesPromotionRuleRel$1 = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type CustomPromotionRuleRel$1 = ResourceRel & {
    type: CustomPromotionRuleType;
};
type SkuListRel$2 = ResourceRel & {
    type: SkuListType;
};
type TagRel$8 = ResourceRel & {
    type: TagType;
};
type FreeShippingPromotionSort = Pick<FreeShippingPromotion, 'id' | 'name' | 'currency_code' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at'> & ResourceSort;
interface FreeShippingPromotion extends Resource {
    readonly type: FreeShippingPromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    market?: Market | null;
    promotion_rules?: PromotionRule[] | null;
    order_amount_promotion_rule?: OrderAmountPromotionRule | null;
    sku_list_promotion_rule?: SkuListPromotionRule | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    custom_promotion_rule?: CustomPromotionRule | null;
    sku_list?: SkuList | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface FreeShippingPromotionCreate extends ResourceCreate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    market?: MarketRel$8 | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$2 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$1 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$1 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$1 | null;
    sku_list?: SkuListRel$2 | null;
    tags?: TagRel$8[] | null;
}
interface FreeShippingPromotionUpdate extends ResourceUpdate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    market?: MarketRel$8 | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel$2 | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel$1 | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel$1 | null;
    custom_promotion_rule?: CustomPromotionRuleRel$1 | null;
    sku_list?: SkuListRel$2 | null;
    tags?: TagRel$8[] | null;
}
declare class FreeShippingPromotions extends ApiResource<FreeShippingPromotion> {
    static readonly TYPE: FreeShippingPromotionType;
    create(resource: FreeShippingPromotionCreate, params?: QueryParamsRetrieve<FreeShippingPromotion>, options?: ResourcesConfig): Promise<FreeShippingPromotion>;
    update(resource: FreeShippingPromotionUpdate, params?: QueryParamsRetrieve<FreeShippingPromotion>, options?: ResourcesConfig): Promise<FreeShippingPromotion>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    order_amount_promotion_rule(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    sku_list_promotion_rule(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    coupon_codes_promotion_rule(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    custom_promotion_rule(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    sku_list(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    coupons(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(freeShippingPromotionId: string | FreeShippingPromotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _disable(id: string | FreeShippingPromotion, params?: QueryParamsRetrieve<FreeShippingPromotion>, options?: ResourcesConfig): Promise<FreeShippingPromotion>;
    _enable(id: string | FreeShippingPromotion, params?: QueryParamsRetrieve<FreeShippingPromotion>, options?: ResourcesConfig): Promise<FreeShippingPromotion>;
    _add_tags(id: string | FreeShippingPromotion, triggerValue: string, params?: QueryParamsRetrieve<FreeShippingPromotion>, options?: ResourcesConfig): Promise<FreeShippingPromotion>;
    _remove_tags(id: string | FreeShippingPromotion, triggerValue: string, params?: QueryParamsRetrieve<FreeShippingPromotion>, options?: ResourcesConfig): Promise<FreeShippingPromotion>;
    isFreeShippingPromotion(resource: any): resource is FreeShippingPromotion;
    relationship(id: string | ResourceId | null): FreeShippingPromotionRel$2;
    relationshipToMany(...ids: string[]): FreeShippingPromotionRel$2[];
    type(): FreeShippingPromotionType;
}

type OrderAmountPromotionRuleType = 'order_amount_promotion_rules';
type OrderAmountPromotionRuleRel$1 = ResourceRel & {
    type: OrderAmountPromotionRuleType;
};
type PercentageDiscountPromotionRel$2 = ResourceRel & {
    type: PercentageDiscountPromotionType;
};
type FreeShippingPromotionRel$1 = ResourceRel & {
    type: FreeShippingPromotionType;
};
type BuyXPayYPromotionRel$1 = ResourceRel & {
    type: BuyXPayYPromotionType;
};
type FreeGiftPromotionRel$1 = ResourceRel & {
    type: FreeGiftPromotionType;
};
type FixedPricePromotionRel$1 = ResourceRel & {
    type: FixedPricePromotionType;
};
type ExternalPromotionRel$1 = ResourceRel & {
    type: ExternalPromotionType;
};
type FixedAmountPromotionRel$1 = ResourceRel & {
    type: FixedAmountPromotionType;
};
type FlexPromotionRel$1 = ResourceRel & {
    type: FlexPromotionType;
};
type OrderAmountPromotionRuleSort = Pick<OrderAmountPromotionRule, 'id'> & ResourceSort;
interface OrderAmountPromotionRule extends Resource {
    readonly type: OrderAmountPromotionRuleType;
    /**
     * Apply the promotion only when order is over this amount, in cents.
     * @example ```1000```
     */
    order_amount_cents?: number | null;
    /**
     * Apply the promotion only when order is over this amount, float.
     * @example ```10```
     */
    order_amount_float?: number | null;
    /**
     * Apply the promotion only when order is over this amount, formatted.
     * @example ```"€10,00"```
     */
    formatted_order_amount?: string | null;
    /**
     * Send this attribute if you want to compare the specified amount with order's subtotal (excluding discounts, if any).
     * @example ```true```
     */
    use_subtotal?: boolean | null;
    promotion?: PercentageDiscountPromotion | FreeShippingPromotion | BuyXPayYPromotion | FreeGiftPromotion | FixedPricePromotion | ExternalPromotion | FixedAmountPromotion | FlexPromotion | null;
    versions?: Version[] | null;
}
interface OrderAmountPromotionRuleCreate extends ResourceCreate {
    /**
     * Apply the promotion only when order is over this amount, in cents.
     * @example ```1000```
     */
    order_amount_cents?: number | null;
    /**
     * Send this attribute if you want to compare the specified amount with order's subtotal (excluding discounts, if any).
     * @example ```true```
     */
    use_subtotal?: boolean | null;
    promotion: PercentageDiscountPromotionRel$2 | FreeShippingPromotionRel$1 | BuyXPayYPromotionRel$1 | FreeGiftPromotionRel$1 | FixedPricePromotionRel$1 | ExternalPromotionRel$1 | FixedAmountPromotionRel$1 | FlexPromotionRel$1;
}
interface OrderAmountPromotionRuleUpdate extends ResourceUpdate {
    /**
     * Apply the promotion only when order is over this amount, in cents.
     * @example ```1000```
     */
    order_amount_cents?: number | null;
    /**
     * Send this attribute if you want to compare the specified amount with order's subtotal (excluding discounts, if any).
     * @example ```true```
     */
    use_subtotal?: boolean | null;
    promotion?: PercentageDiscountPromotionRel$2 | FreeShippingPromotionRel$1 | BuyXPayYPromotionRel$1 | FreeGiftPromotionRel$1 | FixedPricePromotionRel$1 | ExternalPromotionRel$1 | FixedAmountPromotionRel$1 | FlexPromotionRel$1 | null;
}
declare class OrderAmountPromotionRules extends ApiResource<OrderAmountPromotionRule> {
    static readonly TYPE: OrderAmountPromotionRuleType;
    create(resource: OrderAmountPromotionRuleCreate, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    update(resource: OrderAmountPromotionRuleUpdate, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    versions(orderAmountPromotionRuleId: string | OrderAmountPromotionRule, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isOrderAmountPromotionRule(resource: any): resource is OrderAmountPromotionRule;
    relationship(id: string | ResourceId | null): OrderAmountPromotionRuleRel$1;
    relationshipToMany(...ids: string[]): OrderAmountPromotionRuleRel$1[];
    type(): OrderAmountPromotionRuleType;
}

type PercentageDiscountPromotionType = 'percentage_discount_promotions';
type PercentageDiscountPromotionRel$1 = ResourceRel & {
    type: PercentageDiscountPromotionType;
};
type MarketRel$7 = ResourceRel & {
    type: MarketType;
};
type OrderAmountPromotionRuleRel = ResourceRel & {
    type: OrderAmountPromotionRuleType;
};
type SkuListPromotionRuleRel = ResourceRel & {
    type: SkuListPromotionRuleType;
};
type CouponCodesPromotionRuleRel = ResourceRel & {
    type: CouponCodesPromotionRuleType;
};
type CustomPromotionRuleRel = ResourceRel & {
    type: CustomPromotionRuleType;
};
type SkuListRel$1 = ResourceRel & {
    type: SkuListType;
};
type TagRel$7 = ResourceRel & {
    type: TagType;
};
type PercentageDiscountPromotionSort = Pick<PercentageDiscountPromotion, 'id' | 'name' | 'currency_code' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at'> & ResourceSort;
interface PercentageDiscountPromotion extends Resource {
    readonly type: PercentageDiscountPromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The discount percentage to be applied.
     * @example ```10```
     */
    percentage: number;
    market?: Market | null;
    promotion_rules?: PromotionRule[] | null;
    order_amount_promotion_rule?: OrderAmountPromotionRule | null;
    sku_list_promotion_rule?: SkuListPromotionRule | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    custom_promotion_rule?: CustomPromotionRule | null;
    sku_list?: SkuList | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
    skus?: Sku[] | null;
}
interface PercentageDiscountPromotionCreate extends ResourceCreate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * The discount percentage to be applied.
     * @example ```10```
     */
    percentage: number;
    market?: MarketRel$7 | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel | null;
    custom_promotion_rule?: CustomPromotionRuleRel | null;
    sku_list?: SkuListRel$1 | null;
    tags?: TagRel$7[] | null;
}
interface PercentageDiscountPromotionUpdate extends ResourceUpdate {
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    /**
     * The discount percentage to be applied.
     * @example ```10```
     */
    percentage?: number | null;
    market?: MarketRel$7 | null;
    order_amount_promotion_rule?: OrderAmountPromotionRuleRel | null;
    sku_list_promotion_rule?: SkuListPromotionRuleRel | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRuleRel | null;
    custom_promotion_rule?: CustomPromotionRuleRel | null;
    sku_list?: SkuListRel$1 | null;
    tags?: TagRel$7[] | null;
}
declare class PercentageDiscountPromotions extends ApiResource<PercentageDiscountPromotion> {
    static readonly TYPE: PercentageDiscountPromotionType;
    create(resource: PercentageDiscountPromotionCreate, params?: QueryParamsRetrieve<PercentageDiscountPromotion>, options?: ResourcesConfig): Promise<PercentageDiscountPromotion>;
    update(resource: PercentageDiscountPromotionUpdate, params?: QueryParamsRetrieve<PercentageDiscountPromotion>, options?: ResourcesConfig): Promise<PercentageDiscountPromotion>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    order_amount_promotion_rule(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    sku_list_promotion_rule(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    coupon_codes_promotion_rule(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    custom_promotion_rule(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    sku_list(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    coupons(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    skus(percentageDiscountPromotionId: string | PercentageDiscountPromotion, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    _disable(id: string | PercentageDiscountPromotion, params?: QueryParamsRetrieve<PercentageDiscountPromotion>, options?: ResourcesConfig): Promise<PercentageDiscountPromotion>;
    _enable(id: string | PercentageDiscountPromotion, params?: QueryParamsRetrieve<PercentageDiscountPromotion>, options?: ResourcesConfig): Promise<PercentageDiscountPromotion>;
    _add_tags(id: string | PercentageDiscountPromotion, triggerValue: string, params?: QueryParamsRetrieve<PercentageDiscountPromotion>, options?: ResourcesConfig): Promise<PercentageDiscountPromotion>;
    _remove_tags(id: string | PercentageDiscountPromotion, triggerValue: string, params?: QueryParamsRetrieve<PercentageDiscountPromotion>, options?: ResourcesConfig): Promise<PercentageDiscountPromotion>;
    isPercentageDiscountPromotion(resource: any): resource is PercentageDiscountPromotion;
    relationship(id: string | ResourceId | null): PercentageDiscountPromotionRel$1;
    relationshipToMany(...ids: string[]): PercentageDiscountPromotionRel$1[];
    type(): PercentageDiscountPromotionType;
}

type LineItemType = 'line_items';
type LineItemRel$1 = ResourceRel & {
    type: LineItemType;
};
type OrderRel$7 = ResourceRel & {
    type: OrderType;
};
type SkuRel$8 = ResourceRel & {
    type: SkuType;
};
type BundleRel$2 = ResourceRel & {
    type: BundleType;
};
type GiftCardRel$1 = ResourceRel & {
    type: GiftCardType;
};
type ShipmentRel$5 = ResourceRel & {
    type: ShipmentType;
};
type PaymentMethodRel$3 = ResourceRel & {
    type: PaymentMethodType;
};
type AdjustmentRel$1 = ResourceRel & {
    type: AdjustmentType;
};
type DiscountEngineItemRel = ResourceRel & {
    type: DiscountEngineItemType;
};
type PercentageDiscountPromotionRel = ResourceRel & {
    type: PercentageDiscountPromotionType;
};
type FreeShippingPromotionRel = ResourceRel & {
    type: FreeShippingPromotionType;
};
type BuyXPayYPromotionRel = ResourceRel & {
    type: BuyXPayYPromotionType;
};
type FreeGiftPromotionRel = ResourceRel & {
    type: FreeGiftPromotionType;
};
type FixedPricePromotionRel = ResourceRel & {
    type: FixedPricePromotionType;
};
type ExternalPromotionRel = ResourceRel & {
    type: ExternalPromotionType;
};
type FixedAmountPromotionRel = ResourceRel & {
    type: FixedAmountPromotionType;
};
type FlexPromotionRel = ResourceRel & {
    type: FlexPromotionType;
};
type TagRel$6 = ResourceRel & {
    type: TagType;
};
type LineItemSort = Pick<LineItem, 'id' | 'currency_code' | 'unit_amount_cents' | 'compare_at_amount_cents' | 'options_amount_cents' | 'discount_cents' | 'total_amount_cents' | 'tax_amount_cents' | 'name' | 'item_type' | 'circuit_state' | 'circuit_failure_count'> & ResourceSort;
interface LineItem extends Resource {
    readonly type: LineItemType;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The line item quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * When creating or updating a new line item, set this attribute to '1' if you want to inject the unit_amount_cents price from an external source. Any successive price computation will be done externally, until the attribute is reset to '0'.
     * @example ```true```
     */
    _external_price?: boolean | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, automatically inherited from the order's market.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The unit amount of the line item, in cents. Can be specified only via an integration application, or when the item is missing, otherwise is automatically computed by using one of the available methods. Cannot be passed by sales channels.
     * @example ```10000```
     */
    unit_amount_cents?: number | null;
    /**
     * The unit amount of the line item, float. This can be useful to track the purchase on thrid party systems, e.g Google Analyitcs Enhanced Ecommerce.
     * @example ```100```
     */
    unit_amount_float?: number | null;
    /**
     * The unit amount of the line item, formatted. This can be useful to display the amount with currency in you views.
     * @example ```"€100,00"```
     */
    formatted_unit_amount?: string | null;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * The compared price amount, float.
     * @example ```130```
     */
    compare_at_amount_float?: number | null;
    /**
     * The compared price amount, formatted.
     * @example ```"€130,00"```
     */
    formatted_compare_at_amount?: string | null;
    /**
     * The options amount of the line item, in cents. Cannot be passed by sales channels.
     * @example ```1000```
     */
    options_amount_cents?: number | null;
    /**
     * The options amount of the line item, float.
     * @example ```10```
     */
    options_amount_float?: number | null;
    /**
     * The options amount of the line item, formatted.
     * @example ```"€10,00"```
     */
    formatted_options_amount?: string | null;
    /**
     * The discount applied to the line item, in cents. When you apply a discount to an order, this is automatically calculated basing on the line item total_amount_cents value.
     * @example ```-1000```
     */
    discount_cents?: number | null;
    /**
     * The discount applied to the line item, float. When you apply a discount to an order, this is automatically calculated basing on the line item total_amount_cents value.
     * @example ```10```
     */
    discount_float?: number | null;
    /**
     * The discount applied to the line item, fromatted. When you apply a discount to an order, this is automatically calculated basing on the line item total_amount_cents value.
     * @example ```"€10,00"```
     */
    formatted_discount?: string | null;
    /**
     * Calculated as unit amount x quantity + options amount, in cents.
     * @example ```18800```
     */
    total_amount_cents?: number | null;
    /**
     * Calculated as unit amount x quantity + options amount, float. This can be useful to track the purchase on thrid party systems, e.g Google Analyitcs Enhanced Ecommerce.
     * @example ```188```
     */
    total_amount_float: number;
    /**
     * Calculated as unit amount x quantity + options amount, formatted. This can be useful to display the amount with currency in you views.
     * @example ```"€188,00"```
     */
    formatted_total_amount?: string | null;
    /**
     * The collected tax amount, otherwise calculated as total amount cents - discount cent * tax rate, in cents.
     * @example ```1880```
     */
    tax_amount_cents?: number | null;
    /**
     * The collected tax amount, otherwise calculated as total amount cents - discount cent * tax rate, float.
     * @example ```18.8```
     */
    tax_amount_float: number;
    /**
     * The collected tax amount, otherwise calculated as total amount cents - discount cent * tax rate, formatted.
     * @example ```"€18,80"```
     */
    formatted_tax_amount?: string | null;
    /**
     * The name of the line item. When blank, it gets populated with the name of the associated item (if present).
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name?: string | null;
    /**
     * The image_url of the line item. When blank, it gets populated with the image_url of the associated item (if present, SKU only).
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * The discount breakdown for this line item (if calculated).
     * @example ```{"41":{"name":"10% ALL","cents":-900,"weight":0.416,"coupon_code":"XXXXXXXX"}}```
     */
    discount_breakdown?: Record<string, any> | null;
    /**
     * The tax rate for this line item (if calculated).
     * @example ```0.22```
     */
    tax_rate?: number | null;
    /**
     * The tax breakdown for this line item (if calculated).
     * @example ```{"id":"1234","city_amount":"0.0","state_amount":6.6,"city_tax_rate":0,"county_amount":2.78,"taxable_amount":139,"county_tax_rate":0.02,"tax_collectable":10.08,"special_tax_rate":0.005,"combined_tax_rate":0.0725,"city_taxable_amount":0,"state_sales_tax_rate":0.0475,"state_taxable_amount":139,"county_taxable_amount":139,"special_district_amount":0.7,"special_district_taxable_amount":139}```
     */
    tax_breakdown?: Record<string, any> | null;
    /**
     * The type of the associated item. One of 'skus', 'bundles', 'gift_cards', 'shipments', 'payment_methods', 'adjustments', 'discount_engine_items', 'percentage_discount_promotions', 'free_shipping_promotions', 'buy_x_pay_y_promotions', 'free_gift_promotions', 'fixed_price_promotions', 'external_promotions', 'fixed_amount_promotions', or 'flex_promotions'.
     * @example ```"skus"```
     */
    item_type?: 'skus' | 'bundles' | 'gift_cards' | 'shipments' | 'payment_methods' | 'adjustments' | 'discount_engine_items' | 'percentage_discount_promotions' | 'free_shipping_promotions' | 'buy_x_pay_y_promotions' | 'free_gift_promotions' | 'fixed_price_promotions' | 'external_promotions' | 'fixed_amount_promotions' | 'flex_promotions' | null;
    /**
     * The frequency which generates a subscription. Must be supported by existing associated subscription_model.
     * @example ```"monthly"```
     */
    frequency?: string | null;
    /**
     * The coupon code, if any, used to trigger this promotion line item. null for other line item types or if the promotion line item wasn't triggered by a coupon.
     * @example ```"SUMMERDISCOUNT"```
     */
    coupon_code?: string | null;
    /**
     * The rule outcomes.
     * @example ```[]```
     */
    rule_outcomes?: Record<string, any> | null;
    /**
     * The circuit breaker state, by default it is 'closed'. It can become 'open' once the number of consecutive failures overlaps the specified threshold, in such case no further calls to the failing callback are made.
     * @example ```"closed"```
     */
    circuit_state?: string | null;
    /**
     * The number of consecutive failures recorded by the circuit breaker associated to this resource, will be reset on first successful call to callback.
     * @example ```5```
     */
    circuit_failure_count?: number | null;
    order?: Order | null;
    item?: Sku | Bundle | GiftCard | Shipment | PaymentMethod | Adjustment | DiscountEngineItem | PercentageDiscountPromotion | FreeShippingPromotion | BuyXPayYPromotion | FreeGiftPromotion | FixedPricePromotion | ExternalPromotion | FixedAmountPromotion | FlexPromotion | null;
    sku?: Sku | null;
    bundle?: Bundle | null;
    adjustment?: Adjustment | null;
    gift_card?: GiftCard | null;
    shipment?: Shipment | null;
    payment_method?: PaymentMethod | null;
    line_item_options?: LineItemOption[] | null;
    return_line_items?: ReturnLineItem[] | null;
    stock_reservations?: StockReservation[] | null;
    stock_line_items?: StockLineItem[] | null;
    stock_transfers?: StockTransfer[] | null;
    notifications?: Notification[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
}
interface LineItemCreate extends ResourceCreate {
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The line item quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * When creating or updating a new line item, set this attribute to '1' if you want to inject the unit_amount_cents price from an external source. Any successive price computation will be done externally, until the attribute is reset to '0'.
     * @example ```true```
     */
    _external_price?: boolean | null;
    /**
     * When creating a new line item, set this attribute to '1' if you want to update the line item quantity (if present) instead of creating a new line item for the same SKU.
     * @example ```true```
     */
    _update_quantity?: boolean | null;
    /**
     * Send this attribute if you want to reserve the stock for the line item's SKUs quantity. Stock reservations expiration depends on the inventory model's cutoff. When used on update the existing active stock reservations are renewed. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reserve_stock?: boolean | null;
    /**
     * The unit amount of the line item, in cents. Can be specified only via an integration application, or when the item is missing, otherwise is automatically computed by using one of the available methods. Cannot be passed by sales channels.
     * @example ```10000```
     */
    unit_amount_cents?: number | null;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * The name of the line item. When blank, it gets populated with the name of the associated item (if present).
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name?: string | null;
    /**
     * The image_url of the line item. When blank, it gets populated with the image_url of the associated item (if present, SKU only).
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * The type of the associated item. One of 'skus', 'bundles', 'gift_cards', 'shipments', 'payment_methods', 'adjustments', 'discount_engine_items', 'percentage_discount_promotions', 'free_shipping_promotions', 'buy_x_pay_y_promotions', 'free_gift_promotions', 'fixed_price_promotions', 'external_promotions', 'fixed_amount_promotions', or 'flex_promotions'.
     * @example ```"skus"```
     */
    item_type?: 'skus' | 'bundles' | 'gift_cards' | 'shipments' | 'payment_methods' | 'adjustments' | 'discount_engine_items' | 'percentage_discount_promotions' | 'free_shipping_promotions' | 'buy_x_pay_y_promotions' | 'free_gift_promotions' | 'fixed_price_promotions' | 'external_promotions' | 'fixed_amount_promotions' | 'flex_promotions' | null;
    /**
     * The frequency which generates a subscription. Must be supported by existing associated subscription_model.
     * @example ```"monthly"```
     */
    frequency?: string | null;
    order: OrderRel$7;
    item?: SkuRel$8 | BundleRel$2 | GiftCardRel$1 | ShipmentRel$5 | PaymentMethodRel$3 | AdjustmentRel$1 | DiscountEngineItemRel | PercentageDiscountPromotionRel | FreeShippingPromotionRel | BuyXPayYPromotionRel | FreeGiftPromotionRel | FixedPricePromotionRel | ExternalPromotionRel | FixedAmountPromotionRel | FlexPromotionRel | null;
    tags?: TagRel$6[] | null;
}
interface LineItemUpdate extends ResourceUpdate {
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The line item quantity.
     * @example ```4```
     */
    quantity?: number | null;
    /**
     * When creating or updating a new line item, set this attribute to '1' if you want to inject the unit_amount_cents price from an external source. Any successive price computation will be done externally, until the attribute is reset to '0'.
     * @example ```true```
     */
    _external_price?: boolean | null;
    /**
     * Send this attribute if you want to reserve the stock for the line item's SKUs quantity. Stock reservations expiration depends on the inventory model's cutoff. When used on update the existing active stock reservations are renewed. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reserve_stock?: boolean | null;
    /**
     * The unit amount of the line item, in cents. Can be specified only via an integration application, or when the item is missing, otherwise is automatically computed by using one of the available methods. Cannot be passed by sales channels.
     * @example ```10000```
     */
    unit_amount_cents?: number | null;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * The options amount of the line item, in cents. Cannot be passed by sales channels.
     * @example ```1000```
     */
    options_amount_cents?: number | null;
    /**
     * The name of the line item. When blank, it gets populated with the name of the associated item (if present).
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name?: string | null;
    /**
     * The image_url of the line item. When blank, it gets populated with the image_url of the associated item (if present, SKU only).
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * The frequency which generates a subscription. Must be supported by existing associated subscription_model.
     * @example ```"monthly"```
     */
    frequency?: string | null;
    /**
     * Send this attribute if you want to reset the circuit breaker associated to this resource to 'closed' state and zero failures count. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reset_circuit?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    tags?: TagRel$6[] | null;
}
declare class LineItems extends ApiResource<LineItem> {
    static readonly TYPE: LineItemType;
    create(resource: LineItemCreate, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    update(resource: LineItemUpdate, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(lineItemId: string | LineItem, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    line_item_options(lineItemId: string | LineItem, params?: QueryParamsList<LineItemOption>, options?: ResourcesConfig): Promise<ListResponse<LineItemOption>>;
    return_line_items(lineItemId: string | LineItem, params?: QueryParamsList<ReturnLineItem>, options?: ResourcesConfig): Promise<ListResponse<ReturnLineItem>>;
    stock_reservations(lineItemId: string | LineItem, params?: QueryParamsList<StockReservation>, options?: ResourcesConfig): Promise<ListResponse<StockReservation>>;
    stock_line_items(lineItemId: string | LineItem, params?: QueryParamsList<StockLineItem>, options?: ResourcesConfig): Promise<ListResponse<StockLineItem>>;
    stock_transfers(lineItemId: string | LineItem, params?: QueryParamsList<StockTransfer>, options?: ResourcesConfig): Promise<ListResponse<StockTransfer>>;
    notifications(lineItemId: string | LineItem, params?: QueryParamsList<Notification>, options?: ResourcesConfig): Promise<ListResponse<Notification>>;
    events(lineItemId: string | LineItem, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(lineItemId: string | LineItem, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    _external_price(id: string | LineItem, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    _reserve_stock(id: string | LineItem, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    _reset_circuit(id: string | LineItem, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    _add_tags(id: string | LineItem, triggerValue: string, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    _remove_tags(id: string | LineItem, triggerValue: string, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    isLineItem(resource: any): resource is LineItem;
    relationship(id: string | ResourceId | null): LineItemRel$1;
    relationshipToMany(...ids: string[]): LineItemRel$1[];
    type(): LineItemType;
}

type OrderSubscriptionItemType = 'order_subscription_items';
type OrderSubscriptionItemRel = ResourceRel & {
    type: OrderSubscriptionItemType;
};
type OrderSubscriptionRel$2 = ResourceRel & {
    type: OrderSubscriptionType;
};
type SkuRel$7 = ResourceRel & {
    type: SkuType;
};
type BundleRel$1 = ResourceRel & {
    type: BundleType;
};
type AdjustmentRel = ResourceRel & {
    type: AdjustmentType;
};
type OrderSubscriptionItemSort = Pick<OrderSubscriptionItem, 'id' | 'quantity' | 'unit_amount_cents'> & ResourceSort;
interface OrderSubscriptionItem extends Resource {
    readonly type: OrderSubscriptionItemType;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The subscription item quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * The unit amount of the subscription item, in cents.
     * @example ```9900```
     */
    unit_amount_cents?: number | null;
    /**
     * The unit amount of the subscription item, float. This can be useful to track the purchase on thrid party systems, e.g Google Analyitcs Enhanced Ecommerce.
     * @example ```99```
     */
    unit_amount_float?: number | null;
    /**
     * The unit amount of the subscription item, formatted. This can be useful to display the amount with currency in you views.
     * @example ```"€99,00"```
     */
    formatted_unit_amount?: string | null;
    /**
     * Calculated as unit amount x quantity amount, in cents.
     * @example ```18800```
     */
    total_amount_cents?: number | null;
    /**
     * Calculated as unit amount x quantity amount, float. This can be useful to track the purchase on thrid party systems, e.g Google Analyitcs Enhanced Ecommerce.
     * @example ```188```
     */
    total_amount_float: number;
    /**
     * Calculated as unit amount x quantity amount, formatted. This can be useful to display the amount with currency in you views.
     * @example ```"€188,00"```
     */
    formatted_total_amount?: string | null;
    order_subscription?: OrderSubscription | null;
    item?: Sku | Bundle | Adjustment | null;
    sku?: Sku | null;
    bundle?: Bundle | null;
    adjustment?: Adjustment | null;
    source_line_item?: LineItem | null;
}
interface OrderSubscriptionItemCreate extends ResourceCreate {
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The subscription item quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * The unit amount of the subscription item, in cents.
     * @example ```9900```
     */
    unit_amount_cents?: number | null;
    order_subscription: OrderSubscriptionRel$2;
    item: SkuRel$7 | BundleRel$1 | AdjustmentRel;
    sku?: SkuRel$7 | null;
    bundle?: BundleRel$1 | null;
    adjustment?: AdjustmentRel | null;
}
interface OrderSubscriptionItemUpdate extends ResourceUpdate {
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The subscription item quantity.
     * @example ```4```
     */
    quantity?: number | null;
    /**
     * The unit amount of the subscription item, in cents.
     * @example ```9900```
     */
    unit_amount_cents?: number | null;
}
declare class OrderSubscriptionItems extends ApiResource<OrderSubscriptionItem> {
    static readonly TYPE: OrderSubscriptionItemType;
    create(resource: OrderSubscriptionItemCreate, params?: QueryParamsRetrieve<OrderSubscriptionItem>, options?: ResourcesConfig): Promise<OrderSubscriptionItem>;
    update(resource: OrderSubscriptionItemUpdate, params?: QueryParamsRetrieve<OrderSubscriptionItem>, options?: ResourcesConfig): Promise<OrderSubscriptionItem>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order_subscription(orderSubscriptionItemId: string | OrderSubscriptionItem, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    source_line_item(orderSubscriptionItemId: string | OrderSubscriptionItem, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    isOrderSubscriptionItem(resource: any): resource is OrderSubscriptionItem;
    relationship(id: string | ResourceId | null): OrderSubscriptionItemRel;
    relationshipToMany(...ids: string[]): OrderSubscriptionItemRel[];
    type(): OrderSubscriptionItemType;
}

type OrderFactoryType = 'order_factories';
type OrderFactoryRel = ResourceRel & {
    type: OrderFactoryType;
};
type OrderFactorySort = Pick<OrderFactory, 'id' | 'status' | 'started_at' | 'completed_at' | 'failed_at' | 'errors_count'> & ResourceSort;
interface OrderFactory extends Resource {
    readonly type: OrderFactoryType;
    /**
     * The order factory status. One of 'pending' (default), 'in_progress', 'aborted', 'failed', or 'completed'.
     * @example ```"in_progress"```
     */
    status: 'pending' | 'in_progress' | 'aborted' | 'failed' | 'completed';
    /**
     * Time at which the order copy was started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    started_at?: string | null;
    /**
     * Time at which the order copy was completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    completed_at?: string | null;
    /**
     * Time at which the order copy has failed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    failed_at?: string | null;
    /**
     * Contains the order copy errors, if any.
     * @example ```{"status":["cannot transition from draft to placed"]}```
     */
    errors_log?: Record<string, any> | null;
    /**
     * Indicates the number of copy errors, if any.
     * @example ```2```
     */
    errors_count?: number | null;
    /**
     * Indicates if the target order must be placed upon copy.
     * @example ```true```
     */
    place_target_order?: boolean | null;
    /**
     * Indicates if the payment source within the source order customer's wallet must be copied.
     * @example ```true```
     */
    reuse_wallet?: boolean | null;
    source_order?: Order | null;
    target_order?: Order | null;
    events?: Event[] | null;
}
declare class OrderFactories extends ApiResource<OrderFactory> {
    static readonly TYPE: OrderFactoryType;
    source_order(orderFactoryId: string | OrderFactory, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    target_order(orderFactoryId: string | OrderFactory, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    events(orderFactoryId: string | OrderFactory, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    isOrderFactory(resource: any): resource is OrderFactory;
    relationship(id: string | ResourceId | null): OrderFactoryRel;
    relationshipToMany(...ids: string[]): OrderFactoryRel[];
    type(): OrderFactoryType;
}

type RecurringOrderCopyType = 'recurring_order_copies';
type RecurringOrderCopyRel = ResourceRel & {
    type: RecurringOrderCopyType;
};
type OrderRel$6 = ResourceRel & {
    type: OrderType;
};
type OrderSubscriptionRel$1 = ResourceRel & {
    type: OrderSubscriptionType;
};
type RecurringOrderCopySort = Pick<RecurringOrderCopy, 'id' | 'status' | 'started_at' | 'completed_at' | 'failed_at' | 'errors_count'> & ResourceSort;
interface RecurringOrderCopy extends Resource {
    readonly type: RecurringOrderCopyType;
    /**
     * The order factory status. One of 'pending' (default), 'in_progress', 'aborted', 'failed', or 'completed'.
     * @example ```"in_progress"```
     */
    status: 'pending' | 'in_progress' | 'aborted' | 'failed' | 'completed';
    /**
     * Time at which the order copy was started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    started_at?: string | null;
    /**
     * Time at which the order copy was completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    completed_at?: string | null;
    /**
     * Time at which the order copy has failed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    failed_at?: string | null;
    /**
     * Contains the order copy errors, if any.
     * @example ```{"status":["cannot transition from draft to placed"]}```
     */
    errors_log?: Record<string, any> | null;
    /**
     * Indicates the number of copy errors, if any.
     * @example ```2```
     */
    errors_count?: number | null;
    /**
     * Indicates if the target order must be placed upon copy.
     * @example ```true```
     */
    place_target_order?: boolean | null;
    /**
     * Indicates if the payment source within the source order customer's wallet must be copied.
     * @example ```true```
     */
    reuse_wallet?: boolean | null;
    source_order?: Order | null;
    target_order?: Order | null;
    events?: Event[] | null;
    order_subscription?: OrderSubscription | null;
}
interface RecurringOrderCopyCreate extends ResourceCreate {
    /**
     * Indicates if the target order must be placed upon copy.
     * @example ```true```
     */
    place_target_order?: boolean | null;
    /**
     * Indicates if the payment source within the source order customer's wallet must be copied.
     * @example ```true```
     */
    reuse_wallet?: boolean | null;
    source_order: OrderRel$6;
    order_subscription: OrderSubscriptionRel$1;
}
type RecurringOrderCopyUpdate = ResourceUpdate;
declare class RecurringOrderCopies extends ApiResource<RecurringOrderCopy> {
    static readonly TYPE: RecurringOrderCopyType;
    create(resource: RecurringOrderCopyCreate, params?: QueryParamsRetrieve<RecurringOrderCopy>, options?: ResourcesConfig): Promise<RecurringOrderCopy>;
    update(resource: RecurringOrderCopyUpdate, params?: QueryParamsRetrieve<RecurringOrderCopy>, options?: ResourcesConfig): Promise<RecurringOrderCopy>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    source_order(recurringOrderCopyId: string | RecurringOrderCopy, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    target_order(recurringOrderCopyId: string | RecurringOrderCopy, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    events(recurringOrderCopyId: string | RecurringOrderCopy, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    order_subscription(recurringOrderCopyId: string | RecurringOrderCopy, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    isRecurringOrderCopy(resource: any): resource is RecurringOrderCopy;
    relationship(id: string | ResourceId | null): RecurringOrderCopyRel;
    relationshipToMany(...ids: string[]): RecurringOrderCopyRel[];
    type(): RecurringOrderCopyType;
}

type OrderSubscriptionType = 'order_subscriptions';
type OrderSubscriptionRel = ResourceRel & {
    type: OrderSubscriptionType;
};
type MarketRel$6 = ResourceRel & {
    type: MarketType;
};
type OrderRel$5 = ResourceRel & {
    type: OrderType;
};
type TagRel$5 = ResourceRel & {
    type: TagType;
};
type CustomerPaymentSourceRel = ResourceRel & {
    type: CustomerPaymentSourceType;
};
type OrderSubscriptionSort = Pick<OrderSubscription, 'id' | 'number' | 'status' | 'frequency' | 'starts_at' | 'expires_at' | 'last_run_at' | 'next_run_at' | 'occurrencies' | 'errors_count' | 'succeeded_on_last_run'> & ResourceSort;
interface OrderSubscription extends Resource {
    readonly type: OrderSubscriptionType;
    /**
     * Unique identifier for the subscription (numeric).
     * @example ```"1234"```
     */
    number?: string | null;
    /**
     * The subscription status. One of 'draft' (default), 'inactive', 'active', 'running', or 'cancelled'.
     * @example ```"draft"```
     */
    status: 'draft' | 'inactive' | 'active' | 'running' | 'cancelled';
    /**
     * The frequency of the subscription. Use one of the supported within 'hourly', 'daily', 'weekly', 'monthly', 'two-month', 'three-month', 'four-month', 'six-month', 'yearly', or provide your custom crontab expression (min unit is hour). Must be supported by existing associated subscription_model.
     * @example ```"monthly"```
     */
    frequency: string;
    /**
     * Indicates if the subscription will be activated considering the placed source order as its first run.
     * @example ```true```
     */
    activate_by_source_order?: boolean | null;
    /**
     * Indicates if the subscription created orders are automatically placed at the end of the copy.
     * @example ```true```
     */
    place_target_order?: boolean | null;
    /**
     * Indicates the number of hours the renewal alert will be triggered before the subscription next run. Must be included between 1 and 720 hours.
     * @example ```1```
     */
    renewal_alert_period?: number | null;
    /**
     * The email address of the customer, if any, associated to the source order.
     * @example ```"john@example.com"```
     */
    customer_email?: string | null;
    /**
     * The activation date/time of this subscription.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this subscription (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The date/time of the subscription last run.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    last_run_at?: string | null;
    /**
     * The date/time of the subscription next run. Can be updated but only in the future, to copy with frequency changes.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    next_run_at?: string | null;
    /**
     * The number of times this subscription has run.
     * @example ```2```
     */
    occurrencies?: number | null;
    /**
     * Indicates the number of subscription errors, if any.
     * @example ```3```
     */
    errors_count?: number | null;
    /**
     * Indicates if the subscription has succeeded on its last run.
     * @example ```true```
     */
    succeeded_on_last_run?: boolean | null;
    market?: Market | null;
    subscription_model?: SubscriptionModel | null;
    source_order?: Order | null;
    customer?: Customer | null;
    customer_payment_source?: CustomerPaymentSource | null;
    order_subscription_items?: OrderSubscriptionItem[] | null;
    order_factories?: OrderFactory[] | null;
    recurring_order_copies?: RecurringOrderCopy[] | null;
    orders?: Order[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface OrderSubscriptionCreate extends ResourceCreate {
    /**
     * The frequency of the subscription. Use one of the supported within 'hourly', 'daily', 'weekly', 'monthly', 'two-month', 'three-month', 'four-month', 'six-month', 'yearly', or provide your custom crontab expression (min unit is hour). Must be supported by existing associated subscription_model.
     * @example ```"monthly"```
     */
    frequency: string;
    /**
     * Indicates if the subscription will be activated considering the placed source order as its first run.
     * @example ```true```
     */
    activate_by_source_order?: boolean | null;
    /**
     * Indicates if the subscription created orders are automatically placed at the end of the copy.
     * @example ```true```
     */
    place_target_order?: boolean | null;
    /**
     * Indicates the number of hours the renewal alert will be triggered before the subscription next run. Must be included between 1 and 720 hours.
     * @example ```1```
     */
    renewal_alert_period?: number | null;
    /**
     * The activation date/time of this subscription.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this subscription (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    market?: MarketRel$6 | null;
    source_order: OrderRel$5;
    tags?: TagRel$5[] | null;
}
interface OrderSubscriptionUpdate extends ResourceUpdate {
    /**
     * The frequency of the subscription. Use one of the supported within 'hourly', 'daily', 'weekly', 'monthly', 'two-month', 'three-month', 'four-month', 'six-month', 'yearly', or provide your custom crontab expression (min unit is hour). Must be supported by existing associated subscription_model.
     * @example ```"monthly"```
     */
    frequency?: string | null;
    /**
     * Indicates if the subscription will be activated considering the placed source order as its first run.
     * @example ```true```
     */
    activate_by_source_order?: boolean | null;
    /**
     * Indicates if the subscription created orders are automatically placed at the end of the copy.
     * @example ```true```
     */
    place_target_order?: boolean | null;
    /**
     * Indicates the number of hours the renewal alert will be triggered before the subscription next run. Must be included between 1 and 720 hours.
     * @example ```1```
     */
    renewal_alert_period?: number | null;
    /**
     * The expiration date/time of this subscription (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * The date/time of the subscription next run. Can be updated but only in the future, to copy with frequency changes.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    next_run_at?: string | null;
    /**
     * Send this attribute if you want to mark this subscription as active.
     * @example ```true```
     */
    _activate?: boolean | null;
    /**
     * Send this attribute if you want to mark this subscription as inactive.
     * @example ```true```
     */
    _deactivate?: boolean | null;
    /**
     * Send this attribute if you want to mark this subscription as cancelled.
     * @example ```true```
     */
    _cancel?: boolean | null;
    /**
     * Send this attribute if you want to convert a manual subscription to an automatic one. A subscription model is required before conversion.
     * @example ```true```
     */
    _convert?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    customer_payment_source?: CustomerPaymentSourceRel | null;
    tags?: TagRel$5[] | null;
}
declare class OrderSubscriptions extends ApiResource<OrderSubscription> {
    static readonly TYPE: OrderSubscriptionType;
    create(resource: OrderSubscriptionCreate, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    update(resource: OrderSubscriptionUpdate, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    subscription_model(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsRetrieve<SubscriptionModel>, options?: ResourcesConfig): Promise<SubscriptionModel>;
    source_order(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    customer(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    customer_payment_source(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsRetrieve<CustomerPaymentSource>, options?: ResourcesConfig): Promise<CustomerPaymentSource>;
    order_subscription_items(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsList<OrderSubscriptionItem>, options?: ResourcesConfig): Promise<ListResponse<OrderSubscriptionItem>>;
    order_factories(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsList<OrderFactory>, options?: ResourcesConfig): Promise<ListResponse<OrderFactory>>;
    recurring_order_copies(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsList<RecurringOrderCopy>, options?: ResourcesConfig): Promise<ListResponse<RecurringOrderCopy>>;
    orders(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsList<Order>, options?: ResourcesConfig): Promise<ListResponse<Order>>;
    events(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(orderSubscriptionId: string | OrderSubscription, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _activate(id: string | OrderSubscription, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    _deactivate(id: string | OrderSubscription, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    _cancel(id: string | OrderSubscription, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    _convert(id: string | OrderSubscription, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    _add_tags(id: string | OrderSubscription, triggerValue: string, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    _remove_tags(id: string | OrderSubscription, triggerValue: string, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    isOrderSubscription(resource: any): resource is OrderSubscription;
    relationship(id: string | ResourceId | null): OrderSubscriptionRel;
    relationshipToMany(...ids: string[]): OrderSubscriptionRel[];
    type(): OrderSubscriptionType;
}

type CustomerType = 'customers';
type CustomerRel$3 = ResourceRel & {
    type: CustomerType;
};
type CustomerGroupRel$2 = ResourceRel & {
    type: CustomerGroupType;
};
type TagRel$4 = ResourceRel & {
    type: TagType;
};
type CustomerSort = Pick<Customer, 'id' | 'email' | 'status' | 'total_orders_count' | 'anonymization_status'> & ResourceSort;
interface Customer extends Resource {
    readonly type: CustomerType;
    /**
     * The customer's email address.
     * @example ```"john@example.com"```
     */
    email: string;
    /**
     * The customer's status. One of 'prospect' (default), 'acquired', or 'repeat'.
     * @example ```"prospect"```
     */
    status: 'prospect' | 'acquired' | 'repeat';
    /**
     * Indicates if the customer has a password.
     */
    has_password?: boolean | null;
    /**
     * The total number of orders for the customer.
     * @example ```6```
     */
    total_orders_count?: number | null;
    /**
     * A reference to uniquely identify the shopper during payment sessions.
     * @example ```"xxx-yyy-zzz"```
     */
    shopper_reference?: string | null;
    /**
     * A reference to uniquely identify the customer on any connected external services.
     * @example ```"xxx-yyy-zzz"```
     */
    profile_id?: string | null;
    /**
     * A specific code to identify the tax exemption reason for this customer.
     * @example ```"xxx-yyy-zzz"```
     */
    tax_exemption_code?: string | null;
    /**
     * The custom_claim attached to the current JWT (if any).
     * @example ```{}```
     */
    jwt_custom_claim?: Record<string, any> | null;
    /**
     * The anonymization info object.
     * @example ```{"status":"requested","requested_at":"2025-03-15 11:39:21 UTC","requester":{"id":"fdgt56hh","first_name":"Travis","last_name":"Muller","email":"test@labadie.test"}}```
     */
    anonymization_info?: Record<string, any> | null;
    /**
     * Status of the current anonymization request (if any).
     * @example ```"requested"```
     */
    anonymization_status?: string | null;
    customer_group?: CustomerGroup | null;
    customer_addresses?: CustomerAddress[] | null;
    customer_payment_sources?: CustomerPaymentSource[] | null;
    customer_subscriptions?: CustomerSubscription[] | null;
    orders?: Order[] | null;
    order_subscriptions?: OrderSubscription[] | null;
    returns?: Return[] | null;
    sku_lists?: SkuList[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    jwt_customer?: Customer | null;
    jwt_markets?: Market[] | null;
    jwt_stock_locations?: StockLocation[] | null;
}
interface CustomerCreate extends ResourceCreate {
    /**
     * The customer's email address.
     * @example ```"john@example.com"```
     */
    email: string;
    /**
     * The customer's password. Initiate a customer password reset flow if you need to change it.
     * @example ```"secret"```
     */
    password?: string | null;
    /**
     * A reference to uniquely identify the shopper during payment sessions.
     * @example ```"xxx-yyy-zzz"```
     */
    shopper_reference?: string | null;
    /**
     * A reference to uniquely identify the customer on any connected external services.
     * @example ```"xxx-yyy-zzz"```
     */
    profile_id?: string | null;
    /**
     * A specific code to identify the tax exemption reason for this customer.
     * @example ```"xxx-yyy-zzz"```
     */
    tax_exemption_code?: string | null;
    customer_group?: CustomerGroupRel$2 | null;
    tags?: TagRel$4[] | null;
}
interface CustomerUpdate extends ResourceUpdate {
    /**
     * The customer's email address.
     * @example ```"john@example.com"```
     */
    email?: string | null;
    /**
     * The customer's password. Initiate a customer password reset flow if you need to change it.
     * @example ```"secret"```
     */
    password?: string | null;
    /**
     * A reference to uniquely identify the shopper during payment sessions.
     * @example ```"xxx-yyy-zzz"```
     */
    shopper_reference?: string | null;
    /**
     * A reference to uniquely identify the customer on any connected external services.
     * @example ```"xxx-yyy-zzz"```
     */
    profile_id?: string | null;
    /**
     * A specific code to identify the tax exemption reason for this customer.
     * @example ```"xxx-yyy-zzz"```
     */
    tax_exemption_code?: string | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    /**
     * Send this attribute if you want to trigger anonymization. Cannot be passed by sales channels.
     * @example ```true```
     */
    _request_anonymization?: boolean | null;
    /**
     * Send this attribute if you want to trigger a cancellation of anonymization. Cannot be passed by sales channels.
     * @example ```true```
     */
    _cancel_anonymization?: boolean | null;
    customer_group?: CustomerGroupRel$2 | null;
    tags?: TagRel$4[] | null;
}
declare class Customers extends ApiResource<Customer> {
    static readonly TYPE: CustomerType;
    create(resource: CustomerCreate, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    update(resource: CustomerUpdate, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customer_group(customerId: string | Customer, params?: QueryParamsRetrieve<CustomerGroup>, options?: ResourcesConfig): Promise<CustomerGroup>;
    customer_addresses(customerId: string | Customer, params?: QueryParamsList<CustomerAddress>, options?: ResourcesConfig): Promise<ListResponse<CustomerAddress>>;
    customer_payment_sources(customerId: string | Customer, params?: QueryParamsList<CustomerPaymentSource>, options?: ResourcesConfig): Promise<ListResponse<CustomerPaymentSource>>;
    customer_subscriptions(customerId: string | Customer, params?: QueryParamsList<CustomerSubscription>, options?: ResourcesConfig): Promise<ListResponse<CustomerSubscription>>;
    orders(customerId: string | Customer, params?: QueryParamsList<Order>, options?: ResourcesConfig): Promise<ListResponse<Order>>;
    order_subscriptions(customerId: string | Customer, params?: QueryParamsList<OrderSubscription>, options?: ResourcesConfig): Promise<ListResponse<OrderSubscription>>;
    returns(customerId: string | Customer, params?: QueryParamsList<Return>, options?: ResourcesConfig): Promise<ListResponse<Return>>;
    sku_lists(customerId: string | Customer, params?: QueryParamsList<SkuList>, options?: ResourcesConfig): Promise<ListResponse<SkuList>>;
    attachments(customerId: string | Customer, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(customerId: string | Customer, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(customerId: string | Customer, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    jwt_customer(customerId: string | Customer, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    jwt_markets(customerId: string | Customer, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    jwt_stock_locations(customerId: string | Customer, params?: QueryParamsList<StockLocation>, options?: ResourcesConfig): Promise<ListResponse<StockLocation>>;
    _add_tags(id: string | Customer, triggerValue: string, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    _remove_tags(id: string | Customer, triggerValue: string, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    _request_anonymization(id: string | Customer, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    _cancel_anonymization(id: string | Customer, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    isCustomer(resource: any): resource is Customer;
    relationship(id: string | ResourceId | null): CustomerRel$3;
    relationshipToMany(...ids: string[]): CustomerRel$3[];
    type(): CustomerType;
}

type PaymentOptionType = 'payment_options';
type PaymentOptionRel$1 = ResourceRel & {
    type: PaymentOptionType;
};
type OrderRel$4 = ResourceRel & {
    type: OrderType;
};
type PaymentOptionSort = Pick<PaymentOption, 'id' | 'name' | 'payment_source_type'> & ResourceSort;
interface PaymentOption extends Resource {
    readonly type: PaymentOptionType;
    /**
     * The payment option's name. Wehn blank is inherited by payment source type.
     * @example ```"Stripe Payment Option"```
     */
    name?: string | null;
    /**
     * The payment source type. One of 'adyen_payments', 'axerve_payments', 'braintree_payments', 'checkout_com_payments', 'external_payments', 'klarna_payments', 'paypal_payments', 'satispay_payments', 'stripe_payments', or 'wire_transfers'.
     * @example ```"stripe_payments"```
     */
    payment_source_type: 'adyen_payments' | 'axerve_payments' | 'braintree_payments' | 'checkout_com_payments' | 'external_payments' | 'klarna_payments' | 'paypal_payments' | 'satispay_payments' | 'stripe_payments' | 'wire_transfers';
    /**
     * The payment options data to be added to the payment source payload. Check payment specific API for more details.
     * @example ```{"application_fee_amount":1000,"on_behalf_of":"pm_xxx"}```
     */
    data: Record<string, any>;
    order?: Order | null;
    attachments?: Attachment[] | null;
}
interface PaymentOptionCreate extends ResourceCreate {
    /**
     * The payment option's name. Wehn blank is inherited by payment source type.
     * @example ```"Stripe Payment Option"```
     */
    name?: string | null;
    /**
     * The payment source type. One of 'adyen_payments', 'axerve_payments', 'braintree_payments', 'checkout_com_payments', 'external_payments', 'klarna_payments', 'paypal_payments', 'satispay_payments', 'stripe_payments', or 'wire_transfers'.
     * @example ```"stripe_payments"```
     */
    payment_source_type: 'adyen_payments' | 'axerve_payments' | 'braintree_payments' | 'checkout_com_payments' | 'external_payments' | 'klarna_payments' | 'paypal_payments' | 'satispay_payments' | 'stripe_payments' | 'wire_transfers';
    /**
     * The payment options data to be added to the payment source payload. Check payment specific API for more details.
     * @example ```{"application_fee_amount":1000,"on_behalf_of":"pm_xxx"}```
     */
    data: Record<string, any>;
    order: OrderRel$4;
}
interface PaymentOptionUpdate extends ResourceUpdate {
    /**
     * The payment option's name. Wehn blank is inherited by payment source type.
     * @example ```"Stripe Payment Option"```
     */
    name?: string | null;
    /**
     * The payment options data to be added to the payment source payload. Check payment specific API for more details.
     * @example ```{"application_fee_amount":1000,"on_behalf_of":"pm_xxx"}```
     */
    data?: Record<string, any> | null;
    order?: OrderRel$4 | null;
}
declare class PaymentOptions extends ApiResource<PaymentOption> {
    static readonly TYPE: PaymentOptionType;
    create(resource: PaymentOptionCreate, params?: QueryParamsRetrieve<PaymentOption>, options?: ResourcesConfig): Promise<PaymentOption>;
    update(resource: PaymentOptionUpdate, params?: QueryParamsRetrieve<PaymentOption>, options?: ResourcesConfig): Promise<PaymentOption>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(paymentOptionId: string | PaymentOption, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    attachments(paymentOptionId: string | PaymentOption, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    isPaymentOption(resource: any): resource is PaymentOption;
    relationship(id: string | ResourceId | null): PaymentOptionRel$1;
    relationshipToMany(...ids: string[]): PaymentOptionRel$1[];
    type(): PaymentOptionType;
}

type OrderCopyType = 'order_copies';
type OrderCopyRel = ResourceRel & {
    type: OrderCopyType;
};
type OrderRel$3 = ResourceRel & {
    type: OrderType;
};
type OrderCopySort = Pick<OrderCopy, 'id' | 'status' | 'started_at' | 'completed_at' | 'failed_at' | 'errors_count'> & ResourceSort;
interface OrderCopy extends Resource {
    readonly type: OrderCopyType;
    /**
     * The order factory status. One of 'pending' (default), 'in_progress', 'aborted', 'failed', or 'completed'.
     * @example ```"in_progress"```
     */
    status: 'pending' | 'in_progress' | 'aborted' | 'failed' | 'completed';
    /**
     * Time at which the order copy was started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    started_at?: string | null;
    /**
     * Time at which the order copy was completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    completed_at?: string | null;
    /**
     * Time at which the order copy has failed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    failed_at?: string | null;
    /**
     * Contains the order copy errors, if any.
     * @example ```{"status":["cannot transition from draft to placed"]}```
     */
    errors_log?: Record<string, any> | null;
    /**
     * Indicates the number of copy errors, if any.
     * @example ```2```
     */
    errors_count?: number | null;
    /**
     * Indicates if the target order must be placed upon copy.
     * @example ```true```
     */
    place_target_order?: boolean | null;
    /**
     * Indicates if the payment source within the source order customer's wallet must be copied.
     * @example ```true```
     */
    reuse_wallet?: boolean | null;
    /**
     * Indicates if the source order must be cancelled upon copy.
     * @example ```true```
     */
    cancel_source_order?: boolean | null;
    /**
     * Indicates if promotions got applied upon copy.
     * @example ```true```
     */
    apply_promotions?: boolean | null;
    /**
     * Indicates to ignore any errors during copy.
     * @example ```true```
     */
    skip_errors?: boolean | null;
    /**
     * Indicates to ignore invalid coupon code during copy.
     * @example ```true```
     */
    ignore_invalid_coupon?: boolean | null;
    source_order?: Order | null;
    target_order?: Order | null;
    events?: Event[] | null;
    order_subscription?: OrderSubscription | null;
}
interface OrderCopyCreate extends ResourceCreate {
    /**
     * Indicates if the target order must be placed upon copy.
     * @example ```true```
     */
    place_target_order?: boolean | null;
    /**
     * Indicates if the payment source within the source order customer's wallet must be copied.
     * @example ```true```
     */
    reuse_wallet?: boolean | null;
    /**
     * Indicates if the source order must be cancelled upon copy.
     * @example ```true```
     */
    cancel_source_order?: boolean | null;
    /**
     * Indicates if promotions got applied upon copy.
     * @example ```true```
     */
    apply_promotions?: boolean | null;
    /**
     * Indicates to ignore any errors during copy.
     * @example ```true```
     */
    skip_errors?: boolean | null;
    /**
     * Indicates to ignore invalid coupon code during copy.
     * @example ```true```
     */
    ignore_invalid_coupon?: boolean | null;
    source_order: OrderRel$3;
}
type OrderCopyUpdate = ResourceUpdate;
declare class OrderCopies extends ApiResource<OrderCopy> {
    static readonly TYPE: OrderCopyType;
    create(resource: OrderCopyCreate, params?: QueryParamsRetrieve<OrderCopy>, options?: ResourcesConfig): Promise<OrderCopy>;
    update(resource: OrderCopyUpdate, params?: QueryParamsRetrieve<OrderCopy>, options?: ResourcesConfig): Promise<OrderCopy>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    source_order(orderCopyId: string | OrderCopy, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    target_order(orderCopyId: string | OrderCopy, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    events(orderCopyId: string | OrderCopy, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    order_subscription(orderCopyId: string | OrderCopy, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    isOrderCopy(resource: any): resource is OrderCopy;
    relationship(id: string | ResourceId | null): OrderCopyRel;
    relationshipToMany(...ids: string[]): OrderCopyRel[];
    type(): OrderCopyType;
}

type OrderType = 'orders';
type OrderRel$2 = ResourceRel & {
    type: OrderType;
};
type MarketRel$5 = ResourceRel & {
    type: MarketType;
};
type CustomerRel$2 = ResourceRel & {
    type: CustomerType;
};
type AddressRel$4 = ResourceRel & {
    type: AddressType;
};
type StoreRel = ResourceRel & {
    type: StoreType;
};
type PaymentMethodRel$2 = ResourceRel & {
    type: PaymentMethodType;
};
type AdyenPaymentRel$1 = ResourceRel & {
    type: AdyenPaymentType;
};
type AxervePaymentRel$1 = ResourceRel & {
    type: AxervePaymentType;
};
type BraintreePaymentRel$1 = ResourceRel & {
    type: BraintreePaymentType;
};
type CheckoutComPaymentRel$1 = ResourceRel & {
    type: CheckoutComPaymentType;
};
type ExternalPaymentRel = ResourceRel & {
    type: ExternalPaymentType;
};
type KlarnaPaymentRel$1 = ResourceRel & {
    type: KlarnaPaymentType;
};
type PaypalPaymentRel = ResourceRel & {
    type: PaypalPaymentType;
};
type SatispayPaymentRel$1 = ResourceRel & {
    type: SatispayPaymentType;
};
type StripePaymentRel = ResourceRel & {
    type: StripePaymentType;
};
type WireTransferRel = ResourceRel & {
    type: WireTransferType;
};
type TagRel$3 = ResourceRel & {
    type: TagType;
};
type OrderSort = Pick<Order, 'id' | 'number' | 'affiliate_code' | 'place_async' | 'status' | 'payment_status' | 'fulfillment_status' | 'guest' | 'language_code' | 'currency_code' | 'tax_included' | 'tax_rate' | 'country_code' | 'coupon_code' | 'gift_card_code' | 'subtotal_amount_cents' | 'shipping_amount_cents' | 'payment_method_amount_cents' | 'discount_amount_cents' | 'adjustment_amount_cents' | 'gift_card_amount_cents' | 'total_tax_amount_cents' | 'subtotal_tax_amount_cents' | 'total_amount_cents' | 'fees_amount_cents' | 'duty_amount_cents' | 'placed_at' | 'approved_at' | 'cancelled_at' | 'payment_updated_at' | 'fulfillment_updated_at' | 'refreshed_at' | 'archived_at' | 'subscription_created_at' | 'circuit_state' | 'circuit_failure_count'> & ResourceSort;
interface Order extends Resource {
    readonly type: OrderType;
    /**
     * The order identifier. Can be specified if unique within the organization (for enterprise plans only), default to numeric ID otherwise. Cannot be passed by sales channels.
     * @example ```"1234"```
     */
    number?: string | null;
    /**
     * The affiliate code, if any, to track commissions using any third party services.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    affiliate_code?: string | null;
    /**
     * Save this attribute as 'false' if you want prevent the order to be refreshed automatically at each change (much faster).
     * @example ```true```
     */
    autorefresh?: boolean | null;
    /**
     * Save this attribute as 'true' if you want perform the place asynchronously. Payment errors, if any, will be collected afterwards.
     * @example ```true```
     */
    place_async?: boolean | null;
    /**
     * The order status. One of 'draft' (default), 'pending', 'editing', 'placing', 'placed', 'approved', or 'cancelled'.
     * @example ```"draft"```
     */
    status: 'draft' | 'pending' | 'editing' | 'placing' | 'placed' | 'approved' | 'cancelled';
    /**
     * The order payment status. One of 'unpaid' (default), 'authorized', 'partially_authorized', 'paid', 'partially_paid', 'voided', 'partially_voided', 'refunded', 'partially_refunded', or 'free'.
     * @example ```"unpaid"```
     */
    payment_status: 'unpaid' | 'authorized' | 'partially_authorized' | 'paid' | 'partially_paid' | 'voided' | 'partially_voided' | 'refunded' | 'partially_refunded' | 'free';
    /**
     * The order fulfillment status. One of 'unfulfilled' (default), 'in_progress', 'fulfilled', or 'not_required'.
     * @example ```"unfulfilled"```
     */
    fulfillment_status: 'unfulfilled' | 'in_progress' | 'fulfilled' | 'not_required';
    /**
     * Indicates if the order has been placed as guest.
     * @example ```true```
     */
    guest?: boolean | null;
    /**
     * Indicates if the order can be edited.
     * @example ```true```
     */
    editable?: boolean | null;
    /**
     * The email address of the associated customer. When creating or updating an order, this is a shortcut to find or create the associated customer by email.
     * @example ```"john@example.com"```
     */
    customer_email?: string | null;
    /**
     * The preferred language code (ISO 639-1) to be used when communicating with the customer. This can be useful when sending the order to 3rd party marketing tools and CRMs. If the language is supported, the hosted checkout will be localized accordingly.
     * @example ```"it"```
     */
    language_code?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, automatically inherited from the order's market.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if taxes are included in the order amounts, automatically inherited from the order's price list.
     * @example ```true```
     */
    tax_included?: boolean | null;
    /**
     * The tax rate for this order (if calculated).
     * @example ```0.22```
     */
    tax_rate?: number | null;
    /**
     * Indicates if taxes are applied to shipping costs.
     * @example ```true```
     */
    freight_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to payment methods costs.
     * @example ```true```
     */
    payment_method_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to positive adjustments.
     * @example ```true```
     */
    adjustment_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to purchased gift cards.
     */
    gift_card_taxable?: boolean | null;
    /**
     * Indicates if the billing address associated to this order requires billing info to be present.
     */
    requires_billing_info?: boolean | null;
    /**
     * The international 2-letter country code as defined by the ISO 3166-1 standard, automatically inherited from the order's shipping or billing addresses.
     * @example ```"IT"```
     */
    country_code?: string | null;
    /**
     * The country code that you want the shipping address to be locked to. This can be useful to make sure the shipping address belongs to a given shipping country, e.g. the one selected in a country selector page. Not relevant if order contains only digital products.
     * @example ```"IT"```
     */
    shipping_country_code_lock?: string | null;
    /**
     * The coupon code to be used for the order. If valid, it triggers a promotion adding a discount line item to the order.
     * @example ```"SUMMERDISCOUNT"```
     */
    coupon_code?: string | null;
    /**
     * The gift card code (at least the first 8 characters) to be used for the order. If valid, it uses the gift card balance to pay for the order.
     * @example ```"cc92c23e-967e-48b2-a323-59add603301f"```
     */
    gift_card_code?: string | null;
    /**
     * The sum of all the SKU line items total amounts, in cents.
     * @example ```5000```
     */
    subtotal_amount_cents?: number | null;
    /**
     * The sum of all the SKU line items total amounts, float.
     * @example ```50```
     */
    subtotal_amount_float?: number | null;
    /**
     * The sum of all the SKU line items total amounts, formatted.
     * @example ```"€50,00"```
     */
    formatted_subtotal_amount?: string | null;
    /**
     * The sum of all the shipping costs, in cents.
     * @example ```1200```
     */
    shipping_amount_cents?: number | null;
    /**
     * The sum of all the shipping costs, float.
     * @example ```12```
     */
    shipping_amount_float?: number | null;
    /**
     * The sum of all the shipping costs, formatted.
     * @example ```"€12,00"```
     */
    formatted_shipping_amount?: string | null;
    /**
     * The payment method costs, in cents.
     */
    payment_method_amount_cents?: number | null;
    /**
     * The payment method costs, float.
     */
    payment_method_amount_float?: number | null;
    /**
     * The payment method costs, formatted.
     * @example ```"€0,00"```
     */
    formatted_payment_method_amount?: string | null;
    /**
     * The sum of all the discounts applied to the order, in cents (negative amount).
     * @example ```-500```
     */
    discount_amount_cents?: number | null;
    /**
     * The sum of all the discounts applied to the order, float.
     * @example ```-5```
     */
    discount_amount_float?: number | null;
    /**
     * The sum of all the discounts applied to the order, formatted.
     * @example ```"-€5,00"```
     */
    formatted_discount_amount?: string | null;
    /**
     * The sum of all the adjustments applied to the order, in cents.
     * @example ```1500```
     */
    adjustment_amount_cents?: number | null;
    /**
     * The sum of all the adjustments applied to the order, float.
     * @example ```15```
     */
    adjustment_amount_float?: number | null;
    /**
     * The sum of all the adjustments applied to the order, formatted.
     * @example ```"€15,00"```
     */
    formatted_adjustment_amount?: string | null;
    /**
     * The sum of all the gift_cards applied to the order, in cents.
     * @example ```1500```
     */
    gift_card_amount_cents?: number | null;
    /**
     * The sum of all the gift_cards applied to the order, float.
     * @example ```15```
     */
    gift_card_amount_float?: number | null;
    /**
     * The sum of all the gift_cards applied to the order, formatted.
     * @example ```"€15,00"```
     */
    formatted_gift_card_amount?: string | null;
    /**
     * The sum of all the taxes applied to the order, in cents.
     * @example ```1028```
     */
    total_tax_amount_cents?: number | null;
    /**
     * The sum of all the taxes applied to the order, float.
     * @example ```10.28```
     */
    total_tax_amount_float?: number | null;
    /**
     * The sum of all the taxes applied to the order, formatted.
     * @example ```"€10,28"```
     */
    formatted_total_tax_amount?: string | null;
    /**
     * The taxes applied to the order's subtotal, in cents.
     * @example ```902```
     */
    subtotal_tax_amount_cents?: number | null;
    /**
     * The taxes applied to the order's subtotal, float.
     * @example ```9.02```
     */
    subtotal_tax_amount_float?: number | null;
    /**
     * The taxes applied to the order's subtotal, formatted.
     * @example ```"€9,02"```
     */
    formatted_subtotal_tax_amount?: string | null;
    /**
     * The taxes applied to the order's shipping costs, in cents.
     * @example ```216```
     */
    shipping_tax_amount_cents?: number | null;
    /**
     * The taxes applied to the order's shipping costs, float.
     * @example ```2.16```
     */
    shipping_tax_amount_float?: number | null;
    /**
     * The taxes applied to the order's shipping costs, formatted.
     * @example ```"€2,16"```
     */
    formatted_shipping_tax_amount?: string | null;
    /**
     * The taxes applied to the order's payment method costs, in cents.
     */
    payment_method_tax_amount_cents?: number | null;
    /**
     * The taxes applied to the order's payment method costs, float.
     */
    payment_method_tax_amount_float?: number | null;
    /**
     * The taxes applied to the order's payment method costs, formatted.
     * @example ```"€0,00"```
     */
    formatted_payment_method_tax_amount?: string | null;
    /**
     * The taxes applied to the order adjustments, in cents.
     * @example ```900```
     */
    adjustment_tax_amount_cents?: number | null;
    /**
     * The taxes applied to the order adjustments, float.
     * @example ```9```
     */
    adjustment_tax_amount_float?: number | null;
    /**
     * The taxes applied to the order adjustments, formatted.
     * @example ```"€9,00"```
     */
    formatted_adjustment_tax_amount?: string | null;
    /**
     * The order's total amount, in cents.
     * @example ```5700```
     */
    total_amount_cents?: number | null;
    /**
     * The order's total amount, float.
     * @example ```57```
     */
    total_amount_float?: number | null;
    /**
     * The order's total amount, formatted.
     * @example ```"€57,00"```
     */
    formatted_total_amount?: string | null;
    /**
     * The order's total taxable amount, in cents (without discounts).
     * @example ```4672```
     */
    total_taxable_amount_cents?: number | null;
    /**
     * The order's total taxable amount, float.
     * @example ```46.72```
     */
    total_taxable_amount_float?: number | null;
    /**
     * The order's total taxable amount, formatted.
     * @example ```"€46,72"```
     */
    formatted_total_taxable_amount?: string | null;
    /**
     * The order's subtotal taxable amount, in cents (equal to subtotal_amount_cents when prices don't include taxes).
     * @example ```4098```
     */
    subtotal_taxable_amount_cents?: number | null;
    /**
     * The order's subtotal taxable amount, float.
     * @example ```40.98```
     */
    subtotal_taxable_amount_float?: number | null;
    /**
     * The order's subtotal taxable amount, formatted.
     * @example ```"€40,98"```
     */
    formatted_subtotal_taxable_amount?: string | null;
    /**
     * The order's shipping taxable amount, in cents (equal to shipping_amount_cents when prices don't include taxes).
     * @example ```984```
     */
    shipping_taxable_amount_cents?: number | null;
    /**
     * The order's shipping taxable amount, float.
     * @example ```9.84```
     */
    shipping_taxable_amount_float?: number | null;
    /**
     * The order's shipping taxable amount, formatted.
     * @example ```"€9,84"```
     */
    formatted_shipping_taxable_amount?: string | null;
    /**
     * The order's payment method taxable amount, in cents (equal to payment_method_amount_cents when prices don't include taxes).
     */
    payment_method_taxable_amount_cents?: number | null;
    /**
     * The order's payment method taxable amount, float.
     */
    payment_method_taxable_amount_float?: number | null;
    /**
     * The order's payment method taxable amount, formatted.
     * @example ```"€0,00"```
     */
    formatted_payment_method_taxable_amount?: string | null;
    /**
     * The order's adjustment taxable amount, in cents (equal to discount_adjustment_cents when prices don't include taxes).
     * @example ```120```
     */
    adjustment_taxable_amount_cents?: number | null;
    /**
     * The order's adjustment taxable amount, float.
     * @example ```1.2```
     */
    adjustment_taxable_amount_float?: number | null;
    /**
     * The order's adjustment taxable amount, formatted.
     * @example ```"€1,20"```
     */
    formatted_adjustment_taxable_amount?: string | null;
    /**
     * The order's total amount (when prices include taxes) or the order's total + taxes amount (when prices don't include taxes, e.g. US Markets or B2B).
     * @example ```5700```
     */
    total_amount_with_taxes_cents?: number | null;
    /**
     * The order's total amount with taxes, float.
     * @example ```57```
     */
    total_amount_with_taxes_float?: number | null;
    /**
     * The order's total amount with taxes, formatted.
     * @example ```"€57,00"```
     */
    formatted_total_amount_with_taxes?: string | null;
    /**
     * The fees amount that is applied by Commerce Layer, in cents.
     */
    fees_amount_cents?: number | null;
    /**
     * The fees amount that is applied by Commerce Layer, float.
     */
    fees_amount_float?: number | null;
    /**
     * The fees amount that is applied by Commerce Layer, formatted.
     * @example ```"€0,00"```
     */
    formatted_fees_amount?: string | null;
    /**
     * The duty amount that is calculated by external services, in cents.
     */
    duty_amount_cents?: number | null;
    /**
     * The duty amount that is calculated by external services, float.
     */
    duty_amount_float?: number | null;
    /**
     * The duty amount that is calculated by external services, formatted.
     * @example ```"€0,00"```
     */
    formatted_duty_amount?: string | null;
    /**
     * The total amount at place time, in cents, which is used internally for editing.
     */
    place_total_amount_cents?: number | null;
    /**
     * The total amount at place time, float.
     */
    place_total_amount_float?: number | null;
    /**
     * The total amount at place time, formatted.
     * @example ```"€0,00"```
     */
    formatted_place_total_amount?: string | null;
    /**
     * The total number of SKUs in the order's line items. This can be useful to display a preview of the customer shopping cart content.
     * @example ```2```
     */
    skus_count?: number | null;
    /**
     * The total number of line item options. This can be useful to display a preview of the customer shopping cart content.
     * @example ```1```
     */
    line_item_options_count?: number | null;
    /**
     * The total number of shipments. This can be useful to manage the shipping method(s) selection during checkout.
     * @example ```1```
     */
    shipments_count?: number | null;
    /**
     * The total number of tax calculations. This can be useful to monitor external tax service usage.
     * @example ```1```
     */
    tax_calculations_count?: number | null;
    /**
     * The total number of external validation performed. This can be useful to monitor if external validation has been triggered.
     * @example ```1```
     */
    validations_count?: number | null;
    /**
     * The total number of resource errors.
     * @example ```1```
     */
    errors_count?: number | null;
    /**
     * An object that contains the shareable details of the order's payment source.
     * @example ```{"foo":"bar"}```
     */
    payment_source_details?: Record<string, any> | null;
    /**
     * A unique token that can be shared more securely instead of the order's id.
     * @example ```"1c0994cc4e996e8c6ee56a2198f66f3c"```
     */
    token?: string | null;
    /**
     * The cart url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/cart"```
     */
    cart_url?: string | null;
    /**
     * The return url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/"```
     */
    return_url?: string | null;
    /**
     * The terms and conditions url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/terms"```
     */
    terms_url?: string | null;
    /**
     * The privacy policy url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/privacy"```
     */
    privacy_url?: string | null;
    /**
     * The checkout url that was automatically generated for the order. Send the customers to this url to let them checkout the order securely on our hosted checkout application.
     * @example ```"https://yourdomain.commercelayer.io/checkout/1c0994cc4e996e8c6ee56a2198f66f3c"```
     */
    checkout_url?: string | null;
    /**
     * Time at which the order was placed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    placed_at?: string | null;
    /**
     * Time at which the order was approved.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    approved_at?: string | null;
    /**
     * Time at which the order was cancelled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    cancelled_at?: string | null;
    /**
     * Time at which the order's payment status was last updated.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    payment_updated_at?: string | null;
    /**
     * Time at which the order's fulfillment status was last updated.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    fulfillment_updated_at?: string | null;
    /**
     * Last time at which the order was refreshed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    refreshed_at?: string | null;
    /**
     * Time at which the resource has been archived.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    archived_at?: string | null;
    /**
     * Time at which the order has been marked to create a subscription from its recurring line items.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    subscription_created_at?: string | null;
    /**
     * The circuit breaker state, by default it is 'closed'. It can become 'open' once the number of consecutive failures overlaps the specified threshold, in such case no further calls to the failing callback are made.
     * @example ```"closed"```
     */
    circuit_state?: string | null;
    /**
     * The number of consecutive failures recorded by the circuit breaker associated to this resource, will be reset on first successful call to callback.
     * @example ```5```
     */
    circuit_failure_count?: number | null;
    market?: Market | null;
    customer?: Customer | null;
    shipping_address?: Address | null;
    billing_address?: Address | null;
    store?: Store | null;
    default_shipping_method?: ShippingMethod | null;
    default_payment_method?: PaymentMethod | null;
    available_payment_methods?: PaymentMethod[] | null;
    available_customer_payment_sources?: CustomerPaymentSource[] | null;
    available_free_skus?: Sku[] | null;
    available_free_bundles?: Bundle[] | null;
    payment_method?: PaymentMethod | null;
    payment_source?: AdyenPayment | AxervePayment | BraintreePayment | CheckoutComPayment | ExternalPayment | KlarnaPayment | PaypalPayment | SatispayPayment | StripePayment | WireTransfer | null;
    discount_engine_item?: DiscountEngineItem | null;
    line_items?: LineItem[] | null;
    line_item_options?: LineItemOption[] | null;
    stock_reservations?: StockReservation[] | null;
    stock_line_items?: StockLineItem[] | null;
    stock_transfers?: StockTransfer[] | null;
    shipments?: Shipment[] | null;
    payment_options?: PaymentOption[] | null;
    transactions?: Array<Authorization | Void | Capture | Refund> | null;
    authorizations?: Authorization[] | null;
    captures?: Capture[] | null;
    voids?: Void[] | null;
    refunds?: Refund[] | null;
    returns?: Return[] | null;
    order_subscription?: OrderSubscription | null;
    order_subscriptions?: OrderSubscription[] | null;
    order_factories?: OrderFactory[] | null;
    order_copies?: OrderCopy[] | null;
    recurring_order_copies?: RecurringOrderCopy[] | null;
    attachments?: Attachment[] | null;
    notifications?: Notification[] | null;
    links?: Link[] | null;
    resource_errors?: ResourceError[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface OrderCreate extends ResourceCreate {
    /**
     * The order identifier. Can be specified if unique within the organization (for enterprise plans only), default to numeric ID otherwise. Cannot be passed by sales channels.
     * @example ```"1234"```
     */
    number?: string | null;
    /**
     * The affiliate code, if any, to track commissions using any third party services.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    affiliate_code?: string | null;
    /**
     * Save this attribute as 'false' if you want prevent the order to be refreshed automatically at each change (much faster).
     * @example ```true```
     */
    autorefresh?: boolean | null;
    /**
     * Save this attribute as 'true' if you want perform the place asynchronously. Payment errors, if any, will be collected afterwards.
     * @example ```true```
     */
    place_async?: boolean | null;
    /**
     * Indicates if the order has been placed as guest.
     * @example ```true```
     */
    guest?: boolean | null;
    /**
     * The email address of the associated customer. When creating or updating an order, this is a shortcut to find or create the associated customer by email.
     * @example ```"john@example.com"```
     */
    customer_email?: string | null;
    /**
     * The password of the associated customer. When creating or updating an order, this is a shortcut to sign up the associated customer.
     * @example ```"secret"```
     */
    customer_password?: string | null;
    /**
     * The preferred language code (ISO 639-1) to be used when communicating with the customer. This can be useful when sending the order to 3rd party marketing tools and CRMs. If the language is supported, the hosted checkout will be localized accordingly.
     * @example ```"it"```
     */
    language_code?: string | null;
    /**
     * Indicates if taxes are applied to shipping costs.
     * @example ```true```
     */
    freight_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to payment methods costs.
     * @example ```true```
     */
    payment_method_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to positive adjustments.
     * @example ```true```
     */
    adjustment_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to purchased gift cards.
     */
    gift_card_taxable?: boolean | null;
    /**
     * The country code that you want the shipping address to be locked to. This can be useful to make sure the shipping address belongs to a given shipping country, e.g. the one selected in a country selector page. Not relevant if order contains only digital products.
     * @example ```"IT"```
     */
    shipping_country_code_lock?: string | null;
    /**
     * The coupon code to be used for the order. If valid, it triggers a promotion adding a discount line item to the order.
     * @example ```"SUMMERDISCOUNT"```
     */
    coupon_code?: string | null;
    /**
     * The gift card code (at least the first 8 characters) to be used for the order. If valid, it uses the gift card balance to pay for the order.
     * @example ```"cc92c23e-967e-48b2-a323-59add603301f"```
     */
    gift_card_code?: string | null;
    /**
     * The cart url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/cart"```
     */
    cart_url?: string | null;
    /**
     * The return url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/"```
     */
    return_url?: string | null;
    /**
     * The terms and conditions url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/terms"```
     */
    terms_url?: string | null;
    /**
     * The privacy policy url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/privacy"```
     */
    privacy_url?: string | null;
    market?: MarketRel$5 | null;
    customer?: CustomerRel$2 | null;
    shipping_address?: AddressRel$4 | null;
    billing_address?: AddressRel$4 | null;
    store?: StoreRel | null;
    payment_method?: PaymentMethodRel$2 | null;
    payment_source?: AdyenPaymentRel$1 | AxervePaymentRel$1 | BraintreePaymentRel$1 | CheckoutComPaymentRel$1 | ExternalPaymentRel | KlarnaPaymentRel$1 | PaypalPaymentRel | SatispayPaymentRel$1 | StripePaymentRel | WireTransferRel | null;
    tags?: TagRel$3[] | null;
}
interface OrderUpdate extends ResourceUpdate {
    /**
     * The order identifier. Can be specified if unique within the organization (for enterprise plans only), default to numeric ID otherwise. Cannot be passed by sales channels.
     * @example ```"1234"```
     */
    number?: string | null;
    /**
     * The affiliate code, if any, to track commissions using any third party services.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    affiliate_code?: string | null;
    /**
     * Save this attribute as 'false' if you want prevent the order to be refreshed automatically at each change (much faster).
     * @example ```true```
     */
    autorefresh?: boolean | null;
    /**
     * Save this attribute as 'true' if you want perform the place asynchronously. Payment errors, if any, will be collected afterwards.
     * @example ```true```
     */
    place_async?: boolean | null;
    /**
     * Indicates if the order has been placed as guest.
     * @example ```true```
     */
    guest?: boolean | null;
    /**
     * The email address of the associated customer. When creating or updating an order, this is a shortcut to find or create the associated customer by email.
     * @example ```"john@example.com"```
     */
    customer_email?: string | null;
    /**
     * The password of the associated customer. When creating or updating an order, this is a shortcut to sign up the associated customer.
     * @example ```"secret"```
     */
    customer_password?: string | null;
    /**
     * The preferred language code (ISO 639-1) to be used when communicating with the customer. This can be useful when sending the order to 3rd party marketing tools and CRMs. If the language is supported, the hosted checkout will be localized accordingly.
     * @example ```"it"```
     */
    language_code?: string | null;
    /**
     * Indicates if taxes are applied to shipping costs.
     * @example ```true```
     */
    freight_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to payment methods costs.
     * @example ```true```
     */
    payment_method_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to positive adjustments.
     * @example ```true```
     */
    adjustment_taxable?: boolean | null;
    /**
     * Indicates if taxes are applied to purchased gift cards.
     */
    gift_card_taxable?: boolean | null;
    /**
     * The country code that you want the shipping address to be locked to. This can be useful to make sure the shipping address belongs to a given shipping country, e.g. the one selected in a country selector page. Not relevant if order contains only digital products.
     * @example ```"IT"```
     */
    shipping_country_code_lock?: string | null;
    /**
     * The coupon code to be used for the order. If valid, it triggers a promotion adding a discount line item to the order.
     * @example ```"SUMMERDISCOUNT"```
     */
    coupon_code?: string | null;
    /**
     * The gift card code (at least the first 8 characters) to be used for the order. If valid, it uses the gift card balance to pay for the order.
     * @example ```"cc92c23e-967e-48b2-a323-59add603301f"```
     */
    gift_card_code?: string | null;
    /**
     * The cart url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/cart"```
     */
    cart_url?: string | null;
    /**
     * The return url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/"```
     */
    return_url?: string | null;
    /**
     * The terms and conditions url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/terms"```
     */
    terms_url?: string | null;
    /**
     * The privacy policy url on your site. If present, it will be used on our hosted checkout application.
     * @example ```"https://yourdomain.com/privacy"```
     */
    privacy_url?: string | null;
    /**
     * Send this attribute if you want to archive the order.
     * @example ```true```
     */
    _archive?: boolean | null;
    /**
     * Send this attribute if you want to unarchive the order.
     * @example ```true```
     */
    _unarchive?: boolean | null;
    /**
     * Send this attribute if you want to move a draft or placing order to pending. Cannot be passed by sales channels.
     * @example ```true```
     */
    _pending?: boolean | null;
    /**
     * Send this attribute if you want to place the order.
     * @example ```true```
     */
    _place?: boolean | null;
    /**
     * Send this attribute if you want to cancel a placed order. The order's authorization will be automatically voided.
     * @example ```true```
     */
    _cancel?: boolean | null;
    /**
     * Send this attribute if you want to approve a placed order. Cannot be passed by sales channels.
     * @example ```true```
     */
    _approve?: boolean | null;
    /**
     * Send this attribute if you want to approve and capture a placed order. Cannot be passed by sales channels.
     * @example ```true```
     */
    _approve_and_capture?: boolean | null;
    /**
     * Send this attribute if you want to authorize the order's payment source.
     * @example ```true```
     */
    _authorize?: boolean | null;
    /**
     * Send this attribute as a value in cents if you want to overwrite the amount to be authorized.
     * @example ```500```
     */
    _authorization_amount_cents?: number | null;
    /**
     * Send this attribute if you want to capture an authorized order. Cannot be passed by sales channels.
     * @example ```true```
     */
    _capture?: boolean | null;
    /**
     * Send this attribute if you want to refund a captured order. Cannot be passed by sales channels.
     * @example ```true```
     */
    _refund?: boolean | null;
    /**
     * Send this attribute if you want to mark as fulfilled the order (shipments must be cancelled, shipped or delivered, alternatively order must be approved). Cannot be passed by sales channels.
     * @example ```true```
     */
    _fulfill?: boolean | null;
    /**
     * Send this attribute if you want to force tax calculation for this order (a tax calculator must be associated to the order's market).
     * @example ```true```
     */
    _update_taxes?: boolean | null;
    /**
     * Send this attribute if you want to nullify the payment source for this order.
     */
    _nullify_payment_source?: boolean | null;
    /**
     * Send this attribute if you want to set the payment source associated with the last succeeded authorization. At the end of the fix the order should be placed and authorized and ready to be approved. A tentative to fix the payment source is done before approval automatically. Cannot be passed by sales channels.
     * @example ```true```
     */
    _fix_payment_source?: boolean | null;
    /**
     * The id of the address that you want to clone to create the order's billing address.
     * @example ```"1234"```
     */
    _billing_address_clone_id?: string | null;
    /**
     * The id of the address that you want to clone to create the order's shipping address.
     * @example ```"1234"```
     */
    _shipping_address_clone_id?: string | null;
    /**
     * The id of the customer payment source (i.e. credit card) that you want to use as the order's payment source.
     * @example ```"1234"```
     */
    _customer_payment_source_id?: string | null;
    /**
     * Send this attribute if you want the shipping address to be cloned from the order's billing address.
     * @example ```true```
     */
    _shipping_address_same_as_billing?: boolean | null;
    /**
     * Send this attribute if you want the billing address to be cloned from the order's shipping address.
     * @example ```true```
     */
    _billing_address_same_as_shipping?: boolean | null;
    /**
     * Send this attribute if you want commit the sales tax invoice to the associated tax calculator (currently supported by Avalara).
     * @example ```true```
     */
    _commit_invoice?: boolean | null;
    /**
     * Send this attribute if you want refund the sales tax invoice to the associated tax calculator (currently supported by Avalara).
     * @example ```true```
     */
    _refund_invoice?: boolean | null;
    /**
     * Send this attribute if you want the order's payment source to be saved in the customer's wallet as a customer payment source.
     * @example ```true```
     */
    _save_payment_source_to_customer_wallet?: boolean | null;
    /**
     * Send this attribute if you want the order's shipping address to be saved in the customer's address book as a customer address.
     * @example ```true```
     */
    _save_shipping_address_to_customer_address_book?: boolean | null;
    /**
     * Send this attribute if you want the order's billing address to be saved in the customer's address book as a customer address.
     * @example ```true```
     */
    _save_billing_address_to_customer_address_book?: boolean | null;
    /**
     * Send this attribute if you want to manually refresh the order.
     * @example ```true```
     */
    _refresh?: boolean | null;
    /**
     * Send this attribute if you want to trigger the external validation for the order.
     * @example ```true```
     */
    _validate?: boolean | null;
    /**
     * Send this attribute upon/after placing the order if you want to create order subscriptions from the line items that have a frequency.
     * @example ```true```
     */
    _create_subscriptions?: boolean | null;
    /**
     * Send this attribute if you want to edit the order after it is placed. Remember you cannot exceed the original total amount. Cannot be passed by sales channels.
     * @example ```true```
     */
    _start_editing?: boolean | null;
    /**
     * Send this attribute to stop the editing for the order and return back to placed status. Cannot be passed by sales channels.
     * @example ```true```
     */
    _stop_editing?: boolean | null;
    /**
     * Send this attribute if you want to reset the circuit breaker associated to this resource to 'closed' state and zero failures count. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reset_circuit?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    market?: MarketRel$5 | null;
    customer?: CustomerRel$2 | null;
    shipping_address?: AddressRel$4 | null;
    billing_address?: AddressRel$4 | null;
    store?: StoreRel | null;
    payment_method?: PaymentMethodRel$2 | null;
    payment_source?: AdyenPaymentRel$1 | AxervePaymentRel$1 | BraintreePaymentRel$1 | CheckoutComPaymentRel$1 | ExternalPaymentRel | KlarnaPaymentRel$1 | PaypalPaymentRel | SatispayPaymentRel$1 | StripePaymentRel | WireTransferRel | null;
    tags?: TagRel$3[] | null;
}
declare class Orders extends ApiResource<Order> {
    static readonly TYPE: OrderType;
    create(resource: OrderCreate, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    update(resource: OrderUpdate, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(orderId: string | Order, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    customer(orderId: string | Order, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    shipping_address(orderId: string | Order, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    billing_address(orderId: string | Order, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    store(orderId: string | Order, params?: QueryParamsRetrieve<Store>, options?: ResourcesConfig): Promise<Store>;
    default_shipping_method(orderId: string | Order, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    default_payment_method(orderId: string | Order, params?: QueryParamsRetrieve<PaymentMethod>, options?: ResourcesConfig): Promise<PaymentMethod>;
    available_payment_methods(orderId: string | Order, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    available_customer_payment_sources(orderId: string | Order, params?: QueryParamsList<CustomerPaymentSource>, options?: ResourcesConfig): Promise<ListResponse<CustomerPaymentSource>>;
    available_free_skus(orderId: string | Order, params?: QueryParamsList<Sku>, options?: ResourcesConfig): Promise<ListResponse<Sku>>;
    available_free_bundles(orderId: string | Order, params?: QueryParamsList<Bundle>, options?: ResourcesConfig): Promise<ListResponse<Bundle>>;
    payment_method(orderId: string | Order, params?: QueryParamsRetrieve<PaymentMethod>, options?: ResourcesConfig): Promise<PaymentMethod>;
    discount_engine_item(orderId: string | Order, params?: QueryParamsRetrieve<DiscountEngineItem>, options?: ResourcesConfig): Promise<DiscountEngineItem>;
    line_items(orderId: string | Order, params?: QueryParamsList<LineItem>, options?: ResourcesConfig): Promise<ListResponse<LineItem>>;
    line_item_options(orderId: string | Order, params?: QueryParamsList<LineItemOption>, options?: ResourcesConfig): Promise<ListResponse<LineItemOption>>;
    stock_reservations(orderId: string | Order, params?: QueryParamsList<StockReservation>, options?: ResourcesConfig): Promise<ListResponse<StockReservation>>;
    stock_line_items(orderId: string | Order, params?: QueryParamsList<StockLineItem>, options?: ResourcesConfig): Promise<ListResponse<StockLineItem>>;
    stock_transfers(orderId: string | Order, params?: QueryParamsList<StockTransfer>, options?: ResourcesConfig): Promise<ListResponse<StockTransfer>>;
    shipments(orderId: string | Order, params?: QueryParamsList<Shipment>, options?: ResourcesConfig): Promise<ListResponse<Shipment>>;
    payment_options(orderId: string | Order, params?: QueryParamsList<PaymentOption>, options?: ResourcesConfig): Promise<ListResponse<PaymentOption>>;
    authorizations(orderId: string | Order, params?: QueryParamsList<Authorization>, options?: ResourcesConfig): Promise<ListResponse<Authorization>>;
    captures(orderId: string | Order, params?: QueryParamsList<Capture>, options?: ResourcesConfig): Promise<ListResponse<Capture>>;
    voids(orderId: string | Order, params?: QueryParamsList<Void>, options?: ResourcesConfig): Promise<ListResponse<Void>>;
    refunds(orderId: string | Order, params?: QueryParamsList<Refund>, options?: ResourcesConfig): Promise<ListResponse<Refund>>;
    returns(orderId: string | Order, params?: QueryParamsList<Return>, options?: ResourcesConfig): Promise<ListResponse<Return>>;
    order_subscription(orderId: string | Order, params?: QueryParamsRetrieve<OrderSubscription>, options?: ResourcesConfig): Promise<OrderSubscription>;
    order_subscriptions(orderId: string | Order, params?: QueryParamsList<OrderSubscription>, options?: ResourcesConfig): Promise<ListResponse<OrderSubscription>>;
    order_factories(orderId: string | Order, params?: QueryParamsList<OrderFactory>, options?: ResourcesConfig): Promise<ListResponse<OrderFactory>>;
    order_copies(orderId: string | Order, params?: QueryParamsList<OrderCopy>, options?: ResourcesConfig): Promise<ListResponse<OrderCopy>>;
    recurring_order_copies(orderId: string | Order, params?: QueryParamsList<RecurringOrderCopy>, options?: ResourcesConfig): Promise<ListResponse<RecurringOrderCopy>>;
    attachments(orderId: string | Order, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    notifications(orderId: string | Order, params?: QueryParamsList<Notification>, options?: ResourcesConfig): Promise<ListResponse<Notification>>;
    links(orderId: string | Order, params?: QueryParamsList<Link>, options?: ResourcesConfig): Promise<ListResponse<Link>>;
    resource_errors(orderId: string | Order, params?: QueryParamsList<ResourceError>, options?: ResourcesConfig): Promise<ListResponse<ResourceError>>;
    events(orderId: string | Order, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(orderId: string | Order, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(orderId: string | Order, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _archive(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _unarchive(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _pending(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _place(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _cancel(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _approve(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _approve_and_capture(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _authorize(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _authorization_amount_cents(id: string | Order, triggerValue: number, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _capture(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _refund(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _fulfill(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _update_taxes(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _nullify_payment_source(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _fix_payment_source(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _billing_address_clone_id(id: string | Order, triggerValue: string, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _shipping_address_clone_id(id: string | Order, triggerValue: string, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _customer_payment_source_id(id: string | Order, triggerValue: string, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _shipping_address_same_as_billing(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _billing_address_same_as_shipping(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _commit_invoice(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _refund_invoice(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _save_payment_source_to_customer_wallet(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _save_shipping_address_to_customer_address_book(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _save_billing_address_to_customer_address_book(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _refresh(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _validate(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _create_subscriptions(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _start_editing(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _stop_editing(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _reset_circuit(id: string | Order, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _add_tags(id: string | Order, triggerValue: string, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    _remove_tags(id: string | Order, triggerValue: string, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    isOrder(resource: any): resource is Order;
    relationship(id: string | ResourceId | null): OrderRel$2;
    relationshipToMany(...ids: string[]): OrderRel$2[];
    type(): OrderType;
}

type PackageType = 'packages';
type PackageRel$2 = ResourceRel & {
    type: PackageType;
};
type StockLocationRel$4 = ResourceRel & {
    type: StockLocationType;
};
type PackageSort = Pick<Package, 'id' | 'name' | 'code' | 'length' | 'width' | 'height' | 'unit_of_length'> & ResourceSort;
interface Package extends Resource {
    readonly type: PackageType;
    /**
     * Unique name for the package.
     * @example ```"Large (60x40x30)"```
     */
    name: string;
    /**
     * The package identifying code.
     * @example ```"YYYY 2000"```
     */
    code?: string | null;
    /**
     * The package length, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```40```
     */
    length: number;
    /**
     * The package width, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```40```
     */
    width: number;
    /**
     * The package height, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```25```
     */
    height: number;
    /**
     * The unit of length. Can be one of 'cm', or 'in'.
     * @example ```"gr"```
     */
    unit_of_length: string;
    stock_location?: StockLocation | null;
    parcels?: Parcel[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface PackageCreate extends ResourceCreate {
    /**
     * Unique name for the package.
     * @example ```"Large (60x40x30)"```
     */
    name: string;
    /**
     * The package identifying code.
     * @example ```"YYYY 2000"```
     */
    code?: string | null;
    /**
     * The package length, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```40```
     */
    length: number;
    /**
     * The package width, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```40```
     */
    width: number;
    /**
     * The package height, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```25```
     */
    height: number;
    /**
     * The unit of length. Can be one of 'cm', or 'in'.
     * @example ```"gr"```
     */
    unit_of_length: string;
    stock_location: StockLocationRel$4;
}
interface PackageUpdate extends ResourceUpdate {
    /**
     * Unique name for the package.
     * @example ```"Large (60x40x30)"```
     */
    name?: string | null;
    /**
     * The package identifying code.
     * @example ```"YYYY 2000"```
     */
    code?: string | null;
    /**
     * The package length, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```40```
     */
    length?: number | null;
    /**
     * The package width, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```40```
     */
    width?: number | null;
    /**
     * The package height, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```25```
     */
    height?: number | null;
    /**
     * The unit of length. Can be one of 'cm', or 'in'.
     * @example ```"gr"```
     */
    unit_of_length?: string | null;
    stock_location?: StockLocationRel$4 | null;
}
declare class Packages extends ApiResource<Package> {
    static readonly TYPE: PackageType;
    create(resource: PackageCreate, params?: QueryParamsRetrieve<Package>, options?: ResourcesConfig): Promise<Package>;
    update(resource: PackageUpdate, params?: QueryParamsRetrieve<Package>, options?: ResourcesConfig): Promise<Package>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    stock_location(packageId: string | Package, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    parcels(packageId: string | Package, params?: QueryParamsList<Parcel>, options?: ResourcesConfig): Promise<ListResponse<Parcel>>;
    attachments(packageId: string | Package, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(packageId: string | Package, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isPackage(resource: any): resource is Package;
    relationship(id: string | ResourceId | null): PackageRel$2;
    relationshipToMany(...ids: string[]): PackageRel$2[];
    type(): PackageType;
}

type ParcelLineItemType = 'parcel_line_items';
type ParcelLineItemRel = ResourceRel & {
    type: ParcelLineItemType;
};
type ParcelRel$2 = ResourceRel & {
    type: ParcelType;
};
type StockLineItemRel = ResourceRel & {
    type: StockLineItemType;
};
type ParcelLineItemSort = Pick<ParcelLineItem, 'id' | 'quantity'> & ResourceSort;
interface ParcelLineItem extends Resource {
    readonly type: ParcelLineItemType;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The code of the associated bundle.
     * @example ```"BUNDLEMM000000FFFFFFXLXX"```
     */
    bundle_code?: string | null;
    /**
     * The parcel line item quantity.
     * @example ```4```
     */
    quantity: number;
    /**
     * The internal name of the associated line item.
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name?: string | null;
    /**
     * The image_url of the associated line item.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    parcel?: Parcel | null;
    stock_line_item?: StockLineItem | null;
    versions?: Version[] | null;
}
interface ParcelLineItemCreate extends ResourceCreate {
    /**
     * The parcel line item quantity.
     * @example ```4```
     */
    quantity: number;
    parcel: ParcelRel$2;
    stock_line_item: StockLineItemRel;
}
type ParcelLineItemUpdate = ResourceUpdate;
declare class ParcelLineItems extends ApiResource<ParcelLineItem> {
    static readonly TYPE: ParcelLineItemType;
    create(resource: ParcelLineItemCreate, params?: QueryParamsRetrieve<ParcelLineItem>, options?: ResourcesConfig): Promise<ParcelLineItem>;
    update(resource: ParcelLineItemUpdate, params?: QueryParamsRetrieve<ParcelLineItem>, options?: ResourcesConfig): Promise<ParcelLineItem>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    parcel(parcelLineItemId: string | ParcelLineItem, params?: QueryParamsRetrieve<Parcel>, options?: ResourcesConfig): Promise<Parcel>;
    stock_line_item(parcelLineItemId: string | ParcelLineItem, params?: QueryParamsRetrieve<StockLineItem>, options?: ResourcesConfig): Promise<StockLineItem>;
    versions(parcelLineItemId: string | ParcelLineItem, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isParcelLineItem(resource: any): resource is ParcelLineItem;
    relationship(id: string | ResourceId | null): ParcelLineItemRel;
    relationshipToMany(...ids: string[]): ParcelLineItemRel[];
    type(): ParcelLineItemType;
}

type ParcelType = 'parcels';
type ParcelRel$1 = ResourceRel & {
    type: ParcelType;
};
type ShipmentRel$4 = ResourceRel & {
    type: ShipmentType;
};
type PackageRel$1 = ResourceRel & {
    type: PackageType;
};
type ParcelSort = Pick<Parcel, 'id' | 'weight' | 'tracking_status' | 'tracking_status_updated_at' | 'carrier_weight_oz'> & ResourceSort;
interface Parcel extends Resource {
    readonly type: ParcelType;
    /**
     * Unique identifier for the parcel.
     * @example ```"#1234/S/001/P/001"```
     */
    number?: string | null;
    /**
     * The parcel weight, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```1000```
     */
    weight: number;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight: 'gr' | 'oz' | 'lb';
    /**
     * When shipping outside the US, you need to provide either an Exemption and Exclusion Legend (EEL) code or a Proof of Filing Citation (PFC). Which you need is based on the value of the goods being shipped. Value can be one of "EEL" o "PFC".
     * @example ```"EEL"```
     */
    eel_pfc?: string | null;
    /**
     * The type of item you are sending.
     * @example ```"merchandise"```
     */
    contents_type?: string | null;
    /**
     * If you specify 'other' in the 'contents_type' attribute, you must supply a brief description in this attribute.
     */
    contents_explanation?: string | null;
    /**
     * Indicates if the provided information is accurate.
     */
    customs_certify?: boolean | null;
    /**
     * This is the name of the person who is certifying that the information provided on the customs form is accurate. Use a name of the person in your organization who is responsible for this.
     * @example ```"John Doe"```
     */
    customs_signer?: string | null;
    /**
     * In case the shipment cannot be delivered, this option tells the carrier what you want to happen to the parcel. You can pass either 'return', or 'abandon'. The value defaults to 'return'. If you pass 'abandon', you will not receive the parcel back if it cannot be delivered.
     * @example ```"return"```
     */
    non_delivery_option?: string | null;
    /**
     * Describes if your parcel requires any special treatment or quarantine when entering the country. Can be one of 'none', 'other', 'quarantine', or 'sanitary_phytosanitary_inspection'.
     * @example ```"none"```
     */
    restriction_type?: string | null;
    /**
     * If you specify 'other' in the restriction type, you must supply a brief description of what is required.
     */
    restriction_comments?: string | null;
    /**
     * Indicates if the parcel requires customs info to get the shipping rates.
     */
    customs_info_required?: boolean | null;
    /**
     * The shipping label url, ready to be downloaded and printed.
     * @example ```"https://bucket.s3-us-west-2.amazonaws.com/files/postage_label/20180101/123.pdf"```
     */
    shipping_label_url?: string | null;
    /**
     * The shipping label file type. One of 'application/pdf', 'application/zpl', 'application/epl2', or 'image/png'.
     * @example ```"application/pdf"```
     */
    shipping_label_file_type?: string | null;
    /**
     * The shipping label size.
     * @example ```"4x7"```
     */
    shipping_label_size?: string | null;
    /**
     * The shipping label resolution.
     * @example ```"200"```
     */
    shipping_label_resolution?: string | null;
    /**
     * The tracking number associated to this parcel.
     * @example ```"1Z4V2A000000000000"```
     */
    tracking_number?: string | null;
    /**
     * The tracking status for this parcel, automatically updated in real time by the shipping carrier.
     * @example ```"delivered"```
     */
    tracking_status?: string | null;
    /**
     * Additional information about the tracking status, automatically updated in real time by the shipping carrier.
     * @example ```"arrived_at_destination"```
     */
    tracking_status_detail?: string | null;
    /**
     * Time at which the parcel's tracking status was last updated.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    tracking_status_updated_at?: string | null;
    /**
     * The parcel's full tracking history, automatically updated in real time by the shipping carrier.
     * @example ```[{"object":"TrackingDetail","message":"Pre-Shipment information received","status":"pre_transit","datetime":"2018-02-27T16:02:17Z","source":"DHLExpress","tracking_location":{"object":"TrackingLocation"}}]```
     */
    tracking_details?: Array<Record<string, any>> | null;
    /**
     * The weight of the parcel as measured by the carrier in ounces (if available).
     * @example ```"42.32"```
     */
    carrier_weight_oz?: string | null;
    /**
     * The name of the person who signed for the parcel (if available).
     * @example ```"John Smith"```
     */
    signed_by?: string | null;
    /**
     * The type of Incoterm (if available).
     * @example ```"EXW"```
     */
    incoterm?: string | null;
    /**
     * The type of delivery confirmation option upon delivery.
     * @example ```"SIGNATURE"```
     */
    delivery_confirmation?: string | null;
    shipment?: Shipment | null;
    package?: Package | null;
    parcel_line_items?: ParcelLineItem[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface ParcelCreate extends ResourceCreate {
    /**
     * The parcel weight, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```1000```
     */
    weight: number;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight: 'gr' | 'oz' | 'lb';
    /**
     * When shipping outside the US, you need to provide either an Exemption and Exclusion Legend (EEL) code or a Proof of Filing Citation (PFC). Which you need is based on the value of the goods being shipped. Value can be one of "EEL" o "PFC".
     * @example ```"EEL"```
     */
    eel_pfc?: string | null;
    /**
     * The type of item you are sending.
     * @example ```"merchandise"```
     */
    contents_type?: string | null;
    /**
     * If you specify 'other' in the 'contents_type' attribute, you must supply a brief description in this attribute.
     */
    contents_explanation?: string | null;
    /**
     * Indicates if the provided information is accurate.
     */
    customs_certify?: boolean | null;
    /**
     * This is the name of the person who is certifying that the information provided on the customs form is accurate. Use a name of the person in your organization who is responsible for this.
     * @example ```"John Doe"```
     */
    customs_signer?: string | null;
    /**
     * In case the shipment cannot be delivered, this option tells the carrier what you want to happen to the parcel. You can pass either 'return', or 'abandon'. The value defaults to 'return'. If you pass 'abandon', you will not receive the parcel back if it cannot be delivered.
     * @example ```"return"```
     */
    non_delivery_option?: string | null;
    /**
     * Describes if your parcel requires any special treatment or quarantine when entering the country. Can be one of 'none', 'other', 'quarantine', or 'sanitary_phytosanitary_inspection'.
     * @example ```"none"```
     */
    restriction_type?: string | null;
    /**
     * If you specify 'other' in the restriction type, you must supply a brief description of what is required.
     */
    restriction_comments?: string | null;
    /**
     * Indicates if the parcel requires customs info to get the shipping rates.
     */
    customs_info_required?: boolean | null;
    /**
     * The shipping label url, ready to be downloaded and printed.
     * @example ```"https://bucket.s3-us-west-2.amazonaws.com/files/postage_label/20180101/123.pdf"```
     */
    shipping_label_url?: string | null;
    /**
     * The shipping label file type. One of 'application/pdf', 'application/zpl', 'application/epl2', or 'image/png'.
     * @example ```"application/pdf"```
     */
    shipping_label_file_type?: string | null;
    /**
     * The shipping label size.
     * @example ```"4x7"```
     */
    shipping_label_size?: string | null;
    /**
     * The shipping label resolution.
     * @example ```"200"```
     */
    shipping_label_resolution?: string | null;
    /**
     * The tracking number associated to this parcel.
     * @example ```"1Z4V2A000000000000"```
     */
    tracking_number?: string | null;
    /**
     * The tracking status for this parcel, automatically updated in real time by the shipping carrier.
     * @example ```"delivered"```
     */
    tracking_status?: string | null;
    /**
     * Additional information about the tracking status, automatically updated in real time by the shipping carrier.
     * @example ```"arrived_at_destination"```
     */
    tracking_status_detail?: string | null;
    /**
     * Time at which the parcel's tracking status was last updated.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    tracking_status_updated_at?: string | null;
    /**
     * The parcel's full tracking history, automatically updated in real time by the shipping carrier.
     * @example ```[{"object":"TrackingDetail","message":"Pre-Shipment information received","status":"pre_transit","datetime":"2018-02-27T16:02:17Z","source":"DHLExpress","tracking_location":{"object":"TrackingLocation"}}]```
     */
    tracking_details?: Array<Record<string, any>> | null;
    /**
     * The weight of the parcel as measured by the carrier in ounces (if available).
     * @example ```"42.32"```
     */
    carrier_weight_oz?: string | null;
    /**
     * The name of the person who signed for the parcel (if available).
     * @example ```"John Smith"```
     */
    signed_by?: string | null;
    /**
     * The type of Incoterm (if available).
     * @example ```"EXW"```
     */
    incoterm?: string | null;
    /**
     * The type of delivery confirmation option upon delivery.
     * @example ```"SIGNATURE"```
     */
    delivery_confirmation?: string | null;
    shipment: ShipmentRel$4;
    package: PackageRel$1;
}
interface ParcelUpdate extends ResourceUpdate {
    /**
     * The parcel weight, used to automatically calculate the tax rates from the available carrier accounts.
     * @example ```1000```
     */
    weight?: number | null;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight?: 'gr' | 'oz' | 'lb' | null;
    /**
     * When shipping outside the US, you need to provide either an Exemption and Exclusion Legend (EEL) code or a Proof of Filing Citation (PFC). Which you need is based on the value of the goods being shipped. Value can be one of "EEL" o "PFC".
     * @example ```"EEL"```
     */
    eel_pfc?: string | null;
    /**
     * The type of item you are sending.
     * @example ```"merchandise"```
     */
    contents_type?: string | null;
    /**
     * If you specify 'other' in the 'contents_type' attribute, you must supply a brief description in this attribute.
     */
    contents_explanation?: string | null;
    /**
     * Indicates if the provided information is accurate.
     */
    customs_certify?: boolean | null;
    /**
     * This is the name of the person who is certifying that the information provided on the customs form is accurate. Use a name of the person in your organization who is responsible for this.
     * @example ```"John Doe"```
     */
    customs_signer?: string | null;
    /**
     * In case the shipment cannot be delivered, this option tells the carrier what you want to happen to the parcel. You can pass either 'return', or 'abandon'. The value defaults to 'return'. If you pass 'abandon', you will not receive the parcel back if it cannot be delivered.
     * @example ```"return"```
     */
    non_delivery_option?: string | null;
    /**
     * Describes if your parcel requires any special treatment or quarantine when entering the country. Can be one of 'none', 'other', 'quarantine', or 'sanitary_phytosanitary_inspection'.
     * @example ```"none"```
     */
    restriction_type?: string | null;
    /**
     * If you specify 'other' in the restriction type, you must supply a brief description of what is required.
     */
    restriction_comments?: string | null;
    /**
     * Indicates if the parcel requires customs info to get the shipping rates.
     */
    customs_info_required?: boolean | null;
    /**
     * The shipping label url, ready to be downloaded and printed.
     * @example ```"https://bucket.s3-us-west-2.amazonaws.com/files/postage_label/20180101/123.pdf"```
     */
    shipping_label_url?: string | null;
    /**
     * The shipping label file type. One of 'application/pdf', 'application/zpl', 'application/epl2', or 'image/png'.
     * @example ```"application/pdf"```
     */
    shipping_label_file_type?: string | null;
    /**
     * The shipping label size.
     * @example ```"4x7"```
     */
    shipping_label_size?: string | null;
    /**
     * The shipping label resolution.
     * @example ```"200"```
     */
    shipping_label_resolution?: string | null;
    /**
     * The tracking number associated to this parcel.
     * @example ```"1Z4V2A000000000000"```
     */
    tracking_number?: string | null;
    /**
     * The tracking status for this parcel, automatically updated in real time by the shipping carrier.
     * @example ```"delivered"```
     */
    tracking_status?: string | null;
    /**
     * Additional information about the tracking status, automatically updated in real time by the shipping carrier.
     * @example ```"arrived_at_destination"```
     */
    tracking_status_detail?: string | null;
    /**
     * Time at which the parcel's tracking status was last updated.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    tracking_status_updated_at?: string | null;
    /**
     * The parcel's full tracking history, automatically updated in real time by the shipping carrier.
     * @example ```[{"object":"TrackingDetail","message":"Pre-Shipment information received","status":"pre_transit","datetime":"2018-02-27T16:02:17Z","source":"DHLExpress","tracking_location":{"object":"TrackingLocation"}}]```
     */
    tracking_details?: Array<Record<string, any>> | null;
    /**
     * The weight of the parcel as measured by the carrier in ounces (if available).
     * @example ```"42.32"```
     */
    carrier_weight_oz?: string | null;
    /**
     * The name of the person who signed for the parcel (if available).
     * @example ```"John Smith"```
     */
    signed_by?: string | null;
    /**
     * The type of Incoterm (if available).
     * @example ```"EXW"```
     */
    incoterm?: string | null;
    /**
     * The type of delivery confirmation option upon delivery.
     * @example ```"SIGNATURE"```
     */
    delivery_confirmation?: string | null;
    shipment?: ShipmentRel$4 | null;
    package?: PackageRel$1 | null;
}
declare class Parcels extends ApiResource<Parcel> {
    static readonly TYPE: ParcelType;
    create(resource: ParcelCreate, params?: QueryParamsRetrieve<Parcel>, options?: ResourcesConfig): Promise<Parcel>;
    update(resource: ParcelUpdate, params?: QueryParamsRetrieve<Parcel>, options?: ResourcesConfig): Promise<Parcel>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    shipment(parcelId: string | Parcel, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    package(parcelId: string | Parcel, params?: QueryParamsRetrieve<Package>, options?: ResourcesConfig): Promise<Package>;
    parcel_line_items(parcelId: string | Parcel, params?: QueryParamsList<ParcelLineItem>, options?: ResourcesConfig): Promise<ListResponse<ParcelLineItem>>;
    attachments(parcelId: string | Parcel, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(parcelId: string | Parcel, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(parcelId: string | Parcel, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isParcel(resource: any): resource is Parcel;
    relationship(id: string | ResourceId | null): ParcelRel$1;
    relationshipToMany(...ids: string[]): ParcelRel$1[];
    type(): ParcelType;
}

type PickupType = 'pickups';
type PickupRel = ResourceRel & {
    type: PickupType;
};
type PickupSort = Pick<Pickup, 'id' | 'status'> & ResourceSort;
interface Pickup extends Resource {
    readonly type: PickupType;
    /**
     * The pick up status.
     * @example ```"unknown"```
     */
    status?: string | null;
    /**
     * The pick up service internal ID.
     * @example ```"pickup_13e5d7e2a7824432a07975bc553944bc"```
     */
    internal_id: string;
    shipment?: Shipment | null;
    parcels?: Parcel[] | null;
    events?: Event[] | null;
}
declare class Pickups extends ApiResource<Pickup> {
    static readonly TYPE: PickupType;
    shipment(pickupId: string | Pickup, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    parcels(pickupId: string | Pickup, params?: QueryParamsList<Parcel>, options?: ResourcesConfig): Promise<ListResponse<Parcel>>;
    events(pickupId: string | Pickup, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    isPickup(resource: any): resource is Pickup;
    relationship(id: string | ResourceId | null): PickupRel;
    relationshipToMany(...ids: string[]): PickupRel[];
    type(): PickupType;
}

type CarrierAccountType = 'carrier_accounts';
type CarrierAccountRel$1 = ResourceRel & {
    type: CarrierAccountType;
};
type MarketRel$4 = ResourceRel & {
    type: MarketType;
};
type CarrierAccountSort = Pick<CarrierAccount, 'id' | 'name'> & ResourceSort;
interface CarrierAccount extends Resource {
    readonly type: CarrierAccountType;
    /**
     * The carrier account internal name.
     * @example ```"Accurate"```
     */
    name: string;
    /**
     * The Easypost service carrier type.
     * @example ```"AccurateAccount"```
     */
    easypost_type: string;
    /**
     * The Easypost internal reference ID.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    easypost_id?: string | null;
    /**
     * The Easypost carrier accounts credentials fields.
     * @example ```{"username":"xxxx","password":"secret"}```
     */
    credentials: Record<string, any>;
    market?: Market | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface CarrierAccountCreate extends ResourceCreate {
    /**
     * The carrier account internal name.
     * @example ```"Accurate"```
     */
    name: string;
    /**
     * The Easypost service carrier type.
     * @example ```"AccurateAccount"```
     */
    easypost_type: string;
    /**
     * The Easypost carrier accounts credentials fields.
     * @example ```{"username":"xxxx","password":"secret"}```
     */
    credentials: Record<string, any>;
    market?: MarketRel$4 | null;
}
interface CarrierAccountUpdate extends ResourceUpdate {
    /**
     * The carrier account internal name.
     * @example ```"Accurate"```
     */
    name?: string | null;
    /**
     * The Easypost service carrier type.
     * @example ```"AccurateAccount"```
     */
    easypost_type?: string | null;
    /**
     * The Easypost carrier accounts credentials fields.
     * @example ```{"username":"xxxx","password":"secret"}```
     */
    credentials?: Record<string, any> | null;
    market?: MarketRel$4 | null;
}
declare class CarrierAccounts extends ApiResource<CarrierAccount> {
    static readonly TYPE: CarrierAccountType;
    create(resource: CarrierAccountCreate, params?: QueryParamsRetrieve<CarrierAccount>, options?: ResourcesConfig): Promise<CarrierAccount>;
    update(resource: CarrierAccountUpdate, params?: QueryParamsRetrieve<CarrierAccount>, options?: ResourcesConfig): Promise<CarrierAccount>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(carrierAccountId: string | CarrierAccount, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    attachments(carrierAccountId: string | CarrierAccount, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(carrierAccountId: string | CarrierAccount, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isCarrierAccount(resource: any): resource is CarrierAccount;
    relationship(id: string | ResourceId | null): CarrierAccountRel$1;
    relationshipToMany(...ids: string[]): CarrierAccountRel$1[];
    type(): CarrierAccountType;
}

type ShipmentType = 'shipments';
type ShipmentRel$3 = ResourceRel & {
    type: ShipmentType;
};
type OrderRel$1 = ResourceRel & {
    type: OrderType;
};
type ShippingCategoryRel$2 = ResourceRel & {
    type: ShippingCategoryType;
};
type InventoryStockLocationRel = ResourceRel & {
    type: InventoryStockLocationType;
};
type AddressRel$3 = ResourceRel & {
    type: AddressType;
};
type ShippingMethodRel$2 = ResourceRel & {
    type: ShippingMethodType;
};
type TagRel$2 = ResourceRel & {
    type: TagType;
};
type ShipmentSort = Pick<Shipment, 'id' | 'number' | 'status' | 'cost_amount_cents' | 'get_rates_started_at' | 'get_rates_completed_at' | 'purchase_started_at' | 'purchase_completed_at' | 'purchase_failed_at' | 'on_hold_at' | 'picking_at' | 'packing_at' | 'ready_to_ship_at' | 'shipped_at'> & ResourceSort;
interface Shipment extends Resource {
    readonly type: ShipmentType;
    /**
     * Unique identifier for the shipment. Cannot be passed by sales channels.
     * @example ```"#1234/S/001"```
     */
    number: string;
    /**
     * The shipment status. One of 'draft' (default), 'upcoming', 'cancelled', 'on_hold', 'picking', 'packing', 'ready_to_ship', 'shipped', or 'delivered'.
     * @example ```"draft"```
     */
    status: 'draft' | 'upcoming' | 'cancelled' | 'on_hold' | 'picking' | 'packing' | 'ready_to_ship' | 'shipped' | 'delivered';
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, automatically inherited from the associated order.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The cost of this shipment from the selected carrier account, in cents.
     * @example ```1000```
     */
    cost_amount_cents?: number | null;
    /**
     * The cost of this shipment from the selected carrier account, float.
     * @example ```10```
     */
    cost_amount_float?: number | null;
    /**
     * The cost of this shipment from the selected carrier account, formatted.
     * @example ```"€10,00"```
     */
    formatted_cost_amount?: string | null;
    /**
     * The total number of SKUs in the shipment's line items. This can be useful to display a preview of the shipment content.
     * @example ```2```
     */
    skus_count?: number | null;
    /**
     * The selected purchase rate from the available shipping rates.
     * @example ```"rate_f89e4663c3ed47ee94d37763f6d21d54"```
     */
    selected_rate_id?: string | null;
    /**
     * The available shipping rates.
     * @example ```[{"id":"rate_f89e4663c3ed47ee94d37763f6d21d54","rate":"45.59","carrier":"DHLExpress","service":"MedicalExpress"}]```
     */
    rates?: Array<Record<string, any>> | null;
    /**
     * The shipping rate purchase error code, if any.
     * @example ```"SHIPMENT.POSTAGE.FAILURE"```
     */
    purchase_error_code?: string | null;
    /**
     * The shipping rate purchase error message, if any.
     * @example ```"Account not allowed for this service."```
     */
    purchase_error_message?: string | null;
    /**
     * Any errors collected when fetching shipping rates.
     * @example ```[{"carrier":"DHLExpress","message":"to_address.postal_code: Shorter than minimum length 3","type":"rate_error"}]```
     */
    get_rates_errors?: Array<Record<string, any>> | null;
    /**
     * Time at which the getting of the shipping rates started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    get_rates_started_at?: string | null;
    /**
     * Time at which the getting of the shipping rates completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    get_rates_completed_at?: string | null;
    /**
     * Time at which the purchasing of the shipping rate started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    purchase_started_at?: string | null;
    /**
     * Time at which the purchasing of the shipping rate completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    purchase_completed_at?: string | null;
    /**
     * Time at which the purchasing of the shipping rate failed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    purchase_failed_at?: string | null;
    /**
     * Time at which the shipment was put on hold.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    on_hold_at?: string | null;
    /**
     * Time at which the shipment was picking.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    picking_at?: string | null;
    /**
     * Time at which the shipment was packing.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    packing_at?: string | null;
    /**
     * Time at which the shipment was ready to ship.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    ready_to_ship_at?: string | null;
    /**
     * Time at which the shipment was shipped.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    shipped_at?: string | null;
    order?: Order | null;
    shipping_category?: ShippingCategory | null;
    inventory_stock_location?: InventoryStockLocation | null;
    stock_location?: StockLocation | null;
    origin_address?: Address | null;
    shipping_address?: Address | null;
    shipping_method?: ShippingMethod | null;
    delivery_lead_time?: DeliveryLeadTime | null;
    pickup?: Pickup | null;
    stock_line_items?: StockLineItem[] | null;
    stock_transfers?: StockTransfer[] | null;
    line_items?: LineItem[] | null;
    available_shipping_methods?: ShippingMethod[] | null;
    carrier_accounts?: CarrierAccount[] | null;
    parcels?: Parcel[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface ShipmentCreate extends ResourceCreate {
    order: OrderRel$1;
    shipping_category?: ShippingCategoryRel$2 | null;
    inventory_stock_location: InventoryStockLocationRel;
    shipping_address?: AddressRel$3 | null;
    shipping_method?: ShippingMethodRel$2 | null;
    tags?: TagRel$2[] | null;
}
interface ShipmentUpdate extends ResourceUpdate {
    /**
     * Unique identifier for the shipment. Cannot be passed by sales channels.
     * @example ```"#1234/S/001"```
     */
    number?: string | null;
    /**
     * Send this attribute if you want to mark this shipment as upcoming. Cannot be passed by sales channels.
     * @example ```true```
     */
    _upcoming?: boolean | null;
    /**
     * Send this attribute if you want to mark this shipment as cancelled (unless already shipped or delivered). Cannot be passed by sales channels.
     * @example ```true```
     */
    _cancel?: boolean | null;
    /**
     * Send this attribute if you want to put this shipment on hold.
     * @example ```true```
     */
    _on_hold?: boolean | null;
    /**
     * Send this attribute if you want to start picking this shipment.
     * @example ```true```
     */
    _picking?: boolean | null;
    /**
     * Send this attribute if you want to start packing this shipment.
     * @example ```true```
     */
    _packing?: boolean | null;
    /**
     * Send this attribute if you want to mark this shipment as ready to ship.
     * @example ```true```
     */
    _ready_to_ship?: boolean | null;
    /**
     * Send this attribute if you want to mark this shipment as shipped.
     * @example ```true```
     */
    _ship?: boolean | null;
    /**
     * Send this attribute if you want to mark this shipment as delivered.
     * @example ```true```
     */
    _deliver?: boolean | null;
    /**
     * Send this attribute if you want to automatically reserve the stock for each of the associated stock line item. Can be done only when fulfillment is in progress. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reserve_stock?: boolean | null;
    /**
     * Send this attribute if you want to automatically destroy the stock reservations for each of the associated stock line item. Can be done only when fulfillment is in progress. Cannot be passed by sales channels.
     * @example ```true```
     */
    _release_stock?: boolean | null;
    /**
     * Send this attribute if you want to automatically decrement and release the stock for each of the associated stock line item. Can be done only when fulfillment is in progress. Cannot be passed by sales channels.
     * @example ```true```
     */
    _decrement_stock?: boolean | null;
    /**
     * Send this attribute if you want get the shipping rates from the associated carrier accounts.
     * @example ```true```
     */
    _get_rates?: boolean | null;
    /**
     * The selected purchase rate from the available shipping rates.
     * @example ```"rate_f89e4663c3ed47ee94d37763f6d21d54"```
     */
    selected_rate_id?: string | null;
    /**
     * Send this attribute if you want to purchase this shipment with the selected rate.
     * @example ```true```
     */
    _purchase?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    shipping_category?: ShippingCategoryRel$2 | null;
    inventory_stock_location?: InventoryStockLocationRel | null;
    shipping_address?: AddressRel$3 | null;
    shipping_method?: ShippingMethodRel$2 | null;
    tags?: TagRel$2[] | null;
}
declare class Shipments extends ApiResource<Shipment> {
    static readonly TYPE: ShipmentType;
    create(resource: ShipmentCreate, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    update(resource: ShipmentUpdate, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    order(shipmentId: string | Shipment, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    shipping_category(shipmentId: string | Shipment, params?: QueryParamsRetrieve<ShippingCategory>, options?: ResourcesConfig): Promise<ShippingCategory>;
    inventory_stock_location(shipmentId: string | Shipment, params?: QueryParamsRetrieve<InventoryStockLocation>, options?: ResourcesConfig): Promise<InventoryStockLocation>;
    stock_location(shipmentId: string | Shipment, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    origin_address(shipmentId: string | Shipment, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    shipping_address(shipmentId: string | Shipment, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    shipping_method(shipmentId: string | Shipment, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    delivery_lead_time(shipmentId: string | Shipment, params?: QueryParamsRetrieve<DeliveryLeadTime>, options?: ResourcesConfig): Promise<DeliveryLeadTime>;
    pickup(shipmentId: string | Shipment, params?: QueryParamsRetrieve<Pickup>, options?: ResourcesConfig): Promise<Pickup>;
    stock_line_items(shipmentId: string | Shipment, params?: QueryParamsList<StockLineItem>, options?: ResourcesConfig): Promise<ListResponse<StockLineItem>>;
    stock_transfers(shipmentId: string | Shipment, params?: QueryParamsList<StockTransfer>, options?: ResourcesConfig): Promise<ListResponse<StockTransfer>>;
    line_items(shipmentId: string | Shipment, params?: QueryParamsList<LineItem>, options?: ResourcesConfig): Promise<ListResponse<LineItem>>;
    available_shipping_methods(shipmentId: string | Shipment, params?: QueryParamsList<ShippingMethod>, options?: ResourcesConfig): Promise<ListResponse<ShippingMethod>>;
    carrier_accounts(shipmentId: string | Shipment, params?: QueryParamsList<CarrierAccount>, options?: ResourcesConfig): Promise<ListResponse<CarrierAccount>>;
    parcels(shipmentId: string | Shipment, params?: QueryParamsList<Parcel>, options?: ResourcesConfig): Promise<ListResponse<Parcel>>;
    attachments(shipmentId: string | Shipment, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(shipmentId: string | Shipment, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(shipmentId: string | Shipment, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(shipmentId: string | Shipment, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _upcoming(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _cancel(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _on_hold(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _picking(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _packing(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _ready_to_ship(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _ship(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _deliver(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _reserve_stock(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _release_stock(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _decrement_stock(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _get_rates(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _purchase(id: string | Shipment, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _add_tags(id: string | Shipment, triggerValue: string, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    _remove_tags(id: string | Shipment, triggerValue: string, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    isShipment(resource: any): resource is Shipment;
    relationship(id: string | ResourceId | null): ShipmentRel$3;
    relationshipToMany(...ids: string[]): ShipmentRel$3[];
    type(): ShipmentType;
}

type StockTransferType = 'stock_transfers';
type StockTransferRel$1 = ResourceRel & {
    type: StockTransferType;
};
type SkuRel$6 = ResourceRel & {
    type: SkuType;
};
type StockLocationRel$3 = ResourceRel & {
    type: StockLocationType;
};
type ShipmentRel$2 = ResourceRel & {
    type: ShipmentType;
};
type LineItemRel = ResourceRel & {
    type: LineItemType;
};
type StockTransferSort = Pick<StockTransfer, 'id' | 'number' | 'status' | 'quantity' | 'on_hold_at' | 'picking_at' | 'in_transit_at' | 'completed_at' | 'cancelled_at'> & ResourceSort;
interface StockTransfer extends Resource {
    readonly type: StockTransferType;
    /**
     * Unique identifier for the stock transfer (numeric).
     * @example ```"1234"```
     */
    number?: string | null;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The stock transfer status. One of 'draft' (default), 'upcoming', 'on_hold', 'picking', 'in_transit', 'completed', or 'cancelled'.
     * @example ```"draft"```
     */
    status: 'draft' | 'upcoming' | 'on_hold' | 'picking' | 'in_transit' | 'completed' | 'cancelled';
    /**
     * The stock quantity to be transferred from the origin stock location to destination one. Updatable unless stock transfer is completed or cancelled and depending on origin stock availability.
     * @example ```2```
     */
    quantity: number;
    /**
     * Time at which the stock transfer was put on hold.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    on_hold_at?: string | null;
    /**
     * Time at which the stock transfer was picking.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    picking_at?: string | null;
    /**
     * Time at which the stock transfer was in transit.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    in_transit_at?: string | null;
    /**
     * Time at which the stock transfer was completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    completed_at?: string | null;
    /**
     * Time at which the stock transfer was cancelled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    cancelled_at?: string | null;
    sku?: Sku | null;
    origin_stock_location?: StockLocation | null;
    destination_stock_location?: StockLocation | null;
    shipment?: Shipment | null;
    line_item?: LineItem | null;
    stock_reservation?: StockReservation | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface StockTransferCreate extends ResourceCreate {
    /**
     * Unique identifier for the stock transfer (numeric).
     * @example ```"1234"```
     */
    number?: string | null;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The stock quantity to be transferred from the origin stock location to destination one. Updatable unless stock transfer is completed or cancelled and depending on origin stock availability.
     * @example ```2```
     */
    quantity: number;
    sku: SkuRel$6;
    origin_stock_location: StockLocationRel$3;
    destination_stock_location: StockLocationRel$3;
    shipment?: ShipmentRel$2 | null;
    line_item?: LineItemRel | null;
}
interface StockTransferUpdate extends ResourceUpdate {
    /**
     * Unique identifier for the stock transfer (numeric).
     * @example ```"1234"```
     */
    number?: string | null;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The stock quantity to be transferred from the origin stock location to destination one. Updatable unless stock transfer is completed or cancelled and depending on origin stock availability.
     * @example ```2```
     */
    quantity?: number | null;
    /**
     * Send this attribute if you want to mark this stock transfer as upcoming.
     * @example ```true```
     */
    _upcoming?: boolean | null;
    /**
     * Send this attribute if you want to put this stock transfer on hold.
     * @example ```true```
     */
    _on_hold?: boolean | null;
    /**
     * Send this attribute if you want to start picking this stock transfer.
     * @example ```true```
     */
    _picking?: boolean | null;
    /**
     * Send this attribute if you want to mark this stock transfer as in transit.
     * @example ```true```
     */
    _in_transit?: boolean | null;
    /**
     * Send this attribute if you want to complete this stock transfer.
     * @example ```true```
     */
    _complete?: boolean | null;
    /**
     * Send this attribute if you want to cancel this stock transfer.
     * @example ```true```
     */
    _cancel?: boolean | null;
    sku?: SkuRel$6 | null;
    origin_stock_location?: StockLocationRel$3 | null;
    destination_stock_location?: StockLocationRel$3 | null;
    shipment?: ShipmentRel$2 | null;
    line_item?: LineItemRel | null;
}
declare class StockTransfers extends ApiResource<StockTransfer> {
    static readonly TYPE: StockTransferType;
    create(resource: StockTransferCreate, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    update(resource: StockTransferUpdate, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    sku(stockTransferId: string | StockTransfer, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    origin_stock_location(stockTransferId: string | StockTransfer, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    destination_stock_location(stockTransferId: string | StockTransfer, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    shipment(stockTransferId: string | StockTransfer, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    line_item(stockTransferId: string | StockTransfer, params?: QueryParamsRetrieve<LineItem>, options?: ResourcesConfig): Promise<LineItem>;
    stock_reservation(stockTransferId: string | StockTransfer, params?: QueryParamsRetrieve<StockReservation>, options?: ResourcesConfig): Promise<StockReservation>;
    attachments(stockTransferId: string | StockTransfer, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(stockTransferId: string | StockTransfer, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(stockTransferId: string | StockTransfer, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _upcoming(id: string | StockTransfer, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    _on_hold(id: string | StockTransfer, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    _picking(id: string | StockTransfer, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    _in_transit(id: string | StockTransfer, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    _complete(id: string | StockTransfer, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    _cancel(id: string | StockTransfer, params?: QueryParamsRetrieve<StockTransfer>, options?: ResourcesConfig): Promise<StockTransfer>;
    isStockTransfer(resource: any): resource is StockTransfer;
    relationship(id: string | ResourceId | null): StockTransferRel$1;
    relationshipToMany(...ids: string[]): StockTransferRel$1[];
    type(): StockTransferType;
}

type StockLocationType = 'stock_locations';
type StockLocationRel$2 = ResourceRel & {
    type: StockLocationType;
};
type AddressRel$2 = ResourceRel & {
    type: AddressType;
};
type StockLocationSort = Pick<StockLocation, 'id' | 'name' | 'code' | 'label_format' | 'suppress_etd'> & ResourceSort;
interface StockLocation extends Resource {
    readonly type: StockLocationType;
    /**
     * Unique identifier for the stock location (numeric).
     * @example ```1234```
     */
    number?: number | null;
    /**
     * The stock location's internal name.
     * @example ```"Primary warehouse"```
     */
    name: string;
    /**
     * A string that you can use to identify the stock location (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The shipping label format for this stock location. Can be one of 'PDF', 'ZPL', 'EPL2', or 'PNG'.
     * @example ```"PDF"```
     */
    label_format?: string | null;
    /**
     * Flag it if you want to skip the electronic invoice creation when generating the customs info for this stock location shipments.
     */
    suppress_etd?: boolean | null;
    address?: Address | null;
    inventory_stock_locations?: InventoryStockLocation[] | null;
    inventory_return_locations?: InventoryReturnLocation[] | null;
    stock_items?: StockItem[] | null;
    stock_transfers?: StockTransfer[] | null;
    stores?: Store[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface StockLocationCreate extends ResourceCreate {
    /**
     * The stock location's internal name.
     * @example ```"Primary warehouse"```
     */
    name: string;
    /**
     * A string that you can use to identify the stock location (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The shipping label format for this stock location. Can be one of 'PDF', 'ZPL', 'EPL2', or 'PNG'.
     * @example ```"PDF"```
     */
    label_format?: string | null;
    /**
     * Flag it if you want to skip the electronic invoice creation when generating the customs info for this stock location shipments.
     */
    suppress_etd?: boolean | null;
    address: AddressRel$2;
}
interface StockLocationUpdate extends ResourceUpdate {
    /**
     * The stock location's internal name.
     * @example ```"Primary warehouse"```
     */
    name?: string | null;
    /**
     * A string that you can use to identify the stock location (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The shipping label format for this stock location. Can be one of 'PDF', 'ZPL', 'EPL2', or 'PNG'.
     * @example ```"PDF"```
     */
    label_format?: string | null;
    /**
     * Flag it if you want to skip the electronic invoice creation when generating the customs info for this stock location shipments.
     */
    suppress_etd?: boolean | null;
    address?: AddressRel$2 | null;
}
declare class StockLocations extends ApiResource<StockLocation> {
    static readonly TYPE: StockLocationType;
    create(resource: StockLocationCreate, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    update(resource: StockLocationUpdate, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    address(stockLocationId: string | StockLocation, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    inventory_stock_locations(stockLocationId: string | StockLocation, params?: QueryParamsList<InventoryStockLocation>, options?: ResourcesConfig): Promise<ListResponse<InventoryStockLocation>>;
    inventory_return_locations(stockLocationId: string | StockLocation, params?: QueryParamsList<InventoryReturnLocation>, options?: ResourcesConfig): Promise<ListResponse<InventoryReturnLocation>>;
    stock_items(stockLocationId: string | StockLocation, params?: QueryParamsList<StockItem>, options?: ResourcesConfig): Promise<ListResponse<StockItem>>;
    stock_transfers(stockLocationId: string | StockLocation, params?: QueryParamsList<StockTransfer>, options?: ResourcesConfig): Promise<ListResponse<StockTransfer>>;
    stores(stockLocationId: string | StockLocation, params?: QueryParamsList<Store>, options?: ResourcesConfig): Promise<ListResponse<Store>>;
    attachments(stockLocationId: string | StockLocation, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(stockLocationId: string | StockLocation, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isStockLocation(resource: any): resource is StockLocation;
    relationship(id: string | ResourceId | null): StockLocationRel$2;
    relationshipToMany(...ids: string[]): StockLocationRel$2[];
    type(): StockLocationType;
}

type StockItemType = 'stock_items';
type StockItemRel$1 = ResourceRel & {
    type: StockItemType;
};
type StockLocationRel$1 = ResourceRel & {
    type: StockLocationType;
};
type SkuRel$5 = ResourceRel & {
    type: SkuType;
};
type StockItemSort = Pick<StockItem, 'id' | 'quantity'> & ResourceSort;
interface StockItem extends Resource {
    readonly type: StockItemType;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The stock item quantity.
     * @example ```100```
     */
    quantity: number;
    stock_location?: StockLocation | null;
    sku?: Sku | null;
    reserved_stock?: ReservedStock | null;
    stock_reservations?: StockReservation[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface StockItemCreate extends ResourceCreate {
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The stock item quantity.
     * @example ```100```
     */
    quantity: number;
    stock_location: StockLocationRel$1;
    sku?: SkuRel$5 | null;
}
interface StockItemUpdate extends ResourceUpdate {
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The stock item quantity.
     * @example ```100```
     */
    quantity?: number | null;
    /**
     * Send this attribute if you want to validate the stock item quantity against the existing reserved stock one, returns an error in case the former is smaller. Cannot be passed by sales channels.
     * @example ```true```
     */
    _validate?: boolean | null;
    stock_location?: StockLocationRel$1 | null;
    sku?: SkuRel$5 | null;
}
declare class StockItems extends ApiResource<StockItem> {
    static readonly TYPE: StockItemType;
    create(resource: StockItemCreate, params?: QueryParamsRetrieve<StockItem>, options?: ResourcesConfig): Promise<StockItem>;
    update(resource: StockItemUpdate, params?: QueryParamsRetrieve<StockItem>, options?: ResourcesConfig): Promise<StockItem>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    stock_location(stockItemId: string | StockItem, params?: QueryParamsRetrieve<StockLocation>, options?: ResourcesConfig): Promise<StockLocation>;
    sku(stockItemId: string | StockItem, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    reserved_stock(stockItemId: string | StockItem, params?: QueryParamsRetrieve<ReservedStock>, options?: ResourcesConfig): Promise<ReservedStock>;
    stock_reservations(stockItemId: string | StockItem, params?: QueryParamsList<StockReservation>, options?: ResourcesConfig): Promise<ListResponse<StockReservation>>;
    attachments(stockItemId: string | StockItem, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(stockItemId: string | StockItem, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _validate(id: string | StockItem, params?: QueryParamsRetrieve<StockItem>, options?: ResourcesConfig): Promise<StockItem>;
    isStockItem(resource: any): resource is StockItem;
    relationship(id: string | ResourceId | null): StockItemRel$1;
    relationshipToMany(...ids: string[]): StockItemRel$1[];
    type(): StockItemType;
}

type SkuType = 'skus';
type SkuRel$4 = ResourceRel & {
    type: SkuType;
};
type ShippingCategoryRel$1 = ResourceRel & {
    type: ShippingCategoryType;
};
type TagRel$1 = ResourceRel & {
    type: TagType;
};
type SkuSort = Pick<Sku, 'id' | 'code' | 'name' | 'do_not_ship' | 'do_not_track'> & ResourceSort;
interface Sku extends Resource {
    readonly type: SkuType;
    /**
     * The SKU code, that uniquely identifies the SKU within the organization.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    code: string;
    /**
     * The internal name of the SKU.
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name: string;
    /**
     * An internal description of the SKU.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the SKU.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * The number of pieces that compose the SKU. This is useful to describe sets and bundles.
     * @example ```6```
     */
    pieces_per_pack?: number | null;
    /**
     * The weight of the SKU. If present, it will be used to calculate the shipping rates.
     * @example ```300```
     */
    weight?: number | null;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight?: 'gr' | 'oz' | 'lb' | null;
    /**
     * The Harmonized System Code used by customs to identify the products shipped across international borders.
     * @example ```"4901.91.0020"```
     */
    hs_tariff_number?: string | null;
    /**
     * Indicates if the SKU doesn't generate shipments.
     */
    do_not_ship?: boolean | null;
    /**
     * Indicates if the SKU doesn't track the stock inventory.
     */
    do_not_track?: boolean | null;
    /**
     * Aggregated information about the SKU's inventory. Returned only when retrieving a single SKU.
     * @example ```{"available":true,"quantity":10,"levels":[{"quantity":4,"delivery_lead_times":[{"shipping_method":{"name":"Standard Shipping","reference":null,"price_amount_cents":700,"free_over_amount_cents":9900,"formatted_price_amount":"€7,00","formatted_free_over_amount":"€99,00"},"min":{"hours":72,"days":3},"max":{"hours":120,"days":5}},{"shipping_method":{"name":"Express Delivery","reference":null,"price_amount_cents":1200,"free_over_amount_cents":null,"formatted_price_amount":"€12,00","formatted_free_over_amount":null},"min":{"hours":48,"days":2},"max":{"hours":72,"days":3}}]},{"quantity":6,"delivery_lead_times":[{"shipping_method":{"name":"Standard Shipping","reference":null,"price_amount_cents":700,"free_over_amount_cents":9900,"formatted_price_amount":"€7,00","formatted_free_over_amount":"€99,00"},"min":{"hours":96,"days":4},"max":{"hours":144,"days":6}},{"shipping_method":{"name":"Express Delivery","reference":null,"price_amount_cents":1200,"free_over_amount_cents":null,"formatted_price_amount":"€12,00","formatted_free_over_amount":null},"min":{"hours":72,"days":3},"max":{"hours":96,"days":4}}]}]}```
     */
    inventory?: Record<string, any> | null;
    /**
     * The custom_claim attached to the current JWT (if any).
     * @example ```{}```
     */
    jwt_custom_claim?: Record<string, any> | null;
    shipping_category?: ShippingCategory | null;
    prices?: Price[] | null;
    stock_items?: StockItem[] | null;
    stock_reservations?: StockReservation[] | null;
    delivery_lead_times?: DeliveryLeadTime[] | null;
    sku_options?: SkuOption[] | null;
    sku_list_items?: SkuListItem[] | null;
    sku_lists?: SkuList[] | null;
    attachments?: Attachment[] | null;
    links?: Link[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
    jwt_customer?: Customer | null;
    jwt_markets?: Market[] | null;
    jwt_stock_locations?: StockLocation[] | null;
}
interface SkuCreate extends ResourceCreate {
    /**
     * The SKU code, that uniquely identifies the SKU within the organization.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    code: string;
    /**
     * The internal name of the SKU.
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name: string;
    /**
     * An internal description of the SKU.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the SKU.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * The number of pieces that compose the SKU. This is useful to describe sets and bundles.
     * @example ```6```
     */
    pieces_per_pack?: number | null;
    /**
     * The weight of the SKU. If present, it will be used to calculate the shipping rates.
     * @example ```300```
     */
    weight?: number | null;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight?: 'gr' | 'oz' | 'lb' | null;
    /**
     * The Harmonized System Code used by customs to identify the products shipped across international borders.
     * @example ```"4901.91.0020"```
     */
    hs_tariff_number?: string | null;
    /**
     * Indicates if the SKU doesn't generate shipments.
     */
    do_not_ship?: boolean | null;
    /**
     * Indicates if the SKU doesn't track the stock inventory.
     */
    do_not_track?: boolean | null;
    shipping_category: ShippingCategoryRel$1;
    tags?: TagRel$1[] | null;
}
interface SkuUpdate extends ResourceUpdate {
    /**
     * The SKU code, that uniquely identifies the SKU within the organization.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    code?: string | null;
    /**
     * The internal name of the SKU.
     * @example ```"Men's Black T-shirt with White Logo (XL)"```
     */
    name?: string | null;
    /**
     * An internal description of the SKU.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The URL of an image that represents the SKU.
     * @example ```"https://img.yourdomain.com/skus/xYZkjABcde.png"```
     */
    image_url?: string | null;
    /**
     * The number of pieces that compose the SKU. This is useful to describe sets and bundles.
     * @example ```6```
     */
    pieces_per_pack?: number | null;
    /**
     * The weight of the SKU. If present, it will be used to calculate the shipping rates.
     * @example ```300```
     */
    weight?: number | null;
    /**
     * The unit of weight. One of 'gr', 'oz', or 'lb'.
     * @example ```"gr"```
     */
    unit_of_weight?: 'gr' | 'oz' | 'lb' | null;
    /**
     * The Harmonized System Code used by customs to identify the products shipped across international borders.
     * @example ```"4901.91.0020"```
     */
    hs_tariff_number?: string | null;
    /**
     * Indicates if the SKU doesn't generate shipments.
     */
    do_not_ship?: boolean | null;
    /**
     * Indicates if the SKU doesn't track the stock inventory.
     */
    do_not_track?: boolean | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    shipping_category?: ShippingCategoryRel$1 | null;
    tags?: TagRel$1[] | null;
}
declare class Skus extends ApiResource<Sku> {
    static readonly TYPE: SkuType;
    create(resource: SkuCreate, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    update(resource: SkuUpdate, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    shipping_category(skuId: string | Sku, params?: QueryParamsRetrieve<ShippingCategory>, options?: ResourcesConfig): Promise<ShippingCategory>;
    prices(skuId: string | Sku, params?: QueryParamsList<Price>, options?: ResourcesConfig): Promise<ListResponse<Price>>;
    stock_items(skuId: string | Sku, params?: QueryParamsList<StockItem>, options?: ResourcesConfig): Promise<ListResponse<StockItem>>;
    stock_reservations(skuId: string | Sku, params?: QueryParamsList<StockReservation>, options?: ResourcesConfig): Promise<ListResponse<StockReservation>>;
    delivery_lead_times(skuId: string | Sku, params?: QueryParamsList<DeliveryLeadTime>, options?: ResourcesConfig): Promise<ListResponse<DeliveryLeadTime>>;
    sku_options(skuId: string | Sku, params?: QueryParamsList<SkuOption>, options?: ResourcesConfig): Promise<ListResponse<SkuOption>>;
    sku_list_items(skuId: string | Sku, params?: QueryParamsList<SkuListItem>, options?: ResourcesConfig): Promise<ListResponse<SkuListItem>>;
    sku_lists(skuId: string | Sku, params?: QueryParamsList<SkuList>, options?: ResourcesConfig): Promise<ListResponse<SkuList>>;
    attachments(skuId: string | Sku, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    links(skuId: string | Sku, params?: QueryParamsList<Link>, options?: ResourcesConfig): Promise<ListResponse<Link>>;
    events(skuId: string | Sku, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(skuId: string | Sku, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(skuId: string | Sku, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    jwt_customer(skuId: string | Sku, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    jwt_markets(skuId: string | Sku, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    jwt_stock_locations(skuId: string | Sku, params?: QueryParamsList<StockLocation>, options?: ResourcesConfig): Promise<ListResponse<StockLocation>>;
    _add_tags(id: string | Sku, triggerValue: string, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    _remove_tags(id: string | Sku, triggerValue: string, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    isSku(resource: any): resource is Sku;
    relationship(id: string | ResourceId | null): SkuRel$4;
    relationshipToMany(...ids: string[]): SkuRel$4[];
    type(): SkuType;
}

type PriceTierType = 'price_tiers';
type PriceTierRel$2 = ResourceRel & {
    type: PriceTierType;
};
type PriceTierSort = Pick<PriceTier, 'id' | 'name' | 'up_to' | 'price_amount_cents'> & ResourceSort;
interface PriceTier extends Resource {
    readonly type: PriceTierType;
    /**
     * The price tier's name.
     * @example ```"six pack"```
     */
    name: string;
    /**
     * The tier upper limit. When 'null' it means infinity (useful to have an always matching tier).
     * @example ```20.5```
     */
    up_to?: number | null;
    /**
     * The price of this price tier, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    /**
     * The price of this price tier, float.
     * @example ```10```
     */
    price_amount_float?: number | null;
    /**
     * The price of this price tier, formatted.
     * @example ```"€10,00"```
     */
    formatted_price_amount?: string | null;
    price?: Price | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
declare class PriceTiers extends ApiResource<PriceTier> {
    static readonly TYPE: PriceTierType;
    price(priceTierId: string | PriceTier, params?: QueryParamsRetrieve<Price>, options?: ResourcesConfig): Promise<Price>;
    attachments(priceTierId: string | PriceTier, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(priceTierId: string | PriceTier, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isPriceTier(resource: any): resource is PriceTier;
    relationship(id: string | ResourceId | null): PriceTierRel$2;
    relationshipToMany(...ids: string[]): PriceTierRel$2[];
    type(): PriceTierType;
}

type PriceVolumeTierType = 'price_volume_tiers';
type PriceVolumeTierRel = ResourceRel & {
    type: PriceVolumeTierType;
};
type PriceRel$3 = ResourceRel & {
    type: PriceType;
};
type PriceVolumeTierSort = Pick<PriceVolumeTier, 'id' | 'name' | 'up_to' | 'price_amount_cents'> & ResourceSort;
interface PriceVolumeTier extends Resource {
    readonly type: PriceVolumeTierType;
    /**
     * The price tier's name.
     * @example ```"six pack"```
     */
    name: string;
    /**
     * The tier upper limit, expressed as the line item quantity. When 'null' it means infinity (useful to have an always matching tier).
     * @example ```15```
     */
    up_to?: number | null;
    /**
     * The price of this price tier, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    /**
     * The price of this price tier, float.
     * @example ```10```
     */
    price_amount_float?: number | null;
    /**
     * The price of this price tier, formatted.
     * @example ```"€10,00"```
     */
    formatted_price_amount?: string | null;
    price?: Price | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
    events?: Event[] | null;
}
interface PriceVolumeTierCreate extends ResourceCreate {
    /**
     * The price tier's name.
     * @example ```"six pack"```
     */
    name: string;
    /**
     * The tier upper limit, expressed as the line item quantity. When 'null' it means infinity (useful to have an always matching tier).
     * @example ```15```
     */
    up_to?: number | null;
    /**
     * The price of this price tier, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    price: PriceRel$3;
}
interface PriceVolumeTierUpdate extends ResourceUpdate {
    /**
     * The price tier's name.
     * @example ```"six pack"```
     */
    name?: string | null;
    /**
     * The tier upper limit, expressed as the line item quantity. When 'null' it means infinity (useful to have an always matching tier).
     * @example ```15```
     */
    up_to?: number | null;
    /**
     * The price of this price tier, in cents.
     * @example ```1000```
     */
    price_amount_cents?: number | null;
    price?: PriceRel$3 | null;
}
declare class PriceVolumeTiers extends ApiResource<PriceVolumeTier> {
    static readonly TYPE: PriceVolumeTierType;
    create(resource: PriceVolumeTierCreate, params?: QueryParamsRetrieve<PriceVolumeTier>, options?: ResourcesConfig): Promise<PriceVolumeTier>;
    update(resource: PriceVolumeTierUpdate, params?: QueryParamsRetrieve<PriceVolumeTier>, options?: ResourcesConfig): Promise<PriceVolumeTier>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    price(priceVolumeTierId: string | PriceVolumeTier, params?: QueryParamsRetrieve<Price>, options?: ResourcesConfig): Promise<Price>;
    attachments(priceVolumeTierId: string | PriceVolumeTier, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(priceVolumeTierId: string | PriceVolumeTier, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    events(priceVolumeTierId: string | PriceVolumeTier, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    isPriceVolumeTier(resource: any): resource is PriceVolumeTier;
    relationship(id: string | ResourceId | null): PriceVolumeTierRel;
    relationshipToMany(...ids: string[]): PriceVolumeTierRel[];
    type(): PriceVolumeTierType;
}

type PriceFrequencyTierType = 'price_frequency_tiers';
type PriceFrequencyTierRel = ResourceRel & {
    type: PriceFrequencyTierType;
};
type PriceRel$2 = ResourceRel & {
    type: PriceType;
};
type PriceFrequencyTierSort = Pick<PriceFrequencyTier, 'id' | 'name' | 'up_to' | 'price_amount_cents'> & ResourceSort;
interface PriceFrequencyTier extends Resource {
    readonly type: PriceFrequencyTierType;
    /**
     * The price tier's name.
     * @example ```"six pack"```
     */
    name: string;
    /**
     * The tier upper limit, expressed as the line item frequency in days (or frequency label, ie 'monthly'). When 'null' it means infinity (useful to have an always matching tier).
     * @example ```7```
     */
    up_to?: number | null;
    /**
     * The price of this price tier, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    /**
     * The price of this price tier, float.
     * @example ```10```
     */
    price_amount_float?: number | null;
    /**
     * The price of this price tier, formatted.
     * @example ```"€10,00"```
     */
    formatted_price_amount?: string | null;
    price?: Price | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
    events?: Event[] | null;
}
interface PriceFrequencyTierCreate extends ResourceCreate {
    /**
     * The price tier's name.
     * @example ```"six pack"```
     */
    name: string;
    /**
     * The tier upper limit, expressed as the line item frequency in days (or frequency label, ie 'monthly'). When 'null' it means infinity (useful to have an always matching tier).
     * @example ```7```
     */
    up_to?: number | null;
    /**
     * The price of this price tier, in cents.
     * @example ```1000```
     */
    price_amount_cents: number;
    price: PriceRel$2;
}
interface PriceFrequencyTierUpdate extends ResourceUpdate {
    /**
     * The price tier's name.
     * @example ```"six pack"```
     */
    name?: string | null;
    /**
     * The tier upper limit, expressed as the line item frequency in days (or frequency label, ie 'monthly'). When 'null' it means infinity (useful to have an always matching tier).
     * @example ```7```
     */
    up_to?: number | null;
    /**
     * The price of this price tier, in cents.
     * @example ```1000```
     */
    price_amount_cents?: number | null;
    price?: PriceRel$2 | null;
}
declare class PriceFrequencyTiers extends ApiResource<PriceFrequencyTier> {
    static readonly TYPE: PriceFrequencyTierType;
    create(resource: PriceFrequencyTierCreate, params?: QueryParamsRetrieve<PriceFrequencyTier>, options?: ResourcesConfig): Promise<PriceFrequencyTier>;
    update(resource: PriceFrequencyTierUpdate, params?: QueryParamsRetrieve<PriceFrequencyTier>, options?: ResourcesConfig): Promise<PriceFrequencyTier>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    price(priceFrequencyTierId: string | PriceFrequencyTier, params?: QueryParamsRetrieve<Price>, options?: ResourcesConfig): Promise<Price>;
    attachments(priceFrequencyTierId: string | PriceFrequencyTier, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(priceFrequencyTierId: string | PriceFrequencyTier, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    events(priceFrequencyTierId: string | PriceFrequencyTier, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    isPriceFrequencyTier(resource: any): resource is PriceFrequencyTier;
    relationship(id: string | ResourceId | null): PriceFrequencyTierRel;
    relationshipToMany(...ids: string[]): PriceFrequencyTierRel[];
    type(): PriceFrequencyTierType;
}

type PriceType = 'prices';
type PriceRel$1 = ResourceRel & {
    type: PriceType;
};
type PriceListRel$4 = ResourceRel & {
    type: PriceListType;
};
type SkuRel$3 = ResourceRel & {
    type: SkuType;
};
type PriceTierRel$1 = ResourceRel & {
    type: PriceTierType;
};
type PriceSort = Pick<Price, 'id' | 'currency_code' | 'amount_cents' | 'compare_at_amount_cents'> & ResourceSort;
interface Price extends Resource {
    readonly type: PriceType;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, inherited from the associated price list.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * The code of the associated SKU. When creating a price, either a valid sku_code or a SKU relationship must be present.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The SKU price amount for the associated price list, in cents.
     * @example ```10000```
     */
    amount_cents: number;
    /**
     * The SKU price amount for the associated price list, float.
     * @example ```100```
     */
    amount_float?: number | null;
    /**
     * The SKU price amount for the associated price list, formatted.
     * @example ```"€100,00"```
     */
    formatted_amount?: string | null;
    /**
     * The SKU price amount for the associated price list, in cents before any applied rule.
     * @example ```10000```
     */
    original_amount_cents?: number | null;
    /**
     * The SKU price amount for the associated price list, in cents before any applied rule, formatted.
     * @example ```"€100,00"```
     */
    formatted_original_amount?: string | null;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * The compared price amount, float.
     * @example ```130```
     */
    compare_at_amount_float?: number | null;
    /**
     * The compared price amount, formatted.
     * @example ```"€130,00"```
     */
    formatted_compare_at_amount?: string | null;
    /**
     * The rule outcomes.
     * @example ```[]```
     */
    rule_outcomes?: Record<string, any> | null;
    /**
     * Time at which the resource was processed by API.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    processed_at?: string | null;
    /**
     * The rules (using Rules Engine) to be applied.
     * @example ```{}```
     */
    rules?: Record<string, any> | null;
    /**
     * The payload used to evaluate the rules.
     * @example ```{}```
     */
    resource_payload?: Record<string, any> | null;
    /**
     * The custom_claim attached to the current JWT (if any).
     * @example ```{}```
     */
    jwt_custom_claim?: Record<string, any> | null;
    price_list?: PriceList | null;
    sku?: Sku | null;
    price_tiers?: PriceTier[] | null;
    price_volume_tiers?: PriceVolumeTier[] | null;
    price_frequency_tiers?: PriceFrequencyTier[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
    jwt_customer?: Customer | null;
    jwt_markets?: Market[] | null;
    jwt_stock_locations?: StockLocation[] | null;
}
interface PriceCreate extends ResourceCreate {
    /**
     * The code of the associated SKU. When creating a price, either a valid sku_code or a SKU relationship must be present.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The SKU price amount for the associated price list, in cents.
     * @example ```10000```
     */
    amount_cents: number;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * The rules (using Rules Engine) to be applied.
     * @example ```{}```
     */
    rules?: Record<string, any> | null;
    price_list: PriceListRel$4;
    sku: SkuRel$3;
    price_tiers?: PriceTierRel$1[] | null;
}
interface PriceUpdate extends ResourceUpdate {
    /**
     * The code of the associated SKU. When creating a price, either a valid sku_code or a SKU relationship must be present.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The SKU price amount for the associated price list, in cents.
     * @example ```10000```
     */
    amount_cents?: number | null;
    /**
     * The compared price amount, in cents. Useful to display a percentage discount.
     * @example ```13000```
     */
    compare_at_amount_cents?: number | null;
    /**
     * Time at which the resource was processed by API.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    processed_at?: string | null;
    /**
     * The rules (using Rules Engine) to be applied.
     * @example ```{}```
     */
    rules?: Record<string, any> | null;
    price_list?: PriceListRel$4 | null;
    sku?: SkuRel$3 | null;
    price_tiers?: PriceTierRel$1[] | null;
}
declare class Prices extends ApiResource<Price> {
    static readonly TYPE: PriceType;
    create(resource: PriceCreate, params?: QueryParamsRetrieve<Price>, options?: ResourcesConfig): Promise<Price>;
    update(resource: PriceUpdate, params?: QueryParamsRetrieve<Price>, options?: ResourcesConfig): Promise<Price>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    price_list(priceId: string | Price, params?: QueryParamsRetrieve<PriceList>, options?: ResourcesConfig): Promise<PriceList>;
    sku(priceId: string | Price, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    price_tiers(priceId: string | Price, params?: QueryParamsList<PriceTier>, options?: ResourcesConfig): Promise<ListResponse<PriceTier>>;
    price_volume_tiers(priceId: string | Price, params?: QueryParamsList<PriceVolumeTier>, options?: ResourcesConfig): Promise<ListResponse<PriceVolumeTier>>;
    price_frequency_tiers(priceId: string | Price, params?: QueryParamsList<PriceFrequencyTier>, options?: ResourcesConfig): Promise<ListResponse<PriceFrequencyTier>>;
    attachments(priceId: string | Price, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(priceId: string | Price, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    jwt_customer(priceId: string | Price, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    jwt_markets(priceId: string | Price, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    jwt_stock_locations(priceId: string | Price, params?: QueryParamsList<StockLocation>, options?: ResourcesConfig): Promise<ListResponse<StockLocation>>;
    isPrice(resource: any): resource is Price;
    relationship(id: string | ResourceId | null): PriceRel$1;
    relationshipToMany(...ids: string[]): PriceRel$1[];
    type(): PriceType;
}

type PriceListSchedulerType = 'price_list_schedulers';
type PriceListSchedulerRel = ResourceRel & {
    type: PriceListSchedulerType;
};
type MarketRel$3 = ResourceRel & {
    type: MarketType;
};
type PriceListRel$3 = ResourceRel & {
    type: PriceListType;
};
type PriceListSchedulerSort = Pick<PriceListScheduler, 'id' | 'name' | 'starts_at' | 'expires_at' | 'disabled_at'> & ResourceSort;
interface PriceListScheduler extends Resource {
    readonly type: PriceListSchedulerType;
    /**
     * The price list scheduler's internal name.
     * @example ```"FW SALE 2023"```
     */
    name: string;
    /**
     * The activation date/time of this price list scheduler.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this price list scheduler (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * Indicates if the price list scheduler is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The price list scheduler status. One of 'disabled', 'expired', 'pending', or 'active'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    market?: Market | null;
    price_list?: PriceList | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface PriceListSchedulerCreate extends ResourceCreate {
    /**
     * The price list scheduler's internal name.
     * @example ```"FW SALE 2023"```
     */
    name: string;
    /**
     * The activation date/time of this price list scheduler.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this price list scheduler (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    market: MarketRel$3;
    price_list: PriceListRel$3;
}
interface PriceListSchedulerUpdate extends ResourceUpdate {
    /**
     * The price list scheduler's internal name.
     * @example ```"FW SALE 2023"```
     */
    name?: string | null;
    /**
     * The activation date/time of this price list scheduler.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at?: string | null;
    /**
     * The expiration date/time of this price list scheduler (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at?: string | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    market?: MarketRel$3 | null;
    price_list?: PriceListRel$3 | null;
}
declare class PriceListSchedulers extends ApiResource<PriceListScheduler> {
    static readonly TYPE: PriceListSchedulerType;
    create(resource: PriceListSchedulerCreate, params?: QueryParamsRetrieve<PriceListScheduler>, options?: ResourcesConfig): Promise<PriceListScheduler>;
    update(resource: PriceListSchedulerUpdate, params?: QueryParamsRetrieve<PriceListScheduler>, options?: ResourcesConfig): Promise<PriceListScheduler>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(priceListSchedulerId: string | PriceListScheduler, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    price_list(priceListSchedulerId: string | PriceListScheduler, params?: QueryParamsRetrieve<PriceList>, options?: ResourcesConfig): Promise<PriceList>;
    events(priceListSchedulerId: string | PriceListScheduler, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(priceListSchedulerId: string | PriceListScheduler, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _disable(id: string | PriceListScheduler, params?: QueryParamsRetrieve<PriceListScheduler>, options?: ResourcesConfig): Promise<PriceListScheduler>;
    _enable(id: string | PriceListScheduler, params?: QueryParamsRetrieve<PriceListScheduler>, options?: ResourcesConfig): Promise<PriceListScheduler>;
    isPriceListScheduler(resource: any): resource is PriceListScheduler;
    relationship(id: string | ResourceId | null): PriceListSchedulerRel;
    relationshipToMany(...ids: string[]): PriceListSchedulerRel[];
    type(): PriceListSchedulerType;
}

type PriceListType = 'price_lists';
type PriceListRel$2 = ResourceRel & {
    type: PriceListType;
};
type PriceListSort = Pick<PriceList, 'id' | 'name' | 'code' | 'currency_code' | 'tax_included'> & ResourceSort;
interface PriceList extends Resource {
    readonly type: PriceListType;
    /**
     * The price list's internal name.
     * @example ```"EU Price list"```
     */
    name: string;
    /**
     * A string that you can use to identify the price list (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * Indicates if the associated prices include taxes.
     * @example ```true```
     */
    tax_included?: boolean | null;
    /**
     * The rule outcomes.
     * @example ```[]```
     */
    rule_outcomes?: Record<string, any> | null;
    /**
     * The rules (using Rules Engine) to be applied.
     * @example ```{}```
     */
    rules?: Record<string, any> | null;
    /**
     * The payload used to evaluate the rules.
     * @example ```{}```
     */
    resource_payload?: Record<string, any> | null;
    prices?: Price[] | null;
    price_list_schedulers?: PriceListScheduler[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface PriceListCreate extends ResourceCreate {
    /**
     * The price list's internal name.
     * @example ```"EU Price list"```
     */
    name: string;
    /**
     * A string that you can use to identify the price list (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * Indicates if the associated prices include taxes.
     * @example ```true```
     */
    tax_included?: boolean | null;
    /**
     * The rules (using Rules Engine) to be applied.
     * @example ```{}```
     */
    rules?: Record<string, any> | null;
}
interface PriceListUpdate extends ResourceUpdate {
    /**
     * The price list's internal name.
     * @example ```"EU Price list"```
     */
    name?: string | null;
    /**
     * A string that you can use to identify the price list (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the associated prices include taxes.
     * @example ```true```
     */
    tax_included?: boolean | null;
    /**
     * The rules (using Rules Engine) to be applied.
     * @example ```{}```
     */
    rules?: Record<string, any> | null;
}
declare class PriceLists extends ApiResource<PriceList> {
    static readonly TYPE: PriceListType;
    create(resource: PriceListCreate, params?: QueryParamsRetrieve<PriceList>, options?: ResourcesConfig): Promise<PriceList>;
    update(resource: PriceListUpdate, params?: QueryParamsRetrieve<PriceList>, options?: ResourcesConfig): Promise<PriceList>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    prices(priceListId: string | PriceList, params?: QueryParamsList<Price>, options?: ResourcesConfig): Promise<ListResponse<Price>>;
    price_list_schedulers(priceListId: string | PriceList, params?: QueryParamsList<PriceListScheduler>, options?: ResourcesConfig): Promise<ListResponse<PriceListScheduler>>;
    attachments(priceListId: string | PriceList, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(priceListId: string | PriceList, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isPriceList(resource: any): resource is PriceList;
    relationship(id: string | ResourceId | null): PriceListRel$2;
    relationshipToMany(...ids: string[]): PriceListRel$2[];
    type(): PriceListType;
}

type TransactionType = 'transactions';
type TransactionRel$1 = ResourceRel & {
    type: TransactionType;
};
type TransactionSort = Pick<Transaction, 'id' | 'number' | 'amount_cents'> & ResourceSort;
interface Transaction extends Resource {
    readonly type: TransactionType;
    /**
     * The transaction number, auto generated.
     * @example ```"42/T/001"```
     */
    number: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard, inherited from the associated order.
     * @example ```"EUR"```
     */
    currency_code: string;
    /**
     * The transaction amount, in cents.
     * @example ```1500```
     */
    amount_cents: number;
    /**
     * The transaction amount, float.
     * @example ```15```
     */
    amount_float: number;
    /**
     * The transaction amount, formatted.
     * @example ```"€15,00"```
     */
    formatted_amount: string;
    /**
     * Indicates if the transaction is successful.
     */
    succeeded: boolean;
    /**
     * The message returned by the payment gateway.
     * @example ```"Accepted"```
     */
    message?: string | null;
    /**
     * The error code, if any, returned by the payment gateway.
     * @example ```"00001"```
     */
    error_code?: string | null;
    /**
     * The error detail, if any, returned by the payment gateway.
     * @example ```"Already settled"```
     */
    error_detail?: string | null;
    /**
     * The token identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    token?: string | null;
    /**
     * The ID identifying the transaction, returned by the payment gateway.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    gateway_transaction_id?: string | null;
    order?: Order | null;
    payment_source?: AdyenPayment | AxervePayment | BraintreePayment | CheckoutComPayment | ExternalPayment | KlarnaPayment | PaypalPayment | SatispayPayment | StripePayment | WireTransfer | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
declare class Transactions extends ApiResource<Transaction> {
    static readonly TYPE: TransactionType;
    order(transactionId: string | Transaction, params?: QueryParamsRetrieve<Order>, options?: ResourcesConfig): Promise<Order>;
    attachments(transactionId: string | Transaction, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(transactionId: string | Transaction, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(transactionId: string | Transaction, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isTransaction(resource: any): resource is Transaction;
    relationship(id: string | ResourceId | null): TransactionRel$1;
    relationshipToMany(...ids: string[]): TransactionRel$1[];
    type(): TransactionType;
}

type PromotionType = 'promotions';
type PromotionRel$1 = ResourceRel & {
    type: PromotionType;
};
type PromotionSort = Pick<Promotion, 'id' | 'name' | 'currency_code' | 'exclusive' | 'priority' | 'starts_at' | 'expires_at' | 'total_usage_limit' | 'total_usage_count' | 'disabled_at'> & ResourceSort;
interface Promotion extends Resource {
    readonly type: PromotionType;
    /**
     * The promotion's internal name.
     * @example ```"Personal promotion"```
     */
    name: string;
    /**
     * The international 3-letter currency code as defined by the ISO 4217 standard.
     * @example ```"EUR"```
     */
    currency_code?: string | null;
    /**
     * Indicates if the promotion will be applied exclusively, based on its priority score.
     * @example ```true```
     */
    exclusive?: boolean | null;
    /**
     * The priority assigned to the promotion (lower means higher priority).
     * @example ```2```
     */
    priority?: number | null;
    /**
     * The activation date/time of this promotion.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    starts_at: string;
    /**
     * The expiration date/time of this promotion (must be after starts_at).
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    expires_at: string;
    /**
     * The total number of times this promotion can be applied. When 'null' it means promotion can be applied infinite times.
     * @example ```5```
     */
    total_usage_limit?: number | null;
    /**
     * The number of times this promotion has been applied.
     * @example ```2```
     */
    total_usage_count?: number | null;
    /**
     * Indicates if the promotion is active (enabled and not expired).
     * @example ```true```
     */
    active?: boolean | null;
    /**
     * The promotion status. One of 'disabled', 'expired', 'pending', 'active', or 'inactive'.
     * @example ```"pending"```
     */
    status?: 'disabled' | 'expired' | 'pending' | 'active' | 'inactive' | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    market?: Market | null;
    promotion_rules?: PromotionRule[] | null;
    order_amount_promotion_rule?: OrderAmountPromotionRule | null;
    sku_list_promotion_rule?: SkuListPromotionRule | null;
    coupon_codes_promotion_rule?: CouponCodesPromotionRule | null;
    custom_promotion_rule?: CustomPromotionRule | null;
    sku_list?: SkuList | null;
    coupons?: Coupon[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
declare class Promotions extends ApiResource<Promotion> {
    static readonly TYPE: PromotionType;
    market(promotionId: string | Promotion, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    order_amount_promotion_rule(promotionId: string | Promotion, params?: QueryParamsRetrieve<OrderAmountPromotionRule>, options?: ResourcesConfig): Promise<OrderAmountPromotionRule>;
    sku_list_promotion_rule(promotionId: string | Promotion, params?: QueryParamsRetrieve<SkuListPromotionRule>, options?: ResourcesConfig): Promise<SkuListPromotionRule>;
    coupon_codes_promotion_rule(promotionId: string | Promotion, params?: QueryParamsRetrieve<CouponCodesPromotionRule>, options?: ResourcesConfig): Promise<CouponCodesPromotionRule>;
    custom_promotion_rule(promotionId: string | Promotion, params?: QueryParamsRetrieve<CustomPromotionRule>, options?: ResourcesConfig): Promise<CustomPromotionRule>;
    sku_list(promotionId: string | Promotion, params?: QueryParamsRetrieve<SkuList>, options?: ResourcesConfig): Promise<SkuList>;
    coupons(promotionId: string | Promotion, params?: QueryParamsList<Coupon>, options?: ResourcesConfig): Promise<ListResponse<Coupon>>;
    attachments(promotionId: string | Promotion, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(promotionId: string | Promotion, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(promotionId: string | Promotion, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(promotionId: string | Promotion, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isPromotion(resource: any): resource is Promotion;
    relationship(id: string | ResourceId | null): PromotionRel$1;
    relationshipToMany(...ids: string[]): PromotionRel$1[];
    type(): PromotionType;
}

type TaxCalculatorType = 'tax_calculators';
type TaxCalculatorRel$1 = ResourceRel & {
    type: TaxCalculatorType;
};
type TaxCalculatorSort = Pick<TaxCalculator, 'id' | 'name'> & ResourceSort;
interface TaxCalculator extends Resource {
    readonly type: TaxCalculatorType;
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    markets?: Market[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
declare class TaxCalculators extends ApiResource<TaxCalculator> {
    static readonly TYPE: TaxCalculatorType;
    markets(taxCalculatorId: string | TaxCalculator, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    attachments(taxCalculatorId: string | TaxCalculator, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(taxCalculatorId: string | TaxCalculator, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(taxCalculatorId: string | TaxCalculator, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isTaxCalculator(resource: any): resource is TaxCalculator;
    relationship(id: string | ResourceId | null): TaxCalculatorRel$1;
    relationshipToMany(...ids: string[]): TaxCalculatorRel$1[];
    type(): TaxCalculatorType;
}

type AvalaraAccountType = 'avalara_accounts';
type AvalaraAccountRel$2 = ResourceRel & {
    type: AvalaraAccountType;
};
type TaxCategoryRel$4 = ResourceRel & {
    type: TaxCategoryType;
};
type AvalaraAccountSort = Pick<AvalaraAccount, 'id' | 'name'> & ResourceSort;
interface AvalaraAccount extends Resource {
    readonly type: AvalaraAccountType;
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * The Avalara account username.
     * @example ```"user@mydomain.com"```
     */
    username: string;
    /**
     * The Avalara company code.
     * @example ```"MYCOMPANY"```
     */
    company_code: string;
    /**
     * Indicates if the transaction will be recorded and visible on the Avalara website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
    /**
     * Indicates if the seller is responsible for paying/remitting the customs duty & import tax to the customs authorities.
     * @example ```true```
     */
    ddp?: boolean | null;
    markets?: Market[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
    tax_categories?: TaxCategory[] | null;
}
interface AvalaraAccountCreate extends ResourceCreate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * The Avalara account username.
     * @example ```"user@mydomain.com"```
     */
    username: string;
    /**
     * The Avalara account password.
     * @example ```"secret"```
     */
    password: string;
    /**
     * The Avalara company code.
     * @example ```"MYCOMPANY"```
     */
    company_code: string;
    /**
     * Indicates if the transaction will be recorded and visible on the Avalara website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
    /**
     * Indicates if the seller is responsible for paying/remitting the customs duty & import tax to the customs authorities.
     * @example ```true```
     */
    ddp?: boolean | null;
    tax_categories?: TaxCategoryRel$4[] | null;
}
interface AvalaraAccountUpdate extends ResourceUpdate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name?: string | null;
    /**
     * The Avalara account username.
     * @example ```"user@mydomain.com"```
     */
    username?: string | null;
    /**
     * The Avalara account password.
     * @example ```"secret"```
     */
    password?: string | null;
    /**
     * The Avalara company code.
     * @example ```"MYCOMPANY"```
     */
    company_code?: string | null;
    /**
     * Indicates if the transaction will be recorded and visible on the Avalara website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
    /**
     * Indicates if the seller is responsible for paying/remitting the customs duty & import tax to the customs authorities.
     * @example ```true```
     */
    ddp?: boolean | null;
    tax_categories?: TaxCategoryRel$4[] | null;
}
declare class AvalaraAccounts extends ApiResource<AvalaraAccount> {
    static readonly TYPE: AvalaraAccountType;
    create(resource: AvalaraAccountCreate, params?: QueryParamsRetrieve<AvalaraAccount>, options?: ResourcesConfig): Promise<AvalaraAccount>;
    update(resource: AvalaraAccountUpdate, params?: QueryParamsRetrieve<AvalaraAccount>, options?: ResourcesConfig): Promise<AvalaraAccount>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(avalaraAccountId: string | AvalaraAccount, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    attachments(avalaraAccountId: string | AvalaraAccount, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(avalaraAccountId: string | AvalaraAccount, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(avalaraAccountId: string | AvalaraAccount, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    tax_categories(avalaraAccountId: string | AvalaraAccount, params?: QueryParamsList<TaxCategory>, options?: ResourcesConfig): Promise<ListResponse<TaxCategory>>;
    isAvalaraAccount(resource: any): resource is AvalaraAccount;
    relationship(id: string | ResourceId | null): AvalaraAccountRel$2;
    relationshipToMany(...ids: string[]): AvalaraAccountRel$2[];
    type(): AvalaraAccountType;
}

type StripeTaxAccountType = 'stripe_tax_accounts';
type StripeTaxAccountRel$2 = ResourceRel & {
    type: StripeTaxAccountType;
};
type TaxCategoryRel$3 = ResourceRel & {
    type: TaxCategoryType;
};
type StripeTaxAccountSort = Pick<StripeTaxAccount, 'id' | 'name'> & ResourceSort;
interface StripeTaxAccount extends Resource {
    readonly type: StripeTaxAccountType;
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * Indicates if the transaction will be recorded and visible on the Stripe website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
    markets?: Market[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
    tax_categories?: TaxCategory[] | null;
}
interface StripeTaxAccountCreate extends ResourceCreate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * The Stripe account API key.
     * @example ```"STRIPE_API_KEY"```
     */
    api_key: string;
    /**
     * Indicates if the transaction will be recorded and visible on the Stripe website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
    tax_categories?: TaxCategoryRel$3[] | null;
}
interface StripeTaxAccountUpdate extends ResourceUpdate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name?: string | null;
    /**
     * The Stripe account API key.
     * @example ```"STRIPE_API_KEY"```
     */
    api_key?: string | null;
    /**
     * Indicates if the transaction will be recorded and visible on the Stripe website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
    tax_categories?: TaxCategoryRel$3[] | null;
}
declare class StripeTaxAccounts extends ApiResource<StripeTaxAccount> {
    static readonly TYPE: StripeTaxAccountType;
    create(resource: StripeTaxAccountCreate, params?: QueryParamsRetrieve<StripeTaxAccount>, options?: ResourcesConfig): Promise<StripeTaxAccount>;
    update(resource: StripeTaxAccountUpdate, params?: QueryParamsRetrieve<StripeTaxAccount>, options?: ResourcesConfig): Promise<StripeTaxAccount>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(stripeTaxAccountId: string | StripeTaxAccount, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    attachments(stripeTaxAccountId: string | StripeTaxAccount, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(stripeTaxAccountId: string | StripeTaxAccount, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(stripeTaxAccountId: string | StripeTaxAccount, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    tax_categories(stripeTaxAccountId: string | StripeTaxAccount, params?: QueryParamsList<TaxCategory>, options?: ResourcesConfig): Promise<ListResponse<TaxCategory>>;
    isStripeTaxAccount(resource: any): resource is StripeTaxAccount;
    relationship(id: string | ResourceId | null): StripeTaxAccountRel$2;
    relationshipToMany(...ids: string[]): StripeTaxAccountRel$2[];
    type(): StripeTaxAccountType;
}

type VertexAccountType = 'vertex_accounts';
type VertexAccountRel$2 = ResourceRel & {
    type: VertexAccountType;
};
type VertexAccountSort = Pick<VertexAccount, 'id' | 'name'> & ResourceSort;
interface VertexAccount extends Resource {
    readonly type: VertexAccountType;
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * The Vertex account kind. One of 'cloud', 'on_demand', or 'on_premise'.
     * @example ```"cloud"```
     */
    kind?: 'cloud' | 'on_demand' | 'on_premise' | null;
    /**
     * The Vertex API baseurl, optional for 'cloud' kind.
     * @example ```"yourbaseurl"```
     */
    baseurl?: string | null;
    /**
     * The API endpoint as computed by specified kind and baseurl.
     * @example ```"https://my_baseurl.ondemand.vertexinc.com"```
     */
    api_endpoint?: string | null;
    /**
     * Indicates if the transaction will be recorded and visible on the Vertex website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
    /**
     * The expiration date/time of the access token.
     * @example ```"2018-01-02T12:00:00.000Z"```
     */
    token_expires_at?: string | null;
    markets?: Market[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface VertexAccountCreate extends ResourceCreate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * The Vertex account kind. One of 'cloud', 'on_demand', or 'on_premise'.
     * @example ```"cloud"```
     */
    kind?: 'cloud' | 'on_demand' | 'on_premise' | null;
    /**
     * The Vertex API baseurl, optional for 'cloud' kind.
     * @example ```"yourbaseurl"```
     */
    baseurl?: string | null;
    /**
     * The Vertex account client ID.
     * @example ```"xxx-yyy-zzz"```
     */
    client_id: string;
    /**
     * The Vertex account client secret.
     * @example ```"xxx-yyy-zzz"```
     */
    client_secret: string;
    /**
     * Indicates if the transaction will be recorded and visible on the Vertex website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
}
interface VertexAccountUpdate extends ResourceUpdate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name?: string | null;
    /**
     * The Vertex account kind. One of 'cloud', 'on_demand', or 'on_premise'.
     * @example ```"cloud"```
     */
    kind?: 'cloud' | 'on_demand' | 'on_premise' | null;
    /**
     * The Vertex API baseurl, optional for 'cloud' kind.
     * @example ```"yourbaseurl"```
     */
    baseurl?: string | null;
    /**
     * The Vertex account client ID.
     * @example ```"xxx-yyy-zzz"```
     */
    client_id?: string | null;
    /**
     * The Vertex account client secret.
     * @example ```"xxx-yyy-zzz"```
     */
    client_secret?: string | null;
    /**
     * Indicates if the transaction will be recorded and visible on the Vertex website.
     * @example ```true```
     */
    commit_invoice?: boolean | null;
    /**
     * Send this attribute if you want to manually refresh the access token.
     * @example ```true```
     */
    _refresh_token?: boolean | null;
}
declare class VertexAccounts extends ApiResource<VertexAccount> {
    static readonly TYPE: VertexAccountType;
    create(resource: VertexAccountCreate, params?: QueryParamsRetrieve<VertexAccount>, options?: ResourcesConfig): Promise<VertexAccount>;
    update(resource: VertexAccountUpdate, params?: QueryParamsRetrieve<VertexAccount>, options?: ResourcesConfig): Promise<VertexAccount>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(vertexAccountId: string | VertexAccount, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    attachments(vertexAccountId: string | VertexAccount, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(vertexAccountId: string | VertexAccount, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(vertexAccountId: string | VertexAccount, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _refresh_token(id: string | VertexAccount, params?: QueryParamsRetrieve<VertexAccount>, options?: ResourcesConfig): Promise<VertexAccount>;
    isVertexAccount(resource: any): resource is VertexAccount;
    relationship(id: string | ResourceId | null): VertexAccountRel$2;
    relationshipToMany(...ids: string[]): VertexAccountRel$2[];
    type(): VertexAccountType;
}

type TaxjarAccountType = 'taxjar_accounts';
type TaxjarAccountRel$2 = ResourceRel & {
    type: TaxjarAccountType;
};
type TaxCategoryRel$2 = ResourceRel & {
    type: TaxCategoryType;
};
type TaxjarAccountSort = Pick<TaxjarAccount, 'id' | 'name'> & ResourceSort;
interface TaxjarAccount extends Resource {
    readonly type: TaxjarAccountType;
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    markets?: Market[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
    tax_categories?: TaxCategory[] | null;
}
interface TaxjarAccountCreate extends ResourceCreate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * The TaxJar account API key.
     * @example ```"TAXJAR_API_KEY"```
     */
    api_key: string;
    tax_categories?: TaxCategoryRel$2[] | null;
}
interface TaxjarAccountUpdate extends ResourceUpdate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name?: string | null;
    /**
     * The TaxJar account API key.
     * @example ```"TAXJAR_API_KEY"```
     */
    api_key?: string | null;
    tax_categories?: TaxCategoryRel$2[] | null;
}
declare class TaxjarAccounts extends ApiResource<TaxjarAccount> {
    static readonly TYPE: TaxjarAccountType;
    create(resource: TaxjarAccountCreate, params?: QueryParamsRetrieve<TaxjarAccount>, options?: ResourcesConfig): Promise<TaxjarAccount>;
    update(resource: TaxjarAccountUpdate, params?: QueryParamsRetrieve<TaxjarAccount>, options?: ResourcesConfig): Promise<TaxjarAccount>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(taxjarAccountId: string | TaxjarAccount, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    attachments(taxjarAccountId: string | TaxjarAccount, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(taxjarAccountId: string | TaxjarAccount, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(taxjarAccountId: string | TaxjarAccount, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    tax_categories(taxjarAccountId: string | TaxjarAccount, params?: QueryParamsList<TaxCategory>, options?: ResourcesConfig): Promise<ListResponse<TaxCategory>>;
    isTaxjarAccount(resource: any): resource is TaxjarAccount;
    relationship(id: string | ResourceId | null): TaxjarAccountRel$2;
    relationshipToMany(...ids: string[]): TaxjarAccountRel$2[];
    type(): TaxjarAccountType;
}

type TaxRuleType = 'tax_rules';
type TaxRuleRel$1 = ResourceRel & {
    type: TaxRuleType;
};
type ManualTaxCalculatorRel$3 = ResourceRel & {
    type: ManualTaxCalculatorType;
};
type TaxRuleSort = Pick<TaxRule, 'id' | 'name' | 'tax_rate'> & ResourceSort;
interface TaxRule extends Resource {
    readonly type: TaxRuleType;
    /**
     * The tax rule internal name.
     * @example ```"Fixed 22%"```
     */
    name: string;
    /**
     * The tax rate for this rule.
     * @example ```0.22```
     */
    tax_rate?: number | null;
    /**
     * Indicates if the freight is taxable.
     */
    freight_taxable?: boolean | null;
    /**
     * Indicates if the payment method is taxable.
     */
    payment_method_taxable?: boolean | null;
    /**
     * Indicates if gift cards are taxable.
     */
    gift_card_taxable?: boolean | null;
    /**
     * Indicates if adjustemnts are taxable.
     */
    adjustment_taxable?: boolean | null;
    /**
     * The breakdown for this tax rule (if calculated).
     * @example ```{"41":{"tax_rate":0.22}}```
     */
    breakdown?: Record<string, any> | null;
    /**
     * The regex that will be evaluated to match the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE|HU|LV|LT"```
     */
    country_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE"```
     */
    not_country_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]|D[CE]|FL"```
     */
    state_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]"```
     */
    not_state_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address zip code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3|JE4|JE5)"```
     */
    zip_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping zip country code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3)"```
     */
    not_zip_code_regex?: string | null;
    manual_tax_calculator?: ManualTaxCalculator | null;
    versions?: Version[] | null;
}
interface TaxRuleCreate extends ResourceCreate {
    /**
     * The tax rule internal name.
     * @example ```"Fixed 22%"```
     */
    name: string;
    /**
     * The tax rate for this rule.
     * @example ```0.22```
     */
    tax_rate?: number | null;
    /**
     * Indicates if the freight is taxable.
     */
    freight_taxable?: boolean | null;
    /**
     * Indicates if the payment method is taxable.
     */
    payment_method_taxable?: boolean | null;
    /**
     * Indicates if gift cards are taxable.
     */
    gift_card_taxable?: boolean | null;
    /**
     * Indicates if adjustemnts are taxable.
     */
    adjustment_taxable?: boolean | null;
    /**
     * The regex that will be evaluated to match the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE|HU|LV|LT"```
     */
    country_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE"```
     */
    not_country_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]|D[CE]|FL"```
     */
    state_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]"```
     */
    not_state_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address zip code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3|JE4|JE5)"```
     */
    zip_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping zip country code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3)"```
     */
    not_zip_code_regex?: string | null;
    manual_tax_calculator: ManualTaxCalculatorRel$3;
}
interface TaxRuleUpdate extends ResourceUpdate {
    /**
     * The tax rule internal name.
     * @example ```"Fixed 22%"```
     */
    name?: string | null;
    /**
     * The tax rate for this rule.
     * @example ```0.22```
     */
    tax_rate?: number | null;
    /**
     * Indicates if the freight is taxable.
     */
    freight_taxable?: boolean | null;
    /**
     * Indicates if the payment method is taxable.
     */
    payment_method_taxable?: boolean | null;
    /**
     * Indicates if gift cards are taxable.
     */
    gift_card_taxable?: boolean | null;
    /**
     * Indicates if adjustemnts are taxable.
     */
    adjustment_taxable?: boolean | null;
    /**
     * The regex that will be evaluated to match the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE|HU|LV|LT"```
     */
    country_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address country code, max size is 5000.
     * @example ```"AT|BE|BG|CZ|DK|EE|DE"```
     */
    not_country_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]|D[CE]|FL"```
     */
    state_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping address state code, max size is 5000.
     * @example ```"A[KLRZ]|C[AOT]"```
     */
    not_state_code_regex?: string | null;
    /**
     * The regex that will be evaluated to match the shipping address zip code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3|JE4|JE5)"```
     */
    zip_code_regex?: string | null;
    /**
     * The regex that will be evaluated as negative match for the shipping zip country code, max size is 5000.
     * @example ```"(?i)(JE1|JE2|JE3)"```
     */
    not_zip_code_regex?: string | null;
    manual_tax_calculator?: ManualTaxCalculatorRel$3 | null;
}
declare class TaxRules extends ApiResource<TaxRule> {
    static readonly TYPE: TaxRuleType;
    create(resource: TaxRuleCreate, params?: QueryParamsRetrieve<TaxRule>, options?: ResourcesConfig): Promise<TaxRule>;
    update(resource: TaxRuleUpdate, params?: QueryParamsRetrieve<TaxRule>, options?: ResourcesConfig): Promise<TaxRule>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    manual_tax_calculator(taxRuleId: string | TaxRule, params?: QueryParamsRetrieve<ManualTaxCalculator>, options?: ResourcesConfig): Promise<ManualTaxCalculator>;
    versions(taxRuleId: string | TaxRule, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isTaxRule(resource: any): resource is TaxRule;
    relationship(id: string | ResourceId | null): TaxRuleRel$1;
    relationshipToMany(...ids: string[]): TaxRuleRel$1[];
    type(): TaxRuleType;
}

type ManualTaxCalculatorType = 'manual_tax_calculators';
type ManualTaxCalculatorRel$2 = ResourceRel & {
    type: ManualTaxCalculatorType;
};
type TaxRuleRel = ResourceRel & {
    type: TaxRuleType;
};
type ManualTaxCalculatorSort = Pick<ManualTaxCalculator, 'id' | 'name'> & ResourceSort;
interface ManualTaxCalculator extends Resource {
    readonly type: ManualTaxCalculatorType;
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    markets?: Market[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
    tax_rules?: TaxRule[] | null;
}
interface ManualTaxCalculatorCreate extends ResourceCreate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    tax_rules?: TaxRuleRel[] | null;
}
interface ManualTaxCalculatorUpdate extends ResourceUpdate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name?: string | null;
    tax_rules?: TaxRuleRel[] | null;
}
declare class ManualTaxCalculators extends ApiResource<ManualTaxCalculator> {
    static readonly TYPE: ManualTaxCalculatorType;
    create(resource: ManualTaxCalculatorCreate, params?: QueryParamsRetrieve<ManualTaxCalculator>, options?: ResourcesConfig): Promise<ManualTaxCalculator>;
    update(resource: ManualTaxCalculatorUpdate, params?: QueryParamsRetrieve<ManualTaxCalculator>, options?: ResourcesConfig): Promise<ManualTaxCalculator>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(manualTaxCalculatorId: string | ManualTaxCalculator, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    attachments(manualTaxCalculatorId: string | ManualTaxCalculator, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(manualTaxCalculatorId: string | ManualTaxCalculator, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(manualTaxCalculatorId: string | ManualTaxCalculator, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    tax_rules(manualTaxCalculatorId: string | ManualTaxCalculator, params?: QueryParamsList<TaxRule>, options?: ResourcesConfig): Promise<ListResponse<TaxRule>>;
    isManualTaxCalculator(resource: any): resource is ManualTaxCalculator;
    relationship(id: string | ResourceId | null): ManualTaxCalculatorRel$2;
    relationshipToMany(...ids: string[]): ManualTaxCalculatorRel$2[];
    type(): ManualTaxCalculatorType;
}

type ExternalTaxCalculatorType = 'external_tax_calculators';
type ExternalTaxCalculatorRel$2 = ResourceRel & {
    type: ExternalTaxCalculatorType;
};
type ExternalTaxCalculatorSort = Pick<ExternalTaxCalculator, 'id' | 'name' | 'circuit_state' | 'circuit_failure_count'> & ResourceSort;
interface ExternalTaxCalculator extends Resource {
    readonly type: ExternalTaxCalculatorType;
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * The URL to the service that will compute the taxes.
     * @example ```"https://external_calculator.yourbrand.com"```
     */
    tax_calculator_url: string;
    /**
     * The circuit breaker state, by default it is 'closed'. It can become 'open' once the number of consecutive failures overlaps the specified threshold, in such case no further calls to the failing callback are made.
     * @example ```"closed"```
     */
    circuit_state?: string | null;
    /**
     * The number of consecutive failures recorded by the circuit breaker associated to this resource, will be reset on first successful call to callback.
     * @example ```5```
     */
    circuit_failure_count?: number | null;
    /**
     * The shared secret used to sign the external request payload.
     * @example ```"1c0994cc4e996e8c6ee56a2198f66f3c"```
     */
    shared_secret: string;
    markets?: Market[] | null;
    attachments?: Attachment[] | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface ExternalTaxCalculatorCreate extends ResourceCreate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name: string;
    /**
     * The URL to the service that will compute the taxes.
     * @example ```"https://external_calculator.yourbrand.com"```
     */
    tax_calculator_url: string;
}
interface ExternalTaxCalculatorUpdate extends ResourceUpdate {
    /**
     * The tax calculator's internal name.
     * @example ```"Personal tax calculator"```
     */
    name?: string | null;
    /**
     * The URL to the service that will compute the taxes.
     * @example ```"https://external_calculator.yourbrand.com"```
     */
    tax_calculator_url?: string | null;
    /**
     * Send this attribute if you want to reset the circuit breaker associated to this resource to 'closed' state and zero failures count. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reset_circuit?: boolean | null;
}
declare class ExternalTaxCalculators extends ApiResource<ExternalTaxCalculator> {
    static readonly TYPE: ExternalTaxCalculatorType;
    create(resource: ExternalTaxCalculatorCreate, params?: QueryParamsRetrieve<ExternalTaxCalculator>, options?: ResourcesConfig): Promise<ExternalTaxCalculator>;
    update(resource: ExternalTaxCalculatorUpdate, params?: QueryParamsRetrieve<ExternalTaxCalculator>, options?: ResourcesConfig): Promise<ExternalTaxCalculator>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(externalTaxCalculatorId: string | ExternalTaxCalculator, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    attachments(externalTaxCalculatorId: string | ExternalTaxCalculator, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    events(externalTaxCalculatorId: string | ExternalTaxCalculator, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(externalTaxCalculatorId: string | ExternalTaxCalculator, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _reset_circuit(id: string | ExternalTaxCalculator, params?: QueryParamsRetrieve<ExternalTaxCalculator>, options?: ResourcesConfig): Promise<ExternalTaxCalculator>;
    isExternalTaxCalculator(resource: any): resource is ExternalTaxCalculator;
    relationship(id: string | ResourceId | null): ExternalTaxCalculatorRel$2;
    relationshipToMany(...ids: string[]): ExternalTaxCalculatorRel$2[];
    type(): ExternalTaxCalculatorType;
}

type TaxCategoryType = 'tax_categories';
type TaxCategoryRel$1 = ResourceRel & {
    type: TaxCategoryType;
};
type SkuRel$2 = ResourceRel & {
    type: SkuType;
};
type AvalaraAccountRel$1 = ResourceRel & {
    type: AvalaraAccountType;
};
type StripeTaxAccountRel$1 = ResourceRel & {
    type: StripeTaxAccountType;
};
type VertexAccountRel$1 = ResourceRel & {
    type: VertexAccountType;
};
type TaxjarAccountRel$1 = ResourceRel & {
    type: TaxjarAccountType;
};
type ManualTaxCalculatorRel$1 = ResourceRel & {
    type: ManualTaxCalculatorType;
};
type ExternalTaxCalculatorRel$1 = ResourceRel & {
    type: ExternalTaxCalculatorType;
};
type TaxCategorySort = Pick<TaxCategory, 'id' | 'code'> & ResourceSort;
interface TaxCategory extends Resource {
    readonly type: TaxCategoryType;
    /**
     * The tax category identifier code, specific for a particular tax calculator.
     * @example ```"31000"```
     */
    code: string;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    sku?: Sku | null;
    tax_calculator?: AvalaraAccount | StripeTaxAccount | VertexAccount | TaxjarAccount | ManualTaxCalculator | ExternalTaxCalculator | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface TaxCategoryCreate extends ResourceCreate {
    /**
     * The tax category identifier code, specific for a particular tax calculator.
     * @example ```"31000"```
     */
    code: string;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    sku: SkuRel$2;
    tax_calculator: AvalaraAccountRel$1 | StripeTaxAccountRel$1 | VertexAccountRel$1 | TaxjarAccountRel$1 | ManualTaxCalculatorRel$1 | ExternalTaxCalculatorRel$1;
}
interface TaxCategoryUpdate extends ResourceUpdate {
    /**
     * The tax category identifier code, specific for a particular tax calculator.
     * @example ```"31000"```
     */
    code?: string | null;
    /**
     * The code of the associated SKU.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    sku?: SkuRel$2 | null;
}
declare class TaxCategories extends ApiResource<TaxCategory> {
    static readonly TYPE: TaxCategoryType;
    create(resource: TaxCategoryCreate, params?: QueryParamsRetrieve<TaxCategory>, options?: ResourcesConfig): Promise<TaxCategory>;
    update(resource: TaxCategoryUpdate, params?: QueryParamsRetrieve<TaxCategory>, options?: ResourcesConfig): Promise<TaxCategory>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    sku(taxCategoryId: string | TaxCategory, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    attachments(taxCategoryId: string | TaxCategory, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(taxCategoryId: string | TaxCategory, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isTaxCategory(resource: any): resource is TaxCategory;
    relationship(id: string | ResourceId | null): TaxCategoryRel$1;
    relationshipToMany(...ids: string[]): TaxCategoryRel$1[];
    type(): TaxCategoryType;
}

type AttachmentType = 'attachments';
type AttachmentRel = ResourceRel & {
    type: AttachmentType;
};
type GeocoderRel$3 = ResourceRel & {
    type: GeocoderType;
};
type PriceListRel$1 = ResourceRel & {
    type: PriceListType;
};
type PaymentMethodRel$1 = ResourceRel & {
    type: PaymentMethodType;
};
type MarketRel$2 = ResourceRel & {
    type: MarketType;
};
type CustomerGroupRel$1 = ResourceRel & {
    type: CustomerGroupType;
};
type OrderRel = ResourceRel & {
    type: OrderType;
};
type TransactionRel = ResourceRel & {
    type: TransactionType;
};
type PromotionRel = ResourceRel & {
    type: PromotionType;
};
type TaxCalculatorRel = ResourceRel & {
    type: TaxCalculatorType;
};
type TaxCategoryRel = ResourceRel & {
    type: TaxCategoryType;
};
type SkuRel$1 = ResourceRel & {
    type: SkuType;
};
type ShippingCategoryRel = ResourceRel & {
    type: ShippingCategoryType;
};
type BundleRel = ResourceRel & {
    type: BundleType;
};
type SkuListRel = ResourceRel & {
    type: SkuListType;
};
type StockItemRel = ResourceRel & {
    type: StockItemType;
};
type StockLocationRel = ResourceRel & {
    type: StockLocationType;
};
type ReturnRel = ResourceRel & {
    type: ReturnType;
};
type CarrierAccountRel = ResourceRel & {
    type: CarrierAccountType;
};
type CouponRecipientRel = ResourceRel & {
    type: CouponRecipientType;
};
type CustomerRel$1 = ResourceRel & {
    type: CustomerType;
};
type DeliveryLeadTimeRel = ResourceRel & {
    type: DeliveryLeadTimeType;
};
type ShippingMethodRel$1 = ResourceRel & {
    type: ShippingMethodType;
};
type DiscountEngineRel$1 = ResourceRel & {
    type: DiscountEngineType;
};
type ShipmentRel$1 = ResourceRel & {
    type: ShipmentType;
};
type ParcelRel = ResourceRel & {
    type: ParcelType;
};
type GiftCardRecipientRel = ResourceRel & {
    type: GiftCardRecipientType;
};
type GiftCardRel = ResourceRel & {
    type: GiftCardType;
};
type InventoryModelRel$1 = ResourceRel & {
    type: InventoryModelType;
};
type StockTransferRel = ResourceRel & {
    type: StockTransferType;
};
type SkuOptionRel = ResourceRel & {
    type: SkuOptionType;
};
type MerchantRel$2 = ResourceRel & {
    type: MerchantType;
};
type SubscriptionModelRel$1 = ResourceRel & {
    type: SubscriptionModelType;
};
type PaymentOptionRel = ResourceRel & {
    type: PaymentOptionType;
};
type PackageRel = ResourceRel & {
    type: PackageType;
};
type PriceRel = ResourceRel & {
    type: PriceType;
};
type PriceTierRel = ResourceRel & {
    type: PriceTierType;
};
type ShippingMethodTierRel = ResourceRel & {
    type: ShippingMethodTierType;
};
type ShippingZoneRel = ResourceRel & {
    type: ShippingZoneType;
};
type AttachmentSort = Pick<Attachment, 'id' | 'name'> & ResourceSort;
interface Attachment extends Resource {
    readonly type: AttachmentType;
    /**
     * The internal name of the attachment.
     * @example ```"DDT transport document"```
     */
    name: string;
    /**
     * An internal description of the attachment.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The attachment URL.
     * @example ```"https://s3.yourdomain.com/attachment.pdf"```
     */
    url?: string | null;
    attachable?: Geocoder | PriceList | PaymentMethod | Market | CustomerGroup | Order | Transaction | Promotion | TaxCalculator | TaxCategory | Sku | ShippingCategory | Bundle | SkuList | StockItem | StockLocation | Return | CarrierAccount | CouponRecipient | Customer | DeliveryLeadTime | ShippingMethod | DiscountEngine | Shipment | Parcel | GiftCardRecipient | GiftCard | InventoryModel | StockTransfer | SkuOption | Merchant | SubscriptionModel | PaymentOption | Package | Price | PriceTier | ShippingMethodTier | ShippingZone | null;
}
interface AttachmentCreate extends ResourceCreate {
    /**
     * The internal name of the attachment.
     * @example ```"DDT transport document"```
     */
    name: string;
    /**
     * An internal description of the attachment.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The attachment URL.
     * @example ```"https://s3.yourdomain.com/attachment.pdf"```
     */
    url?: string | null;
    attachable: GeocoderRel$3 | PriceListRel$1 | PaymentMethodRel$1 | MarketRel$2 | CustomerGroupRel$1 | OrderRel | TransactionRel | PromotionRel | TaxCalculatorRel | TaxCategoryRel | SkuRel$1 | ShippingCategoryRel | BundleRel | SkuListRel | StockItemRel | StockLocationRel | ReturnRel | CarrierAccountRel | CouponRecipientRel | CustomerRel$1 | DeliveryLeadTimeRel | ShippingMethodRel$1 | DiscountEngineRel$1 | ShipmentRel$1 | ParcelRel | GiftCardRecipientRel | GiftCardRel | InventoryModelRel$1 | StockTransferRel | SkuOptionRel | MerchantRel$2 | SubscriptionModelRel$1 | PaymentOptionRel | PackageRel | PriceRel | PriceTierRel | ShippingMethodTierRel | ShippingZoneRel;
}
interface AttachmentUpdate extends ResourceUpdate {
    /**
     * The internal name of the attachment.
     * @example ```"DDT transport document"```
     */
    name?: string | null;
    /**
     * An internal description of the attachment.
     * @example ```"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."```
     */
    description?: string | null;
    /**
     * The attachment URL.
     * @example ```"https://s3.yourdomain.com/attachment.pdf"```
     */
    url?: string | null;
    attachable?: GeocoderRel$3 | PriceListRel$1 | PaymentMethodRel$1 | MarketRel$2 | CustomerGroupRel$1 | OrderRel | TransactionRel | PromotionRel | TaxCalculatorRel | TaxCategoryRel | SkuRel$1 | ShippingCategoryRel | BundleRel | SkuListRel | StockItemRel | StockLocationRel | ReturnRel | CarrierAccountRel | CouponRecipientRel | CustomerRel$1 | DeliveryLeadTimeRel | ShippingMethodRel$1 | DiscountEngineRel$1 | ShipmentRel$1 | ParcelRel | GiftCardRecipientRel | GiftCardRel | InventoryModelRel$1 | StockTransferRel | SkuOptionRel | MerchantRel$2 | SubscriptionModelRel$1 | PaymentOptionRel | PackageRel | PriceRel | PriceTierRel | ShippingMethodTierRel | ShippingZoneRel | null;
}
declare class Attachments extends ApiResource<Attachment> {
    static readonly TYPE: AttachmentType;
    create(resource: AttachmentCreate, params?: QueryParamsRetrieve<Attachment>, options?: ResourcesConfig): Promise<Attachment>;
    update(resource: AttachmentUpdate, params?: QueryParamsRetrieve<Attachment>, options?: ResourcesConfig): Promise<Attachment>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    isAttachment(resource: any): resource is Attachment;
    relationship(id: string | ResourceId | null): AttachmentRel;
    relationshipToMany(...ids: string[]): AttachmentRel[];
    type(): AttachmentType;
}

type MerchantType = 'merchants';
type MerchantRel$1 = ResourceRel & {
    type: MerchantType;
};
type AddressRel$1 = ResourceRel & {
    type: AddressType;
};
type MerchantSort = Pick<Merchant, 'id' | 'name'> & ResourceSort;
interface Merchant extends Resource {
    readonly type: MerchantType;
    /**
     * The merchant's internal name.
     * @example ```"The Brand Inc."```
     */
    name: string;
    address?: Address | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface MerchantCreate extends ResourceCreate {
    /**
     * The merchant's internal name.
     * @example ```"The Brand Inc."```
     */
    name: string;
    address: AddressRel$1;
}
interface MerchantUpdate extends ResourceUpdate {
    /**
     * The merchant's internal name.
     * @example ```"The Brand Inc."```
     */
    name?: string | null;
    address?: AddressRel$1 | null;
}
declare class Merchants extends ApiResource<Merchant> {
    static readonly TYPE: MerchantType;
    create(resource: MerchantCreate, params?: QueryParamsRetrieve<Merchant>, options?: ResourcesConfig): Promise<Merchant>;
    update(resource: MerchantUpdate, params?: QueryParamsRetrieve<Merchant>, options?: ResourcesConfig): Promise<Merchant>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    address(merchantId: string | Merchant, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    attachments(merchantId: string | Merchant, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(merchantId: string | Merchant, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isMerchant(resource: any): resource is Merchant;
    relationship(id: string | ResourceId | null): MerchantRel$1;
    relationshipToMany(...ids: string[]): MerchantRel$1[];
    type(): MerchantType;
}

type MarketType = 'markets';
type MarketRel$1 = ResourceRel & {
    type: MarketType;
};
type MerchantRel = ResourceRel & {
    type: MerchantType;
};
type PriceListRel = ResourceRel & {
    type: PriceListType;
};
type InventoryModelRel = ResourceRel & {
    type: InventoryModelType;
};
type SubscriptionModelRel = ResourceRel & {
    type: SubscriptionModelType;
};
type DiscountEngineRel = ResourceRel & {
    type: DiscountEngineType;
};
type AvalaraAccountRel = ResourceRel & {
    type: AvalaraAccountType;
};
type StripeTaxAccountRel = ResourceRel & {
    type: StripeTaxAccountType;
};
type VertexAccountRel = ResourceRel & {
    type: VertexAccountType;
};
type TaxjarAccountRel = ResourceRel & {
    type: TaxjarAccountType;
};
type ManualTaxCalculatorRel = ResourceRel & {
    type: ManualTaxCalculatorType;
};
type ExternalTaxCalculatorRel = ResourceRel & {
    type: ExternalTaxCalculatorType;
};
type CustomerGroupRel = ResourceRel & {
    type: CustomerGroupType;
};
type GeocoderRel$2 = ResourceRel & {
    type: GeocoderType;
};
type ShippingMethodRel = ResourceRel & {
    type: ShippingMethodType;
};
type PaymentMethodRel = ResourceRel & {
    type: PaymentMethodType;
};
type MarketSort = Pick<Market, 'id' | 'name' | 'code' | 'disabled_at'> & ResourceSort;
interface Market extends Resource {
    readonly type: MarketType;
    /**
     * Unique identifier for the market (numeric).
     * @example ```1234```
     */
    number?: number | null;
    /**
     * The market's internal name.
     * @example ```"EU Market"```
     */
    name: string;
    /**
     * A string that you can use to identify the market (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The Facebook Pixed ID.
     * @example ```"1234567890"```
     */
    facebook_pixel_id?: string | null;
    /**
     * The checkout URL for this market.
     * @example ```"https://checkout.yourbrand.com/:order_id"```
     */
    checkout_url?: string | null;
    /**
     * The URL used to overwrite prices by an external source.
     * @example ```"https://external_prices.yourbrand.com"```
     */
    external_prices_url?: string | null;
    /**
     * The URL used to validate orders by an external source.
     * @example ```"https://external_validation.yourbrand.com"```
     */
    external_order_validation_url?: string | null;
    /**
     * Indicates if market belongs to a customer_group.
     * @example ```true```
     */
    private?: boolean | null;
    /**
     * When specified indicates the maximum number of shipping line items with cost that will be added to an order.
     * @example ```3```
     */
    shipping_cost_cutoff?: number | null;
    /**
     * Time at which this resource was disabled.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    disabled_at?: string | null;
    /**
     * The shared secret used to sign the external request payload.
     * @example ```"1c0994cc4e996e8c6ee56a2198f66f3c"```
     */
    shared_secret: string;
    merchant?: Merchant | null;
    price_list?: PriceList | null;
    base_price_list?: PriceList | null;
    inventory_model?: InventoryModel | null;
    subscription_model?: SubscriptionModel | null;
    discount_engine?: DiscountEngine | null;
    tax_calculator?: AvalaraAccount | StripeTaxAccount | VertexAccount | TaxjarAccount | ManualTaxCalculator | ExternalTaxCalculator | null;
    customer_group?: CustomerGroup | null;
    geocoder?: Geocoder | null;
    default_shipping_method?: ShippingMethod | null;
    default_payment_method?: PaymentMethod | null;
    stores?: Store[] | null;
    price_list_schedulers?: PriceListScheduler[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface MarketCreate extends ResourceCreate {
    /**
     * The market's internal name.
     * @example ```"EU Market"```
     */
    name: string;
    /**
     * A string that you can use to identify the market (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The Facebook Pixed ID.
     * @example ```"1234567890"```
     */
    facebook_pixel_id?: string | null;
    /**
     * The checkout URL for this market.
     * @example ```"https://checkout.yourbrand.com/:order_id"```
     */
    checkout_url?: string | null;
    /**
     * The URL used to overwrite prices by an external source.
     * @example ```"https://external_prices.yourbrand.com"```
     */
    external_prices_url?: string | null;
    /**
     * The URL used to validate orders by an external source.
     * @example ```"https://external_validation.yourbrand.com"```
     */
    external_order_validation_url?: string | null;
    /**
     * When specified indicates the maximum number of shipping line items with cost that will be added to an order.
     * @example ```3```
     */
    shipping_cost_cutoff?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    merchant: MerchantRel;
    price_list: PriceListRel;
    inventory_model: InventoryModelRel;
    subscription_model?: SubscriptionModelRel | null;
    discount_engine?: DiscountEngineRel | null;
    tax_calculator?: AvalaraAccountRel | StripeTaxAccountRel | VertexAccountRel | TaxjarAccountRel | ManualTaxCalculatorRel | ExternalTaxCalculatorRel | null;
    customer_group?: CustomerGroupRel | null;
    geocoder?: GeocoderRel$2 | null;
    default_shipping_method?: ShippingMethodRel | null;
    default_payment_method?: PaymentMethodRel | null;
}
interface MarketUpdate extends ResourceUpdate {
    /**
     * The market's internal name.
     * @example ```"EU Market"```
     */
    name?: string | null;
    /**
     * A string that you can use to identify the market (must be unique within the environment).
     * @example ```"europe1"```
     */
    code?: string | null;
    /**
     * The Facebook Pixed ID.
     * @example ```"1234567890"```
     */
    facebook_pixel_id?: string | null;
    /**
     * The checkout URL for this market.
     * @example ```"https://checkout.yourbrand.com/:order_id"```
     */
    checkout_url?: string | null;
    /**
     * The URL used to overwrite prices by an external source.
     * @example ```"https://external_prices.yourbrand.com"```
     */
    external_prices_url?: string | null;
    /**
     * The URL used to validate orders by an external source.
     * @example ```"https://external_validation.yourbrand.com"```
     */
    external_order_validation_url?: string | null;
    /**
     * When specified indicates the maximum number of shipping line items with cost that will be added to an order.
     * @example ```3```
     */
    shipping_cost_cutoff?: number | null;
    /**
     * Send this attribute if you want to mark this resource as disabled.
     * @example ```true```
     */
    _disable?: boolean | null;
    /**
     * Send this attribute if you want to mark this resource as enabled.
     * @example ```true```
     */
    _enable?: boolean | null;
    merchant?: MerchantRel | null;
    price_list?: PriceListRel | null;
    inventory_model?: InventoryModelRel | null;
    subscription_model?: SubscriptionModelRel | null;
    discount_engine?: DiscountEngineRel | null;
    tax_calculator?: AvalaraAccountRel | StripeTaxAccountRel | VertexAccountRel | TaxjarAccountRel | ManualTaxCalculatorRel | ExternalTaxCalculatorRel | null;
    customer_group?: CustomerGroupRel | null;
    geocoder?: GeocoderRel$2 | null;
    default_shipping_method?: ShippingMethodRel | null;
    default_payment_method?: PaymentMethodRel | null;
}
declare class Markets extends ApiResource<Market> {
    static readonly TYPE: MarketType;
    create(resource: MarketCreate, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    update(resource: MarketUpdate, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    merchant(marketId: string | Market, params?: QueryParamsRetrieve<Merchant>, options?: ResourcesConfig): Promise<Merchant>;
    price_list(marketId: string | Market, params?: QueryParamsRetrieve<PriceList>, options?: ResourcesConfig): Promise<PriceList>;
    base_price_list(marketId: string | Market, params?: QueryParamsRetrieve<PriceList>, options?: ResourcesConfig): Promise<PriceList>;
    inventory_model(marketId: string | Market, params?: QueryParamsRetrieve<InventoryModel>, options?: ResourcesConfig): Promise<InventoryModel>;
    subscription_model(marketId: string | Market, params?: QueryParamsRetrieve<SubscriptionModel>, options?: ResourcesConfig): Promise<SubscriptionModel>;
    discount_engine(marketId: string | Market, params?: QueryParamsRetrieve<DiscountEngine>, options?: ResourcesConfig): Promise<DiscountEngine>;
    tax_calculator(marketId: string | Market, params?: QueryParamsRetrieve<TaxCalculator>, options?: ResourcesConfig): Promise<TaxCalculator>;
    customer_group(marketId: string | Market, params?: QueryParamsRetrieve<CustomerGroup>, options?: ResourcesConfig): Promise<CustomerGroup>;
    geocoder(marketId: string | Market, params?: QueryParamsRetrieve<Geocoder>, options?: ResourcesConfig): Promise<Geocoder>;
    default_shipping_method(marketId: string | Market, params?: QueryParamsRetrieve<ShippingMethod>, options?: ResourcesConfig): Promise<ShippingMethod>;
    default_payment_method(marketId: string | Market, params?: QueryParamsRetrieve<PaymentMethod>, options?: ResourcesConfig): Promise<PaymentMethod>;
    stores(marketId: string | Market, params?: QueryParamsList<Store>, options?: ResourcesConfig): Promise<ListResponse<Store>>;
    price_list_schedulers(marketId: string | Market, params?: QueryParamsList<PriceListScheduler>, options?: ResourcesConfig): Promise<ListResponse<PriceListScheduler>>;
    attachments(marketId: string | Market, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(marketId: string | Market, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _disable(id: string | Market, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    _enable(id: string | Market, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    isMarket(resource: any): resource is Market;
    relationship(id: string | ResourceId | null): MarketRel$1;
    relationshipToMany(...ids: string[]): MarketRel$1[];
    type(): MarketType;
}

type GeocoderType = 'geocoders';
type GeocoderRel$1 = ResourceRel & {
    type: GeocoderType;
};
type GeocoderSort = Pick<Geocoder, 'id' | 'name'> & ResourceSort;
interface Geocoder extends Resource {
    readonly type: GeocoderType;
    /**
     * The geocoder's internal name.
     * @example ```"Default geocoder"```
     */
    name: string;
    markets?: Market[] | null;
    addresses?: Address[] | null;
    attachments?: Attachment[] | null;
}
declare class Geocoders extends ApiResource<Geocoder> {
    static readonly TYPE: GeocoderType;
    markets(geocoderId: string | Geocoder, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    addresses(geocoderId: string | Geocoder, params?: QueryParamsList<Address>, options?: ResourcesConfig): Promise<ListResponse<Address>>;
    attachments(geocoderId: string | Geocoder, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    isGeocoder(resource: any): resource is Geocoder;
    relationship(id: string | ResourceId | null): GeocoderRel$1;
    relationshipToMany(...ids: string[]): GeocoderRel$1[];
    type(): GeocoderType;
}

type AddressType = 'addresses';
type AddressRel = ResourceRel & {
    type: AddressType;
};
type GeocoderRel = ResourceRel & {
    type: GeocoderType;
};
type TagRel = ResourceRel & {
    type: TagType;
};
type AddressSort = Pick<Address, 'id' | 'city' | 'state_code' | 'country_code'> & ResourceSort;
interface Address extends Resource {
    readonly type: AddressType;
    /**
     * Indicates if it's a business or a personal address.
     */
    business?: boolean | null;
    /**
     * Address first name (personal).
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * Address last name (personal).
     * @example ```"Smith"```
     */
    last_name?: string | null;
    /**
     * Address company name (business).
     * @example ```"The Red Brand Inc."```
     */
    company?: string | null;
    /**
     * Company name (business) of first name and last name (personal).
     * @example ```"John Smith"```
     */
    full_name?: string | null;
    /**
     * Address line 1, i.e. Street address, PO Box.
     * @example ```"2883 Geraldine Lane"```
     */
    line_1: string;
    /**
     * Address line 2, i.e. Apartment, Suite, Building.
     * @example ```"Apt.23"```
     */
    line_2?: string | null;
    /**
     * Address city.
     * @example ```"New York"```
     */
    city: string;
    /**
     * ZIP or postal code.
     * @example ```"10013"```
     */
    zip_code?: string | null;
    /**
     * State, province or region code.
     * @example ```"NY"```
     */
    state_code: string;
    /**
     * The international 2-letter country code as defined by the ISO 3166-1 standard.
     * @example ```"US"```
     */
    country_code: string;
    /**
     * Phone number (including extension).
     * @example ```"(212) 646-338-1228"```
     */
    phone: string;
    /**
     * Compact description of the address location, without the full name.
     * @example ```"2883 Geraldine Lane Apt.23, 10013 New York NY (US) (212) 646-338-1228"```
     */
    full_address?: string | null;
    /**
     * Compact description of the address location, including the full name.
     * @example ```"John Smith, 2883 Geraldine Lane Apt.23, 10013 New York NY (US) (212) 646-338-1228"```
     */
    name?: string | null;
    /**
     * Email address.
     * @example ```"john@example.com"```
     */
    email?: string | null;
    /**
     * A free notes attached to the address. When used as a shipping address, this can be useful to let the customers add specific delivery instructions.
     * @example ```"Please ring the bell twice"```
     */
    notes?: string | null;
    /**
     * The address geocoded latitude. This is automatically generated when creating a shipping/billing address for an order and a valid geocoder is attached to the order's market.
     * @example ```40.6971494```
     */
    lat?: number | null;
    /**
     * The address geocoded longitude. This is automatically generated when creating a shipping/billing address for an order and a valid geocoder is attached to the order's market.
     * @example ```-74.2598672```
     */
    lng?: number | null;
    /**
     * Indicates if the latitude and logitude are present, either geocoded or manually updated.
     * @example ```true```
     */
    is_localized?: boolean | null;
    /**
     * Indicates if the address has been successfully geocoded.
     * @example ```true```
     */
    is_geocoded?: boolean | null;
    /**
     * The geocoder provider name (either Google or Bing).
     * @example ```"google"```
     */
    provider_name?: string | null;
    /**
     * The map url of the geocoded address (if geocoded).
     * @example ```"https://www.google.com/maps/search/?api=1&query=40.6971494,-74.2598672"```
     */
    map_url?: string | null;
    /**
     * The static map image url of the geocoded address (if geocoded).
     * @example ```"https://maps.googleapis.com/maps/api/staticmap?center=40.6971494,-74.2598672&size=640x320&zoom=15"```
     */
    static_map_url?: string | null;
    /**
     * Customer's billing information (i.e. VAT number, codice fiscale).
     * @example ```"VAT ID IT02382940977"```
     */
    billing_info?: string | null;
    geocoder?: Geocoder | null;
    events?: Event[] | null;
    tags?: Tag[] | null;
    versions?: Version[] | null;
}
interface AddressCreate extends ResourceCreate {
    /**
     * Indicates if it's a business or a personal address.
     */
    business?: boolean | null;
    /**
     * Address first name (personal).
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * Address last name (personal).
     * @example ```"Smith"```
     */
    last_name?: string | null;
    /**
     * Address company name (business).
     * @example ```"The Red Brand Inc."```
     */
    company?: string | null;
    /**
     * Address line 1, i.e. Street address, PO Box.
     * @example ```"2883 Geraldine Lane"```
     */
    line_1: string;
    /**
     * Address line 2, i.e. Apartment, Suite, Building.
     * @example ```"Apt.23"```
     */
    line_2?: string | null;
    /**
     * Address city.
     * @example ```"New York"```
     */
    city: string;
    /**
     * ZIP or postal code.
     * @example ```"10013"```
     */
    zip_code?: string | null;
    /**
     * State, province or region code.
     * @example ```"NY"```
     */
    state_code: string;
    /**
     * The international 2-letter country code as defined by the ISO 3166-1 standard.
     * @example ```"US"```
     */
    country_code: string;
    /**
     * Phone number (including extension).
     * @example ```"(212) 646-338-1228"```
     */
    phone: string;
    /**
     * Email address.
     * @example ```"john@example.com"```
     */
    email?: string | null;
    /**
     * A free notes attached to the address. When used as a shipping address, this can be useful to let the customers add specific delivery instructions.
     * @example ```"Please ring the bell twice"```
     */
    notes?: string | null;
    /**
     * The address geocoded latitude. This is automatically generated when creating a shipping/billing address for an order and a valid geocoder is attached to the order's market.
     * @example ```40.6971494```
     */
    lat?: number | null;
    /**
     * The address geocoded longitude. This is automatically generated when creating a shipping/billing address for an order and a valid geocoder is attached to the order's market.
     * @example ```-74.2598672```
     */
    lng?: number | null;
    /**
     * Customer's billing information (i.e. VAT number, codice fiscale).
     * @example ```"VAT ID IT02382940977"```
     */
    billing_info?: string | null;
    geocoder?: GeocoderRel | null;
    tags?: TagRel[] | null;
}
interface AddressUpdate extends ResourceUpdate {
    /**
     * Indicates if it's a business or a personal address.
     */
    business?: boolean | null;
    /**
     * Address first name (personal).
     * @example ```"John"```
     */
    first_name?: string | null;
    /**
     * Address last name (personal).
     * @example ```"Smith"```
     */
    last_name?: string | null;
    /**
     * Address company name (business).
     * @example ```"The Red Brand Inc."```
     */
    company?: string | null;
    /**
     * Address line 1, i.e. Street address, PO Box.
     * @example ```"2883 Geraldine Lane"```
     */
    line_1?: string | null;
    /**
     * Address line 2, i.e. Apartment, Suite, Building.
     * @example ```"Apt.23"```
     */
    line_2?: string | null;
    /**
     * Address city.
     * @example ```"New York"```
     */
    city?: string | null;
    /**
     * ZIP or postal code.
     * @example ```"10013"```
     */
    zip_code?: string | null;
    /**
     * State, province or region code.
     * @example ```"NY"```
     */
    state_code?: string | null;
    /**
     * The international 2-letter country code as defined by the ISO 3166-1 standard.
     * @example ```"US"```
     */
    country_code?: string | null;
    /**
     * Phone number (including extension).
     * @example ```"(212) 646-338-1228"```
     */
    phone?: string | null;
    /**
     * Email address.
     * @example ```"john@example.com"```
     */
    email?: string | null;
    /**
     * A free notes attached to the address. When used as a shipping address, this can be useful to let the customers add specific delivery instructions.
     * @example ```"Please ring the bell twice"```
     */
    notes?: string | null;
    /**
     * The address geocoded latitude. This is automatically generated when creating a shipping/billing address for an order and a valid geocoder is attached to the order's market.
     * @example ```40.6971494```
     */
    lat?: number | null;
    /**
     * The address geocoded longitude. This is automatically generated when creating a shipping/billing address for an order and a valid geocoder is attached to the order's market.
     * @example ```-74.2598672```
     */
    lng?: number | null;
    /**
     * Customer's billing information (i.e. VAT number, codice fiscale).
     * @example ```"VAT ID IT02382940977"```
     */
    billing_info?: string | null;
    /**
     * Comma separated list of tags to be added. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _add_tags?: string | null;
    /**
     * Comma separated list of tags to be removed. Duplicates, invalid and non existing ones are discarded. Cannot be passed by sales channels.
     */
    _remove_tags?: string | null;
    geocoder?: GeocoderRel | null;
    tags?: TagRel[] | null;
}
declare class Addresses extends ApiResource<Address> {
    static readonly TYPE: AddressType;
    create(resource: AddressCreate, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    update(resource: AddressUpdate, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    geocoder(addressId: string | Address, params?: QueryParamsRetrieve<Geocoder>, options?: ResourcesConfig): Promise<Geocoder>;
    events(addressId: string | Address, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    tags(addressId: string | Address, params?: QueryParamsList<Tag>, options?: ResourcesConfig): Promise<ListResponse<Tag>>;
    versions(addressId: string | Address, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _add_tags(id: string | Address, triggerValue: string, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    _remove_tags(id: string | Address, triggerValue: string, params?: QueryParamsRetrieve<Address>, options?: ResourcesConfig): Promise<Address>;
    isAddress(resource: any): resource is Address;
    relationship(id: string | ResourceId | null): AddressRel;
    relationshipToMany(...ids: string[]): AddressRel[];
    type(): AddressType;
}

type AdyenGatewayType = 'adyen_gateways';
type AdyenGatewayRel = ResourceRel & {
    type: AdyenGatewayType;
};
type AdyenPaymentRel = ResourceRel & {
    type: AdyenPaymentType;
};
type AdyenGatewaySort = Pick<AdyenGateway, 'id' | 'name'> & ResourceSort;
interface AdyenGateway extends Resource {
    readonly type: AdyenGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The prefix of the endpoint used for live transactions.
     * @example ```"1797a841fbb37ca7-AdyenDemo"```
     */
    live_url_prefix: string;
    /**
     * The checkout API version, supported range is from 66 to 71, default is 71.
     * @example ```71```
     */
    api_version?: number | null;
    /**
     * Indicates if the gateway will leverage on the Adyen notification webhooks, using latest API version.
     * @example ```true```
     */
    async_api?: boolean | null;
    /**
     * Send this attribute if you want to enable partial payments for the order.
     */
    partial_payments?: boolean | null;
    /**
     * Indicates if the gateway will use the native customer payment sources.
     * @example ```true```
     */
    native_customer_payment_sources?: boolean | null;
    /**
     * The gateway webhook endpoint secret, generated by Adyen customer area.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    webhook_endpoint_secret?: string | null;
    /**
     * The gateway webhook URL, generated automatically.
     * @example ```"https://core.commercelayer.co/webhook_callbacks/adyen_gateways/xxxxx"```
     */
    webhook_endpoint_url?: string | null;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    adyen_payments?: AdyenPayment[] | null;
}
interface AdyenGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The gateway merchant account.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    merchant_account: string;
    /**
     * The gateway API key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_key: string;
    /**
     * The public key linked to your API credential.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    public_key?: string | null;
    /**
     * The prefix of the endpoint used for live transactions.
     * @example ```"1797a841fbb37ca7-AdyenDemo"```
     */
    live_url_prefix: string;
    /**
     * The checkout API version, supported range is from 66 to 71, default is 71.
     * @example ```71```
     */
    api_version?: number | null;
    /**
     * Indicates if the gateway will leverage on the Adyen notification webhooks, using latest API version.
     * @example ```true```
     */
    async_api?: boolean | null;
    /**
     * Send this attribute if you want to enable partial payments for the order.
     */
    partial_payments?: boolean | null;
    /**
     * Indicates if the gateway will use the native customer payment sources.
     * @example ```true```
     */
    native_customer_payment_sources?: boolean | null;
    /**
     * The gateway webhook endpoint secret, generated by Adyen customer area.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    webhook_endpoint_secret?: string | null;
    adyen_payments?: AdyenPaymentRel[] | null;
}
interface AdyenGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    /**
     * The gateway merchant account.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    merchant_account?: string | null;
    /**
     * The gateway API key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_key?: string | null;
    /**
     * The public key linked to your API credential.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    public_key?: string | null;
    /**
     * The prefix of the endpoint used for live transactions.
     * @example ```"1797a841fbb37ca7-AdyenDemo"```
     */
    live_url_prefix?: string | null;
    /**
     * The checkout API version, supported range is from 66 to 71, default is 71.
     * @example ```71```
     */
    api_version?: number | null;
    /**
     * Indicates if the gateway will leverage on the Adyen notification webhooks, using latest API version.
     * @example ```true```
     */
    async_api?: boolean | null;
    /**
     * Send this attribute if you want to enable partial payments for the order.
     */
    partial_payments?: boolean | null;
    /**
     * Indicates if the gateway will use the native customer payment sources.
     * @example ```true```
     */
    native_customer_payment_sources?: boolean | null;
    /**
     * The gateway webhook endpoint secret, generated by Adyen customer area.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    webhook_endpoint_secret?: string | null;
    adyen_payments?: AdyenPaymentRel[] | null;
}
declare class AdyenGateways extends ApiResource<AdyenGateway> {
    static readonly TYPE: AdyenGatewayType;
    create(resource: AdyenGatewayCreate, params?: QueryParamsRetrieve<AdyenGateway>, options?: ResourcesConfig): Promise<AdyenGateway>;
    update(resource: AdyenGatewayUpdate, params?: QueryParamsRetrieve<AdyenGateway>, options?: ResourcesConfig): Promise<AdyenGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(adyenGatewayId: string | AdyenGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(adyenGatewayId: string | AdyenGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    adyen_payments(adyenGatewayId: string | AdyenGateway, params?: QueryParamsList<AdyenPayment>, options?: ResourcesConfig): Promise<ListResponse<AdyenPayment>>;
    isAdyenGateway(resource: any): resource is AdyenGateway;
    relationship(id: string | ResourceId | null): AdyenGatewayRel;
    relationshipToMany(...ids: string[]): AdyenGatewayRel[];
    type(): AdyenGatewayType;
}

type ApplicationType = 'applications';
type ApplicationRel = ResourceRel & {
    type: ApplicationType;
};
type ApplicationSort = Pick<Application, 'id'> & ResourceSort;
interface Application extends Resource {
    readonly type: ApplicationType;
    /**
     * The application's internal name.
     * @example ```"My app"```
     */
    name?: string | null;
    /**
     * The application's kind. One of 'sales_channel', 'integration', or 'webapp'.
     * @example ```"sales-channel"```
     */
    kind?: 'dashboard' | 'user' | 'metrics' | 'contentful' | 'bundles' | 'customers' | 'datocms' | 'exports' | 'external' | 'generic' | 'gift_cards' | 'imports' | 'integration' | 'inventory' | 'orders' | 'price_lists' | 'promotions' | 'resources' | 'returns' | 'sales_channel' | 'sanity' | 'shipments' | 'skus' | 'sku_lists' | 'stock_transfers' | 'subscriptions' | 'tags' | 'webapp' | 'webhooks' | 'zapier' | null;
    /**
     * Indicates if the application has public access.
     * @example ```true```
     */
    public_access?: boolean | null;
    /**
     * The application's redirect URI.
     * @example ```"https://bluebrand.com/img/logo.svg"```
     */
    redirect_uri?: string | null;
    /**
     * The application's scopes.
     * @example ```"market:all market:9 market:122 market:6 stock_location:6 stock_location:33"```
     */
    scopes?: string | null;
}
declare class Applications extends ApiSingleton<Application> {
    static readonly TYPE: ApplicationType;
    isApplication(resource: any): resource is Application;
    relationship(id: string | ResourceId | null): ApplicationRel;
    relationshipToMany(...ids: string[]): ApplicationRel[];
    type(): ApplicationType;
    path(): string;
}

type AxerveGatewayType = 'axerve_gateways';
type AxerveGatewayRel = ResourceRel & {
    type: AxerveGatewayType;
};
type AxervePaymentRel = ResourceRel & {
    type: AxervePaymentType;
};
type AxerveGatewaySort = Pick<AxerveGateway, 'id' | 'name'> & ResourceSort;
interface AxerveGateway extends Resource {
    readonly type: AxerveGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The merchant login code.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    login: string;
    /**
     * The gateway webhook URL, generated automatically.
     * @example ```"https://core.commercelayer.co/webhook_callbacks/axerve_gateways/xxxxx"```
     */
    webhook_endpoint_url?: string | null;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    axerve_payments?: AxervePayment[] | null;
}
interface AxerveGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The merchant login code.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    login: string;
    /**
     * The gateway API key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_key: string;
    axerve_payments?: AxervePaymentRel[] | null;
}
interface AxerveGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    /**
     * The merchant login code.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    login?: string | null;
    /**
     * The gateway API key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_key?: string | null;
    axerve_payments?: AxervePaymentRel[] | null;
}
declare class AxerveGateways extends ApiResource<AxerveGateway> {
    static readonly TYPE: AxerveGatewayType;
    create(resource: AxerveGatewayCreate, params?: QueryParamsRetrieve<AxerveGateway>, options?: ResourcesConfig): Promise<AxerveGateway>;
    update(resource: AxerveGatewayUpdate, params?: QueryParamsRetrieve<AxerveGateway>, options?: ResourcesConfig): Promise<AxerveGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(axerveGatewayId: string | AxerveGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(axerveGatewayId: string | AxerveGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    axerve_payments(axerveGatewayId: string | AxerveGateway, params?: QueryParamsList<AxervePayment>, options?: ResourcesConfig): Promise<ListResponse<AxervePayment>>;
    isAxerveGateway(resource: any): resource is AxerveGateway;
    relationship(id: string | ResourceId | null): AxerveGatewayRel;
    relationshipToMany(...ids: string[]): AxerveGatewayRel[];
    type(): AxerveGatewayType;
}

type BingGeocoderType = 'bing_geocoders';
type BingGeocoderRel = ResourceRel & {
    type: BingGeocoderType;
};
type BingGeocoderSort = Pick<BingGeocoder, 'id' | 'name'> & ResourceSort;
interface BingGeocoder extends Resource {
    readonly type: BingGeocoderType;
    /**
     * The geocoder's internal name.
     * @example ```"Default geocoder"```
     */
    name: string;
    markets?: Market[] | null;
    addresses?: Address[] | null;
    attachments?: Attachment[] | null;
}
interface BingGeocoderCreate extends ResourceCreate {
    /**
     * The geocoder's internal name.
     * @example ```"Default geocoder"```
     */
    name: string;
    /**
     * The Bing Virtualearth key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    key: string;
}
interface BingGeocoderUpdate extends ResourceUpdate {
    /**
     * The geocoder's internal name.
     * @example ```"Default geocoder"```
     */
    name?: string | null;
    /**
     * The Bing Virtualearth key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    key?: string | null;
}
declare class BingGeocoders extends ApiResource<BingGeocoder> {
    static readonly TYPE: BingGeocoderType;
    create(resource: BingGeocoderCreate, params?: QueryParamsRetrieve<BingGeocoder>, options?: ResourcesConfig): Promise<BingGeocoder>;
    update(resource: BingGeocoderUpdate, params?: QueryParamsRetrieve<BingGeocoder>, options?: ResourcesConfig): Promise<BingGeocoder>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(bingGeocoderId: string | BingGeocoder, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    addresses(bingGeocoderId: string | BingGeocoder, params?: QueryParamsList<Address>, options?: ResourcesConfig): Promise<ListResponse<Address>>;
    attachments(bingGeocoderId: string | BingGeocoder, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    isBingGeocoder(resource: any): resource is BingGeocoder;
    relationship(id: string | ResourceId | null): BingGeocoderRel;
    relationshipToMany(...ids: string[]): BingGeocoderRel[];
    type(): BingGeocoderType;
}

type BraintreeGatewayType = 'braintree_gateways';
type BraintreeGatewayRel = ResourceRel & {
    type: BraintreeGatewayType;
};
type BraintreePaymentRel = ResourceRel & {
    type: BraintreePaymentType;
};
type BraintreeGatewaySort = Pick<BraintreeGateway, 'id' | 'name'> & ResourceSort;
interface BraintreeGateway extends Resource {
    readonly type: BraintreeGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The dynamic descriptor name. Must be composed by business name (3, 7 or 12 chars), an asterisk (*) and the product name (18, 14 or 9 chars), for a total length of 22 chars.
     * @example ```"company*productabc1234"```
     */
    descriptor_name?: string | null;
    /**
     * The dynamic descriptor phone number. Must be 10-14 characters and can only contain numbers, dashes, parentheses and periods.
     * @example ```"3125551212"```
     */
    descriptor_phone?: string | null;
    /**
     * The dynamic descriptor URL.
     * @example ```"company.com"```
     */
    descriptor_url?: string | null;
    /**
     * The gateway webhook URL, generated automatically.
     * @example ```"https://core.commercelayer.co/webhook_callbacks/braintree_gateways/xxxxx"```
     */
    webhook_endpoint_url?: string | null;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    braintree_payments?: BraintreePayment[] | null;
}
interface BraintreeGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The gateway merchant account ID.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    merchant_account_id: string;
    /**
     * The gateway merchant ID.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    merchant_id: string;
    /**
     * The gateway API public key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    public_key: string;
    /**
     * The gateway API private key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    private_key: string;
    /**
     * The dynamic descriptor name. Must be composed by business name (3, 7 or 12 chars), an asterisk (*) and the product name (18, 14 or 9 chars), for a total length of 22 chars.
     * @example ```"company*productabc1234"```
     */
    descriptor_name?: string | null;
    /**
     * The dynamic descriptor phone number. Must be 10-14 characters and can only contain numbers, dashes, parentheses and periods.
     * @example ```"3125551212"```
     */
    descriptor_phone?: string | null;
    /**
     * The dynamic descriptor URL.
     * @example ```"company.com"```
     */
    descriptor_url?: string | null;
    braintree_payments?: BraintreePaymentRel[] | null;
}
interface BraintreeGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    /**
     * The gateway merchant account ID.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    merchant_account_id?: string | null;
    /**
     * The gateway merchant ID.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    merchant_id?: string | null;
    /**
     * The gateway API public key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    public_key?: string | null;
    /**
     * The gateway API private key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    private_key?: string | null;
    /**
     * The dynamic descriptor name. Must be composed by business name (3, 7 or 12 chars), an asterisk (*) and the product name (18, 14 or 9 chars), for a total length of 22 chars.
     * @example ```"company*productabc1234"```
     */
    descriptor_name?: string | null;
    /**
     * The dynamic descriptor phone number. Must be 10-14 characters and can only contain numbers, dashes, parentheses and periods.
     * @example ```"3125551212"```
     */
    descriptor_phone?: string | null;
    /**
     * The dynamic descriptor URL.
     * @example ```"company.com"```
     */
    descriptor_url?: string | null;
    braintree_payments?: BraintreePaymentRel[] | null;
}
declare class BraintreeGateways extends ApiResource<BraintreeGateway> {
    static readonly TYPE: BraintreeGatewayType;
    create(resource: BraintreeGatewayCreate, params?: QueryParamsRetrieve<BraintreeGateway>, options?: ResourcesConfig): Promise<BraintreeGateway>;
    update(resource: BraintreeGatewayUpdate, params?: QueryParamsRetrieve<BraintreeGateway>, options?: ResourcesConfig): Promise<BraintreeGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(braintreeGatewayId: string | BraintreeGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(braintreeGatewayId: string | BraintreeGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    braintree_payments(braintreeGatewayId: string | BraintreeGateway, params?: QueryParamsList<BraintreePayment>, options?: ResourcesConfig): Promise<ListResponse<BraintreePayment>>;
    isBraintreeGateway(resource: any): resource is BraintreeGateway;
    relationship(id: string | ResourceId | null): BraintreeGatewayRel;
    relationshipToMany(...ids: string[]): BraintreeGatewayRel[];
    type(): BraintreeGatewayType;
}

type CheckoutComGatewayType = 'checkout_com_gateways';
type CheckoutComGatewayRel = ResourceRel & {
    type: CheckoutComGatewayType;
};
type CheckoutComPaymentRel = ResourceRel & {
    type: CheckoutComPaymentType;
};
type CheckoutComGatewaySort = Pick<CheckoutComGateway, 'id' | 'name'> & ResourceSort;
interface CheckoutComGateway extends Resource {
    readonly type: CheckoutComGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The gateway webhook endpoint ID, generated automatically.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    webhook_endpoint_id?: string | null;
    /**
     * The gateway webhook endpoint secret, generated automatically.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    webhook_endpoint_secret?: string | null;
    /**
     * The gateway webhook URL, generated automatically.
     * @example ```"https://core.commercelayer.co/webhook_callbacks/checkout_com_gateways/xxxxx"```
     */
    webhook_endpoint_url?: string | null;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    checkout_com_payments?: CheckoutComPayment[] | null;
}
interface CheckoutComGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The gateway secret key.
     * @example ```"sk_test_xxxx-yyyy-zzzz"```
     */
    secret_key: string;
    /**
     * The gateway public key.
     * @example ```"pk_test_xxxx-yyyy-zzzz"```
     */
    public_key: string;
    checkout_com_payments?: CheckoutComPaymentRel[] | null;
}
interface CheckoutComGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    /**
     * The gateway secret key.
     * @example ```"sk_test_xxxx-yyyy-zzzz"```
     */
    secret_key?: string | null;
    /**
     * The gateway public key.
     * @example ```"pk_test_xxxx-yyyy-zzzz"```
     */
    public_key?: string | null;
    checkout_com_payments?: CheckoutComPaymentRel[] | null;
}
declare class CheckoutComGateways extends ApiResource<CheckoutComGateway> {
    static readonly TYPE: CheckoutComGatewayType;
    create(resource: CheckoutComGatewayCreate, params?: QueryParamsRetrieve<CheckoutComGateway>, options?: ResourcesConfig): Promise<CheckoutComGateway>;
    update(resource: CheckoutComGatewayUpdate, params?: QueryParamsRetrieve<CheckoutComGateway>, options?: ResourcesConfig): Promise<CheckoutComGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(checkoutComGatewayId: string | CheckoutComGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(checkoutComGatewayId: string | CheckoutComGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    checkout_com_payments(checkoutComGatewayId: string | CheckoutComGateway, params?: QueryParamsList<CheckoutComPayment>, options?: ResourcesConfig): Promise<ListResponse<CheckoutComPayment>>;
    isCheckoutComGateway(resource: any): resource is CheckoutComGateway;
    relationship(id: string | ResourceId | null): CheckoutComGatewayRel;
    relationshipToMany(...ids: string[]): CheckoutComGatewayRel[];
    type(): CheckoutComGatewayType;
}

type CleanupType = 'cleanups';
type CleanupRel = ResourceRel & {
    type: CleanupType;
};
type CleanupSort = Pick<Cleanup, 'id' | 'resource_type' | 'status' | 'started_at' | 'completed_at' | 'interrupted_at' | 'records_count' | 'errors_count' | 'processed_count'> & ResourceSort;
interface Cleanup extends Resource {
    readonly type: CleanupType;
    /**
     * The type of resource being cleaned.
     * @example ```"skus"```
     */
    resource_type: string;
    /**
     * The cleanup job status. One of 'pending' (default), 'in_progress', 'interrupted', or 'completed'.
     * @example ```"in_progress"```
     */
    status: 'pending' | 'in_progress' | 'interrupted' | 'completed';
    /**
     * Time at which the cleanup was started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    started_at?: string | null;
    /**
     * Time at which the cleanup was completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    completed_at?: string | null;
    /**
     * Time at which the cleanup was interrupted.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    interrupted_at?: string | null;
    /**
     * The filters used to select the records to be cleaned.
     * @example ```{"code_eq":"AAA"}```
     */
    filters?: Record<string, any> | null;
    /**
     * Indicates the number of records to be cleaned.
     * @example ```300```
     */
    records_count?: number | null;
    /**
     * Indicates the number of cleanup errors, if any.
     * @example ```30```
     */
    errors_count?: number | null;
    /**
     * Indicates the number of records that have been cleaned.
     * @example ```270```
     */
    processed_count?: number | null;
    /**
     * Contains the cleanup errors, if any.
     * @example ```{"ABC":{"name":["has already been taken"]}}```
     */
    errors_log?: Record<string, any> | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface CleanupCreate extends ResourceCreate {
    /**
     * The type of resource being cleaned.
     * @example ```"skus"```
     */
    resource_type: string;
    /**
     * The filters used to select the records to be cleaned.
     * @example ```{"code_eq":"AAA"}```
     */
    filters?: Record<string, any> | null;
}
interface CleanupUpdate extends ResourceUpdate {
    /**
     * Send this attribute if you want to mark status as 'interrupted'.
     * @example ```true```
     */
    _interrupt?: boolean | null;
}
declare class Cleanups extends ApiResource<Cleanup> {
    static readonly TYPE: CleanupType;
    create(resource: CleanupCreate, params?: QueryParamsRetrieve<Cleanup>, options?: ResourcesConfig): Promise<Cleanup>;
    update(resource: CleanupUpdate, params?: QueryParamsRetrieve<Cleanup>, options?: ResourcesConfig): Promise<Cleanup>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    events(cleanupId: string | Cleanup, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(cleanupId: string | Cleanup, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _interrupt(id: string | Cleanup, params?: QueryParamsRetrieve<Cleanup>, options?: ResourcesConfig): Promise<Cleanup>;
    isCleanup(resource: any): resource is Cleanup;
    relationship(id: string | ResourceId | null): CleanupRel;
    relationshipToMany(...ids: string[]): CleanupRel[];
    type(): CleanupType;
}

type CustomerPasswordResetType = 'customer_password_resets';
type CustomerPasswordResetRel = ResourceRel & {
    type: CustomerPasswordResetType;
};
type CustomerPasswordResetSort = Pick<CustomerPasswordReset, 'id'> & ResourceSort;
interface CustomerPasswordReset extends Resource {
    readonly type: CustomerPasswordResetType;
    /**
     * The email of the customer that requires a password reset.
     * @example ```"john@example.com"```
     */
    customer_email: string;
    /**
     * Automatically generated on create. Send its value as the '_reset_password_token' argument when updating the customer password.
     * @example ```"xhFfkmfybsLxzaAP6xcs"```
     */
    reset_password_token?: string | null;
    /**
     * Time at which the password was reset.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    reset_password_at?: string | null;
    customer?: Customer | null;
    events?: Event[] | null;
}
interface CustomerPasswordResetCreate extends ResourceCreate {
    /**
     * The email of the customer that requires a password reset.
     * @example ```"john@example.com"```
     */
    customer_email: string;
}
interface CustomerPasswordResetUpdate extends ResourceUpdate {
    /**
     * The customer new password. This will be accepted only if a valid '_reset_password_token' is sent with the request.
     * @example ```"secret"```
     */
    customer_password?: string | null;
    /**
     * Send the 'reset_password_token' that you got on create when updating the customer password.
     * @example ```"xhFfkmfybsLxzaAP6xcs"```
     */
    _reset_password_token?: string | null;
}
declare class CustomerPasswordResets extends ApiResource<CustomerPasswordReset> {
    static readonly TYPE: CustomerPasswordResetType;
    create(resource: CustomerPasswordResetCreate, params?: QueryParamsRetrieve<CustomerPasswordReset>, options?: ResourcesConfig): Promise<CustomerPasswordReset>;
    update(resource: CustomerPasswordResetUpdate, params?: QueryParamsRetrieve<CustomerPasswordReset>, options?: ResourcesConfig): Promise<CustomerPasswordReset>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    customer(customerPasswordResetId: string | CustomerPasswordReset, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    events(customerPasswordResetId: string | CustomerPasswordReset, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    _reset_password_token(id: string | CustomerPasswordReset, triggerValue: string, params?: QueryParamsRetrieve<CustomerPasswordReset>, options?: ResourcesConfig): Promise<CustomerPasswordReset>;
    isCustomerPasswordReset(resource: any): resource is CustomerPasswordReset;
    relationship(id: string | ResourceId | null): CustomerPasswordResetRel;
    relationshipToMany(...ids: string[]): CustomerPasswordResetRel[];
    type(): CustomerPasswordResetType;
}

type EasypostPickupType = 'easypost_pickups';
type EasypostPickupRel = ResourceRel & {
    type: EasypostPickupType;
};
type ShipmentRel = ResourceRel & {
    type: ShipmentType;
};
type EasypostPickupSort = Pick<EasypostPickup, 'id' | 'status' | 'min_datetime' | 'max_datetime' | 'purchase_started_at' | 'purchase_completed_at'> & ResourceSort;
interface EasypostPickup extends Resource {
    readonly type: EasypostPickupType;
    /**
     * The pick up status.
     * @example ```"unknown"```
     */
    status?: string | null;
    /**
     * The pick up service internal ID.
     * @example ```"pickup_13e5d7e2a7824432a07975bc553944bc"```
     */
    internal_id: string;
    /**
     * The selected purchase rate from the available pick up rates.
     * @example ```"pickuprate_a6cd2647a898410aa5d33febde44e1b2"```
     */
    selected_rate_id?: string | null;
    /**
     * The available pick up rates.
     * @example ```[{"id":"pickuprate_a6cd2647a898410aa5d33febde44e1b2","rate":"45.59","carrier":"USPS","service":"NextDay"}]```
     */
    rates: Array<Record<string, any>>;
    /**
     * Additional text to help the driver successfully obtain the package, automatically enriched with parcels and package informations.
     * @example ```"Knock loudly"```
     */
    instructions?: string | null;
    /**
     * The earliest time at which the package is available to pick up, must be larger than 2 hours from creation time.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    min_datetime: string;
    /**
     * The latest time at which the package is available to pick up, must be smaller than 24 hours from creation time.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    max_datetime: string;
    /**
     * Time at which the purchasing of the pick up rate started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    purchase_started_at?: string | null;
    /**
     * Time at which the purchasing of the pick up rate completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    purchase_completed_at?: string | null;
    shipment?: Shipment | null;
    parcels?: Parcel[] | null;
    events?: Event[] | null;
}
interface EasypostPickupCreate extends ResourceCreate {
    /**
     * Additional text to help the driver successfully obtain the package, automatically enriched with parcels and package informations.
     * @example ```"Knock loudly"```
     */
    instructions?: string | null;
    /**
     * The earliest time at which the package is available to pick up, must be larger than 2 hours from creation time.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    min_datetime: string;
    /**
     * The latest time at which the package is available to pick up, must be smaller than 24 hours from creation time.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    max_datetime: string;
    shipment: ShipmentRel;
}
interface EasypostPickupUpdate extends ResourceUpdate {
    /**
     * The selected purchase rate from the available pick up rates.
     * @example ```"pickuprate_a6cd2647a898410aa5d33febde44e1b2"```
     */
    selected_rate_id?: string | null;
    /**
     * Send this attribute if you want to purchase this pick up with the selected rate.
     * @example ```true```
     */
    _purchase?: boolean | null;
    shipment?: ShipmentRel | null;
}
declare class EasypostPickups extends ApiResource<EasypostPickup> {
    static readonly TYPE: EasypostPickupType;
    create(resource: EasypostPickupCreate, params?: QueryParamsRetrieve<EasypostPickup>, options?: ResourcesConfig): Promise<EasypostPickup>;
    update(resource: EasypostPickupUpdate, params?: QueryParamsRetrieve<EasypostPickup>, options?: ResourcesConfig): Promise<EasypostPickup>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    shipment(easypostPickupId: string | EasypostPickup, params?: QueryParamsRetrieve<Shipment>, options?: ResourcesConfig): Promise<Shipment>;
    parcels(easypostPickupId: string | EasypostPickup, params?: QueryParamsList<Parcel>, options?: ResourcesConfig): Promise<ListResponse<Parcel>>;
    events(easypostPickupId: string | EasypostPickup, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    _purchase(id: string | EasypostPickup, params?: QueryParamsRetrieve<EasypostPickup>, options?: ResourcesConfig): Promise<EasypostPickup>;
    isEasypostPickup(resource: any): resource is EasypostPickup;
    relationship(id: string | ResourceId | null): EasypostPickupRel;
    relationshipToMany(...ids: string[]): EasypostPickupRel[];
    type(): EasypostPickupType;
}

type ExportType = 'exports';
type ExportRel = ResourceRel & {
    type: ExportType;
};
type ExportSort = Pick<Export, 'id' | 'resource_type' | 'format' | 'status' | 'started_at' | 'completed_at' | 'interrupted_at' | 'records_count' | 'attachment_url'> & ResourceSort;
interface Export extends Resource {
    readonly type: ExportType;
    /**
     * The type of resource being exported.
     * @example ```"skus"```
     */
    resource_type: string;
    /**
     * The format of the export one of 'json' (default) or 'csv'.
     * @example ```"json"```
     */
    format?: string | null;
    /**
     * The export job status. One of 'pending' (default), 'in_progress', 'interrupted', or 'completed'.
     * @example ```"in_progress"```
     */
    status: 'pending' | 'in_progress' | 'interrupted' | 'completed';
    /**
     * List of related resources that should be included in the export (redundant when 'fields' are specified).
     * @example ```["prices.price_tiers"]```
     */
    includes?: string[] | null;
    /**
     * List of fields to export for the main and related resources (automatically included). Pass the asterisk '*' to include all exportable fields for the main and related resources.
     * @example ```["code","name","prices.*","prices.price_tiers.price_amount_cents"]```
     */
    fields?: string[] | null;
    /**
     * The filters used to select the records to be exported.
     * @example ```{"code_eq":"AAA"}```
     */
    filters?: Record<string, any> | null;
    /**
     * Send this attribute if you want to skip exporting redundant attributes (IDs, timestamps, blanks, etc.), useful when combining export and import to duplicate your dataset.
     */
    dry_data?: boolean | null;
    /**
     * Time at which the export was started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    started_at?: string | null;
    /**
     * Time at which the export was completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    completed_at?: string | null;
    /**
     * Time at which the export was interrupted.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    interrupted_at?: string | null;
    /**
     * Indicates the number of records to be exported.
     * @example ```300```
     */
    records_count?: number | null;
    /**
     * The URL to the output file, which will be generated upon export completion.
     * @example ```"http://cl_exports.s3.amazonaws.com/"```
     */
    attachment_url?: string | null;
    /**
     * Contains the exports errors, if any.
     * @example ```{"RuntimeError":"query timeout"}```
     */
    errors_log?: Record<string, any> | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface ExportCreate extends ResourceCreate {
    /**
     * The type of resource being exported.
     * @example ```"skus"```
     */
    resource_type: string;
    /**
     * The format of the export one of 'json' (default) or 'csv'.
     * @example ```"json"```
     */
    format?: string | null;
    /**
     * List of related resources that should be included in the export (redundant when 'fields' are specified).
     * @example ```["prices.price_tiers"]```
     */
    includes?: string[] | null;
    /**
     * List of fields to export for the main and related resources (automatically included). Pass the asterisk '*' to include all exportable fields for the main and related resources.
     * @example ```["code","name","prices.*","prices.price_tiers.price_amount_cents"]```
     */
    fields?: string[] | null;
    /**
     * The filters used to select the records to be exported.
     * @example ```{"code_eq":"AAA"}```
     */
    filters?: Record<string, any> | null;
    /**
     * Send this attribute if you want to skip exporting redundant attributes (IDs, timestamps, blanks, etc.), useful when combining export and import to duplicate your dataset.
     */
    dry_data?: boolean | null;
}
interface ExportUpdate extends ResourceUpdate {
    /**
     * Send this attribute if you want to mark status as 'interrupted'.
     * @example ```true```
     */
    _interrupt?: boolean | null;
}
declare class Exports extends ApiResource<Export> {
    static readonly TYPE: ExportType;
    create(resource: ExportCreate, params?: QueryParamsRetrieve<Export>, options?: ResourcesConfig): Promise<Export>;
    update(resource: ExportUpdate, params?: QueryParamsRetrieve<Export>, options?: ResourcesConfig): Promise<Export>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    events(exportId: string | Export, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(exportId: string | Export, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _interrupt(id: string | Export, params?: QueryParamsRetrieve<Export>, options?: ResourcesConfig): Promise<Export>;
    isExport(resource: any): resource is Export;
    relationship(id: string | ResourceId | null): ExportRel;
    relationshipToMany(...ids: string[]): ExportRel[];
    type(): ExportType;
}

type ExternalGatewayType = 'external_gateways';
type ExternalGatewayRel = ResourceRel & {
    type: ExternalGatewayType;
};
type ExternalGatewaySort = Pick<ExternalGateway, 'id' | 'name' | 'circuit_state' | 'circuit_failure_count'> & ResourceSort;
interface ExternalGateway extends Resource {
    readonly type: ExternalGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The endpoint used by the external gateway to authorize payments.
     * @example ```"https://external_gateway.com/authorize"```
     */
    authorize_url?: string | null;
    /**
     * The endpoint used by the external gateway to capture payments.
     * @example ```"https://external_gateway.com/capture"```
     */
    capture_url?: string | null;
    /**
     * The endpoint used by the external gateway to void payments.
     * @example ```"https://external_gateway.com/void"```
     */
    void_url?: string | null;
    /**
     * The endpoint used by the external gateway to refund payments.
     * @example ```"https://external_gateway.com/refund"```
     */
    refund_url?: string | null;
    /**
     * The endpoint used by the external gateway to create a customer payment token.
     * @example ```"https://external_gateway.com/token"```
     */
    token_url?: string | null;
    /**
     * The circuit breaker state, by default it is 'closed'. It can become 'open' once the number of consecutive failures overlaps the specified threshold, in such case no further calls to the failing callback are made.
     * @example ```"closed"```
     */
    circuit_state?: string | null;
    /**
     * The number of consecutive failures recorded by the circuit breaker associated to this resource, will be reset on first successful call to callback.
     * @example ```5```
     */
    circuit_failure_count?: number | null;
    /**
     * The shared secret used to sign the external request payload.
     * @example ```"1c0994cc4e996e8c6ee56a2198f66f3c"```
     */
    shared_secret: string;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    external_payments?: ExternalPayment[] | null;
}
interface ExternalGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The endpoint used by the external gateway to authorize payments.
     * @example ```"https://external_gateway.com/authorize"```
     */
    authorize_url?: string | null;
    /**
     * The endpoint used by the external gateway to capture payments.
     * @example ```"https://external_gateway.com/capture"```
     */
    capture_url?: string | null;
    /**
     * The endpoint used by the external gateway to void payments.
     * @example ```"https://external_gateway.com/void"```
     */
    void_url?: string | null;
    /**
     * The endpoint used by the external gateway to refund payments.
     * @example ```"https://external_gateway.com/refund"```
     */
    refund_url?: string | null;
    /**
     * The endpoint used by the external gateway to create a customer payment token.
     * @example ```"https://external_gateway.com/token"```
     */
    token_url?: string | null;
}
interface ExternalGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    /**
     * The endpoint used by the external gateway to authorize payments.
     * @example ```"https://external_gateway.com/authorize"```
     */
    authorize_url?: string | null;
    /**
     * The endpoint used by the external gateway to capture payments.
     * @example ```"https://external_gateway.com/capture"```
     */
    capture_url?: string | null;
    /**
     * The endpoint used by the external gateway to void payments.
     * @example ```"https://external_gateway.com/void"```
     */
    void_url?: string | null;
    /**
     * The endpoint used by the external gateway to refund payments.
     * @example ```"https://external_gateway.com/refund"```
     */
    refund_url?: string | null;
    /**
     * The endpoint used by the external gateway to create a customer payment token.
     * @example ```"https://external_gateway.com/token"```
     */
    token_url?: string | null;
    /**
     * Send this attribute if you want to reset the circuit breaker associated to this resource to 'closed' state and zero failures count. Cannot be passed by sales channels.
     * @example ```true```
     */
    _reset_circuit?: boolean | null;
}
declare class ExternalGateways extends ApiResource<ExternalGateway> {
    static readonly TYPE: ExternalGatewayType;
    create(resource: ExternalGatewayCreate, params?: QueryParamsRetrieve<ExternalGateway>, options?: ResourcesConfig): Promise<ExternalGateway>;
    update(resource: ExternalGatewayUpdate, params?: QueryParamsRetrieve<ExternalGateway>, options?: ResourcesConfig): Promise<ExternalGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(externalGatewayId: string | ExternalGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(externalGatewayId: string | ExternalGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    external_payments(externalGatewayId: string | ExternalGateway, params?: QueryParamsList<ExternalPayment>, options?: ResourcesConfig): Promise<ListResponse<ExternalPayment>>;
    _reset_circuit(id: string | ExternalGateway, params?: QueryParamsRetrieve<ExternalGateway>, options?: ResourcesConfig): Promise<ExternalGateway>;
    isExternalGateway(resource: any): resource is ExternalGateway;
    relationship(id: string | ResourceId | null): ExternalGatewayRel;
    relationshipToMany(...ids: string[]): ExternalGatewayRel[];
    type(): ExternalGatewayType;
}

type GoogleGeocoderType = 'google_geocoders';
type GoogleGeocoderRel = ResourceRel & {
    type: GoogleGeocoderType;
};
type GoogleGeocoderSort = Pick<GoogleGeocoder, 'id' | 'name'> & ResourceSort;
interface GoogleGeocoder extends Resource {
    readonly type: GoogleGeocoderType;
    /**
     * The geocoder's internal name.
     * @example ```"Default geocoder"```
     */
    name: string;
    markets?: Market[] | null;
    addresses?: Address[] | null;
    attachments?: Attachment[] | null;
}
interface GoogleGeocoderCreate extends ResourceCreate {
    /**
     * The geocoder's internal name.
     * @example ```"Default geocoder"```
     */
    name: string;
    /**
     * The Google Map API key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_key: string;
}
interface GoogleGeocoderUpdate extends ResourceUpdate {
    /**
     * The geocoder's internal name.
     * @example ```"Default geocoder"```
     */
    name?: string | null;
    /**
     * The Google Map API key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_key?: string | null;
}
declare class GoogleGeocoders extends ApiResource<GoogleGeocoder> {
    static readonly TYPE: GoogleGeocoderType;
    create(resource: GoogleGeocoderCreate, params?: QueryParamsRetrieve<GoogleGeocoder>, options?: ResourcesConfig): Promise<GoogleGeocoder>;
    update(resource: GoogleGeocoderUpdate, params?: QueryParamsRetrieve<GoogleGeocoder>, options?: ResourcesConfig): Promise<GoogleGeocoder>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(googleGeocoderId: string | GoogleGeocoder, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    addresses(googleGeocoderId: string | GoogleGeocoder, params?: QueryParamsList<Address>, options?: ResourcesConfig): Promise<ListResponse<Address>>;
    attachments(googleGeocoderId: string | GoogleGeocoder, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    isGoogleGeocoder(resource: any): resource is GoogleGeocoder;
    relationship(id: string | ResourceId | null): GoogleGeocoderRel;
    relationshipToMany(...ids: string[]): GoogleGeocoderRel[];
    type(): GoogleGeocoderType;
}

type ImportType = 'imports';
type ImportRel = ResourceRel & {
    type: ImportType;
};
type ImportSort = Pick<Import, 'id' | 'resource_type' | 'format' | 'parent_resource_id' | 'status' | 'started_at' | 'completed_at' | 'interrupted_at' | 'inputs_size' | 'errors_count' | 'warnings_count' | 'processed_count' | 'attachment_url'> & ResourceSort;
interface Import extends Resource {
    readonly type: ImportType;
    /**
     * The type of resource being imported.
     * @example ```"skus"```
     */
    resource_type: string;
    /**
     * The format of the import inputs one of 'json' (default) or 'csv'.
     * @example ```"json"```
     */
    format?: string | null;
    /**
     * The ID of the parent resource to be associated with imported data.
     * @example ```"1234"```
     */
    parent_resource_id?: string | null;
    /**
     * The import job status. One of 'pending' (default), 'in_progress', 'interrupted', or 'completed'.
     * @example ```"in_progress"```
     */
    status: 'pending' | 'in_progress' | 'interrupted' | 'completed';
    /**
     * Time at which the import was started.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    started_at?: string | null;
    /**
     * Time at which the import was completed.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    completed_at?: string | null;
    /**
     * Time at which the import was interrupted.
     * @example ```"2018-01-01T12:00:00.000Z"```
     */
    interrupted_at?: string | null;
    /**
     * Array of objects representing the resources that are being imported.
     * @example ```[{"code":"ABC","name":"Foo"},{"code":"DEF","name":"Bar"}]```
     */
    inputs: Array<Record<string, any>>;
    /**
     * Indicates the size of the objects to be imported.
     * @example ```300```
     */
    inputs_size?: number | null;
    /**
     * Indicates the number of import errors, if any.
     * @example ```30```
     */
    errors_count?: number | null;
    /**
     * Indicates the number of import warnings, if any.
     * @example ```1```
     */
    warnings_count?: number | null;
    /**
     * Indicates the number of records that have been processed (created or updated).
     * @example ```270```
     */
    processed_count?: number | null;
    /**
     * Contains the import errors, if any.
     * @example ```{"ABC":{"name":["has already been taken"]}}```
     */
    errors_log?: Record<string, any> | null;
    /**
     * Contains the import warnings, if any.
     * @example ```{"ABC":["could not be deleted"]}```
     */
    warnings_log?: Record<string, any> | null;
    /**
     * The URL the the raw inputs file, which will be generated at import start.
     * @example ```"http://cl_imports.s3.amazonaws.com/"```
     */
    attachment_url?: string | null;
    events?: Event[] | null;
}
interface ImportCreate extends ResourceCreate {
    /**
     * The type of resource being imported.
     * @example ```"skus"```
     */
    resource_type: string;
    /**
     * The format of the import inputs one of 'json' (default) or 'csv'.
     * @example ```"json"```
     */
    format?: string | null;
    /**
     * The ID of the parent resource to be associated with imported data.
     * @example ```"1234"```
     */
    parent_resource_id?: string | null;
    /**
     * Array of objects representing the resources that are being imported.
     * @example ```[{"code":"ABC","name":"Foo"},{"code":"DEF","name":"Bar"}]```
     */
    inputs: Array<Record<string, any>>;
}
interface ImportUpdate extends ResourceUpdate {
    /**
     * Send this attribute if you want to mark status as 'interrupted'.
     * @example ```true```
     */
    _interrupt?: boolean | null;
}
declare class Imports extends ApiResource<Import> {
    static readonly TYPE: ImportType;
    create(resource: ImportCreate, params?: QueryParamsRetrieve<Import>, options?: ResourcesConfig): Promise<Import>;
    update(resource: ImportUpdate, params?: QueryParamsRetrieve<Import>, options?: ResourcesConfig): Promise<Import>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    events(importId: string | Import, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    _interrupt(id: string | Import, params?: QueryParamsRetrieve<Import>, options?: ResourcesConfig): Promise<Import>;
    isImport(resource: any): resource is Import;
    relationship(id: string | ResourceId | null): ImportRel;
    relationshipToMany(...ids: string[]): ImportRel[];
    type(): ImportType;
}

type InStockSubscriptionType = 'in_stock_subscriptions';
type InStockSubscriptionRel = ResourceRel & {
    type: InStockSubscriptionType;
};
type MarketRel = ResourceRel & {
    type: MarketType;
};
type CustomerRel = ResourceRel & {
    type: CustomerType;
};
type SkuRel = ResourceRel & {
    type: SkuType;
};
type InStockSubscriptionSort = Pick<InStockSubscription, 'id' | 'status' | 'stock_threshold'> & ResourceSort;
interface InStockSubscription extends Resource {
    readonly type: InStockSubscriptionType;
    /**
     * The subscription status. One of 'active' (default), 'inactive', or 'notified'.
     * @example ```"active"```
     */
    status: 'active' | 'inactive' | 'notified';
    /**
     * The email of the associated customer, replace the relationship.
     * @example ```"john@example.com"```
     */
    customer_email?: string | null;
    /**
     * The code of the associated SKU, replace the relationship.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The threshold at which to trigger the back in stock notification.
     * @example ```3```
     */
    stock_threshold?: number | null;
    market?: Market | null;
    customer?: Customer | null;
    sku?: Sku | null;
    events?: Event[] | null;
    versions?: Version[] | null;
}
interface InStockSubscriptionCreate extends ResourceCreate {
    /**
     * The email of the associated customer, replace the relationship.
     * @example ```"john@example.com"```
     */
    customer_email?: string | null;
    /**
     * The code of the associated SKU, replace the relationship.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The threshold at which to trigger the back in stock notification.
     * @example ```3```
     */
    stock_threshold?: number | null;
    market: MarketRel;
    customer: CustomerRel;
    sku: SkuRel;
}
interface InStockSubscriptionUpdate extends ResourceUpdate {
    /**
     * The code of the associated SKU, replace the relationship.
     * @example ```"TSHIRTMM000000FFFFFFXLXX"```
     */
    sku_code?: string | null;
    /**
     * The threshold at which to trigger the back in stock notification.
     * @example ```3```
     */
    stock_threshold?: number | null;
    /**
     * Send this attribute if you want to activate an inactive subscription.
     * @example ```true```
     */
    _activate?: boolean | null;
    /**
     * Send this attribute if you want to dactivate an active subscription.
     * @example ```true```
     */
    _deactivate?: boolean | null;
    market?: MarketRel | null;
    customer?: CustomerRel | null;
    sku?: SkuRel | null;
}
declare class InStockSubscriptions extends ApiResource<InStockSubscription> {
    static readonly TYPE: InStockSubscriptionType;
    create(resource: InStockSubscriptionCreate, params?: QueryParamsRetrieve<InStockSubscription>, options?: ResourcesConfig): Promise<InStockSubscription>;
    update(resource: InStockSubscriptionUpdate, params?: QueryParamsRetrieve<InStockSubscription>, options?: ResourcesConfig): Promise<InStockSubscription>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    market(inStockSubscriptionId: string | InStockSubscription, params?: QueryParamsRetrieve<Market>, options?: ResourcesConfig): Promise<Market>;
    customer(inStockSubscriptionId: string | InStockSubscription, params?: QueryParamsRetrieve<Customer>, options?: ResourcesConfig): Promise<Customer>;
    sku(inStockSubscriptionId: string | InStockSubscription, params?: QueryParamsRetrieve<Sku>, options?: ResourcesConfig): Promise<Sku>;
    events(inStockSubscriptionId: string | InStockSubscription, params?: QueryParamsList<Event>, options?: ResourcesConfig): Promise<ListResponse<Event>>;
    versions(inStockSubscriptionId: string | InStockSubscription, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    _activate(id: string | InStockSubscription, params?: QueryParamsRetrieve<InStockSubscription>, options?: ResourcesConfig): Promise<InStockSubscription>;
    _deactivate(id: string | InStockSubscription, params?: QueryParamsRetrieve<InStockSubscription>, options?: ResourcesConfig): Promise<InStockSubscription>;
    isInStockSubscription(resource: any): resource is InStockSubscription;
    relationship(id: string | ResourceId | null): InStockSubscriptionRel;
    relationshipToMany(...ids: string[]): InStockSubscriptionRel[];
    type(): InStockSubscriptionType;
}

type KlarnaGatewayType = 'klarna_gateways';
type KlarnaGatewayRel = ResourceRel & {
    type: KlarnaGatewayType;
};
type KlarnaPaymentRel = ResourceRel & {
    type: KlarnaPaymentType;
};
type KlarnaGatewaySort = Pick<KlarnaGateway, 'id' | 'name'> & ResourceSort;
interface KlarnaGateway extends Resource {
    readonly type: KlarnaGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    klarna_payments?: KlarnaPayment[] | null;
}
interface KlarnaGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The gateway country code one of EU, US, or OC.
     * @example ```"EU"```
     */
    country_code: string;
    /**
     * The public key linked to your API credential.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_key: string;
    /**
     * The gateway API key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_secret: string;
    klarna_payments?: KlarnaPaymentRel[] | null;
}
interface KlarnaGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    /**
     * The gateway country code one of EU, US, or OC.
     * @example ```"EU"```
     */
    country_code?: string | null;
    /**
     * The public key linked to your API credential.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_key?: string | null;
    /**
     * The gateway API key.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    api_secret?: string | null;
    klarna_payments?: KlarnaPaymentRel[] | null;
}
declare class KlarnaGateways extends ApiResource<KlarnaGateway> {
    static readonly TYPE: KlarnaGatewayType;
    create(resource: KlarnaGatewayCreate, params?: QueryParamsRetrieve<KlarnaGateway>, options?: ResourcesConfig): Promise<KlarnaGateway>;
    update(resource: KlarnaGatewayUpdate, params?: QueryParamsRetrieve<KlarnaGateway>, options?: ResourcesConfig): Promise<KlarnaGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(klarnaGatewayId: string | KlarnaGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(klarnaGatewayId: string | KlarnaGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    klarna_payments(klarnaGatewayId: string | KlarnaGateway, params?: QueryParamsList<KlarnaPayment>, options?: ResourcesConfig): Promise<ListResponse<KlarnaPayment>>;
    isKlarnaGateway(resource: any): resource is KlarnaGateway;
    relationship(id: string | ResourceId | null): KlarnaGatewayRel;
    relationshipToMany(...ids: string[]): KlarnaGatewayRel[];
    type(): KlarnaGatewayType;
}

type ManualGatewayType = 'manual_gateways';
type ManualGatewayRel = ResourceRel & {
    type: ManualGatewayType;
};
type ManualGatewaySort = Pick<ManualGateway, 'id' | 'name'> & ResourceSort;
interface ManualGateway extends Resource {
    readonly type: ManualGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
}
interface ManualGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
}
interface ManualGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
}
declare class ManualGateways extends ApiResource<ManualGateway> {
    static readonly TYPE: ManualGatewayType;
    create(resource: ManualGatewayCreate, params?: QueryParamsRetrieve<ManualGateway>, options?: ResourcesConfig): Promise<ManualGateway>;
    update(resource: ManualGatewayUpdate, params?: QueryParamsRetrieve<ManualGateway>, options?: ResourcesConfig): Promise<ManualGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(manualGatewayId: string | ManualGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(manualGatewayId: string | ManualGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isManualGateway(resource: any): resource is ManualGateway;
    relationship(id: string | ResourceId | null): ManualGatewayRel;
    relationshipToMany(...ids: string[]): ManualGatewayRel[];
    type(): ManualGatewayType;
}

type OrganizationType = 'organizations';
type OrganizationRel = ResourceRel & {
    type: OrganizationType;
};
type OrganizationSort = Pick<Organization, 'id'> & ResourceSort;
interface Organization extends Resource {
    readonly type: OrganizationType;
    /**
     * The organization's internal name.
     * @example ```"The Blue Brand"```
     */
    name?: string | null;
    /**
     * The organization's slug name.
     * @example ```"the-blue-brand"```
     */
    slug?: string | null;
    /**
     * The organization's domain.
     * @example ```"the-blue-brand.commercelayer.io"```
     */
    domain?: string | null;
    /**
     * The organization's support phone.
     * @example ```"+01 30800857"```
     */
    support_phone?: string | null;
    /**
     * The organization's support email.
     * @example ```"support@bluebrand.com"```
     */
    support_email?: string | null;
    /**
     * The URL to the organization's logo.
     * @example ```"https://bluebrand.com/img/logo.svg"```
     */
    logo_url?: string | null;
    /**
     * The URL to the organization's favicon.
     * @example ```"https://bluebrand.com/img/favicon.ico"```
     */
    favicon_url?: string | null;
    /**
     * The organization's primary color.
     * @example ```"#C8984E"```
     */
    primary_color?: string | null;
    /**
     * The organization's Google Tag Manager ID.
     * @example ```"GTM-5FJXX6"```
     */
    gtm_id?: string | null;
    /**
     * The organization's Google Tag Manager ID for test.
     * @example ```"GTM-5FJXX7"```
     */
    gtm_id_test?: string | null;
    /**
     * The organization's configuration.
     * @example ```{"mfe":{"default":{"links":{"cart":"https://cart.example.com/:order_id?accessToken=:access_token","checkout":"https://checkout.example.com/:order_id?accessToken=:accessToken","identity":"https://example.com/login","microstore":"https://example.com/microstore/?accessToken=:access_token","my_account":"https://example.com/my-custom-account?accessToken=:access_token"},"checkout":{"thankyou_page":"https://example.com/thanks/:lang/:orderId","billing_countries":[{"value":"ES","label":"Espana"},{"value":"IT","label":"Italia"},{"value":"US","label":"Unites States of America"}],"shipping_countries":[{"value":"ES","label":"Espana"},{"value":"IT","label":"Italia"},{"value":"US","label":"Unites States of America"}],"billing_states":{"FR":[{"value":"PA","label":"Paris"},{"value":"LY","label":"Lyon"},{"value":"NI","label":"Nice"},{"value":"MA","label":"Marseille"},{"value":"BO","label":"Bordeaux"}]},"shipping_states":{"FR":[{"value":"PA","label":"Paris"},{"value":"LY","label":"Lyon"},{"value":"NI","label":"Nice"},{"value":"MA","label":"Marseille"},{"value":"BO","label":"Bordeaux"}]},"default_country":"US"},"urls":{"privacy":"https://example.com/privacy/:lang","terms":"https://example.com/terms/:lang"}},"market:id:ZKcv13rT":{"links":{"cart":"https://example.com/custom-cart/:order_id?accessToken=:access_token"},"checkout":{"thankyou_page":"https://example.com/thanks/:order_id"}}}}```
     */
    config?: Record<string, any> | null;
    /**
     * Enables the redirect on the new Auth API.
     * @example ```true```
     */
    api_auth_redirect?: boolean | null;
    /**
     * Enables the rules engine for flex promotions and price list rules.
     */
    api_rules_engine?: boolean | null;
    /**
     * The fallback maximum number of conditions within a rules payload on a ruleable object, default is 150.
     * @example ```150```
     */
    api_rules_engine_max_conditions_size?: number | null;
    /**
     * The fallback maximum number of rules within a rules payload on a ruleable object, default is 15.
     * @example ```15```
     */
    api_rules_engine_max_rules_size?: number | null;
    /**
     * Forces the usage of the new Authentication API.
     * @example ```true```
     */
    api_new_auth?: boolean | null;
    /**
     * Enables the purge of cached single resources when list is purged.
     */
    api_purge_single_resource?: boolean | null;
    /**
     * The maximum length for the regular expressions, default is 5000.
     * @example ```5000```
     */
    api_max_regex_length?: number | null;
    /**
     * Indicates if the phone attribute is required for addresses, default is true.
     * @example ```true```
     */
    addresses_phone_required?: boolean | null;
    /**
     * The minimum lapse in fraction of seconds to be observed between two consecutive order refreshes. If refresh is triggered within the minimum lapse, the update is performed, but no order refresh is done, until the lapse is observed.
     */
    orders_min_refresh_lapse?: number | null;
    /**
     * The maximum number line items allowed for a test order before disabling the autorefresh option.
     * @example ```50```
     */
    orders_autorefresh_cutoff_test?: number | null;
    /**
     * The maximum number line items allowed for a live order before disabling the autorefresh option.
     * @example ```500```
     */
    orders_autorefresh_cutoff_live?: number | null;
    /**
     * Enables orders number editing as a string in test (for enterprise plans only).
     */
    orders_number_editable_test?: boolean | null;
    /**
     * Enables orders number editing as a string in live (for enterprise plans only).
     */
    orders_number_editable_live?: boolean | null;
    /**
     * Enables to use the order number as payment reference on supported gateways.
     * @example ```true```
     */
    orders_number_as_reference?: boolean | null;
    /**
     * Enables raising of API errors in case the provided coupon code is invalid, default is true.
     * @example ```true```
     */
    orders_invalid_coupon_errors?: boolean | null;
    /**
     * The maximum number of SKUs allowed for bundles, default is 10.
     * @example ```10```
     */
    bundles_max_items_count?: number | null;
    /**
     * The minimum length for coupon code, default is 8.
     * @example ```8```
     */
    coupons_min_code_length?: number | null;
    /**
     * The maximum length for coupon code, default is 40.
     * @example ```40```
     */
    coupons_max_code_length?: number | null;
    /**
     * The minimum length for gift card code, default is 8.
     * @example ```8```
     */
    gift_cards_min_code_length?: number | null;
    /**
     * The maximum length for gift card code, default is 40.
     * @example ```40```
     */
    gift_cards_max_code_length?: number | null;
    /**
     * The maximum number of concurrent cleanups allowed for your organization, default is 10.
     * @example ```10```
     */
    cleanups_max_concurrent_count?: number | null;
    /**
     * The maximum number of concurrent exports allowed for your organization, default is 10.
     * @example ```10```
     */
    exports_max_concurrent_count?: number | null;
    /**
     * The maximum number of concurrent imports allowed for your organization, default is 10.
     * @example ```10```
     */
    imports_max_concurrent_count?: number | null;
    /**
     * Enables purging of cached resources upon succeeded imports.
     * @example ```true```
     */
    imports_purge_cache?: boolean | null;
    /**
     * Disables the interruption of the import in case its errors exceeds the 10% threshold, default is false.
     */
    imports_skip_errors?: boolean | null;
    /**
     * The maximum number of active concurrent promotions allowed for your organization, default is 10.
     * @example ```10```
     */
    promotions_max_concurrent_count?: number | null;
    /**
     * The maximum number of conditions within a rules payload on a promotion object, default is 150.
     * @example ```150```
     */
    promotions_max_conditions_size?: number | null;
    /**
     * The maximum number of rules within a rules payload on a promotion object, default is 15.
     * @example ```15```
     */
    promotions_max_rules_size?: number | null;
    /**
     * The maximum number of conditions within a rules payload on a price list object, default is 150.
     * @example ```150```
     */
    price_lists_max_conditions_size?: number | null;
    /**
     * The maximum number of rules within a rules payload on a price list object, default is 15.
     * @example ```15```
     */
    price_lists_max_rules_size?: number | null;
    /**
     * Enables triggering of webhooks during imports, default is false.
     */
    imports_trigger_webhooks?: number | null;
    /**
     * Enables the use of an external discount engine in place of the standard one, default is false.
     */
    discount_engines_enabled?: boolean | null;
    /**
     * Enables raising of API errors in case of discount engine failure, default is false.
     */
    discount_engines_errors?: boolean | null;
    /**
     * The maximum length for the tag name, default is 25.
     * @example ```25```
     */
    tags_max_name_length?: number | null;
    /**
     * The maximum allowed number of tags for each resource, default is 10.
     * @example ```10```
     */
    tags_max_allowed_number?: number | null;
    /**
     * Enables raising of API errors in case of tax calculation failure, default is false.
     */
    tax_calculators_errors?: boolean | null;
    /**
     * Enables raising of API errors in case of external promotion failure, default is false.
     */
    external_promotions_errors?: boolean | null;
}
declare class Organizations extends ApiSingleton<Organization> {
    static readonly TYPE: OrganizationType;
    isOrganization(resource: any): resource is Organization;
    relationship(id: string | ResourceId | null): OrganizationRel;
    relationshipToMany(...ids: string[]): OrganizationRel[];
    type(): OrganizationType;
    path(): string;
}

type PaypalGatewayType = 'paypal_gateways';
type PaypalGatewayRel = ResourceRel & {
    type: PaypalGatewayType;
};
type PaypalGatewaySort = Pick<PaypalGateway, 'id' | 'name'> & ResourceSort;
interface PaypalGateway extends Resource {
    readonly type: PaypalGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    paypal_payments?: PaypalPayment[] | null;
}
interface PaypalGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The gateway client ID.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    client_id: string;
    /**
     * The gateway client secret.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    client_secret: string;
}
interface PaypalGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    /**
     * The gateway client ID.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    client_id?: string | null;
    /**
     * The gateway client secret.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    client_secret?: string | null;
}
declare class PaypalGateways extends ApiResource<PaypalGateway> {
    static readonly TYPE: PaypalGatewayType;
    create(resource: PaypalGatewayCreate, params?: QueryParamsRetrieve<PaypalGateway>, options?: ResourcesConfig): Promise<PaypalGateway>;
    update(resource: PaypalGatewayUpdate, params?: QueryParamsRetrieve<PaypalGateway>, options?: ResourcesConfig): Promise<PaypalGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(paypalGatewayId: string | PaypalGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(paypalGatewayId: string | PaypalGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    paypal_payments(paypalGatewayId: string | PaypalGateway, params?: QueryParamsList<PaypalPayment>, options?: ResourcesConfig): Promise<ListResponse<PaypalPayment>>;
    isPaypalGateway(resource: any): resource is PaypalGateway;
    relationship(id: string | ResourceId | null): PaypalGatewayRel;
    relationshipToMany(...ids: string[]): PaypalGatewayRel[];
    type(): PaypalGatewayType;
}

type SatispayGatewayType = 'satispay_gateways';
type SatispayGatewayRel = ResourceRel & {
    type: SatispayGatewayType;
};
type SatispayPaymentRel = ResourceRel & {
    type: SatispayPaymentType;
};
type SatispayGatewaySort = Pick<SatispayGateway, 'id' | 'name'> & ResourceSort;
interface SatispayGateway extends Resource {
    readonly type: SatispayGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * Activation code generated from the Satispay Dashboard.
     * @example ```"623ECX"```
     */
    token: string;
    /**
     * The Satispay API key auto generated basing on activation code.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    key_id: string;
    /**
     * The gateway webhook URL, generated automatically.
     * @example ```"https://core.commercelayer.co/webhook_callbacks/satispay_gateways/xxxxx"```
     */
    webhook_endpoint_url?: string | null;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    satispay_payments?: SatispayPayment[] | null;
}
interface SatispayGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * Activation code generated from the Satispay Dashboard.
     * @example ```"623ECX"```
     */
    token: string;
    satispay_payments?: SatispayPaymentRel[] | null;
}
interface SatispayGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    satispay_payments?: SatispayPaymentRel[] | null;
}
declare class SatispayGateways extends ApiResource<SatispayGateway> {
    static readonly TYPE: SatispayGatewayType;
    create(resource: SatispayGatewayCreate, params?: QueryParamsRetrieve<SatispayGateway>, options?: ResourcesConfig): Promise<SatispayGateway>;
    update(resource: SatispayGatewayUpdate, params?: QueryParamsRetrieve<SatispayGateway>, options?: ResourcesConfig): Promise<SatispayGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(satispayGatewayId: string | SatispayGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(satispayGatewayId: string | SatispayGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    satispay_payments(satispayGatewayId: string | SatispayGateway, params?: QueryParamsList<SatispayPayment>, options?: ResourcesConfig): Promise<ListResponse<SatispayPayment>>;
    isSatispayGateway(resource: any): resource is SatispayGateway;
    relationship(id: string | ResourceId | null): SatispayGatewayRel;
    relationshipToMany(...ids: string[]): SatispayGatewayRel[];
    type(): SatispayGatewayType;
}

type StripeGatewayType = 'stripe_gateways';
type StripeGatewayRel = ResourceRel & {
    type: StripeGatewayType;
};
type StripeGatewaySort = Pick<StripeGateway, 'id' | 'name'> & ResourceSort;
interface StripeGateway extends Resource {
    readonly type: StripeGatewayType;
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The account (if any) for which the funds of the PaymentIntent are intended.
     * @example ```"acct_xxxx-yyyy-zzzz"```
     */
    connected_account?: string | null;
    /**
     * Indicates if the gateway will accept payment methods enabled in the Stripe dashboard.
     * @example ```true```
     */
    auto_payments?: boolean | null;
    /**
     * Indicates if the payment source is forced on the editable order upon receiving a successful event from Stripe.
     * @example ```true```
     */
    force_payments?: boolean | null;
    /**
     * The gateway webhook endpoint ID, generated automatically.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    webhook_endpoint_id?: string | null;
    /**
     * The gateway webhook endpoint secret, generated automatically.
     * @example ```"xxxx-yyyy-zzzz"```
     */
    webhook_endpoint_secret?: string | null;
    /**
     * The gateway webhook URL, generated automatically.
     * @example ```"https://core.commercelayer.co/webhook_callbacks/stripe_gateways/xxxxx"```
     */
    webhook_endpoint_url?: string | null;
    payment_methods?: PaymentMethod[] | null;
    versions?: Version[] | null;
    stripe_payments?: StripePayment[] | null;
}
interface StripeGatewayCreate extends ResourceCreate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name: string;
    /**
     * The gateway login.
     * @example ```"sk_live_xxxx-yyyy-zzzz"```
     */
    login: string;
    /**
     * The gateway publishable API key.
     * @example ```"pk_live_xxxx-yyyy-zzzz"```
     */
    publishable_key?: string | null;
    /**
     * The account (if any) for which the funds of the PaymentIntent are intended.
     * @example ```"acct_xxxx-yyyy-zzzz"```
     */
    connected_account?: string | null;
    /**
     * Indicates if the gateway will accept payment methods enabled in the Stripe dashboard.
     * @example ```true```
     */
    auto_payments?: boolean | null;
    /**
     * Indicates if the payment source is forced on the editable order upon receiving a successful event from Stripe.
     * @example ```true```
     */
    force_payments?: boolean | null;
}
interface StripeGatewayUpdate extends ResourceUpdate {
    /**
     * The payment gateway's internal name.
     * @example ```"US payment gateway"```
     */
    name?: string | null;
    /**
     * The account (if any) for which the funds of the PaymentIntent are intended.
     * @example ```"acct_xxxx-yyyy-zzzz"```
     */
    connected_account?: string | null;
    /**
     * Indicates if the gateway will accept payment methods enabled in the Stripe dashboard.
     * @example ```true```
     */
    auto_payments?: boolean | null;
    /**
     * Indicates if the payment source is forced on the editable order upon receiving a successful event from Stripe.
     * @example ```true```
     */
    force_payments?: boolean | null;
}
declare class StripeGateways extends ApiResource<StripeGateway> {
    static readonly TYPE: StripeGatewayType;
    create(resource: StripeGatewayCreate, params?: QueryParamsRetrieve<StripeGateway>, options?: ResourcesConfig): Promise<StripeGateway>;
    update(resource: StripeGatewayUpdate, params?: QueryParamsRetrieve<StripeGateway>, options?: ResourcesConfig): Promise<StripeGateway>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    payment_methods(stripeGatewayId: string | StripeGateway, params?: QueryParamsList<PaymentMethod>, options?: ResourcesConfig): Promise<ListResponse<PaymentMethod>>;
    versions(stripeGatewayId: string | StripeGateway, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    stripe_payments(stripeGatewayId: string | StripeGateway, params?: QueryParamsList<StripePayment>, options?: ResourcesConfig): Promise<ListResponse<StripePayment>>;
    isStripeGateway(resource: any): resource is StripeGateway;
    relationship(id: string | ResourceId | null): StripeGatewayRel;
    relationshipToMany(...ids: string[]): StripeGatewayRel[];
    type(): StripeGatewayType;
}

type TalonOneAccountType = 'talon_one_accounts';
type TalonOneAccountRel = ResourceRel & {
    type: TalonOneAccountType;
};
type TalonOneAccountSort = Pick<TalonOneAccount, 'id' | 'name'> & ResourceSort;
interface TalonOneAccount extends Resource {
    readonly type: TalonOneAccountType;
    /**
     * The discount engine's internal name.
     * @example ```"Personal discount engine"```
     */
    name: string;
    /**
     * Indicates if the discount engine manages both promotions and gift cards application at once.
     */
    manage_gift_cards?: boolean | null;
    /**
     * The API endpoint as computed by specified baseurl.
     * @example ```"https://my_baseurl.talon.one/v2"```
     */
    api_endpoint?: string | null;
    markets?: Market[] | null;
    discount_engine_items?: DiscountEngineItem[] | null;
    attachments?: Attachment[] | null;
    versions?: Version[] | null;
}
interface TalonOneAccountCreate extends ResourceCreate {
    /**
     * The discount engine's internal name.
     * @example ```"Personal discount engine"```
     */
    name: string;
    /**
     * Indicates if the discount engine manages both promotions and gift cards application at once.
     */
    manage_gift_cards?: boolean | null;
    /**
     * The Talon.One account API key.
     * @example ```"TALON_ONE_API_KEY"```
     */
    api_key: string;
    /**
     * The Talon.One API baseurl (excluding the talon.one suffix).
     * @example ```"yourbaseurl"```
     */
    baseurl: string;
}
interface TalonOneAccountUpdate extends ResourceUpdate {
    /**
     * The discount engine's internal name.
     * @example ```"Personal discount engine"```
     */
    name?: string | null;
    /**
     * Indicates if the discount engine manages both promotions and gift cards application at once.
     */
    manage_gift_cards?: boolean | null;
    /**
     * The Talon.One account API key.
     * @example ```"TALON_ONE_API_KEY"```
     */
    api_key?: string | null;
    /**
     * The Talon.One API baseurl (excluding the talon.one suffix).
     * @example ```"yourbaseurl"```
     */
    baseurl?: string | null;
}
declare class TalonOneAccounts extends ApiResource<TalonOneAccount> {
    static readonly TYPE: TalonOneAccountType;
    create(resource: TalonOneAccountCreate, params?: QueryParamsRetrieve<TalonOneAccount>, options?: ResourcesConfig): Promise<TalonOneAccount>;
    update(resource: TalonOneAccountUpdate, params?: QueryParamsRetrieve<TalonOneAccount>, options?: ResourcesConfig): Promise<TalonOneAccount>;
    delete(id: string | ResourceId, options?: ResourcesConfig): Promise<void>;
    markets(talonOneAccountId: string | TalonOneAccount, params?: QueryParamsList<Market>, options?: ResourcesConfig): Promise<ListResponse<Market>>;
    discount_engine_items(talonOneAccountId: string | TalonOneAccount, params?: QueryParamsList<DiscountEngineItem>, options?: ResourcesConfig): Promise<ListResponse<DiscountEngineItem>>;
    attachments(talonOneAccountId: string | TalonOneAccount, params?: QueryParamsList<Attachment>, options?: ResourcesConfig): Promise<ListResponse<Attachment>>;
    versions(talonOneAccountId: string | TalonOneAccount, params?: QueryParamsList<Version>, options?: ResourcesConfig): Promise<ListResponse<Version>>;
    isTalonOneAccount(resource: any): resource is TalonOneAccount;
    relationship(id: string | ResourceId | null): TalonOneAccountRel;
    relationshipToMany(...ids: string[]): TalonOneAccountRel[];
    type(): TalonOneAccountType;
}

type ResourceTypeLock = 'addresses' | 'adjustments' | 'adyen_gateways' | 'adyen_payments' | 'applications' | 'attachments' | 'authorizations' | 'avalara_accounts' | 'axerve_gateways' | 'axerve_payments' | 'bing_geocoders' | 'braintree_gateways' | 'braintree_payments' | 'bundles' | 'buy_x_pay_y_promotions' | 'captures' | 'carrier_accounts' | 'checkout_com_gateways' | 'checkout_com_payments' | 'cleanups' | 'coupon_codes_promotion_rules' | 'coupon_recipients' | 'coupons' | 'custom_promotion_rules' | 'customer_addresses' | 'customer_groups' | 'customer_password_resets' | 'customer_payment_sources' | 'customer_subscriptions' | 'customers' | 'delivery_lead_times' | 'discount_engine_items' | 'discount_engines' | 'easypost_pickups' | 'event_callbacks' | 'events' | 'exports' | 'external_gateways' | 'external_payments' | 'external_promotions' | 'external_tax_calculators' | 'fixed_amount_promotions' | 'fixed_price_promotions' | 'flex_promotions' | 'free_gift_promotions' | 'free_shipping_promotions' | 'geocoders' | 'gift_card_recipients' | 'gift_cards' | 'google_geocoders' | 'imports' | 'in_stock_subscriptions' | 'inventory_models' | 'inventory_return_locations' | 'inventory_stock_locations' | 'klarna_gateways' | 'klarna_payments' | 'line_item_options' | 'line_items' | 'links' | 'manual_gateways' | 'manual_tax_calculators' | 'markets' | 'merchants' | 'notifications' | 'order_amount_promotion_rules' | 'order_copies' | 'order_factories' | 'order_subscription_items' | 'order_subscriptions' | 'orders' | 'organizations' | 'packages' | 'parcel_line_items' | 'parcels' | 'payment_gateways' | 'payment_methods' | 'payment_options' | 'paypal_gateways' | 'paypal_payments' | 'percentage_discount_promotions' | 'pickups' | 'price_frequency_tiers' | 'price_list_schedulers' | 'price_lists' | 'price_tiers' | 'price_volume_tiers' | 'prices' | 'promotion_rules' | 'promotions' | 'recurring_order_copies' | 'refunds' | 'reserved_stocks' | 'resource_errors' | 'return_line_items' | 'returns' | 'satispay_gateways' | 'satispay_payments' | 'shipments' | 'shipping_categories' | 'shipping_method_tiers' | 'shipping_methods' | 'shipping_weight_tiers' | 'shipping_zones' | 'sku_list_items' | 'sku_list_promotion_rules' | 'sku_lists' | 'sku_options' | 'skus' | 'stock_items' | 'stock_line_items' | 'stock_locations' | 'stock_reservations' | 'stock_transfers' | 'stores' | 'stripe_gateways' | 'stripe_payments' | 'stripe_tax_accounts' | 'subscription_models' | 'tags' | 'talon_one_accounts' | 'tax_calculators' | 'tax_categories' | 'tax_rules' | 'taxjar_accounts' | 'transactions' | 'versions' | 'vertex_accounts' | 'voids' | 'webhooks' | 'wire_transfers';
declare const resourceList: ResourceTypeLock[];
declare const singletonList: ResourceTypeLock[];
type RetrievableResourceType = ResourceTypeLock;
type RetrievableResource = Resource & {
    type: RetrievableResourceType;
};
type ListableResourceType = Exclude<ResourceTypeLock, 'applications' | 'organizations'>;
type ListableResource = Resource & {
    type: ListableResourceType;
};
type CreatableResourceType = 'addresses' | 'adjustments' | 'adyen_gateways' | 'adyen_payments' | 'attachments' | 'avalara_accounts' | 'axerve_gateways' | 'axerve_payments' | 'bing_geocoders' | 'braintree_gateways' | 'braintree_payments' | 'bundles' | 'buy_x_pay_y_promotions' | 'carrier_accounts' | 'checkout_com_gateways' | 'checkout_com_payments' | 'cleanups' | 'coupon_codes_promotion_rules' | 'coupon_recipients' | 'coupons' | 'custom_promotion_rules' | 'customer_addresses' | 'customer_groups' | 'customer_password_resets' | 'customer_payment_sources' | 'customer_subscriptions' | 'customers' | 'delivery_lead_times' | 'easypost_pickups' | 'exports' | 'external_gateways' | 'external_payments' | 'external_promotions' | 'external_tax_calculators' | 'fixed_amount_promotions' | 'fixed_price_promotions' | 'flex_promotions' | 'free_gift_promotions' | 'free_shipping_promotions' | 'gift_card_recipients' | 'gift_cards' | 'google_geocoders' | 'imports' | 'in_stock_subscriptions' | 'inventory_models' | 'inventory_return_locations' | 'inventory_stock_locations' | 'klarna_gateways' | 'klarna_payments' | 'line_item_options' | 'line_items' | 'links' | 'manual_gateways' | 'manual_tax_calculators' | 'markets' | 'merchants' | 'notifications' | 'order_amount_promotion_rules' | 'order_copies' | 'order_subscription_items' | 'order_subscriptions' | 'orders' | 'packages' | 'parcel_line_items' | 'parcels' | 'payment_methods' | 'payment_options' | 'paypal_gateways' | 'paypal_payments' | 'percentage_discount_promotions' | 'price_frequency_tiers' | 'price_list_schedulers' | 'price_lists' | 'price_volume_tiers' | 'prices' | 'recurring_order_copies' | 'return_line_items' | 'returns' | 'satispay_gateways' | 'satispay_payments' | 'shipments' | 'shipping_categories' | 'shipping_methods' | 'shipping_weight_tiers' | 'shipping_zones' | 'sku_list_items' | 'sku_list_promotion_rules' | 'sku_lists' | 'sku_options' | 'skus' | 'stock_items' | 'stock_line_items' | 'stock_locations' | 'stock_reservations' | 'stock_transfers' | 'stores' | 'stripe_gateways' | 'stripe_payments' | 'stripe_tax_accounts' | 'subscription_models' | 'tags' | 'talon_one_accounts' | 'tax_categories' | 'tax_rules' | 'taxjar_accounts' | 'vertex_accounts' | 'webhooks' | 'wire_transfers';
type CreatableResource = Resource & {
    type: CreatableResourceType;
};
type UpdatableResourceType = 'addresses' | 'adjustments' | 'adyen_gateways' | 'adyen_payments' | 'attachments' | 'authorizations' | 'avalara_accounts' | 'axerve_gateways' | 'axerve_payments' | 'bing_geocoders' | 'braintree_gateways' | 'braintree_payments' | 'bundles' | 'buy_x_pay_y_promotions' | 'captures' | 'carrier_accounts' | 'checkout_com_gateways' | 'checkout_com_payments' | 'cleanups' | 'coupon_codes_promotion_rules' | 'coupon_recipients' | 'coupons' | 'custom_promotion_rules' | 'customer_addresses' | 'customer_groups' | 'customer_password_resets' | 'customer_payment_sources' | 'customer_subscriptions' | 'customers' | 'delivery_lead_times' | 'easypost_pickups' | 'events' | 'exports' | 'external_gateways' | 'external_payments' | 'external_promotions' | 'external_tax_calculators' | 'fixed_amount_promotions' | 'fixed_price_promotions' | 'flex_promotions' | 'free_gift_promotions' | 'free_shipping_promotions' | 'gift_card_recipients' | 'gift_cards' | 'google_geocoders' | 'imports' | 'in_stock_subscriptions' | 'inventory_models' | 'inventory_return_locations' | 'inventory_stock_locations' | 'klarna_gateways' | 'klarna_payments' | 'line_item_options' | 'line_items' | 'links' | 'manual_gateways' | 'manual_tax_calculators' | 'markets' | 'merchants' | 'notifications' | 'order_amount_promotion_rules' | 'order_copies' | 'order_subscription_items' | 'order_subscriptions' | 'orders' | 'packages' | 'parcel_line_items' | 'parcels' | 'payment_methods' | 'payment_options' | 'paypal_gateways' | 'paypal_payments' | 'percentage_discount_promotions' | 'price_frequency_tiers' | 'price_list_schedulers' | 'price_lists' | 'price_volume_tiers' | 'prices' | 'recurring_order_copies' | 'refunds' | 'return_line_items' | 'returns' | 'satispay_gateways' | 'satispay_payments' | 'shipments' | 'shipping_categories' | 'shipping_methods' | 'shipping_weight_tiers' | 'shipping_zones' | 'sku_list_items' | 'sku_list_promotion_rules' | 'sku_lists' | 'sku_options' | 'skus' | 'stock_items' | 'stock_line_items' | 'stock_locations' | 'stock_reservations' | 'stock_transfers' | 'stores' | 'stripe_gateways' | 'stripe_payments' | 'stripe_tax_accounts' | 'subscription_models' | 'tags' | 'talon_one_accounts' | 'tax_categories' | 'tax_rules' | 'taxjar_accounts' | 'vertex_accounts' | 'voids' | 'webhooks' | 'wire_transfers';
type UpdatableResource = Resource & {
    type: UpdatableResourceType;
};
type DeletableResourceType = 'addresses' | 'adjustments' | 'adyen_gateways' | 'adyen_payments' | 'attachments' | 'avalara_accounts' | 'axerve_gateways' | 'axerve_payments' | 'bing_geocoders' | 'braintree_gateways' | 'braintree_payments' | 'bundles' | 'buy_x_pay_y_promotions' | 'carrier_accounts' | 'checkout_com_gateways' | 'checkout_com_payments' | 'cleanups' | 'coupon_codes_promotion_rules' | 'coupon_recipients' | 'coupons' | 'custom_promotion_rules' | 'customer_addresses' | 'customer_groups' | 'customer_password_resets' | 'customer_payment_sources' | 'customer_subscriptions' | 'customers' | 'delivery_lead_times' | 'easypost_pickups' | 'exports' | 'external_gateways' | 'external_payments' | 'external_promotions' | 'external_tax_calculators' | 'fixed_amount_promotions' | 'fixed_price_promotions' | 'flex_promotions' | 'free_gift_promotions' | 'free_shipping_promotions' | 'gift_card_recipients' | 'gift_cards' | 'google_geocoders' | 'imports' | 'in_stock_subscriptions' | 'inventory_models' | 'inventory_return_locations' | 'inventory_stock_locations' | 'klarna_gateways' | 'klarna_payments' | 'line_item_options' | 'line_items' | 'links' | 'manual_gateways' | 'manual_tax_calculators' | 'markets' | 'merchants' | 'notifications' | 'order_amount_promotion_rules' | 'order_copies' | 'order_subscription_items' | 'order_subscriptions' | 'orders' | 'packages' | 'parcel_line_items' | 'parcels' | 'payment_methods' | 'payment_options' | 'paypal_gateways' | 'paypal_payments' | 'percentage_discount_promotions' | 'price_frequency_tiers' | 'price_list_schedulers' | 'price_lists' | 'price_volume_tiers' | 'prices' | 'recurring_order_copies' | 'return_line_items' | 'returns' | 'satispay_gateways' | 'satispay_payments' | 'shipments' | 'shipping_categories' | 'shipping_methods' | 'shipping_weight_tiers' | 'shipping_zones' | 'sku_list_items' | 'sku_list_promotion_rules' | 'sku_lists' | 'sku_options' | 'skus' | 'stock_items' | 'stock_line_items' | 'stock_locations' | 'stock_reservations' | 'stock_transfers' | 'stores' | 'stripe_gateways' | 'stripe_payments' | 'stripe_tax_accounts' | 'subscription_models' | 'tags' | 'talon_one_accounts' | 'tax_categories' | 'tax_rules' | 'taxjar_accounts' | 'vertex_accounts' | 'webhooks' | 'wire_transfers';
type DeletableResource = Resource & {
    type: DeletableResourceType;
};
type TaggableResourceType = 'addresses' | 'bundles' | 'buy_x_pay_y_promotions' | 'coupons' | 'customers' | 'external_promotions' | 'fixed_amount_promotions' | 'fixed_price_promotions' | 'flex_promotions' | 'free_gift_promotions' | 'free_shipping_promotions' | 'gift_cards' | 'line_item_options' | 'line_items' | 'order_subscriptions' | 'orders' | 'percentage_discount_promotions' | 'promotions' | 'returns' | 'shipments' | 'sku_options' | 'skus';
type TaggableResource = Resource & {
    type: TaggableResourceType;
    tags?: Array<ResourceRel & {
        type: TagType;
    }> | null;
};
type VersionableResourceType = 'addresses' | 'adjustments' | 'adyen_gateways' | 'adyen_payments' | 'authorizations' | 'avalara_accounts' | 'axerve_gateways' | 'axerve_payments' | 'braintree_gateways' | 'braintree_payments' | 'bundles' | 'buy_x_pay_y_promotions' | 'captures' | 'carrier_accounts' | 'checkout_com_gateways' | 'checkout_com_payments' | 'cleanups' | 'coupon_codes_promotion_rules' | 'coupon_recipients' | 'coupons' | 'custom_promotion_rules' | 'customer_addresses' | 'customer_groups' | 'customer_payment_sources' | 'customer_subscriptions' | 'delivery_lead_times' | 'discount_engines' | 'exports' | 'external_gateways' | 'external_payments' | 'external_promotions' | 'external_tax_calculators' | 'fixed_amount_promotions' | 'fixed_price_promotions' | 'flex_promotions' | 'free_gift_promotions' | 'free_shipping_promotions' | 'gift_card_recipients' | 'gift_cards' | 'in_stock_subscriptions' | 'inventory_models' | 'inventory_return_locations' | 'inventory_stock_locations' | 'klarna_gateways' | 'klarna_payments' | 'manual_gateways' | 'manual_tax_calculators' | 'markets' | 'merchants' | 'order_amount_promotion_rules' | 'order_subscriptions' | 'orders' | 'packages' | 'parcel_line_items' | 'parcels' | 'payment_gateways' | 'payment_methods' | 'paypal_gateways' | 'paypal_payments' | 'percentage_discount_promotions' | 'price_frequency_tiers' | 'price_list_schedulers' | 'price_lists' | 'price_tiers' | 'price_volume_tiers' | 'prices' | 'promotion_rules' | 'promotions' | 'refunds' | 'reserved_stocks' | 'returns' | 'satispay_gateways' | 'satispay_payments' | 'shipments' | 'shipping_categories' | 'shipping_method_tiers' | 'shipping_methods' | 'shipping_weight_tiers' | 'shipping_zones' | 'sku_list_items' | 'sku_list_promotion_rules' | 'sku_lists' | 'sku_options' | 'skus' | 'stock_items' | 'stock_line_items' | 'stock_locations' | 'stock_transfers' | 'stores' | 'stripe_gateways' | 'stripe_payments' | 'stripe_tax_accounts' | 'talon_one_accounts' | 'tax_calculators' | 'tax_categories' | 'tax_rules' | 'taxjar_accounts' | 'transactions' | 'vertex_accounts' | 'voids' | 'webhooks' | 'wire_transfers';
type VersionableResource = Resource & {
    type: VersionableResourceType;
    versions?: Array<ResourceRel & {
        type: VersionType;
    }> | null;
};
type ResourceFields = {
    addresses: Address;
    adjustments: Adjustment;
    adyen_gateways: AdyenGateway;
    adyen_payments: AdyenPayment;
    applications: Application;
    attachments: Attachment;
    authorizations: Authorization;
    avalara_accounts: AvalaraAccount;
    axerve_gateways: AxerveGateway;
    axerve_payments: AxervePayment;
    bing_geocoders: BingGeocoder;
    braintree_gateways: BraintreeGateway;
    braintree_payments: BraintreePayment;
    bundles: Bundle;
    buy_x_pay_y_promotions: BuyXPayYPromotion;
    captures: Capture;
    carrier_accounts: CarrierAccount;
    checkout_com_gateways: CheckoutComGateway;
    checkout_com_payments: CheckoutComPayment;
    cleanups: Cleanup;
    coupon_codes_promotion_rules: CouponCodesPromotionRule;
    coupon_recipients: CouponRecipient;
    coupons: Coupon;
    custom_promotion_rules: CustomPromotionRule;
    customer_addresses: CustomerAddress;
    customer_groups: CustomerGroup;
    customer_password_resets: CustomerPasswordReset;
    customer_payment_sources: CustomerPaymentSource;
    customer_subscriptions: CustomerSubscription;
    customers: Customer;
    delivery_lead_times: DeliveryLeadTime;
    discount_engine_items: DiscountEngineItem;
    discount_engines: DiscountEngine;
    easypost_pickups: EasypostPickup;
    event_callbacks: EventCallback;
    events: Event;
    exports: Export;
    external_gateways: ExternalGateway;
    external_payments: ExternalPayment;
    external_promotions: ExternalPromotion;
    external_tax_calculators: ExternalTaxCalculator;
    fixed_amount_promotions: FixedAmountPromotion;
    fixed_price_promotions: FixedPricePromotion;
    flex_promotions: FlexPromotion;
    free_gift_promotions: FreeGiftPromotion;
    free_shipping_promotions: FreeShippingPromotion;
    geocoders: Geocoder;
    gift_card_recipients: GiftCardRecipient;
    gift_cards: GiftCard;
    google_geocoders: GoogleGeocoder;
    imports: Import;
    in_stock_subscriptions: InStockSubscription;
    inventory_models: InventoryModel;
    inventory_return_locations: InventoryReturnLocation;
    inventory_stock_locations: InventoryStockLocation;
    klarna_gateways: KlarnaGateway;
    klarna_payments: KlarnaPayment;
    line_item_options: LineItemOption;
    line_items: LineItem;
    links: Link;
    manual_gateways: ManualGateway;
    manual_tax_calculators: ManualTaxCalculator;
    markets: Market;
    merchants: Merchant;
    notifications: Notification;
    order_amount_promotion_rules: OrderAmountPromotionRule;
    order_copies: OrderCopy;
    order_factories: OrderFactory;
    order_subscription_items: OrderSubscriptionItem;
    order_subscriptions: OrderSubscription;
    orders: Order;
    organizations: Organization;
    packages: Package;
    parcel_line_items: ParcelLineItem;
    parcels: Parcel;
    payment_gateways: PaymentGateway;
    payment_methods: PaymentMethod;
    payment_options: PaymentOption;
    paypal_gateways: PaypalGateway;
    paypal_payments: PaypalPayment;
    percentage_discount_promotions: PercentageDiscountPromotion;
    pickups: Pickup;
    price_frequency_tiers: PriceFrequencyTier;
    price_list_schedulers: PriceListScheduler;
    price_lists: PriceList;
    price_tiers: PriceTier;
    price_volume_tiers: PriceVolumeTier;
    prices: Price;
    promotion_rules: PromotionRule;
    promotions: Promotion;
    recurring_order_copies: RecurringOrderCopy;
    refunds: Refund;
    reserved_stocks: ReservedStock;
    resource_errors: ResourceError;
    return_line_items: ReturnLineItem;
    returns: Return;
    satispay_gateways: SatispayGateway;
    satispay_payments: SatispayPayment;
    shipments: Shipment;
    shipping_categories: ShippingCategory;
    shipping_method_tiers: ShippingMethodTier;
    shipping_methods: ShippingMethod;
    shipping_weight_tiers: ShippingWeightTier;
    shipping_zones: ShippingZone;
    sku_list_items: SkuListItem;
    sku_list_promotion_rules: SkuListPromotionRule;
    sku_lists: SkuList;
    sku_options: SkuOption;
    skus: Sku;
    stock_items: StockItem;
    stock_line_items: StockLineItem;
    stock_locations: StockLocation;
    stock_reservations: StockReservation;
    stock_transfers: StockTransfer;
    stores: Store;
    stripe_gateways: StripeGateway;
    stripe_payments: StripePayment;
    stripe_tax_accounts: StripeTaxAccount;
    subscription_models: SubscriptionModel;
    tags: Tag;
    talon_one_accounts: TalonOneAccount;
    tax_calculators: TaxCalculator;
    tax_categories: TaxCategory;
    tax_rules: TaxRule;
    taxjar_accounts: TaxjarAccount;
    transactions: Transaction;
    versions: Version;
    vertex_accounts: VertexAccount;
    voids: Void;
    webhooks: Webhook;
    wire_transfers: WireTransfer;
};
type ResourceSortFields = {
    addresses: AddressSort;
    adjustments: AdjustmentSort;
    adyen_gateways: AdyenGatewaySort;
    adyen_payments: AdyenPaymentSort;
    applications: ApplicationSort;
    attachments: AttachmentSort;
    authorizations: AuthorizationSort;
    avalara_accounts: AvalaraAccountSort;
    axerve_gateways: AxerveGatewaySort;
    axerve_payments: AxervePaymentSort;
    bing_geocoders: BingGeocoderSort;
    braintree_gateways: BraintreeGatewaySort;
    braintree_payments: BraintreePaymentSort;
    bundles: BundleSort;
    buy_x_pay_y_promotions: BuyXPayYPromotionSort;
    captures: CaptureSort;
    carrier_accounts: CarrierAccountSort;
    checkout_com_gateways: CheckoutComGatewaySort;
    checkout_com_payments: CheckoutComPaymentSort;
    cleanups: CleanupSort;
    coupon_codes_promotion_rules: CouponCodesPromotionRuleSort;
    coupon_recipients: CouponRecipientSort;
    coupons: CouponSort;
    custom_promotion_rules: CustomPromotionRuleSort;
    customer_addresses: CustomerAddressSort;
    customer_groups: CustomerGroupSort;
    customer_password_resets: CustomerPasswordResetSort;
    customer_payment_sources: CustomerPaymentSourceSort;
    customer_subscriptions: CustomerSubscriptionSort;
    customers: CustomerSort;
    delivery_lead_times: DeliveryLeadTimeSort;
    discount_engine_items: DiscountEngineItemSort;
    discount_engines: DiscountEngineSort;
    easypost_pickups: EasypostPickupSort;
    event_callbacks: EventCallbackSort;
    events: EventSort;
    exports: ExportSort;
    external_gateways: ExternalGatewaySort;
    external_payments: ExternalPaymentSort;
    external_promotions: ExternalPromotionSort;
    external_tax_calculators: ExternalTaxCalculatorSort;
    fixed_amount_promotions: FixedAmountPromotionSort;
    fixed_price_promotions: FixedPricePromotionSort;
    flex_promotions: FlexPromotionSort;
    free_gift_promotions: FreeGiftPromotionSort;
    free_shipping_promotions: FreeShippingPromotionSort;
    geocoders: GeocoderSort;
    gift_card_recipients: GiftCardRecipientSort;
    gift_cards: GiftCardSort;
    google_geocoders: GoogleGeocoderSort;
    imports: ImportSort;
    in_stock_subscriptions: InStockSubscriptionSort;
    inventory_models: InventoryModelSort;
    inventory_return_locations: InventoryReturnLocationSort;
    inventory_stock_locations: InventoryStockLocationSort;
    klarna_gateways: KlarnaGatewaySort;
    klarna_payments: KlarnaPaymentSort;
    line_item_options: LineItemOptionSort;
    line_items: LineItemSort;
    links: LinkSort;
    manual_gateways: ManualGatewaySort;
    manual_tax_calculators: ManualTaxCalculatorSort;
    markets: MarketSort;
    merchants: MerchantSort;
    notifications: NotificationSort;
    order_amount_promotion_rules: OrderAmountPromotionRuleSort;
    order_copies: OrderCopySort;
    order_factories: OrderFactorySort;
    order_subscription_items: OrderSubscriptionItemSort;
    order_subscriptions: OrderSubscriptionSort;
    orders: OrderSort;
    organizations: OrganizationSort;
    packages: PackageSort;
    parcel_line_items: ParcelLineItemSort;
    parcels: ParcelSort;
    payment_gateways: PaymentGatewaySort;
    payment_methods: PaymentMethodSort;
    payment_options: PaymentOptionSort;
    paypal_gateways: PaypalGatewaySort;
    paypal_payments: PaypalPaymentSort;
    percentage_discount_promotions: PercentageDiscountPromotionSort;
    pickups: PickupSort;
    price_frequency_tiers: PriceFrequencyTierSort;
    price_list_schedulers: PriceListSchedulerSort;
    price_lists: PriceListSort;
    price_tiers: PriceTierSort;
    price_volume_tiers: PriceVolumeTierSort;
    prices: PriceSort;
    promotion_rules: PromotionRuleSort;
    promotions: PromotionSort;
    recurring_order_copies: RecurringOrderCopySort;
    refunds: RefundSort;
    reserved_stocks: ReservedStockSort;
    resource_errors: ResourceErrorSort;
    return_line_items: ReturnLineItemSort;
    returns: ReturnSort;
    satispay_gateways: SatispayGatewaySort;
    satispay_payments: SatispayPaymentSort;
    shipments: ShipmentSort;
    shipping_categories: ShippingCategorySort;
    shipping_method_tiers: ShippingMethodTierSort;
    shipping_methods: ShippingMethodSort;
    shipping_weight_tiers: ShippingWeightTierSort;
    shipping_zones: ShippingZoneSort;
    sku_list_items: SkuListItemSort;
    sku_list_promotion_rules: SkuListPromotionRuleSort;
    sku_lists: SkuListSort;
    sku_options: SkuOptionSort;
    skus: SkuSort;
    stock_items: StockItemSort;
    stock_line_items: StockLineItemSort;
    stock_locations: StockLocationSort;
    stock_reservations: StockReservationSort;
    stock_transfers: StockTransferSort;
    stores: StoreSort;
    stripe_gateways: StripeGatewaySort;
    stripe_payments: StripePaymentSort;
    stripe_tax_accounts: StripeTaxAccountSort;
    subscription_models: SubscriptionModelSort;
    tags: TagSort;
    talon_one_accounts: TalonOneAccountSort;
    tax_calculators: TaxCalculatorSort;
    tax_categories: TaxCategorySort;
    tax_rules: TaxRuleSort;
    taxjar_accounts: TaxjarAccountSort;
    transactions: TransactionSort;
    versions: VersionSort;
    vertex_accounts: VertexAccountSort;
    voids: VoidSort;
    webhooks: WebhookSort;
    wire_transfers: WireTransferSort;
};

declare enum ErrorType {
    CLIENT = "client",// Generic Client error
    REQUEST = "request",// Error preparing API request
    RESPONSE = "response",// Error response from API
    CANCEL = "cancel",// Forced request abort using interceptor
    PARSE = "parse",// Error parsing API resource
    TIMEOUT = "timeout",// Timeout error
    TOKEN_REFRESH = "token-refresh"
}
declare class SdkError extends Error {
    static NAME: string;
    static isSdkError(error: any): error is SdkError;
    type: ErrorType;
    code?: string;
    source?: Error;
    constructor(error: {
        message: string;
        type?: ErrorType;
    });
}
declare class ApiError extends SdkError {
    static NAME: string;
    static isApiError(error: any): error is ApiError;
    errors: any[];
    status?: number;
    statusText?: string;
    constructor(error: {
        message: string;
    });
    first(): any;
}

type SdkConfig = {};
type CommerceLayerInitConfig = SdkConfig & ResourcesInitConfig;
type CommerceLayerConfig = Partial<CommerceLayerInitConfig>;
declare class CommerceLayerClient {
    #private;
    readonly openApiSchemaVersion = "7.9.0";
    constructor(config: CommerceLayerInitConfig);
    get addresses(): Addresses;
    get adjustments(): Adjustments;
    get adyen_gateways(): AdyenGateways;
    get adyen_payments(): AdyenPayments;
    get application(): Applications;
    get attachments(): Attachments;
    get authorizations(): Authorizations;
    get avalara_accounts(): AvalaraAccounts;
    get axerve_gateways(): AxerveGateways;
    get axerve_payments(): AxervePayments;
    get bing_geocoders(): BingGeocoders;
    get braintree_gateways(): BraintreeGateways;
    get braintree_payments(): BraintreePayments;
    get bundles(): Bundles;
    get buy_x_pay_y_promotions(): BuyXPayYPromotions;
    get captures(): Captures;
    get carrier_accounts(): CarrierAccounts;
    get checkout_com_gateways(): CheckoutComGateways;
    get checkout_com_payments(): CheckoutComPayments;
    get cleanups(): Cleanups;
    get coupon_codes_promotion_rules(): CouponCodesPromotionRules;
    get coupon_recipients(): CouponRecipients;
    get coupons(): Coupons;
    get custom_promotion_rules(): CustomPromotionRules;
    get customer_addresses(): CustomerAddresses;
    get customer_groups(): CustomerGroups;
    get customer_password_resets(): CustomerPasswordResets;
    get customer_payment_sources(): CustomerPaymentSources;
    get customer_subscriptions(): CustomerSubscriptions;
    get customers(): Customers;
    get delivery_lead_times(): DeliveryLeadTimes;
    get discount_engine_items(): DiscountEngineItems;
    get discount_engines(): DiscountEngines;
    get easypost_pickups(): EasypostPickups;
    get event_callbacks(): EventCallbacks;
    get events(): Events;
    get exports(): Exports;
    get external_gateways(): ExternalGateways;
    get external_payments(): ExternalPayments;
    get external_promotions(): ExternalPromotions;
    get external_tax_calculators(): ExternalTaxCalculators;
    get fixed_amount_promotions(): FixedAmountPromotions;
    get fixed_price_promotions(): FixedPricePromotions;
    get flex_promotions(): FlexPromotions;
    get free_gift_promotions(): FreeGiftPromotions;
    get free_shipping_promotions(): FreeShippingPromotions;
    get geocoders(): Geocoders;
    get gift_card_recipients(): GiftCardRecipients;
    get gift_cards(): GiftCards;
    get google_geocoders(): GoogleGeocoders;
    get imports(): Imports;
    get in_stock_subscriptions(): InStockSubscriptions;
    get inventory_models(): InventoryModels;
    get inventory_return_locations(): InventoryReturnLocations;
    get inventory_stock_locations(): InventoryStockLocations;
    get klarna_gateways(): KlarnaGateways;
    get klarna_payments(): KlarnaPayments;
    get line_item_options(): LineItemOptions;
    get line_items(): LineItems;
    get links(): Links;
    get manual_gateways(): ManualGateways;
    get manual_tax_calculators(): ManualTaxCalculators;
    get markets(): Markets;
    get merchants(): Merchants;
    get notifications(): Notifications;
    get order_amount_promotion_rules(): OrderAmountPromotionRules;
    get order_copies(): OrderCopies;
    get order_factories(): OrderFactories;
    get order_subscription_items(): OrderSubscriptionItems;
    get order_subscriptions(): OrderSubscriptions;
    get orders(): Orders;
    get organization(): Organizations;
    get packages(): Packages;
    get parcel_line_items(): ParcelLineItems;
    get parcels(): Parcels;
    get payment_gateways(): PaymentGateways;
    get payment_methods(): PaymentMethods;
    get payment_options(): PaymentOptions;
    get paypal_gateways(): PaypalGateways;
    get paypal_payments(): PaypalPayments;
    get percentage_discount_promotions(): PercentageDiscountPromotions;
    get pickups(): Pickups;
    get price_frequency_tiers(): PriceFrequencyTiers;
    get price_list_schedulers(): PriceListSchedulers;
    get price_lists(): PriceLists;
    get price_tiers(): PriceTiers;
    get price_volume_tiers(): PriceVolumeTiers;
    get prices(): Prices;
    get promotion_rules(): PromotionRules;
    get promotions(): Promotions;
    get recurring_order_copies(): RecurringOrderCopies;
    get refunds(): Refunds;
    get reserved_stocks(): ReservedStocks;
    get resource_errors(): ResourceErrors;
    get return_line_items(): ReturnLineItems;
    get returns(): Returns;
    get satispay_gateways(): SatispayGateways;
    get satispay_payments(): SatispayPayments;
    get shipments(): Shipments;
    get shipping_categories(): ShippingCategories;
    get shipping_method_tiers(): ShippingMethodTiers;
    get shipping_methods(): ShippingMethods;
    get shipping_weight_tiers(): ShippingWeightTiers;
    get shipping_zones(): ShippingZones;
    get sku_list_items(): SkuListItems;
    get sku_list_promotion_rules(): SkuListPromotionRules;
    get sku_lists(): SkuLists;
    get sku_options(): SkuOptions;
    get skus(): Skus;
    get stock_items(): StockItems;
    get stock_line_items(): StockLineItems;
    get stock_locations(): StockLocations;
    get stock_reservations(): StockReservations;
    get stock_transfers(): StockTransfers;
    get stores(): Stores;
    get stripe_gateways(): StripeGateways;
    get stripe_payments(): StripePayments;
    get stripe_tax_accounts(): StripeTaxAccounts;
    get subscription_models(): SubscriptionModels;
    get tags(): Tags;
    get talon_one_accounts(): TalonOneAccounts;
    get tax_calculators(): TaxCalculators;
    get tax_categories(): TaxCategories;
    get tax_rules(): TaxRules;
    get taxjar_accounts(): TaxjarAccounts;
    get transactions(): Transactions;
    get versions(): Versions;
    get vertex_accounts(): VertexAccounts;
    get voids(): Voids;
    get webhooks(): Webhooks;
    get wire_transfers(): WireTransfers;
    get currentOrganization(): string;
    get currentAccessToken(): string;
    private get interceptors();
    private localConfig;
    config(config: CommerceLayerConfig): this;
    resources(): readonly string[];
    singletons(): readonly string[];
    isSingleton(resource: ResourceTypeLock): boolean;
    isApiError(error: any): error is ApiError;
    addRequestInterceptor(onSuccess?: RequestInterceptor, onFailure?: ErrorInterceptor): number;
    addResponseInterceptor(onSuccess?: ResponseInterceptor, onFailure?: ErrorInterceptor): number;
    removeInterceptor(type: InterceptorType, id?: number): void;
    removeInterceptors(): void;
    addRawResponseReader(options?: {
        headers: boolean;
    }): RawResponseReader;
    removeRawResponseReader(): void;
}
declare const CommerceLayer: (config: CommerceLayerInitConfig) => CommerceLayerClient;

declare const CommerceLayerStatic: {
    resources: (sort?: boolean) => readonly string[];
    singletons: (sort?: boolean) => readonly string[];
    isSingleton: (resource: ResourceTypeLock) => boolean;
    isSdkError: (error: unknown) => error is SdkError;
    isApiError: (error: unknown) => error is ApiError;
    init: (config: CommerceLayerInitConfig) => CommerceLayerClient;
    isTokenExpired: (token: string) => boolean;
    readonly schemaVersion: string;
};

export { type Address, type AddressCreate, type AddressSort, type AddressUpdate, Addresses, type Adjustment, type AdjustmentCreate, type AdjustmentSort, type AdjustmentUpdate, Adjustments, type AdyenGateway, type AdyenGatewayCreate, type AdyenGatewaySort, type AdyenGatewayUpdate, AdyenGateways, type AdyenPayment, type AdyenPaymentCreate, type AdyenPaymentSort, type AdyenPaymentUpdate, AdyenPayments, ApiError, ApiResource, ApiSingleton, type Application, type ApplicationSort, Applications, type Attachment, type AttachmentCreate, type AttachmentSort, type AttachmentUpdate, Attachments, type Authorization, type AuthorizationSort, type AuthorizationUpdate, Authorizations, type AvalaraAccount, type AvalaraAccountCreate, type AvalaraAccountSort, type AvalaraAccountUpdate, AvalaraAccounts, type AxerveGateway, type AxerveGatewayCreate, type AxerveGatewaySort, type AxerveGatewayUpdate, AxerveGateways, type AxervePayment, type AxervePaymentCreate, type AxervePaymentSort, type AxervePaymentUpdate, AxervePayments, type BingGeocoder, type BingGeocoderCreate, type BingGeocoderSort, type BingGeocoderUpdate, BingGeocoders, type BraintreeGateway, type BraintreeGatewayCreate, type BraintreeGatewaySort, type BraintreeGatewayUpdate, BraintreeGateways, type BraintreePayment, type BraintreePaymentCreate, type BraintreePaymentSort, type BraintreePaymentUpdate, BraintreePayments, type Bundle, type BundleCreate, type BundleSort, type BundleUpdate, Bundles, type BuyXPayYPromotion, type BuyXPayYPromotionCreate, type BuyXPayYPromotionSort, type BuyXPayYPromotionUpdate, BuyXPayYPromotions, type Capture, type CaptureSort, type CaptureUpdate, Captures, type CarrierAccount, type CarrierAccountCreate, type CarrierAccountSort, type CarrierAccountUpdate, CarrierAccounts, type CheckoutComGateway, type CheckoutComGatewayCreate, type CheckoutComGatewaySort, type CheckoutComGatewayUpdate, CheckoutComGateways, type CheckoutComPayment, type CheckoutComPaymentCreate, type CheckoutComPaymentSort, type CheckoutComPaymentUpdate, CheckoutComPayments, type Cleanup, type CleanupCreate, type CleanupSort, type CleanupUpdate, Cleanups, CommerceLayer, CommerceLayerClient, type CommerceLayerConfig, type CommerceLayerInitConfig, CommerceLayerStatic, type Coupon, type CouponCodesPromotionRule, type CouponCodesPromotionRuleCreate, type CouponCodesPromotionRuleSort, type CouponCodesPromotionRuleUpdate, CouponCodesPromotionRules, type CouponCreate, type CouponRecipient, type CouponRecipientCreate, type CouponRecipientSort, type CouponRecipientUpdate, CouponRecipients, type CouponSort, type CouponUpdate, Coupons, type CreatableResource, type CreatableResourceType, type CustomPromotionRule, type CustomPromotionRuleCreate, type CustomPromotionRuleSort, type CustomPromotionRuleUpdate, CustomPromotionRules, type Customer, type CustomerAddress, type CustomerAddressCreate, type CustomerAddressSort, type CustomerAddressUpdate, CustomerAddresses, type CustomerCreate, type CustomerGroup, type CustomerGroupCreate, type CustomerGroupSort, type CustomerGroupUpdate, CustomerGroups, type CustomerPasswordReset, type CustomerPasswordResetCreate, type CustomerPasswordResetSort, type CustomerPasswordResetUpdate, CustomerPasswordResets, type CustomerPaymentSource, type CustomerPaymentSourceCreate, type CustomerPaymentSourceSort, type CustomerPaymentSourceUpdate, CustomerPaymentSources, type CustomerSort, type CustomerSubscription, type CustomerSubscriptionCreate, type CustomerSubscriptionSort, type CustomerSubscriptionUpdate, CustomerSubscriptions, type CustomerUpdate, Customers, type DeletableResource, type DeletableResourceType, type DeliveryLeadTime, type DeliveryLeadTimeCreate, type DeliveryLeadTimeSort, type DeliveryLeadTimeUpdate, DeliveryLeadTimes, type DiscountEngine, type DiscountEngineItem, type DiscountEngineItemSort, DiscountEngineItems, type DiscountEngineSort, DiscountEngines, type EasypostPickup, type EasypostPickupCreate, type EasypostPickupSort, type EasypostPickupUpdate, EasypostPickups, type ErrorObj, ErrorType, type Event, type EventCallback, type EventCallbackSort, EventCallbacks, type EventSort, type EventUpdate, Events, type Export, type ExportCreate, type ExportSort, type ExportUpdate, Exports, type ExternalGateway, type ExternalGatewayCreate, type ExternalGatewaySort, type ExternalGatewayUpdate, ExternalGateways, type ExternalPayment, type ExternalPaymentCreate, type ExternalPaymentSort, type ExternalPaymentUpdate, ExternalPayments, type ExternalPromotion, type ExternalPromotionCreate, type ExternalPromotionSort, type ExternalPromotionUpdate, ExternalPromotions, type ExternalTaxCalculator, type ExternalTaxCalculatorCreate, type ExternalTaxCalculatorSort, type ExternalTaxCalculatorUpdate, ExternalTaxCalculators, type FixedAmountPromotion, type FixedAmountPromotionCreate, type FixedAmountPromotionSort, type FixedAmountPromotionUpdate, FixedAmountPromotions, type FixedPricePromotion, type FixedPricePromotionCreate, type FixedPricePromotionSort, type FixedPricePromotionUpdate, FixedPricePromotions, type FlexPromotion, type FlexPromotionCreate, type FlexPromotionSort, type FlexPromotionUpdate, FlexPromotions, type FreeGiftPromotion, type FreeGiftPromotionCreate, type FreeGiftPromotionSort, type FreeGiftPromotionUpdate, FreeGiftPromotions, type FreeShippingPromotion, type FreeShippingPromotionCreate, type FreeShippingPromotionSort, type FreeShippingPromotionUpdate, FreeShippingPromotions, type Geocoder, type GeocoderSort, Geocoders, type GiftCard, type GiftCardCreate, type GiftCardRecipient, type GiftCardRecipientCreate, type GiftCardRecipientSort, type GiftCardRecipientUpdate, GiftCardRecipients, type GiftCardSort, type GiftCardUpdate, GiftCards, type GoogleGeocoder, type GoogleGeocoderCreate, type GoogleGeocoderSort, type GoogleGeocoderUpdate, GoogleGeocoders, type HeadersObj, type Import, type ImportCreate, type ImportSort, type ImportUpdate, Imports, type InStockSubscription, type InStockSubscriptionCreate, type InStockSubscriptionSort, type InStockSubscriptionUpdate, InStockSubscriptions, type InventoryModel, type InventoryModelCreate, type InventoryModelSort, type InventoryModelUpdate, InventoryModels, type InventoryReturnLocation, type InventoryReturnLocationCreate, type InventoryReturnLocationSort, type InventoryReturnLocationUpdate, InventoryReturnLocations, type InventoryStockLocation, type InventoryStockLocationCreate, type InventoryStockLocationSort, type InventoryStockLocationUpdate, InventoryStockLocations, type KlarnaGateway, type KlarnaGatewayCreate, type KlarnaGatewaySort, type KlarnaGatewayUpdate, KlarnaGateways, type KlarnaPayment, type KlarnaPaymentCreate, type KlarnaPaymentSort, type KlarnaPaymentUpdate, KlarnaPayments, type LineItem, type LineItemCreate, type LineItemOption, type LineItemOptionCreate, type LineItemOptionSort, type LineItemOptionUpdate, LineItemOptions, type LineItemSort, type LineItemUpdate, LineItems, type Link, type LinkCreate, type LinkSort, type LinkUpdate, Links, type ListMeta, ListResponse, type ListableResource, type ListableResourceType, type ManualGateway, type ManualGatewayCreate, type ManualGatewaySort, type ManualGatewayUpdate, ManualGateways, type ManualTaxCalculator, type ManualTaxCalculatorCreate, type ManualTaxCalculatorSort, type ManualTaxCalculatorUpdate, ManualTaxCalculators, type Market, type MarketCreate, type MarketSort, type MarketUpdate, Markets, type Merchant, type MerchantCreate, type MerchantSort, type MerchantUpdate, Merchants, type Metadata, type Notification, type NotificationCreate, type NotificationSort, type NotificationUpdate, Notifications, type Order, type OrderAmountPromotionRule, type OrderAmountPromotionRuleCreate, type OrderAmountPromotionRuleSort, type OrderAmountPromotionRuleUpdate, OrderAmountPromotionRules, OrderCopies, type OrderCopy, type OrderCopyCreate, type OrderCopySort, type OrderCopyUpdate, type OrderCreate, OrderFactories, type OrderFactory, type OrderFactorySort, type OrderSort, type OrderSubscription, type OrderSubscriptionCreate, type OrderSubscriptionItem, type OrderSubscriptionItemCreate, type OrderSubscriptionItemSort, type OrderSubscriptionItemUpdate, OrderSubscriptionItems, type OrderSubscriptionSort, type OrderSubscriptionUpdate, OrderSubscriptions, type OrderUpdate, Orders, type Organization, type OrganizationSort, Organizations, type Package, type PackageCreate, type PackageSort, type PackageUpdate, Packages, type Parcel, type ParcelCreate, type ParcelLineItem, type ParcelLineItemCreate, type ParcelLineItemSort, type ParcelLineItemUpdate, ParcelLineItems, type ParcelSort, type ParcelUpdate, Parcels, type PaymentGateway, type PaymentGatewaySort, PaymentGateways, type PaymentMethod, type PaymentMethodCreate, type PaymentMethodSort, type PaymentMethodUpdate, PaymentMethods, type PaymentOption, type PaymentOptionCreate, type PaymentOptionSort, type PaymentOptionUpdate, PaymentOptions, type PaypalGateway, type PaypalGatewayCreate, type PaypalGatewaySort, type PaypalGatewayUpdate, PaypalGateways, type PaypalPayment, type PaypalPaymentCreate, type PaypalPaymentSort, type PaypalPaymentUpdate, PaypalPayments, type PercentageDiscountPromotion, type PercentageDiscountPromotionCreate, type PercentageDiscountPromotionSort, type PercentageDiscountPromotionUpdate, PercentageDiscountPromotions, type Pickup, type PickupSort, Pickups, type Price, type PriceCreate, type PriceFrequencyTier, type PriceFrequencyTierCreate, type PriceFrequencyTierSort, type PriceFrequencyTierUpdate, PriceFrequencyTiers, type PriceList, type PriceListCreate, type PriceListScheduler, type PriceListSchedulerCreate, type PriceListSchedulerSort, type PriceListSchedulerUpdate, PriceListSchedulers, type PriceListSort, type PriceListUpdate, PriceLists, type PriceSort, type PriceTier, type PriceTierSort, PriceTiers, type PriceUpdate, type PriceVolumeTier, type PriceVolumeTierCreate, type PriceVolumeTierSort, type PriceVolumeTierUpdate, PriceVolumeTiers, Prices, type Promotion, type PromotionRule, type PromotionRuleSort, PromotionRules, type PromotionSort, Promotions, type QueryArrayFields, type QueryArraySortable, type QueryFields, type QueryFilter, type QueryInclude, type QueryPageNumber, type QueryPageSize, type QueryParams, type QueryParamsList, type QueryParamsRetrieve, type QueryRecordFields, type QueryRecordSortable, type QuerySort, RecurringOrderCopies, type RecurringOrderCopy, type RecurringOrderCopyCreate, type RecurringOrderCopySort, type RecurringOrderCopyUpdate, type Refund, type RefundSort, type RefundUpdate, Refunds, type RequestObj, type ReservedStock, type ReservedStockSort, ReservedStocks, type Resource, ResourceAdapter, type ResourceCreate, type ResourceError, type ResourceErrorSort, ResourceErrors, type ResourceFields, type ResourceFilter, type ResourceId, type ResourceRel, type ResourceSort, type ResourceSortFields, type ResourceType, type ResourceTypeLock, type ResourceUpdate, type ResourcesConfig, type ResourcesInitConfig, type ResponseObj, type RetrievableResource, type RetrievableResourceType, type Return, type ReturnCreate, type ReturnLineItem, type ReturnLineItemCreate, type ReturnLineItemSort, type ReturnLineItemUpdate, ReturnLineItems, type ReturnSort, type ReturnUpdate, Returns, type SatispayGateway, type SatispayGatewayCreate, type SatispayGatewaySort, type SatispayGatewayUpdate, SatispayGateways, type SatispayPayment, type SatispayPaymentCreate, type SatispayPaymentSort, type SatispayPaymentUpdate, SatispayPayments, SdkError, type Shipment, type ShipmentCreate, type ShipmentSort, type ShipmentUpdate, Shipments, ShippingCategories, type ShippingCategory, type ShippingCategoryCreate, type ShippingCategorySort, type ShippingCategoryUpdate, type ShippingMethod, type ShippingMethodCreate, type ShippingMethodSort, type ShippingMethodTier, type ShippingMethodTierSort, ShippingMethodTiers, type ShippingMethodUpdate, ShippingMethods, type ShippingWeightTier, type ShippingWeightTierCreate, type ShippingWeightTierSort, type ShippingWeightTierUpdate, ShippingWeightTiers, type ShippingZone, type ShippingZoneCreate, type ShippingZoneSort, type ShippingZoneUpdate, ShippingZones, type Sku, type SkuCreate, type SkuList, type SkuListCreate, type SkuListItem, type SkuListItemCreate, type SkuListItemSort, type SkuListItemUpdate, SkuListItems, type SkuListPromotionRule, type SkuListPromotionRuleCreate, type SkuListPromotionRuleSort, type SkuListPromotionRuleUpdate, SkuListPromotionRules, type SkuListSort, type SkuListUpdate, SkuLists, type SkuOption, type SkuOptionCreate, type SkuOptionSort, type SkuOptionUpdate, SkuOptions, type SkuSort, type SkuUpdate, Skus, type StockItem, type StockItemCreate, type StockItemSort, type StockItemUpdate, StockItems, type StockLineItem, type StockLineItemCreate, type StockLineItemSort, type StockLineItemUpdate, StockLineItems, type StockLocation, type StockLocationCreate, type StockLocationSort, type StockLocationUpdate, StockLocations, type StockReservation, type StockReservationCreate, type StockReservationSort, type StockReservationUpdate, StockReservations, type StockTransfer, type StockTransferCreate, type StockTransferSort, type StockTransferUpdate, StockTransfers, type Store, type StoreCreate, type StoreSort, type StoreUpdate, Stores, type StripeGateway, type StripeGatewayCreate, type StripeGatewaySort, type StripeGatewayUpdate, StripeGateways, type StripePayment, type StripePaymentCreate, type StripePaymentSort, type StripePaymentUpdate, StripePayments, type StripeTaxAccount, type StripeTaxAccountCreate, type StripeTaxAccountSort, type StripeTaxAccountUpdate, StripeTaxAccounts, type SubscriptionModel, type SubscriptionModelCreate, type SubscriptionModelSort, type SubscriptionModelUpdate, SubscriptionModels, type Tag, type TagCreate, type TagSort, type TagUpdate, type TaggableResource, type TaggableResourceType, Tags, type TalonOneAccount, type TalonOneAccountCreate, type TalonOneAccountSort, type TalonOneAccountUpdate, TalonOneAccounts, type TaxCalculator, type TaxCalculatorSort, TaxCalculators, TaxCategories, type TaxCategory, type TaxCategoryCreate, type TaxCategorySort, type TaxCategoryUpdate, type TaxRule, type TaxRuleCreate, type TaxRuleSort, type TaxRuleUpdate, TaxRules, type TaxjarAccount, type TaxjarAccountCreate, type TaxjarAccountSort, type TaxjarAccountUpdate, TaxjarAccounts, type Transaction, type TransactionSort, Transactions, type UpdatableResource, type UpdatableResourceType, type Version, type VersionSort, type VersionableResource, type VersionableResourceType, Versions, type VertexAccount, type VertexAccountCreate, type VertexAccountSort, type VertexAccountUpdate, VertexAccounts, type Void, type VoidSort, type VoidUpdate, Voids, type Webhook, type WebhookCreate, type WebhookSort, type WebhookUpdate, Webhooks, type WireTransfer, type WireTransferCreate, type WireTransferSort, type WireTransferUpdate, WireTransfers, apiResourceAdapter, CommerceLayer as default, generateQueryStringParams, generateSearchString, isParamsList, resourceList, singletonList };
