import type { GetRatesRequest, Rate } from '@shipengine/connect-carrier-api';
import type { RatingContext } from './rating-context';
/** A rate request shipment with its corresponding id */
export interface ShipmentAndId {
    /** rate_request_identifier for the rate request */
    id: string;
    /** Shipment for the rate request */
    shipment: GetRatesRequest;
}
/** Rate results with its corresponding rate request id */
export interface RateResultsAndId {
    /** rate_request_identifier for the corresponding rate request */
    id: string;
    /** Error, if any */
    error?: unknown;
    /** Rates for a given rate request */
    rates: Rate[];
}
/** Implementation of a carrier */
export interface RatingCarrier {
    /** Rate shipments
     * @param context Native Rating context that can be used by the implementation to interact with the underlying service
     * @param shipment Shipments that should be rated
     * @returns List of rates for the given shipments
     */
    rateShipments: (context: RatingContext, shipment: ShipmentAndId[]) => Promise<RateResultsAndId[]>;
}
/** Signify a validation error from the carrier */
export declare class CarrierValidationError extends Error {
}
