homebridge-homeconnect
Version:
A Homebridge plugin that connects Home Connect appliances to Apple HomeKit
73 lines • 3.35 kB
TypeScript
import { Logger } from 'homebridge';
import { LocalStorage } from 'node-persist';
import { AbsoluteToken, AccessTokenRefreshResponse, AccessTokenResponse, AuthorisationResponse, DeviceAccessTokenResponse, DeviceAuthorisationResponse } from './api-auth-types.js';
import { APIUserAgent, Method, Request } from './api-ua.js';
import { ConfigPlugin } from './config-types.js';
import { AuthHelp, AuthHelpMessage } from './api-ua-auth-help.js';
export interface AuthorisationStatusSuccess {
state: 'busy' | 'success';
}
export interface AuthorisationStatusUser {
state: 'user';
uri: string;
code: string;
expires: number | null;
}
export interface AuthorisationStatusFailed {
state: 'fail';
retryable: boolean;
error: unknown;
message: string;
help?: AuthHelpMessage;
}
export type AuthorisationStatus = AuthorisationStatusSuccess | AuthorisationStatusUser | AuthorisationStatusFailed;
export declare class AuthorisationRetry {
readonly reason: string;
constructor(reason: string);
}
export declare class APIAuthoriseUserAgent extends APIUserAgent {
readonly persist: LocalStorage;
private readonly refreshWindow;
private readonly refreshRetryDelay;
private readonly pollPersistDelay;
private deviceFlowPollInterval;
private deviceFlowLogInterval;
private isAuthorised;
private readonly triggerAuthorisationRetry;
private triggerDeviceFlow?;
private pollDeviceCode?;
private triggerTokenRefresh?;
private status;
private statusUpdate;
private triggerStatusUpdate?;
private token?;
constructor(log: Logger, config: ConfigPlugin, persist: LocalStorage, language: string);
get scopes(): string[];
authoriseUserAgent(): Promise<void>;
maintainAccessToken(): Promise<never>;
obtainAccessToken(): Promise<void>;
refreshAccessToken(): Promise<void>;
getSavedToken(): Promise<AbsoluteToken>;
watchToken(oldToken?: AbsoluteToken): Promise<AuthorisationRetry>;
saveToken(newToken: AccessTokenResponse | DeviceAccessTokenResponse | AccessTokenRefreshResponse): Promise<void>;
loadTokens(): Promise<Map<string, AbsoluteToken>>;
authorisationCodeGrantFlow(): Promise<AccessTokenResponse>;
deviceFlow(): Promise<DeviceAccessTokenResponse>;
retryDeviceFlow(reason?: string): void;
setAuthorisationStatusFailed(err: unknown, retryable?: boolean, help?: AuthHelp): void;
setAuthorisationStatus(status: AuthorisationStatus): void;
getAuthorisationStatus(immediate?: boolean): Promise<AuthorisationStatus>;
authorisationRequest(): Promise<AuthorisationResponse & {
redirect_uri: string;
}>;
authorisationRequestURL(redirect_uri?: string): URL;
parseAuthorisationResponse(url: URL | string): AuthorisationResponse;
accessTokenRequest(code: string, redirect_uri?: string): Promise<AccessTokenResponse>;
deviceAuthorisationRequest(): Promise<DeviceAuthorisationResponse>;
deviceAccessTokenRequest(device_code: string): Promise<DeviceAccessTokenResponse>;
accessTokenRefreshRequest(refresh_token: string): Promise<AccessTokenRefreshResponse>;
get authorizationHeader(): string | undefined;
prepareRequest(method: Method, path: string, options?: Partial<Request>): Promise<Request>;
canRetry(err: unknown): boolean;
}
//# sourceMappingURL=api-ua-auth.d.ts.map