import { Result } from 'defekt';
import { RelationTuple } from './relation-tuple';
import { RelationTupleSyntaxError } from './errors/relation-tuple-syntax.error';
import { UnknownError } from './errors/unknown.error';
/**
 * Parses the given string to a {@link RelationTuple}.
 * str syntax:
 * ```
 * <relation-tuple> ::= <object>'#'relation'@'<subject> | <object>'#'relation'@('<subject>')'
 * <object> ::= namespace':'object_id
 * <subject> ::= subject_id | <subject_set>
 * <subject_set> ::= <object>'#'relation
 * ```
 * example: `object#relation@subject`
 * The characters `:@#()` are reserved for syntax use only (=> forbidden in values)
 *
 * @param str
 * @return The parsed {@link RelationTuple} or {@link RelationTupleSyntaxError} in case of an invalid string.
 */
export declare const parseRelationTuple: (str: string) => Result<RelationTuple, RelationTupleSyntaxError | UnknownError>;
