import type { Schema } from '../schema/Schema.js'; import type { Options, Context, Resource } from './Resource.js'; import { ResourceDefinition } from './Resource.js'; declare type RestApiOptions = Partial & { agent: Options['agent']; }; declare const RestApi: (, R extends Resource>(_options: RestApiOptions, resource: (context: Context) => R) => R) & { Item: >>(schema: S_1, itemSpec?: Spec) => ((context: Context) => Resource & import("ts-toolbelt/out/Object/Merge").MergeDeep<{ [key in keyof (Spec["methods"] & {})]: (Spec["methods"] & {})[key] extends (...args: infer A) => infer R_1 ? (...args: A) => R_1 : never; }, { head: (this: import("./ItemResource.js").ItemResourceT, params?: {}) => Promise>; get(this: import("./ItemResource.js").ItemResourceT, params?: {}): import("./StorablePromise.js").StorablePromise>; put(this: import("./ItemResource.js").ItemResourceT, instance: unknown, params?: {}): import("./StorablePromise.js").StorablePromise>; patch(this: import("./ItemResource.js").ItemResourceT, instance: unknown, params?: {}): import("./StorablePromise.js").StorablePromise>; delete(this: import("./ItemResource.js").ItemResourceT, instanceEncoded: unknown, params?: {}): import("./StorablePromise.js").StorablePromise; post(this: import("./ItemResource.js").ItemResourceT, body: unknown, params?: {}): import("./StorablePromise.js").StorablePromise; }, import("ts-toolbelt/out/Misc/BuiltIn").BuiltIn, undefined> & { [key_1 in keyof (Spec["resources"] & {})]: (Spec["resources"] & {})[key_1] extends (context: Context) => infer R_2 ? R_2 : never; }) & { schema: S_1; }; Collection: >>(schema: S_8, collSpec?: Spec_1) => ((context: Context) => Resource & import("ts-toolbelt/out/Object/Merge").MergeDeep<{ [key_2 in keyof (Spec_1["methods"] & {})]: (Spec_1["methods"] & {})[key_2] extends (...args: infer A_1) => infer R_3 ? (...args: A_1) => R_3 : never; }, { head: (this: import("./CollectionResource.js").CollResourceT, params?: {}) => Promise>; list(this: import("./CollectionResource.js").CollResourceT, params?: {}): import("./StorablePromise.js").StorablePromise>; get(this: import("./CollectionResource.js").CollResourceT, params?: {}): import("./StorablePromise.js").StorablePromise>; post: (this: import("./CollectionResource.js").CollResourceT, instance: unknown, params?: {}) => Promise>; create(this: import("./CollectionResource.js").CollResourceT, instance: unknown, params?: {}): import("./StorablePromise.js").StorablePromise>; }, import("ts-toolbelt/out/Misc/BuiltIn").BuiltIn, undefined> & { [key_3 in keyof (Spec_1["resources"] & {})]: (Spec_1["resources"] & {})[key_3] extends (context: Context) => infer R_4 ? R_4 : never; } & (Spec_1["entry"] extends Function ? Spec_1["entry"] extends (context: Context) => infer R_5 ? (index: import("./Location.js").Index) => R_5 : never : {})) & { schema: S_8; }; getResourceConfig: >(resource: Resource) => ResourceDefinition; makeStorable: (promise: Promise, spec: Partial>) => import("./StorablePromise.js").StorablePromise; decorateMethod: , A_2 extends unknown[], R_7>(method: (this: Resource, resourceDef: ResourceDefinition, ...args: A_2) => R_7, { storable }?: Partial<{ storable?: boolean | Partial> | undefined; }>) => (this: Resource, ...args: A_2) => R_7; method: (options?: { storable?: boolean | Partial> | undefined; }) => , A_3 extends unknown[]>(_target: unknown, _key: PropertyKey, descriptor: TypedPropertyDescriptor<(this: Resource, resourceDef: ResourceDefinition, ...args: A_3) => R_8>) => TypedPropertyDescriptor<(this: Resource, ...args: A_3) => R_8>; }; export default RestApi; //# sourceMappingURL=RestApi.d.ts.map