@class NSHashTable, NSString, TTVectorMultiTimestamp, NSUUID, CRTTCompatibleDocument, NSMutableAttributedString, NSObject; @protocol TTMergeableStringDelegate; @interface TTMergeableString : NSObject <CRDataType> { struct vector<TopoSubstring *, std::allocator<TopoSubstring *>> { struct TopoSubstring **__begin_; struct TopoSubstring **__end_; struct __compressed_pair<TopoSubstring **, std::allocator<TopoSubstring *>> { struct TopoSubstring **__value_; } __end_cap_; } _startNodes; struct vector<TopoSubstring *, std::allocator<TopoSubstring *>> { struct TopoSubstring **__begin_; struct TopoSubstring **__end_; struct __compressed_pair<TopoSubstring **, std::allocator<TopoSubstring *>> { struct TopoSubstring **__value_; } __end_cap_; } _endNodes; struct vector<TopoSubstring *, std::allocator<TopoSubstring *>> { struct TopoSubstring **__begin_; struct TopoSubstring **__end_; struct __compressed_pair<TopoSubstring **, std::allocator<TopoSubstring *>> { struct TopoSubstring **__value_; } __end_cap_; } _orderedSubstrings; unsigned int _unserializedClock; unsigned long long _editCount; BOOL _cacheInvalid; id /* block */ _updateRangeBlock; } @property (retain, nonatomic) CRTTCompatibleDocument *document; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; @property (retain, nonatomic) TTVectorMultiTimestamp *timestamp; @property (nonatomic) BOOL hasLocalChanges; @property (retain, nonatomic) NSUUID *replicaUUID; @property (retain, nonatomic) NSMutableAttributedString *attributedString; @property (readonly, nonatomic) unsigned long long replicaTextClock; @property (readonly, nonatomic) unsigned long long replicaStyleClock; @property (weak, nonatomic) NSObject<TTMergeableStringDelegate> *delegate; @property (readonly, nonatomic) NSHashTable *objectsNeedingUpdatedRanges; + (id)unserialisedReplicaID; - (void)insertString:(id)a0 atIndex:(unsigned long long)a1; - (void)invalidateCache; - (id)init; - (void)replaceCharactersInRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a0 withAttributedString:(id)a1; - (void)dealloc; - (void)endEditing; - (void)walkGraph:(id /* block */)a0; - (id)serialize; - (unsigned long long)length; - (id)tombstone; - (void)realizeLocalChangesIn:(id)a0; - (void)replaceCharactersInRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a0 withString:(id)a1; - (id).cxx_construct; - (id)deltaSince:(id)a0 in:(id)a1; - (void)deleteCharactersInRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a0; - (id)string; - (void)beginEditing; - (void).cxx_destruct; - (void)updateCache; - (void)mergeWith:(id)a0; - (BOOL)isEqual:(id)a0; - (id)copyWithZone:(struct _NSZone { } *)a0; - (void)insertAttributedString:(id)a0 atIndex:(unsigned long long)a1; - (id)characterRangesForSelection:(id)a0; - (BOOL)check:(id *)a0; - (unsigned long long)mergeWithString:(id)a0; - (BOOL)selection:(id)a0 wasModifiedAfter:(id)a1; - (id)selectionForCharacterRanges:(id)a0 selectionAffinity:(unsigned long long)a1; - (BOOL)canMergeString:(id)a0; - (id)replicaUUIDForCharacterAtIndex:(unsigned long long)a0; - (id)dotDescription:(unsigned long long)a0; - (void)updateTopoIDRange:(struct TopoIDRange { struct TopoID { id x0; unsigned int x1; } x0; unsigned int x1; })a0 toNewRangeID:(struct TopoIDRange { struct TopoID { id x0; unsigned int x1; } x0; unsigned int x1; })a1; - (void)_testSetTextTimestamp:(unsigned long long)a0; - (id)characterRangesForSelection:(id)a0 selectedSubstringsBlock:(id /* block */)a1; - (void)checkTimestampLogStyleErrors:(BOOL)a0; - (void)cleanupObjectsNeedingUpdatedRanges; - (void)coalesce; - (void)deleteSubstrings:(void *)a0 withCharacterRanges:(void *)a1; - (void)dumpMergeData:(id)a0; - (void *)endNodes; - (void)enumerateRangesModifiedAfter:(id)a0 usingBlock:(id /* block */)a1; - (void)enumerateSubstrings:(id /* block */)a0; - (void)generateIdsForLocalChanges; - (void)generateIdsForLocalChangesSafeForSharedTimestamp:(BOOL)a0; - (unsigned long long)getCharacterIndexForCharID:(struct TopoID { id x0; unsigned int x1; })a0; - (void)getCharacterRanges:(void *)a0 forSubstrings:(void *)a1; - (void *)getSubstringBeforeTopoID:(struct TopoID { id x0; unsigned int x1; })a0; - (void)getSubstrings:(void *)a0 forCharacterRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a1; - (void)getSubstrings:(void *)a0 forTopoIDRange:(struct TopoIDRange { struct TopoID { id x0; unsigned int x1; } x0; unsigned int x1; })a1; - (void)getSubstrings:(void *)a0 inOrderedSubstrings:(void *)a1 forCharacterRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a2; - (BOOL)graphIsEqual:(id)a0; - (id)i_saveDeltasSinceTimestamp:(id)a0 toArchive:(void *)a1; - (id)initWithArchive:(const void *)a0 andReplicaID:(id)a1; - (id)initWithArchive:(const void *)a0 andReplicaID:(id)a1 andSharedTimestamp:(id)a2; - (id)initWithArchive:(const void *)a0 andReplicaID:(id)a1 withOrderedSubstrings:(void *)a2; - (id)initWithArchive:(const void *)a0 andReplicaID:(id)a1 withOrderedSubstrings:(void *)a2 timestamp:(id)a3; - (id)initWithData:(id)a0 andReplicaID:(id)a1; - (id)initWithReplicaID:(id)a0; - (id)initWithReplicaID:(id)a0 asFragment:(BOOL)a1; - (struct TopoIDRange { struct TopoID { id x0; unsigned int x1; } x0; unsigned int x1; })insertAttributedString:(id)a0 after:(void *)a1 before:(void *)a2; - (BOOL)isFragment; - (unsigned long long)mergeWithString:(id)a0 mergeTimestamps:(BOOL)a1; - (void)moveRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a0 toIndex:(unsigned long long)a1; - (void *)orderedSubstrings; - (void)resetLocalReplicaClocksToTimestampValues; - (void)saveDeltaSinceTimestamp:(id)a0 toArchive:(void *)a1; - (void)saveSubstrings:(void *)a0 archiveSet:(void *)a1 linkSet:(void *)a2 archivedString:(id *)a3 toArchive:(void *)a4; - (void)saveToArchive:(void *)a0; - (id)selectionForCharacterRanges:(id)a0; - (id)serializeDeltaSinceTimestamp:(id)a0; - (BOOL)shouldInvalidateCachedSubstringsWithTimestamp:(id)a0; - (void)sortSplitNodes; - (void *)splitTopoSubstring:(void *)a0 atIndex:(unsigned int)a1; - (void *)startNodes; - (long long)substring:(void *)a0 modifiedAfter:(id)a1; - (BOOL)textEitherSideOfSelectionAnchor:(struct TopoID { id x0; unsigned int x1; })a0 wasModifiedAfter:(id)a1; - (void)traverseUnordered:(id /* block */)a0; - (void)updateAttributedStringAfterMerge; - (void)updateClock; - (void)updateSubstringIndexes; - (void)updateTimestampsInRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a0; @end