import {
CustomPackageResponse,
LocationResponse,
ResponseLabel,
} from './connect-server';
import { StoreOptions } from './store-options';
import { Order } from './order';
import { HazmatState } from './hazmat-state';
import { Continent } from './continent';
import { SelectedRates } from './selected-rates';
import { SelectedOrigin } from './selected-origin';
import { SelectedDestination } from './selected-destination';
import { CustomsState } from './customs-state';
import { Carrier } from './carrier';
import { Constants } from './constants';
import { ShipmentRecord } from './helpers';
import { UserMeta } from './user-meta';
import { PurchaseSettings } from './purchase-settings';
import { PurchaseMeta } from './purchase-meta';
import { ShipmentDate } from './shipment-date';
import { Promotion } from './promotion';
import { PackageDimensions } from './package-dimensions';
export interface WCShippingConfigAccountSettings {
purchaseSettings: PurchaseSettings;
purchaseMeta: PurchaseMeta;
userMeta: UserMeta;
storeOptions: StoreOptions;
}
// Todo: Gradually improve this type definition.
export interface WCShippingConfig {
order: Order;
accountSettings: WCShippingConfigAccountSettings;
context: string;
continents: Continent[];
is_destination_verified: boolean;
is_origin_verified: boolean;
items: number;
packagesSettings: Record< string, unknown > & {
packages: {
custom: CustomPackageResponse[];
predefined: Record< string, string[] >;
};
schema: Record< string, unknown >;
};
shipments: Record< string, unknown >[];
shipments_autogenerated_from_labels: int[];
shippingLabelData: Record< string, unknown > & {
storeOptions: StoreOptions;
currentOrderLabels: ResponseLabel[];
storedData: {
destination: LocationResponse;
selected_rates: SelectedRates | '';
selected_hazmat: HazmatState | '';
selected_origin: SelectedOrigin | '';
selected_destination: SelectedDestination | '';
customs_information: ShipmentRecord< CustomsState > | '';
shipment_dates: ShipmentRecord< ShipmentDate< string > > | '';
package_dimensions:
| ShipmentRecord< Record< number, PackageDimensions > >
| '';
};
};
origin_addresses: LocationResponse[];
eu_countries: string[];
constants: Constants;
/** @deprecated Kept for backward compatibility. Always returns an empty structure. */
carrier_strategies: {
upsdap: {
origin_address: Record<
string,
{
has_agreed_to_tos: boolean;
}
>;
};
};
is_main_origin_in_sync_with_store?: boolean;
formatted_store_address?: string;
store_address_draft?: LocationResponse | null;
custom_fulfillment_summary: string;
promotion?: Promotion;
should_use_fulfillment_api: boolean;
scanFormEnabled?: boolean;
bulk_labels_enabled?: boolean;
/**
* Maximum number of orders the bulk-labels modal will accept in a
* single pass. Sourced from
* `OrdersShippingContextRESTController::BATCH_SIZE_CAP` so PHP is
* the single source of truth.
*/
bulk_labels_max_orders?: number;
mode?: 'label-purchase' | 'address-editor';
address?: unknown;
onAddressComplete?: ( address: unknown ) => void;
onAddressCancel?: () => void;
}