import PortalClient, { BodyEncoding, HttpMethod, IServiceCall, IServiceParameters, ResponseEncoding } from "../index"; export type IExtensionConstructor = new (client: PortalClient) => T; export interface IExtension { } export default abstract class Extension implements IExtension { protected abstract readonly extensionName: string; protected client: PortalClient; constructor(client: PortalClient); protected call(methodName: string | null, parameters?: IServiceParameters | null, method?: HttpMethod, requiresToken?: string | boolean, bodyEncoding?: BodyEncoding, responseEncoding?: ResponseEncoding, headers?: Record, protocolVersion?: string): IServiceCall; protected onSuccess(call: IServiceCall, onSuccess: (value: T) => void): IServiceCall; protected clearAccessToken(): void; protected setAccessToken(token: string | null, authenticationType: string | null): void; static add(extensionConstructor: IExtensionConstructor, extensionName: string): void; }