import { SessionDefinition, SessionRequiredParams } from './session'; type Without = Partial, never>>; type XOR = T | U extends object ? (Without & U) | (Without & T) : T | U; export type PlatformSessionParamsAll = Partial; export type PlatformSessionParams = RdpParams & Partial & AppName; export type CombinedParams = RdpParams & HostParams; export type RdpParams = RdpParamsRoot & (NamedConfig | SessionRequiredParams); interface NamedConfig { readonly name: string; } interface RdpParamsRoot { readonly deployedPlatformUsername?: string; readonly dacsApplicationId?: string; readonly dacsPosition?: string; readonly grant?: XOR; } export interface AppName { readonly appName?: string; } declare class Grant { scope?: string; takeSignOnControl?: boolean; constructor(params: Grant); } export declare class GrantPassword extends Grant { userName: string; password: string; constructor(params: GrantPassword); } export declare class GrantClientCredentials extends Grant { clientId: string; clientSecret: string; constructor(params: GrantClientCredentials); } export interface HostParams extends SessionRequiredParams { readonly deployedPlatformHost?: string; readonly deployedPlatformUsername?: string; readonly dacsApplicationId?: string; readonly dacsPosition?: string; } export interface PlatformSession { Definition(params: PlatformSessionParams): SessionDefinition; } export {};