import { OperatorType, WitnessType, ContextType } from "../common.js";
import type { PermissionFilter, PermissionInfoType } from "../call/permission.js";
import type { GuardInstructFilterOptions, GuardItem } from "../call/guard-ins.js";
import type { ENTRYPOINT } from "../../client/network.js";
interface ConstantItem {
    name: string;
    value: string | number;
    description: string;
}
export declare const INFO_CONSTANT: {
    type: string;
    constants: ConstantItem[];
    value_types: ConstantItem[];
    object_types: ConstantItem[];
    guard_instructions: {
        name: string | OperatorType;
        value: string | OperatorType;
        description: string;
    }[];
    guard_contexts: {
        name: string | ContextType;
        value: string | ContextType;
        description: string;
    }[];
    guard_witnesses: {
        name: string | WitnessType;
        value: string | WitnessType;
        description: string;
    }[];
};
export type ProtocolInfoQuery = {
    info: "constants";
} | {
    info: "built-in permissions";
    filter?: PermissionFilter;
} | {
    info: "guard instructions";
    filter?: GuardInstructFilterOptions;
} | {
    info: "current network";
} | {
    info: "value types";
};
export type ProtocolInfoResult = {
    info: "constants";
    result: ConstantItem[];
} | {
    info: "built-in permissions";
    result: PermissionInfoType[];
} | {
    info: "guard instructions";
    result: GuardItem[];
} | {
    info: "current network";
    result: ENTRYPOINT;
} | {
    info: "value types";
    result: ConstantItem[];
};
export declare function queryProtocolInfo(query: ProtocolInfoQuery): Promise<ProtocolInfoResult>;
export declare function queryPermissions(filter?: PermissionFilter): PermissionInfoType[];
export {};
