import type { RawRemoteCommand, RemoteCommandOpts, ProtocolCommandOpts, AppIdKey, PageIdKey, RemoteCommandId } from '../types';
/**
 * Generates remote commands for communicating with the Web Inspector.
 * Provides methods for creating various types of commands including connection
 * setup, application management, and protocol commands.
 */
export declare class RemoteMessages {
    /**
     * Creates a command to set the connection key for the Web Inspector session.
     *
     * @param connId - The connection identifier.
     * @returns A RawRemoteCommand for setting the connection key.
     */
    setConnectionKey(connId: string): RawRemoteCommand;
    /**
     * Creates a command to connect to a specific application.
     *
     * @param connId - The connection identifier.
     * @param appIdKey - The application identifier key.
     * @returns A RawRemoteCommand for connecting to the application.
     */
    connectToApp(connId: string, appIdKey: AppIdKey): RawRemoteCommand;
    /**
     * Creates a command to set the sender key for message routing.
     *
     * @param connId - The connection identifier.
     * @param senderId - The sender identifier.
     * @param appIdKey - The application identifier key.
     * @param pageIdKey - Optional page identifier key.
     * @returns A RawRemoteCommand for setting the sender key.
     */
    setSenderKey(connId: string, senderId: string, appIdKey: AppIdKey, pageIdKey?: PageIdKey): RawRemoteCommand;
    /**
     * Creates a command to indicate web view status.
     *
     * @param connId - The connection identifier.
     * @param appIdKey - The application identifier key.
     * @param pageIdKey - Optional page identifier key.
     * @param enabled - Whether the web view indication is enabled. Defaults to true if not provided.
     * @returns A RawRemoteCommand for indicating web view status.
     */
    indicateWebView(connId: string, appIdKey: AppIdKey, pageIdKey?: PageIdKey, enabled?: boolean): RawRemoteCommand;
    /**
     * Creates a command to launch an application.
     *
     * @param bundleId - The bundle identifier of the application to launch.
     * @returns A RawRemoteCommand for launching the application.
     */
    launchApplication(bundleId: string): RawRemoteCommand;
    /**
     * Creates a full command with all default parameters included.
     * This includes objectGroup, includeCommandLineAPI, and other runtime options.
     *
     * @param opts - Options combining RemoteCommandOpts and ProtocolCommandOpts.
     * @returns A RawRemoteCommand with full parameter set.
     */
    getFullCommand(opts: RemoteCommandOpts & ProtocolCommandOpts): RawRemoteCommand;
    /**
     * Creates a minimal command with only the essential parameters.
     * This is the default command type for most operations.
     *
     * @param opts - Options combining RemoteCommandOpts and ProtocolCommandOpts.
     * @returns A RawRemoteCommand with minimal parameter set.
     */
    getMinimalCommand(opts: RemoteCommandOpts & ProtocolCommandOpts): RawRemoteCommand;
    /**
     * Creates a direct command that bypasses the Target.sendMessageToTarget wrapper.
     * Used for certain Target domain commands.
     *
     * @param opts - Options combining RemoteCommandOpts and ProtocolCommandOpts.
     * @returns A RawRemoteCommand for direct protocol communication.
     */
    getDirectCommand(opts: RemoteCommandOpts & ProtocolCommandOpts): RawRemoteCommand;
    /**
     * Gets a remote command based on the command name and options.
     * Handles both Safari Web Inspector commands and WebKit protocol commands.
     *
     * @param command - The command name (e.g., 'setConnectionKey', 'Runtime.evaluate').
     * @param opts - Options for the command.
     * @returns A RawRemoteCommand appropriate for the given command.
     * @throws Error if required parameters are missing for specific commands.
     */
    getRemoteCommand(command: string, opts: RemoteCommandOpts & RemoteCommandId): RawRemoteCommand;
}
/**
 * Checks if a command should use the direct command format.
 * Direct commands bypass the Target.sendMessageToTarget wrapper.
 *
 * @param command - The command name to check.
 * @returns True if the command should use direct format, false otherwise.
 */
export declare function isDirectCommand(command: string): boolean;
//# sourceMappingURL=remote-messages.d.ts.map