import { UiNode, UiNodeAnchorAttributes, UiNodeAttributes, UiNodeImageAttributes, UiNodeInputAttributes, UiNodeScriptAttributes, UiNodeTextAttributes } from '@ory/client';
/**
 * Returns the node's label.
 *
 * @param node
 * @return label
 */
export declare const getNodeLabelText: (node: UiNode) => string;
/**
 * A TypeScript type guard for nodes of the type <a>
 *
 * @param attrs
 */
export declare function isUiNodeAnchorAttributes(attrs: UiNodeAttributes): attrs is UiNodeAnchorAttributes & {
    node_type: "a";
};
/**
 * A TypeScript type guard for nodes of the type <img>
 *
 * @param attrs
 */
export declare function isUiNodeImageAttributes(attrs: UiNodeAttributes): attrs is UiNodeImageAttributes & {
    node_type: "img";
};
/**
 * A TypeScript type guard for nodes of the type <input>
 *
 * @param attrs
 */
export declare function isUiNodeInputAttributes(attrs: UiNodeAttributes): attrs is UiNodeInputAttributes & {
    node_type: "input";
};
/**
 * A TypeScript type guard for nodes of the type <span>{text}</span>
 *
 * @param attrs
 */
export declare function isUiNodeTextAttributes(attrs: UiNodeAttributes): attrs is UiNodeTextAttributes & {
    node_type: "text";
};
/**
 * A TypeScript type guard for nodes of the type <script>
 *
 * @param attrs
 */
export declare function isUiNodeScriptAttributes(attrs: UiNodeAttributes): attrs is UiNodeScriptAttributes & {
    node_type: "script";
};
/**
 * Returns a node's ID.
 *
 * @param attributes
 */
export declare function getNodeId({ attributes }: UiNode): string;
/**
 * Return the node input attribute type
 * In <input> elements we have a variety of types, such as text, password, email, etc.
 * When the attribute is null or the `type` attribute is not present, we assume it has no defined type.
 * @param attr
 * @returns type of node
 */
export declare const getNodeInputType: (attr?: UiNodeAttributes) => "" | import('@ory/client').UiNodeInputAttributesTypeEnum;
export interface FilterNodesByGroups {
    nodes: UiNode[];
    groups?: string[] | string;
    withoutDefaultGroup?: boolean;
    attributes?: string[] | string;
    withoutDefaultAttributes?: boolean;
    excludeAttributeTypes?: string[] | string;
    excludeAttributeValues?: string[] | string;
}
/**
 * Filters nodes by their groups and attributes.
 * If no filtering options are specified, all nodes are returned.
 * Will always add default nodes unless `withoutDefaultGroup` is true.
 * Will always add default attributes unless `withoutDefaultAttributes` is true.
 * @param {Object} filterNodesByGroups - An object containing the nodes and the filtering options.
 * @param {Array<UiNode>} filterNodesByGroups.nodes - An array of nodes.
 * @param {Array<UiNodeGroupEnum | string> | string} filterNodesByGroups.groups - An array or comma seperated strings of groups to filter by.
 * @param {boolean} filterNodesByGroups.withoutDefaultGroup - If true, will not add default nodes under the 'default' category.
 * @param {Array<UiNodeInputAttributesTypeEnum | string> | string} filterNodesByGroups.attributes - An array or comma seperated strings of attributes to filter by.
 * @param {boolean} filterNodesByGroups.withoutDefaultAttributes - If true, will not add default attributes such as 'hidden' and 'script'.
 */
export declare const filterNodesByGroups: ({ nodes, groups, withoutDefaultGroup, attributes, withoutDefaultAttributes, excludeAttributeTypes, excludeAttributeValues, }: FilterNodesByGroups) => UiNode[];
export declare const getNodeInputValue: (attr?: UiNodeAttributes) => string;
//# sourceMappingURL=index.d.ts.map