import { SessionInterface } from './auth/session/types';
import { RestRequestReturn } from './clients/rest/types';
import { GetRequestParams } from './clients/http_client/types';
import { ApiVersion } from './base-types';
export interface IdSet {
[id: string]: string | number | null;
}
export interface ParamSet {
[key: string]: any;
}
export interface Body {
[key: string]: any;
}
export interface ResourcePath {
http_method: string;
operation: string;
ids: string[];
path: string;
}
export interface BaseFindArgs {
session: SessionInterface;
params?: ParamSet;
urlIds: IdSet;
}
export interface RequestArgs extends BaseFindArgs {
http_method: string;
operation: string;
body?: Body | null;
entity?: Base | null;
}
export interface BaseConstructorArgs {
session: SessionInterface;
fromData?: Body | null;
}
declare class Base {
[key: string]: any;
static API_VERSION: ApiVersion;
static NEXT_PAGE_INFO: GetRequestParams | undefined;
static PREV_PAGE_INFO: GetRequestParams | undefined;
protected static NAME: string;
protected static PLURAL_NAME: string;
protected static PRIMARY_KEY: string;
protected static CUSTOM_PREFIX: string | null;
protected static HAS_ONE: {
[attribute: string]: typeof Base;
};
protected static HAS_MANY: {
[attribute: string]: typeof Base;
};
protected static PATHS: ResourcePath[];
protected static baseFind({ session, urlIds, params, }: BaseFindArgs): Promise;
protected static request({ session, http_method, operation, urlIds, params, body, entity, }: RequestArgs): Promise;
protected static getJsonBodyName(): string;
private static getPath;
private static createInstancesFromResponse;
private static createInstance;
session: SessionInterface;
constructor({ session, fromData }: BaseConstructorArgs);
save({ update }?: {
update?: boolean | undefined;
}): Promise;
saveAndUpdate(): Promise;
delete(): Promise;
serialize(): Body;
protected setData(data: Body): void;
private resource;
}
export default Base;
//# sourceMappingURL=base-rest-resource.d.ts.map