import { Link, LinkExpression, LinkExpressionInput, LinkInput } from "../links/Links";
import { LinkQuery } from "./LinkQuery";
/** A Perspective represents subjective meaning, encoded through
* associations between expressions, a.k.a. Links, that is a graph
* over the objective Expressions of any subset of Languages.
*
* This type represents the clean onotological concept of a Perspective.
* An instance of this class can be regarded as an immutable snapshot of
* a mutable perspective.
*
* The types PerspectiveProxy and PerspectiveHandle are used when dealing
* with an instantiated mutable perspective as is done through most of
* the GraphQL mutations.
*/
export declare class Perspective {
    /** The content of the perspective, a list/graph of links */
    links: LinkExpression[];
    constructor(links?: LinkExpression[]);
    /** Convenience function for filtering links just like with PerspectiveProxy */
    get(query: LinkQuery): LinkExpression[];
    /** Convenience function to get the target of the first link that matches the given query
     * This makes sense when the query is expected to return only one link
     * and the target of that link is what you are looking for.
     */
    getSingleTarget(query: LinkQuery): string | void;
}
export declare class PerspectiveInput {
    links: LinkExpressionInput[];
}
export declare class PerspectiveUnsignedInput {
    links: LinkInput[];
    constructor(links?: LinkInput[]);
    static fromLink(link: Link): PerspectiveUnsignedInput;
}
declare const PerspectiveExpression_base: any;
export declare class PerspectiveExpression extends PerspectiveExpression_base {
}
export {};
