import { B2BFlavour } from "./constants.mjs";
import { Config } from "./config.mjs";
import { AirspaceService } from "./Airspace/index.mjs";
import { FlightService } from "./Flight/index.mjs";
import { FlowService } from "./Flow/index.mjs";
import { GeneralInformationService } from "./GeneralInformation/index.mjs";
import { SetOptional } from "type-fest";

//#region src/createB2BClient.d.ts
/**
 * Main client object grouping all available B2B domains (Airspace, Flight, Flow, GeneralInformation).
 */
interface B2BClient {
  Airspace: AirspaceService;
  Flight: FlightService;
  Flow: FlowService;
  GeneralInformation: GeneralInformationService;
}
declare const CONFIG_DEFAULTS: {
  flavour: B2BFlavour;
  XSD_PATH: string;
  hooks: never[];
};
/**
 * Options for initializing the B2B client.
 */
type CreateB2BClientOptions = SetOptional<Config, keyof typeof CONFIG_DEFAULTS>;
/**
 * Main factory to create a fully initialized B2B client.
 * Handles WSDL downloading (if needed) and initializes all sub-services.
 *
 * @param options - Configuration options for the client. See {@link CreateB2BClientOptions}.
 * @returns The initialized {@link B2BClient} instance.
 */
declare function createB2BClient(options: CreateB2BClientOptions): Promise<B2BClient>;
/**
 * Factory to create a standalone client for the Airspace domain.
 *
 * @param options - Configuration options for the client. See {@link CreateB2BClientOptions}.
 * @returns The initialized {@link AirspaceService} instance.
 */
declare function createAirspaceClient(options: CreateB2BClientOptions): Promise<AirspaceService>;
/**
 * Factory to create a standalone client for the Flight domain.
 *
 * @param options - Configuration options for the client. See {@link CreateB2BClientOptions}.
 * @returns The initialized {@link FlightService} instance.
 */
declare function createFlightClient(options: CreateB2BClientOptions): Promise<FlightService>;
/**
 * Factory to create a standalone client for the Flow domain.
 *
 * @param options - Configuration options for the client. See {@link CreateB2BClientOptions}.
 * @returns The initialized {@link FlowService} instance.
 */
declare function createFlowClient(options: CreateB2BClientOptions): Promise<FlowService>;
/**
 * Factory to create a standalone client for the GeneralInformation domain.
 *
 * @param options - Configuration options for the client. See {@link CreateB2BClientOptions}.
 * @returns The initialized {@link GeneralInformationService} instance.
 */
declare function createGeneralInformationClient(options: CreateB2BClientOptions): Promise<GeneralInformationService>;
//#endregion
export { B2BClient, CreateB2BClientOptions, createAirspaceClient, createB2BClient, createFlightClient, createFlowClient, createGeneralInformationClient };
//# sourceMappingURL=createB2BClient.d.mts.map