import { BaseResponse } from "./base.js";
/**
 * Return status enum
 */
export declare enum ReturnStatus {
    /** Return request initiated */
    REQUESTED = "REQUESTED",
    /** Return is being processed */
    PROCESSING = "PROCESSING",
    /** Return has been accepted */
    ACCEPTED = "ACCEPTED",
    /** Return has been completed */
    COMPLETED = "COMPLETED",
    /** Return has been cancelled */
    CANCELLED = "CANCELLED"
}
/**
 * Negotiation status enum
 */
export declare enum NegotiationStatus {
    /** Pending seller response */
    PENDING_RESPOND = "PENDING_RESPOND",
    /** Negotiation ongoing */
    ONGOING = "ONGOING",
    /** Negotiation terminated */
    TERMINATED = "TERMINATED"
}
/**
 * Seller proof status enum
 */
export declare enum SellerProofStatus {
    /** Proof pending */
    PENDING = "PENDING",
    /** Proof uploaded */
    UPLOADED = "UPLOADED",
    /** Proof not needed */
    NOT_NEEDED = "NOT_NEEDED"
}
/**
 * Seller compensation status enum
 */
export declare enum SellerCompensationStatus {
    /** Compensation not required */
    NOT_REQUIRED = "NOT_REQUIRED",
    /** Compensation request pending */
    PENDING_REQUEST = "PENDING_REQUEST",
    /** Compensation requested */
    COMPENSATION_REQUESTED = "COMPENSATION_REQUESTED"
}
/**
 * Return solution enum
 */
export declare enum ReturnSolution {
    /** Return and refund */
    RETURN_REFUND = "RETURN_REFUND",
    /** Refund only */
    REFUND_ONLY = "REFUND_ONLY"
}
/**
 * User information for returns
 */
export interface ReturnUser {
    /** Buyer's username */
    username: string;
    /** Buyer's email */
    email: string;
    /** Buyer's portrait URL */
    portrait: string;
}
/**
 * Item information in return
 */
export interface ReturnItem {
    /** Model ID of the item */
    model_id: number;
    /** Item name */
    name: string;
    /** Item image URLs */
    images: string[];
    /** Quantity of item */
    amount: number;
    /** Item price */
    item_price: number;
    /** Whether item is part of add-on deal */
    is_add_on_deal: boolean;
    /** Whether item is main item */
    is_main_item: boolean;
    /** Add-on deal ID */
    add_on_deal_id: number;
    /** Item ID */
    item_id: number;
    /** Item SKU */
    item_sku: string;
    /** Variation SKU */
    variation_sku: string;
    /** Item's refund amount (for Partial Qty RR) */
    refund_amount?: number;
}
/**
 * Video information for returns
 */
export interface ReturnVideoInfo {
    /** Thumbnail URL of video */
    thumbnail_url: string;
    /** URL of video */
    video_url: string;
}
/**
 * Seller proof information
 */
export interface SellerProof {
    /** Seller proof status */
    seller_proof_status: string;
    /** Deadline for submitting evidence */
    seller_evidence_deadline: number;
}
/**
 * Seller compensation information
 */
export interface SellerCompensation {
    /** Seller compensation status */
    seller_compensation_status: string;
    /** Deadline for requesting compensation */
    seller_compensation_due_date: number;
    /** Compensation amount */
    compensation_amount: number;
}
/**
 * Negotiation information
 */
export interface Negotiation {
    /** Negotiation status */
    negotiation_status: string;
    /** Latest solution offered */
    latest_solution: string;
    /** Latest offer amount */
    latest_offer_amount: number;
    /** Creator of latest offer */
    latest_offer_creator: string;
    /** Remaining counter limit */
    counter_limit: number;
    /** Offer due date */
    offer_due_date: number;
}
/**
 * Return address information
 */
export interface ReturnAddress {
    /** Warehouse ID */
    whs_id?: string;
}
/**
 * Pickup address information
 */
export interface PickupAddress {
    /** Address */
    address: string;
    /** Name */
    name: string;
    /** Phone number */
    phone: string;
    /** Town */
    town: string;
    /** District */
    district: string;
    /** City */
    city: string;
    /** State */
    state: string;
    /** Region */
    region: string;
    /** Zipcode */
    zipcode: string;
}
/**
 * Activity item information
 */
