import * as OT from "./ottypes";
export declare const OpInsert: number;
export declare const OpDelete: number;
export declare const OpRetain: number;
export declare const OpCursor: number;
export declare const OpSet: number;
export declare const OpTmpRetain: number;
export declare type OTSingleArrayEdit = [number, number, any];
export declare type OTEdits = OTSingleArrayEdit[];
declare enum OTalignEdgesType {
    AlignForCompose = 0,
    AlignForTransform = 1
}
export interface IOTArrayLikeOperations {
    underlyingTypeName(): string;
    empty(): any;
    insert(t: any, pos: number, tInsert: any): any;
    delete(t: any, pos: number, len: number): any;
    set(t: any, pos: number, tSet: any): any;
    append(t: any, tAppend: any): any;
    substr(t: any, pos: number, len: number): any;
    substrOf(t: any, pos: number, len: number, tsub: any): any;
    constructN(n: number): any;
    equal(t1: any, t2: any): boolean;
    copy(t: any): any;
    length(t: any): number;
}
export declare class OTSingleArrayEditor {
    raw: IOTArrayLikeOperations;
    constructor(raw: IOTArrayLikeOperations);
    copy(a: OTSingleArrayEdit): OTSingleArrayEdit;
    isDelete(a: OTSingleArrayEdit): boolean;
    isNotDelete(a: OTSingleArrayEdit): boolean;
    isCursor(a: OTSingleArrayEdit): boolean;
    isNotCursor(a: OTSingleArrayEdit): boolean;
    isTmpRetain(a: OTSingleArrayEdit): boolean;
    isNotTmpRetainOrDelete(a: OTSingleArrayEdit): boolean;
    isTmpRetainOrDelete(a: OTSingleArrayEdit): boolean;
    isIgnore(a: OTSingleArrayEdit): boolean;
    isNoOp(a: OTSingleArrayEdit): boolean;
    isEqual(a1: OTSingleArrayEdit, a2: OTSingleArrayEdit): boolean;
    appendValue(a: OTSingleArrayEdit, s: any): void;
    empty(a: OTSingleArrayEdit): void;
    setIgnore(a: OTSingleArrayEdit): void;
    substr(aIn: OTSingleArrayEdit, pos: number, len: number): void;
    substrFromRaw(aIn: OTSingleArrayEdit, pos: number, len: number, s: any): void;
    copyWithSubstr(aIn: OTSingleArrayEdit, pos: number, len: number): OTSingleArrayEdit;
}
export declare class OTStringOperations implements IOTArrayLikeOperations {
    underlyingTypeName(): string;
    empty(): any;
    insert(a: any, pos: number, aInsert: any): any;
    delete(a: any, pos: number, len: number): any;
    set(a: any, pos: number, aSet: any): any;
    append(a: any, aAppend: any): any;
    substr(a: any, pos: number, len: number): any;
    substrOf(a: any, pos: number, len: number, aSub: any): any;
    constructN(n: number): any;
    equal(a1: any, a2: any): boolean;
    copy(a: any): any;
    length(a: any): number;
}
export declare class OTArrayOperations implements IOTArrayLikeOperations {
    underlyingTypeName(): string;
    empty(): any;
    insert(a: any, pos: number, aInsert: any): any;
    delete(a: any, pos: number, len: number): any;
    set(a: any, pos: number, aSet: any): any;
    append(a: any, aAppend: any): any;
    substr(a: any, pos: number, len: number): any;
    substrOf(a: any, pos: number, len: number, aSub: any): any;
    constructN(n: number): any;
    equal(a1: any, a2: any): boolean;
    copy(a: any): any;
    length(a: any): number;
}
export declare class OTArrayLikeResource extends OT.OTResourceBase {
    editor: OTSingleArrayEditor;
    constructor(ed: OTSingleArrayEditor, rname: string);
    copy(): OTArrayLikeResource;
    moveEdits(newA: OTEdits, iStart: number, iEnd?: number, pred?: (a: OTSingleArrayEdit) => boolean): void;
    equal(rhs: OTArrayLikeResource): boolean;
    effectivelyEqual(rhs: OTArrayLikeResource): boolean;
    basesConsistent(rhs: OTArrayLikeResource): void;
    originalLength(): number;
    finalLength(): number;
    apply(aValue: any): any;
    coalesce(bDeleteCursor?: boolean): void;
    fullyCoalesce(): void;
    invert(sInput: any): void;
    alignEdges(rhs: OTArrayLikeResource, st: OTalignEdgesType): void;
    getCursorCache(): any;
    compose(rhs: OTArrayLikeResource): void;
    performTransformReorder(bForceRetainBeforeInsert: boolean, newA: OTEdits, iBegin: number, iEnd: number): void;
    normalizeNewRetainsAfterTransform(bForceRetainBeforeInsert: boolean): void;
    transform(prior: OTArrayLikeResource, bPriorIsService: boolean): void;
    generateRandom(nInitial: number, clientID: string): void;
}
export declare class OTStringResource extends OTArrayLikeResource {
    static _editor: OTSingleArrayEditor;
    constructor(rname: string);
    static factory(rname: string): OTStringResource;
    copy(): OTStringResource;
}
export declare class OTArrayResource extends OTArrayLikeResource {
    static _editor: OTSingleArrayEditor;
    constructor(rname: string);
    static factory(rname: string): OTArrayResource;
    copy(): OTArrayResource;
}
export {};
