import { IApi, ResourceData, ResourceId, ResourceParams } from './types'; declare type EventHandler = (data?: T | void) => void; export declare class Resource { protected api: IApi; route: string; paramNames: string[]; protected createdHandlers: Set>; protected updatedHandlers: Set>; protected deletedHandlers: Set>; constructor(api: IApi, route: string); onCreated(handler: EventHandler): () => void; created(data?: T | void): void; onUpdated(handler: EventHandler): () => void; updated(data?: T | void): void; onDeleted(handler: EventHandler): () => void; deleted(data?: T | void): void; match(pathname: string): Record | null; protected matchRoute(route: string, pathname: string): Record | null; create>(req: Req, params?: ResourceParams): Promise; read(id: ResourceId, params?: ResourceParams): Promise; update>(id: ResourceId, req: Req, params?: ResourceParams): Promise; delete(id: ResourceId, params?: ResourceParams): Promise; list(params?: ResourceParams): Promise; search(query: object, params?: ResourceParams): Promise; buildPath(params?: ResourceParams, id?: ResourceId): string; } export {};