export interface ActivityItem {
    /** Item ID */
    item_id: number;
    /** Variation ID */
    variation_id: number;
    /** Quantity purchased */
    quantity_purchased: number;
    /** Original price */
    original_price: string;
}
/**
 * Activity information
 */
export interface Activity {
    /** Activity ID */
    activity_id: number;
    /** Activity type */
    activity_type: string;
    /** Original price */
    original_price: string;
    /** Discounted price */
    discounted_price: string;
    /** Items in activity */
    items: ActivityItem[];
    /** Refund amount for bundle deal cases */
    refund_amount?: number;
}
/**
 * Return detail information
 */
export interface ReturnDetail {
    /** Return images */
    image: string[];
    /** Buyer videos */
    buyer_videos?: ReturnVideoInfo[];
    /** Return reason */
    reason: string;
    /** Text reason provided by buyer */
    text_reason: string;
    /** Return serial number */
    return_sn: string;
    /** Refund amount */
    refund_amount: number;
    /** Currency */
    currency: string;
    /** Create time */
    create_time: number;
    /** Update time */
    update_time: number;
    /** Return status */
    status: string;
    /** Due date */
    due_date: number;
    /** Tracking number */
    tracking_number: string;
    /** Dispute reason */
    dispute_reason?: number | string[];
    /** Dispute text reason */
    dispute_text_reason?: string | string[];
    /** Needs logistics */
    needs_logistics: boolean;
    /** Amount before discount */
    amount_before_discount: number;
    /** User information */
    user: ReturnUser;
    /** Items in return */
    item: ReturnItem[];
    /** Order serial number */
    order_sn: string;
    /** Return ship due date */
    return_ship_due_date: number;
    /** Return seller due date */
    return_seller_due_date: number;
    /** Negotiation status */
    negotiation_status?: string;
    /** Seller proof status */
    seller_proof_status?: string;
    /** Seller compensation status */
    seller_compensation_status?: string;
    /** Seller proof */
    seller_proof?: SellerProof;
    /** Seller compensation */
    seller_compensation?: SellerCompensation;
    /** Negotiation */
    negotiation?: Negotiation;
    /** Logistics status */
    logistics_status?: string;
    /** Return pickup address */
    return_pickup_address?: PickupAddress;
    /** Virtual contact number */
    virtual_contact_number?: string;
    /** Package query number */
    package_query_number?: string;
    /** Return address */
    return_address?: ReturnAddress;
    /** Return refund type */
    return_refund_type?: string;
    /** Return solution */
    return_solution?: number;
    /** Is seller arrange */
    is_seller_arrange?: boolean;
    /** Is shipping proof mandatory */
    is_shipping_proof_mandatory?: boolean;
    /** Has uploaded shipping proof */
    has_uploaded_shipping_proof?: boolean;
    /** Is reverse logistics channel integrated */
    is_reverse_logistics_channel_integrated?: boolean;
    /** Reverse logistic channel name */
    reverse_logistic_channel_name?: string;
    /** Return refund request type */
    return_refund_request_type?: number;
    /** Validation type */
    validation_type?: string;
    /** Activities */
    activity?: Activity[];
}
/**
 * Parameters for getting return list
 */
export type GetReturnListParams = {
    /** Page number */
    page_no: number;
    /** Page size */
    page_size: number;
    /** Create time from */
    create_time_from?: number;
    /** Create time to */
    create_time_to?: number;
    /** Update time from */
    update_time_from?: number;
    /** Update time to */
    update_time_to?: number;
    /** Return status filter */
    status?: string;
    /** Negotiation status filter */
    negotiation_status?: string;
    /** Seller proof status filter */
    seller_proof_status?: string;
    /** Seller compensation status filter */
    seller_compensation_status?: string;
};
/**
 * Response for get return list API
 */
export interface GetReturnListResponse extends BaseResponse {
    response: {
        /** Whether there are more pages */
        more: boolean;
        /** List of returns */
        return: ReturnDetail[];
    };
}
/**
 * Parameters for getting return detail
 */
export type GetReturnDetailParams = {
    /** Return serial number */
    return_sn: string;
};
/**
 * Response for get return detail API
 */
export interface GetReturnDetailResponse extends BaseResponse {
    response: ReturnDetail;
}
/**
 * Parameters for confirming return
 */
export type ConfirmParams = {
    /** Return serial number */
    return_sn: string;
};
/**
 * Response for confirm API
 */
