/**
 * Copyright © 2025 Nevis Security AG. All rights reserved.
 */

import {
	type AndroidDeviceCapabilities,
	AndroidDeviceCapabilitiesImpl,
} from './AndroidDeviceCapabilities';
import { type IosDeviceCapabilities, IosDeviceCapabilitiesImpl } from './IosDeviceCapabilities';

/**
 * The class providing information about the capabilities of the device.
 *
 * @group Essentials
 * @see {@link MobileAuthenticationClient.deviceCapabilities}
 */
export abstract class DeviceCapabilities {
	/**
	 * Returns the object that can be used to get information about what is supported by the Android
	 * device (for instance whether it is compatible with full basic attestation).
	 */
	abstract androidDeviceCapabilities: AndroidDeviceCapabilities;

	/**
	 * Returns the object that can be used to get information about what is supported by the iOS device.
	 */
	abstract iosDeviceCapabilities: IosDeviceCapabilities;
}

export class DeviceCapabilitiesImpl extends DeviceCapabilities {
	androidDeviceCapabilities: AndroidDeviceCapabilities = new AndroidDeviceCapabilitiesImpl();
	iosDeviceCapabilities: IosDeviceCapabilities = new IosDeviceCapabilitiesImpl();
}
