export interface Zone {
    name: string;
    address: string;
}
export interface ServerVersionEntity {
    name?: string;
    buildVersion?: string;
    buildDateTime?: string;
    zoneVersion?: string;
    protocolMinorVersion?: number;
    protocolMajorVersion?: number;
}
export declare enum ServerType {
    Unknown = -1,
    Nimbus = 0,
    GameStream = 1,
    GameStreamRoamingProxy = 2,
    CloudStation = 3,
    QuadroStation = 4,
    PassThrough = 51,
    Playback = 52,
    SecureSignallingPassThrough = 53
}
export declare enum TerminationErrorCode {
    Success = 15859712,
    ServerDisconnectedIntended = 15868704,// Game client terminated.
    ServerDisconnectedUserIdle = 15868708,// No input received from user.
    ServerDisconnectedAnotherClient = 15868714,// User started another client.
    ServerDisconnectedConcurrentSessionLimitExceeded = 15868740,// User started another session.
    ServerDisconnectedMultipleLogin = 15868744,// User started another session.
    ServerDisconnectedMaintenanceMode = 15868745,// Service is entering maintenance.
    ServerDisconnectedMultipleTab = 15868752,// User started another session in another tab.
    NoNetwork = 3237089281,// No network detected.
    NetworkError = 3237089282,// Network connection failed.
    RequestLimitExceeded = 3237093642,// User started too many streams.
    SessionLimitExceeded = 3237093643,// User started too many streams.
    Maintenance = 3237093656,// Service is in maintenance.
    AppPatching = 3237093673,// The application is being updated.
    RegionBanned = 3237093685,// The user is in an unsupported region.
    GuestModeCampaignDisabled = 3237093705,// The application does not support guest mode.
    InvalidVideoElement = 3237094400,// The supplied video element is invalid.
    InvalidAudioElement = 3237094401
}
export interface ZoneTable {
    [key: string]: Zone;
}
export interface MonitorSettingsEntity {
    monitorId?: number;
    positionX?: number;
    positionY?: number;
    widthInPixels?: number;
    heightInPixels?: number;
    dpi?: number;
    framesPerSecond?: number;
    sdrHdrMode?: number;
}
export interface ServerInfo {
    version: ServerVersionEntity;
    vpcId: string;
    serverType: ServerType;
    defaultZone: Zone;
    zones: ZoneTable;
    monitorSettings: MonitorSettingsEntity[];
}
declare class Settings {
    constructor(descriptor?: {
        clientId?: string;
        catalogClientId?: string;
        partnerId?: string;
        serviceUrl?: string;
    });
}
export declare class API {
    readonly Settings: typeof Settings;
    auth: {
        guestUser: {
            idToken: string;
        } | null;
        loginWithNonce(nonce: string, appId: number): Promise<void>;
    };
    server: {
        getServerInfo: (serviceUrl?: string, skipLatencyBasedRouting?: boolean) => Promise<ServerInfo>;
    };
    settings: {
        vpcId: string;
    };
    streamer: {
        detectStreamingResolution: () => {
            width: number;
            height: number;
        };
        start: (params: {
            server: Zone | string;
            appId: number;
            windowElementId?: string;
            streamParams: {
                width: number;
                height: number;
                fps: number;
            };
        }) => Promise<void>;
        stop: () => void;
        on: {
            (event: "started", callback: () => void): void;
            (event: "terminated", callback: (e: {
                reason: number;
                code?: number;
            }) => void): void;
            (event: "diagnostic", callback: (e: {
                level?: number;
                code?: number;
                message?: string;
            }) => void): void;
        };
    };
    initialize(settings: Settings): Promise<void>;
}
export {};
//# sourceMappingURL=types.d.ts.map