export interface ConfirmResponse extends BaseResponse {
    response: {
        /** Return serial number */
        return_sn: string;
    };
}
/**
 * Parameters for disputing return
 */
export type DisputeParams = {
    /** Return serial number */
    return_sn: string;
    /** Email for contact */
    email: string;
    /** Dispute reason */
    dispute_reason: number;
    /** Dispute text reason */
    dispute_text_reason?: string;
    /** Images for dispute */
    images?: string[];
    /** Dispute reason ID */
    dispute_reason_id?: number;
    /** Image list */
    image_list?: string[];
};
/**
 * Response for dispute API
 */
export interface DisputeResponse extends BaseResponse {
    response: {
        /** Return serial number */
        return_sn: string;
    };
}
/**
 * Parameters for offering solution
 */
export type OfferParams = {
    /** Return serial number */
    return_sn: string;
    /** Solution to offer */
    solution: number;
    /** Refund amount */
    refund_amount?: number;
    /** Proposed solution */
    proposed_solution?: string;
    /** Proposed adjusted refund amount */
    proposed_adjusted_refund_amount?: number;
};
/**
 * Response for offer API
 */
export interface OfferResponse extends BaseResponse {
    response: {
        /** Return serial number */
        return_sn: string;
    };
}
/**
 * Parameters for accepting offer
 */
export type AcceptOfferParams = {
    /** Return serial number */
    return_sn: string;
};
/**
 * Response for accept offer API
 */
export interface AcceptOfferResponse extends BaseResponse {
    response: {
        /** Return serial number */
        return_sn: string;
    };
}
/**
 * Parameters for getting available solutions
 */
export type GetAvailableSolutionsParams = {
    /** Return serial number */
    return_sn: string;
};
/**
 * Solution information
 */
export interface SolutionInfo {
    /** Solution option */
    solution: number;
    /** Maximum refund amount */
    max_refund_amount: number;
}
/**
 * Response for get available solutions API
 */
export interface GetAvailableSolutionsResponse extends BaseResponse {
    response: {
        /** Available solutions */
        solution: SolutionInfo[];
    };
}
/**
 * Parameters for cancelling dispute
 */
export type CancelDisputeParams = {
    /** Return serial number */
    return_sn: string;
    /** Email for contact */
    email?: string;
};
/**
 * Response for cancel dispute API
 */
export interface CancelDisputeResponse extends BaseResponse {
    response: {
        /** Return serial number */
        return_sn: string;
    };
}
/**
 * Dispute reason information
 */
export interface DisputeReason {
    /** Reason ID */
    reason_id: number;
    /** Reason text */
    reason_text: string;
}
/**
 * Parameters for getting return dispute reason
 */
export type GetReturnDisputeReasonParams = {
    /** Return serial number */
    return_sn: string;
};
/**
 * Response for get return dispute reason API
 */
export interface GetReturnDisputeReasonResponse extends BaseResponse {
    response: {
        /** List of dispute reasons */
        dispute_reason: DisputeReason[];
    };
}
/**
 * Image to convert
 */
export interface ImageToConvert {
    /** Image content */
    image: string;
}
/**
 * Parameters for converting image
 */
export type ConvertImageParams = {
    /** Images to convert */
    images: ImageToConvert[];
    /** Return serial number */
    return_sn?: string;
    /** Upload image content */
    upload_image?: string;
};
/**
 * Converted image information
 */
export interface ConvertedImage {
    /** Image URL */
    url: string;
    /** Thumbnail URL */
    thumbnail_url?: string;
}
/**
 * Response for convert image API
 */
export interface ConvertImageResponse extends BaseResponse {
    response: {
        /** Converted images */
        images: ConvertedImage[];
    };
}
/**
 * Proof text item
 */
export interface ProofTextItem {
    /** Text content */
    text: string;
}
/**
 * Proof image item
 */
export interface ProofImageItem {
    /** Image URL */
    url: string;
}
/**
 * Proof video item
 */
export interface ProofVideoItem {
    /** Video URL */
    url: string;
}
/**
 * Parameters for uploading proof
 */
/**
 * Proof photo item
 */
export interface ProofPhotoItem {
    /** Uploaded proof image link */
    url: string;
    /** The proof image thumbnail */
    thumbnail: string;
}
export type UploadProofParams = {
    /** Return serial number */
    return_sn: string;
    /** Proof text */
    proof_text?: ProofTextItem[];
    /** Proof images */
    proof_image?: ProofImageItem[];
    /** Proof videos */
    proof_video?: ProofVideoItem[];
    /** Proof photos */
    photo?: ProofPhotoItem[];
    /** Proof description */
    description?: string;
};
/**
 * Response for upload proof API
 */
