import { LinkExpression, LinkExpressionInput, LinkExpressionMutations, LinkExpressionUpdated, LinkInput, LinkMutations } from "../links/Links";
import { LinkQuery } from "./LinkQuery";
import { Perspective } from "./Perspective";
import { LinkStatus } from "./PerspectiveProxy";
import { PerspectiveHandle, PerspectiveState } from "./PerspectiveHandle";
export declare const testLink: LinkExpression;
/**
 * Resolver classes are used here to define the GraphQL schema
 * (through the type-graphql annotations)
 * and are spawned in the client tests in Ad4mClient.test.ts.
 * For the latter, they return test fixtures.
 */
export default class PerspectiveResolver {
    perspectives(): PerspectiveHandle[];
    perspective(uuid: string): PerspectiveHandle | null;
    perspectiveSnapshot(uuid: string): Perspective | null;
    perspectivePublishSnapshot(uuid: string): String | null;
    perspectiveQueryLinks(uuid: string, query: LinkQuery): LinkExpression[];
    perspectiveQueryProlog(uuid: string, query: String): string;
    perspectiveAdd(name: string, pubSub: any): PerspectiveHandle;
    perspectiveUpdate(uuid: string, name: string, pubSub: any): PerspectiveHandle;
    perspectiveRemove(uuid: string, pubSub: any): boolean;
    perspectiveAddLink(uuid: string, link: LinkInput, status: LinkStatus, pubSub: any): LinkExpression;
    perspectiveAddLinks(uuid: string, links: LinkInput[], status: string, pubSub: any): LinkExpression[];
    perspectiveRemoveLinks(uuid: string, links: LinkExpressionInput[], pubSub: any): LinkExpression[];
    perspectiveLinkMutations(uuid: string, mutations: LinkMutations, status: LinkStatus, pubSub: any): LinkExpressionMutations;
    perspectiveAddLinkExpression(uuid: string, link: LinkExpressionInput, status: LinkStatus, pubSub: any): LinkExpression;
    perspectiveUpdateLink(uuid: string, oldlink: LinkExpressionInput, newlink: LinkInput, pubSub: any): LinkExpression;
    perspectiveRemoveLink(uuid: string, link: LinkExpressionInput, pubSub: any): Boolean;
    perspectiveAddSdna(uuid: string, name: string, sdnaCode: string, sdnaType: string, pubSub: any): Boolean;
    perspectiveExecuteCommands(uuid: string, commands: string, expression: string, parameters: string): Boolean;
    perspectiveCreateSubject(uuid: string, SubjectClass: string, expressionAddress: string): Boolean;
    perspectiveGetSubjectData(uuid: string, SubjectClass: string, expressionAddress: string): String;
    perspectiveAdded(): PerspectiveHandle;
    perspectiveUpdated(): PerspectiveHandle;
    perspectiveRemoved(): string;
    perspectiveLinkAdded(uuid: string): LinkExpression;
    perspectiveLinkRemoved(uuid: string): LinkExpression;
    perspectiveLinkUpdated(uuid: string): LinkExpressionUpdated;
    perspectiveSyncStateChange(uuid: string): PerspectiveState;
}
