import { BaseEntity } from "../interfaces/models/base-entity";
import { ClaimOrder } from "./claim-order";
import { FulfillmentItem } from "./fulfillment-item";
import { FulfillmentProvider } from "./fulfillment-provider";
import { Order } from "./order";
import { Swap } from "./swap";
import { TrackingLink } from "./tracking-link";
export declare class Fulfillment extends BaseEntity {
    claim_order_id: string;
    claim_order: ClaimOrder;
    swap_id: string;
    swap: Swap;
    order_id: string;
    order: Order;
    no_notification: boolean;
    provider_id: string;
    location_id: string | null;
    provider: FulfillmentProvider;
    items: FulfillmentItem[];
    tracking_links: TrackingLink[];
    tracking_numbers: string[];
    data: Record<string, unknown>;
    shipped_at: Date;
    canceled_at: Date;
    metadata: Record<string, unknown>;
    idempotency_key: string;
    private beforeInsert;
}
/**
 * @schema Fulfillment
 * title: "Fulfillment"
 * description: "Fulfillments are created once store operators can prepare the purchased goods. Fulfillments will eventually be shipped and hold information about how to track shipments. Fulfillments are created through a provider, which is typically an external shipping aggregator, shipping partner og 3PL, most plugins will have asynchronous communications with these providers through webhooks in order to automatically update and synchronize the state of Fulfillments."
 * type: object
 * required:
 *  - provider_id
 * properties:
 *   id:
 *     type: string
 *     description: The cart's ID
 *     example: ful_01G8ZRTMQCA76TXNAT81KPJZRF
 *   claim_order_id:
 *     description: "The id of the Claim that the Fulfillment belongs to."
 *     type: string
 *     example: null
 *   claim_order:
 *     description: A claim order object. Available if the relation `claim_order` is expanded.
 *     type: object
 *   swap_id:
 *     description: "The id of the Swap that the Fulfillment belongs to."
 *     type: string
 *     example: null
 *   swap:
 *     description: A swap object. Available if the relation `swap` is expanded.
 *     type: object
 *   order_id:
 *     description: "The id of the Order that the Fulfillment belongs to."
 *     type: string
 *     example: order_01G8TJSYT9M6AVS5N4EMNFS1EK
 *   order:
 *     description: An order object. Available if the relation `order` is expanded.
 *     type: object
 *   provider_id:
 *     description: "The id of the Fulfillment Provider responsible for handling the fulfillment"
 *     type: string
 *     example: manual
 *   location_id:
 *     description: "The id of the stock location the fulfillment will be shipped from"
 *     type: string
 *     example: sloc_01G8TJSYT9M6AVS5N4EMNFS1EK
 *   provider:
 *     description: Available if the relation `provider` is expanded.
 *     $ref: "#/components/schemas/FulfillmentProvider"
 *   items:
 *     description: The Fulfillment Items in the Fulfillment - these hold information about how many of each Line Item has been fulfilled. Available if the relation `items` is expanded.
 *     type: array
 *     items:
 *       $ref: "#/components/schemas/FulfillmentItem"
 *   tracking_links:
 *     description: The Tracking Links that can be used to track the status of the Fulfillment, these will usually be provided by the Fulfillment Provider. Available if the relation `tracking_links` is expanded.
 *     type: array
 *     items:
 *       $ref: "#/components/schemas/TrackingLink"
 *   tracking_numbers:
 *     deprecated: true
 *     description: The tracking numbers that can be used to track the status of the fulfillment.
 *     type: array
 *     items:
 *       type: string
 *   data:
 *     description: This contains all the data necessary for the Fulfillment provider to handle the fulfillment.
 *     type: object
 *     example: {}
 *   shipped_at:
 *     description: "The date with timezone at which the Fulfillment was shipped."
 *     type: string
 *     format: date-time
 *   no_notification:
 *     description: "Flag for describing whether or not notifications related to this should be send."
 *     type: boolean
 *     example: false
 *   canceled_at:
 *     description: "The date with timezone at which the Fulfillment was canceled."
 *     type: string
 *     format: date-time
 *   idempotency_key:
 *     type: string
 *     description: Randomly generated key used to continue the completion of the fulfillment in case of failure.
 *     externalDocs:
 *       url: https://docs.medusajs.com/advanced/backend/payment/overview#idempotency-key
 *       description: Learn more how to use the idempotency key.
 *   created_at:
 *     type: string
 *     description: "The date with timezone at which the resource was created."
 *     format: date-time
 *   updated_at:
 *     type: string
 *     description: "The date with timezone at which the resource was updated."
 *     format: date-time
 *   deleted_at:
 *     type: string
 *     description: "The date with timezone at which the resource was deleted."
 *     format: date-time
 *   metadata:
 *     type: object
 *     description: An optional key-value map with additional details
 *     example: {car: "white"}
 */
