import { RelationTuple } from '../relation-tuple';
import { ReplacementValues } from './replacement-values';
export declare type ReplaceableString<T extends ReplacementValues, R extends string | undefined = string> = (replacements: T) => R;
export interface SubjectSetWithReplacements<T extends ReplacementValues> {
    namespace: ReplaceableString<T>;
    object: ReplaceableString<T>;
    relation: ReplaceableString<T, string | undefined>;
}
export interface RelationTupleWithReplacements<T extends ReplacementValues> {
    namespace: ReplaceableString<T>;
    object: ReplaceableString<T>;
    relation: ReplaceableString<T>;
    subjectIdOrSet: ReplaceableString<T> | SubjectSetWithReplacements<T>;
}
export declare const applyReplacements: <T extends ReplacementValues>(relationTuple: RelationTupleWithReplacements<T>, replacements: T) => RelationTuple;
