import * as Knex from "knex"; import OperationProcessor from "./processors/operation-processor"; import Resource from "./resource"; import { Operation, OperationResponse, ApplicationServices, IJsonApiSerializer, ApplicationAddons, AddonOptions } from "./types"; import ApplicationInstance from "./application-instance"; import JsonApiSerializer from "./serializers/serializer"; import Addon from "./addon"; export default class Application { namespace: string; types: typeof Resource[]; processors: typeof OperationProcessor[]; defaultProcessor: typeof OperationProcessor; serializer: IJsonApiSerializer; services: ApplicationServices; addons: ApplicationAddons; constructor(settings: { namespace?: string; types?: typeof Resource[]; processors?: typeof OperationProcessor[]; defaultProcessor?: typeof OperationProcessor; serializer?: typeof JsonApiSerializer; services?: {}; }); use(addon: typeof Addon, options?: AddonOptions): void; executeOperations(ops: Operation[], applicationInstance?: ApplicationInstance): Promise; executeOperation(op: Operation, processor: OperationProcessor): Promise; createTransaction(): Promise; processorFor(resourceType: string, applicationInstance: ApplicationInstance): Promise | undefined>; resourceFor(resourceType: string): Promise; buildOperationResponse(data: Resource | Resource[] | void, appInstance: ApplicationInstance): Promise; serializeResources(data: Resource | Resource[] | void): Promise; }