import { IElement, IPeriod, NameUseType } from 'fhirtypes/dist/r4';
import { HumanName } from '../../models';
import { IBuildable } from '../base/IBuildable';
import { UnderscoreKeys } from '../base/resource-type-map.interface';
import { ElementBuilder } from '../base/ElementBuilder';
type PrimitiveExtensionFields = keyof Pick<HumanName, UnderscoreKeys<HumanName>>;
interface IHumanNameBuilder extends IBuildable<HumanName> {
    setUse(value: NameUseType): this;
    setText(value: string): this;
    setFamily(value: string): this;
    addGiven(value: string): this;
    addPrefix(value: string): this;
    addSuffix(value: string): this;
    /**
     * Set period
     * @param value
     * @returns {HumanNameBuilder}
     */
    setPeriod(value: IPeriod): this;
}
export declare class HumanNameBuilder extends ElementBuilder implements IHumanNameBuilder {
    private readonly humanName;
    constructor();
    addPrimitiveExtension<T extends PrimitiveExtensionFields>(param: T, extension: T extends '_given' | '_prefix' | '_suffix' ? IElement[] : IElement): this;
    setUse(value: NameUseType): this;
    setText(value: string): this;
    setFamily(value: string): this;
    addGiven(value: string): this;
    addPrefix(value: string): this;
    addSuffix(value: string): this;
    /**
     * Set period
     * @param value
     * @returns {HumanNameBuilder}
     */
    setPeriod(value: IPeriod): this;
    build(): HumanName;
}
export {};
