import { Observable } from 'rxjs';
import { IResourceAction, IResourceActionInner, IResourceResponse, ResourceQueryMappingMethod } from './Declarations';
import { ResourceHandler } from './ResourceHandler';
export declare class Resource {
    protected get requestHandler(): ResourceHandler;
    private $url;
    private $pathPrefix;
    private $path;
    private $headers;
    private $body;
    private $params;
    private $query;
    private _requestHandler;
    constructor(requestHandler?: ResourceHandler);
    /**
     * Used to get url
     */
    $getUrl(actionOptions?: IResourceAction): string | Promise<string>;
    $setUrl(url: string): void;
    /**
     * Used to get path prefix
     */
    $getPathPrefix(actionOptions?: IResourceAction): string | Promise<string>;
    $setPathPrefix(path: string): void;
    /**
     * Used to get path
     */
    $getPath(actionOptions?: IResourceAction): string | Promise<string>;
    $setPath(path: string): void;
    /**
     * Get headers.
     */
    $getHeaders(actionOptions?: IResourceAction): any | Promise<any>;
    $setHeaders(headers: any): void;
    /**
     * Get body
     */
    $getBody(actionOptions?: IResourceAction): any | Promise<any>;
    $setBody(body: any): void;
    /**
     * Get path params
     */
    $getParams(actionOptions?: IResourceAction): any | Promise<any>;
    $setParams(params: any): void;
    /**
     * Get query params
     */
    $getQuery(actionOptions?: IResourceAction): any | Promise<any>;
    $setQuery(query: any): void;
    /**
     * Used to filter received data.
     * Is applied on each element of array or object
     */
    $filter(data: any, options?: IResourceActionInner): boolean;
    /**
     * Used to map received data
     * Is applied on each element of array or object
     */
    $map(data: any, options?: IResourceActionInner): any;
    /**
     * Used to create result object
     * Is applied on each element of array or object
     */
    $resultFactory(data: any, options?: IResourceActionInner): any;
    $restAction(options: IResourceActionInner): any;
    /**
     * Converts observable to promise and ads abort method
     */
    protected $_createPromise(options: IResourceActionInner): Promise<any>;
    /**
     * Creates main request observable
     */
    protected $_createMainObservable(options: IResourceActionInner): Observable<any>;
    /**
     * Success response handler
     */
    protected $handleSuccessResponse(options: IResourceActionInner, resp: IResourceResponse): any;
    /**
     * Prepare success response body as array
     */
    protected $prepareSuccessResponseBodyArray(body: any[], options: IResourceActionInner): any[];
    /**
     * Prepare success response body as object
     */
    protected $prepareSuccessResponseBodyObject(body: any, options: IResourceActionInner): any;
    /**
     * Handle error
     */
    protected $handleErrorResponse(options: IResourceActionInner, resp: IResourceResponse): any;
    /**
     * Sets request options url
     */
    protected $setRequestOptionsUrl(options: IResourceActionInner): void;
    protected $setRequestOptionsBody(options: IResourceActionInner): void;
    protected $setRequestOptionsQuery(options: IResourceActionInner): void;
    protected $appendQueryParams(query: {
        [prop: string]: string | any[];
    }, key: string, value: any, queryMappingMethod?: ResourceQueryMappingMethod): void;
    protected $_setResourceActionInnerDefaults(options: IResourceActionInner): void;
    protected $_setResourceActionOptionDefaults(options: IResourceActionInner): void;
    protected $_setResolvedOptions(options: IResourceActionInner): Promise<IResourceActionInner>;
    protected $_createRequestOptions(options: IResourceActionInner): IResourceActionInner | Promise<IResourceActionInner>;
    protected $_canSetInternalData(options: IResourceActionInner): boolean;
}
