import { LDOptions, LDContext, LDClient } from '@launchdarkly/js-client-sdk';
export * from '@launchdarkly/js-client-sdk';
import { ObserveOptions } from '@launchdarkly/observability';
export { LDObserve, ObserveOptions } from '@launchdarkly/observability';
import { RecordOptions } from '@launchdarkly/session-replay';
export { LDRecord, RecordOptions } from '@launchdarkly/session-replay';

/**
 * This is the API reference for the LaunchDarkly Client-Side SDK for JavaScript with included Observability.
 *
 * This SDK is intended for use in browser environments. It includes the observability and session replay plugins.
 *
 * In typical usage, you will call {@link createClient} once at startup time to obtain an instance of
 * {@link LDClient}, which provides access to all of the SDK's functionality.
 *
 * For more information, see the [SDK Reference Guide](https://docs.launchdarkly.com/sdk/client-side/javascript).
 *
 * @packageDocumentation
 */

/**
 * Initialization options for the browser SDK and observability plugins.
 */
interface LDBrowserOptions extends LDOptions {
    /**
     * The project ID for observability. This is a temporary option and will be removed before the 1.0.0 release.
     */
    tmpProjectId: string;
    /**
     * Configuration for the observability plugin.
     */
    observability?: ObserveOptions;
    /**
     * Configuration for the session replay plugin.
     */
    sessionReplay?: RecordOptions;
}
/**
 * Creates an instance of the LaunchDarkly client. The client is pre-configured for observability.
 *
 * Usage:
 * ```
 * import { createClient } from '@launchdarkly/browser';
 * const client = createClient(clientSideId, context, options);
 *
 * // Attach event listeners and add any additional initialization logic here
 *
 * // Then start the client
 * client.start();
 * ```
 *
 * @param clientSideId
 *   The client-side ID, also known as the environment ID.
 * @param context
 *   The initial context used to identify the user. @see {@link LDContext}
 * @param options
 *   Optional configuration settings.
 * @return
 *   The new client instance.
 */
declare function createClient(clientSideId: string, context: LDContext, options?: LDBrowserOptions): LDClient;

export { type LDBrowserOptions, createClient };
