import { ApiEdgeDefinition } from "../edge/ApiEdgeDefinition";
import { ApiEdgeAction } from "../edge/ApiEdgeAction";
import { Api } from "../Api";
import { ApiEdgeMethod } from "../edge/ApiEdgeMethod";
import { ApiEdgeRelation } from "../relations/ApiEdgeRelation";
import { ApiEdgeSchema } from "../edge/ApiEdgeSchema";
import { ApiEdgeQueryContext } from "../edge/ApiEdgeQueryContext";
export declare class LazyApiEdge implements ApiEdgeDefinition {
    private realEdge;
    private readonly resolver;
    constructor(api: Api, name: string, plural: boolean, resolver: () => Promise<ApiEdgeDefinition | undefined>);
    resolve(): Promise<boolean>;
    actions: ApiEdgeAction[];
    methods: ApiEdgeMethod[];
    relations: ApiEdgeRelation[];
    get allowCreate(): boolean;
    set allowCreate(value: boolean);
    get allowExists(): boolean;
    set allowExists(value: boolean);
    get allowGet(): boolean;
    set allowGet(value: boolean);
    get allowList(): boolean;
    set allowList(value: boolean);
    get allowPatch(): boolean;
    set allowPatch(value: boolean);
    get allowRemove(): boolean;
    set allowRemove(value: boolean);
    get allowUpdate(): boolean;
    set allowUpdate(value: boolean);
    get idField(): string;
    set idField(value: string);
    get schema(): ApiEdgeSchema;
    set schema(value: ApiEdgeSchema);
    api: Api;
    external: boolean;
    name: string;
    pluralName: string;
    createEntry: (context: ApiEdgeQueryContext, entryFields: any) => Promise<import("../..").ApiEdgeQueryResponse>;
    exists: (context: ApiEdgeQueryContext) => Promise<import("../..").ApiEdgeQueryResponse>;
    getEntry: (context: ApiEdgeQueryContext) => Promise<import("../..").ApiEdgeQueryResponse>;
    listEntries: (context: ApiEdgeQueryContext) => Promise<import("../..").ApiEdgeQueryResponse>;
    patchEntry: (context: ApiEdgeQueryContext, entryFields: any) => Promise<import("../..").ApiEdgeQueryResponse>;
    relation: (name: string) => Promise<ApiEdgeRelation | undefined>;
    removeEntry: (context: ApiEdgeQueryContext, entryFields: any) => Promise<import("../..").ApiEdgeQueryResponse>;
    updateEntry: (context: ApiEdgeQueryContext, entryFields: any) => Promise<import("../..").ApiEdgeQueryResponse>;
    prepare: () => Promise<void>;
    metadata: () => import("../..").ApiEdgeMetadata;
    get(key: string): any;
    set(key: string, value: any): any;
}
