import Api from '../'; import Auth from '../../auth'; import { IEBayApiRequest } from '../../request'; import { AppConfig } from '../../types'; export declare const defaultApiHeaders: Record; export declare type ApiConfig = { subdomain?: string; useIaf?: boolean; apiVersion?: string; basePath?: string; schema?: string; sandbox?: boolean; tld?: string; headers?: Record; }; export declare type ApiRequest = { method: keyof IEBayApiRequest; url: string; config?: any; data?: any; }; export interface IRestful { new (config: AppConfig, req?: IEBayApiRequest, auth?: Auth, apiConfig?: ApiConfig): Restful; id: string; } export default abstract class Restful extends Api { readonly apiConfig: Required; constructor(config: AppConfig, req?: IEBayApiRequest, auth?: Auth, apiConfig?: ApiConfig); static buildServerUrl(schema: string, subdomain: string, sandbox: boolean, tld: string): string; abstract get basePath(): string; /** * Enable to supports the use of OAuth tokens for user authorization. */ get useIaf(): boolean; get schema(): string; get subdomain(): string; get apiVersionPath(): string; getServerUrl({ schema, subdomain, apiVersion, basePath, sandbox, tld }: Required): string; getApiConfig(): Required; get baseUrl(): string; /** * Create a new instances of it self with specified api config. * @param apiConfig */ api(apiConfig: ApiConfig): this; /** * Use "apix" subdomain */ get apix(): this; /** * Use "apiz" subdomain */ get apiz(): this; get(url: string, config?: any, apiConfig?: ApiConfig): Promise; delete(url: string, config?: any, apiConfig?: ApiConfig): Promise; post(url: string, data?: any, config?: any, apiConfig?: ApiConfig): Promise; put(url: string, data?: any, config?: any, apiConfig?: ApiConfig): Promise; get additionalHeaders(): any; enrichRequestConfig(config?: any, apiConfig?: Required): Promise; private doRequest; private shouldRefreshToken; private request; }