import { DataAnnotation } from './DataAnnotation';
import { Property } from './Property';
import { PropertyDef } from "./PropertyDef";
import { Record } from './Record';
/**
 * An {@link Record} that manages two copies internally, a before and after, for 'undo' and comparison purposes.
 * An Record Represents a 'Record' or set of {@link Property} (names and values).
 * An Record may also have {@link Annotation}s (style annotations) that apply to the whole 'record'
 */
export declare class RecordBuffer implements Record {
    private _before;
    private _after?;
    static createRecordBuffer(id: string, before: Property[], after: Property[], annotations: DataAnnotation[]): RecordBuffer;
    constructor(_before: Record, _after?: Record);
    readonly after: Record;
    readonly annotations: DataAnnotation[];
    annotationsAtName(propName: string): DataAnnotation[];
    afterEffects(afterAnother?: Record): Record;
    readonly backgroundColor: string;
    backgroundColorFor(propName: string): string;
    readonly before: Record;
    readonly foregroundColor: string;
    foregroundColorFor(propName: string): string;
    readonly imageName: string;
    imageNameFor(propName: string): string;
    readonly imagePlacement: string;
    imagePlacementFor(propName: string): string;
    readonly isBoldText: boolean;
    isBoldTextFor(propName: string): boolean;
    isChanged(name: string): boolean;
    readonly isItalicText: boolean;
    isItalicTextFor(propName: string): boolean;
    readonly isPlacementCenter: boolean;
    isPlacementCenterFor(propName: string): boolean;
    readonly isPlacementLeft: boolean;
    isPlacementLeftFor(propName: string): boolean;
    readonly isPlacementRight: boolean;
    isPlacementRightFor(propName: string): boolean;
    readonly isPlacementStretchUnder: boolean;
    isPlacementStretchUnderFor(propName: string): boolean;
    readonly isPlacementUnder: boolean;
    isPlacementUnderFor(propName: string): boolean;
    readonly isUnderline: boolean;
    isUnderlineFor(propName: string): boolean;
    readonly id: string;
    readonly overrideText: string;
    overrideTextFor(propName: string): string;
    propAtIndex(index: number): Property;
    propAtName(propName: string): Property;
    readonly propCount: number;
    readonly propNames: string[];
    readonly properties: Property[];
    readonly propValues: any[];
    readonly type: string;
    setValue(name: string, value: any, propDef: PropertyDef): Property;
    readonly tipText: string;
    tipTextFor(propName: string): string;
    toRecord(): Record;
    toJSON(): any;
    valueAtName(propName: string): any;
}
