export type Scope = 'Monitor' | 'Control' | 'Settings' | 'Images' | 'AirConditioner' | 'AirConditioner-Monitor' | 'AirConditioner-Control' | 'AirConditioner-Settings' | 'CleaningRobot' | 'CleaningRobot-Monitor' | 'CleaningRobot-Control' | 'CleaningRobot-Settings' | 'CoffeeMaker' | 'CoffeeMaker-Monitor' | 'CoffeeMaker-Control' | 'CoffeeMaker-Settings' | 'CookProcessor' | 'CookProcessor-Monitor' | 'CookProcessor-Control' | 'CookProcessor-Settings' | 'Dishwasher' | 'Dishwasher-Monitor' | 'Dishwasher-Control' | 'Dishwasher-Settings' | 'Dryer' | 'Dryer-Monitor' | 'Dryer-Control' | 'Dryer-Settings' | 'Freezer' | 'Freezer-Monitor' | 'Freezer-Control' | 'Freezer-Settings' | 'FridgeFreezer' | 'FridgeFreezer-Monitor' | 'FridgeFreezer-Control' | 'FridgeFreezer-Settings' | 'FridgeFreezer-Images' | 'Hob' | 'Hob-Monitor' | 'Hob-Control' | 'Hob-Settings' | 'Hood' | 'Hood-Monitor' | 'Hood-Control' | 'Hood-Settings' | 'Oven' | 'Oven-Monitor' | 'Oven-Control' | 'Oven-Settings' | 'Refrigerator' | 'Refrigerator-Monitor' | 'Refrigerator-Control' | 'Refrigerator-Settings' | 'Washer' | 'Washer-Monitor' | 'Washer-Control' | 'Washer-Settings' | 'WasherDryer' | 'WasherDryer-Monitor' | 'WasherDryer-Control' | 'WasherDryer-Settings' | 'WineCooler' | 'WineCooler-Monitor' | 'WineCooler-Control' | 'WineCooler-Settings';
export interface AuthorisationRequest {
    client_id: string;
    redirect_uri?: string;
    response_type: 'code';
    scope?: string;
    state?: AuthorisationState;
    nonce?: string;
    code_challenge?: string;
    code_challenge_method?: 'plain' | 'S256';
}
export type AuthorisationState = string | number;
export interface AuthorisationResponse {
    code: string;
    grant_type?: 'authorization_code';
    state?: AuthorisationState;
}
export interface AccessTokenRequest {
    client_id: string;
    client_secret?: string;
    redirect_uri?: string;
    grant_type: 'authorization_code';
    code: string;
    code_verifier?: string;
}
export interface AccessTokenResponse {
    id_token: string;
    access_token: string;
    expires_in: number;
    scope: string;
    refresh_token: string;
    token_type?: 'Bearer';
}
export interface DeviceAuthorisationRequest {
    client_id: string;
    scope?: string;
}
export interface DeviceAuthorisationResponse {
    device_code: string;
    user_code: string;
    verification_uri: string;
    verification_uri_complete?: string;
    expires_in?: number;
    interval?: number;
}
export interface DeviceAccessTokenRequest {
    grant_type: 'urn:ietf:params:oauth:grant-type:device_code' | 'device_code';
    device_code: string;
    client_id: string;
    client_secret?: string;
}
export interface DeviceAccessTokenResponse {
    id_token: string;
    access_token: string;
    expires_in: number;
    scope: string;
    refresh_token: string;
    token_type?: 'Bearer';
}
export interface AccessTokenRefreshRequest {
    grant_type: 'refresh_token';
    refresh_token: string;
    client_secret?: string;
    scope?: string;
    expires_in?: number;
}
export interface AccessTokenRefreshResponse {
    id_token: string;
    access_token: string;
    expires_in: number;
    scope: string;
    refresh_token: string;
    token_type: 'Bearer';
}
export interface AbsoluteToken {
    refreshToken: string;
    accessToken: string;
    accessExpires: number;
    scopes: string[];
}
export interface PersistAbsoluteTokens {
    [index: string]: AbsoluteToken;
}
export interface AuthorisationError {
    error: string;
    error_description: string;
}
//# sourceMappingURL=api-auth-types.d.ts.map