import type { AbapServiceProvider, AxiosRequestConfig, ProviderConfiguration } from "@sap-ux/axios-extension";
import type { EndpointsManager } from "@sap/adp-common";
export type RequestOptions = AxiosRequestConfig & Partial<ProviderConfiguration>;
/**
 * Service for managing and providing access to an ABAP service provider.
 */
export declare class AbapProvider {
    private endpointsManager;
    private provider;
    private connected;
    private system;
    /**
     * Constructs an instance of AbapProvider.
     *
     * @param {EndpointsManager} endpointsManager - The endpoints service for retrieving system details.
     */
    constructor(endpointsManager: EndpointsManager);
    /**
     * Retrieves the configured ABAP service provider if set, otherwise throws an error.
     *
     * @returns {AbapServiceProvider} - The configured ABAP service provider.
     */
    getProvider(): AbapServiceProvider;
    /**
     * Retrieves wheter the configured ABAP service provider is connected to ABAP system.
     *
     * @returns {boolean} - if provider is connected to ABAP system.
     */
    isConnected(): boolean;
    /**
     * Retrieves ABAP service provider connected ABAP system.
     *
     * @returns {string | undefined} - the connected system.
     */
    getSystem(): string | undefined;
    /**
     * Configures the ABAP service provider using the specified system details and credentials.
     *
     * @param {string} system - The system identifier.
     * @param {string} [client] - The client, if applicable.
     * @param {string} [username] - The username for authentication.
     * @param {string} [password] - The password for authentication.
     */
    setProvider(system: string, client?: string, username?: string, password?: string): Promise<void>;
    /**
     * Determines the target configuration for the ABAP service provider based on whether the application
     * is running within SAP App Studio or outside of it.
     *
     * @param {RequestOptions} requestOptions - The request options to be configured during this setup.
     * @param {string} system - The system identifier, which could be a URL or a system name.
     * @param {string} [client] - Optional client number, used in systems where multiple clients exist.
     * @returns {Promise<AbapTarget>} - The configuration object for the ABAP service provider, tailored based on the running environment.
     */
    private determineTarget;
}
