import type { HTTPHeaders } from '@appium/types';
import type { XCUITestDriver } from '../driver';
import type { XcTestScreenRecordingInfo, XcTestScreenRecording } from './types';
/**
 * Start a new screen recording via XCTest.
 *
 * On **real devices**, if **iOS 18+** and a new enough **appium-ios-remotexpc** (with
 * **XCTestAttachment**) are present, the attachment is removed after stop and the
 * `xctest_screen_record` insecure feature is **not** required.
 * If deletion cannot be performed (older iOS, package missing, or too old), you must enable
 * the `xctest_screen_record` insecure feature to start recording.
 *
 * If the recording is already running this API is a noop.
 *
 * @since Xcode 15/iOS 17
 * @param fps - FPS value
 * @param codec - Video codec, where 0 is h264, 1 is HEVC
 * @returns The information about a newly created or a running the screen recording.
 * @throws {Error} If screen recording has failed to start.
 */
export declare function mobileStartXctestScreenRecording(this: XCUITestDriver, fps?: number, codec?: number): Promise<XcTestScreenRecordingInfo>;
/**
 * Retrieves information about the current running screen recording.
 * If no screen recording is running then `null` is returned.
 */
export declare function mobileGetXctestScreenRecordingInfo(this: XCUITestDriver): Promise<XcTestScreenRecordingInfo | null>;
/**
 * Stop screen recording previously started by mobileStartXctestScreenRecording API.
 *
 * An error is thrown if no screen recording is running.
 *
 * The resulting movie is returned as base-64 string or is uploaded to
 * a remote location if corresponding options have been provided.
 *
 * The resulting movie is automatically deleted from the host temp file FOR SIMULATORS ONLY.
 * On **real devices**, after a successful pull the driver removes the XCTest attachment via
 * **appium-ios-remotexpc** when the same conditions hold as for starting without
 * `xctest_screen_record` (iOS 18+, package present, **XCTestAttachment** export). Otherwise
 * device-side delete is skipped. That deletion runs even if Base64 encoding or remote upload
 * fails afterward (the original encode/upload error is still thrown); if both fail, delete errors
 * are logged as warnings so the encode/upload failure remains primary.
 *
 * @since Xcode 15/iOS 17
 * @param remotePath - The path to the remote location, where the resulting video should be
 * uploaded.
 * The following protocols are supported: `http`, `https`, `ftp`. Null or empty
 * string value (the default setting) means the content of resulting file
 * should be encoded as Base64 and passed as the endpoint response value. An
 * exception will be thrown if the generated media file is too big to fit into
 * the available process memory.
 * @param user - The name of the user for the remote authentication.
 * Only works if `remotePath` is provided.
 * @param pass - The password for the remote authentication.
 * Only works if `remotePath` is provided.
 * @param headers - Additional headers mapping for multipart http(s) uploads
 * @param fileFieldName - The name of the form field where the file content BLOB should be stored for
 * http(s) uploads
 * @param formFields - Additional form fields for multipart http(s) uploads
 * @param method - The http multipart upload method name.
 * Only works if `remotePath` is provided.
 * @returns The resulting movie with base64-encoded content or empty string if uploaded remotely.
 * @throws {Error} If there was an error while retrieving the video
 * file or the file content cannot be uploaded to the remote location.
 */
export declare function mobileStopXctestScreenRecording(this: XCUITestDriver, remotePath?: string, user?: string, pass?: string, headers?: HTTPHeaders, fileFieldName?: string, formFields?: Record<string, any> | [string, any][], method?: 'PUT' | 'POST' | 'PATCH'): Promise<XcTestScreenRecording>;
//# sourceMappingURL=xctest-record-screen.d.ts.map