export interface UploadProofResponse extends BaseResponse {
    response: {
        /** Return serial number */
        return_sn: string;
    };
}
/**
 * Parameters for querying proof
 */
export type QueryProofParams = {
    /** Return serial number */
    return_sn: string;
};
/**
 * Proof information
 */
export interface ProofInfo {
    /** Proof text */
    proof_text?: ProofTextItem[];
    /** Proof images */
    proof_image?: ProofImageItem[];
    /** Proof videos */
    proof_video?: ProofVideoItem[];
}
/**
 * Response for query proof API
 */
export interface QueryProofResponse extends BaseResponse {
    response: ProofInfo;
}
/**
 * Shipping carrier information
 */
export interface ShippingCarrier {
    /** Carrier ID */
    carrier_id: number;
    /** Carrier name */
    carrier_name: string;
    /** Required fields */
    required_fields: string[];
}
/**
 * Parameters for getting shipping carrier
 */
export type GetShippingCarrierParams = {
    /** Return serial number */
    return_sn: string;
};
/**
 * Response for get shipping carrier API
 */
export interface GetShippingCarrierResponse extends BaseResponse {
    response: {
        /** List of shipping carriers */
        carrier_list: ShippingCarrier[];
    };
}
/**
 * Parameters for uploading shipping proof
 */
export type UploadShippingProofParams = {
    /** Return serial number */
    return_sn: string;
    /** Carrier ID */
    carrier_id: number;
    /** Tracking number */
    tracking_number: string;
    /** Reverse logistics carrier ID */
    reverse_logistics_carrier_id?: number;
    /** Reverse logistics carrier name */
    reverse_logistics_carrier_name?: string;
    /** Image ID list */
    image_id_list?: Array<{
        image_id?: string;
    }>;
    /** Remarks */
    remarks?: string;
    /** Additional fields as key-value pairs */
    [key: string]: any;
};
/**
 * Response for upload shipping proof API
 */
export interface UploadShippingProofResponse extends BaseResponse {
    response: {
        /** Return serial number */
        return_sn: string;
    };
}
/**
 * Parameters for getting reverse tracking info
 */
export type GetReverseTrackingInfoParams = {
    /** Shopee's unique identifier for a return/refund request (serial number of return) */
    return_sn: string;
};
/**
 * Tracking information detail
 */
export interface TrackingInfo {
    /** The timestamps when reverse logistics info has been updated */
    update_time: number;
    /** The description of reverse logistics tracking info */
    tracking_description: string;
    /** Image URLs of electronic proof of pickup (ePOP) after return parcel has been picked up */
    epop_image_list?: string[];
    /** Image URLs of electronic proof of delivery (ePOD) after return parcel has been delivered */
    epod_image_list?: string[];
}
/**
 * Response for get reverse tracking info API
 */
export interface GetReverseTrackingInfoResponse extends BaseResponse {
    response: {
        /** Shopee's unique identifier for a return/refund request (serial number of return) */
        return_sn: string;
        /** Return refund request type: 0 = Normal RR, 1 = In-transit RR, 2 = Return-on-the-Spot */
        return_refund_request_type: number;
        /** Validation type: seller_validation or warehouse_validation */
        validation_type: string;
        /** Latest reverse logistic status */
        reverse_logistics_status: string;
        /** The last update time of the reverse logistics status */
        reverse_logistics_update_time: number;
        /** The maximum estimated delivery date for the reverse logistics */
        estimated_delivery_date_max?: number;
        /** The minimum estimated delivery date for the reverse logistics */
        estimated_delivery_date_min?: number;
        /** The tracking number for the reverse logistics */
        tracking_number?: string;
        /** The detailed tracking information list for the reverse logistics */
        tracking_info?: TrackingInfo[];
        /** Post-return logistics status */
        post_return_logistics_status?: string;
        /** The last update time of the post-return logistics status */
        post_return_logistics_update_time?: number;
        /** The tracking number for the post-return logistics (Return to Seller) */
        rts_tracking_number?: string;
        /** The detailed tracking information for post-return logistics */
        post_return_logistics_tracking_info?: TrackingInfo[];
    };
}
