matterbridge-aeg-robot
Version:
A Matterbridge plugin that connects AEG RX 9 / Electrolux Pure i9 robot vacuums to the Matter smart home ecosystem.
66 lines • 2.85 kB
TypeScript
import { AnsiLogger, LogLevel } from 'matterbridge/logger';
import { Dispatcher } from 'undici';
import { Checker, IErrorDetail } from 'ts-interface-checker';
import { IncomingHttpHeaders } from 'undici/types/header.js';
import { Config } from './config-types.js';
import NodePersist from 'node-persist';
export type Binary = Dispatcher.ResponseData['body'];
export type Response = Dispatcher.ResponseData;
export type Method = Dispatcher.HttpMethod;
export type Headers = IncomingHttpHeaders;
export type Query = Dispatcher.DispatchOptions['query'];
export interface UAOptions {
headers?: Headers;
signal?: AbortSignal;
[index: string]: unknown;
}
export type RequestParams = [
method: Method,
path: string,
options: UAOptions | undefined,
body: object | undefined
];
export interface Request {
path: string;
method: Method;
body?: string;
headers: Headers;
idempotent?: boolean;
signal?: AbortSignal;
}
export interface RequestResponse {
request: Request;
response: Response;
}
export declare const ELECTROLUX_GROUP_API_URL = "https://api.developer.electrolux.one";
export declare const USER_AGENT: string;
export declare class AEGUserAgent {
readonly log: AnsiLogger;
readonly config: Config;
readonly persist: NodePersist.LocalStorage;
private readonly timeout;
readonly retryDelay: {
min: number;
max: number;
factor: number;
};
private readonly defaultHeaders;
private readonly client;
private requestCount;
constructor(log: AnsiLogger, config: Config, persist: NodePersist.LocalStorage);
put(path: string, body: object, options?: UAOptions): Promise<void>;
post(path: string, body: object, options?: UAOptions): Promise<void>;
requestEmpty(...params: RequestParams): Promise<void>;
getJSON<Type>(checker: Checker, path: string, options?: UAOptions): Promise<Type>;
putJSON<Type>(checker: Checker, path: string, body: object, options?: UAOptions): Promise<Type>;
postJSON<Type>(checker: Checker, path: string, body: object, options?: UAOptions): Promise<Type>;
requestJSON<Type>(checker: Checker, ...params: RequestParams): Promise<Type>;
request(method: Method, path: string, options?: UAOptions, body?: object, headers?: Headers): Promise<RequestResponse>;
prepareRequest(method: Method, path: string, options?: UAOptions, body?: object, headers?: Headers): Request | Promise<Request>;
canRetry(err: unknown, options?: UAOptions): boolean;
requestCore(logPrefix: string, request: Request): Promise<Response>;
logHeaders(name: string, headers: Headers): void;
logBody(name: string, body: unknown): void;
logCheckerValidation(level: LogLevel, message: string, request: Request, errors: IErrorDetail[], json: unknown): void;
}
//# sourceMappingURL=aegapi-ua.d.ts.map