@class NSMutableDictionary, UIImageView, ETKissMessage, ETAngerMessage, UITapGestureRecognizer, AVPlayerLayer, UIColor, UIView, NSString, UILongPressGestureRecognizer, ETTapMessage, ETHeartbeatMessage, NSTimer, NSMutableSet, DTSSceneView, ETMessage, UITouch, SKScene, ETGLSketchView; @protocol ETMessageTimeSource, ETCanvasViewDelegate; @interface ETCanvasView : UIView <ETMessageDelegate, UIGestureRecognizerDelegate> { NSMutableSet *_playingMessages; ETGLSketchView *_currentSketchView; ETTapMessage *_currentTaps; ETHeartbeatMessage *_currentHeartbeat; NSTimer *_heartbeatDurationTimer; UILongPressGestureRecognizer *_heartbeatRecognizer; struct CGPoint { double x; double y; } _heartbeatStartCenter; double _lastActivityTimestamp; double _touchesBeganTimestamp; NSTimer *_sendMessageTimer; NSTimer *_idleTimer; BOOL _setAlwaysPaused; unsigned short _messageType; struct CGPoint { double x; double y; } _lastPt; UITouch *_drawingTouch; BOOL _drawingTouchStartedStroke; double _drawingTouchMovedDistance; struct CGRect { struct CGPoint { double x; double y; } origin; struct CGSize { double width; double height; } size; } _ignoredTouchesRect; BOOL _didIgnoreTouchesBegan; BOOL _ignoreTouchesUntilAllTouchesEnded; NSMutableSet *_touchesDown; NSMutableDictionary *_messageIdentifierToDoodleView; UITapGestureRecognizer *_tapRecognizer; NSTimer *_fastTapAllowableMovementTimer; double _lastFastTapTimestamp; UITapGestureRecognizer *_kissRecognizer; ETKissMessage *_currentKissMessage; UILongPressGestureRecognizer *_angerRecognizer; ETAngerMessage *_currentAnger; NSTimer *_angerDurationLimitTimer; double _wispDelay; BOOL _sketchDidReachSizeLimit; SKScene *_scene; DTSSceneView *_sceneView; UIImageView *_photoView; UIView *_videoView; AVPlayerLayer *_videoLayer; } @property (weak, nonatomic) id<ETCanvasViewDelegate> canvasDelegate; @property (weak, nonatomic) id<ETMessageTimeSource> timeSource; @property (retain, nonatomic) UIColor *drawingColor; @property (nonatomic) BOOL canComposeHeartbeat; @property (nonatomic) BOOL canComposeTap; @property (nonatomic) BOOL canComposeKiss; @property (nonatomic) BOOL canComposeAnger; @property (readonly, nonatomic) BOOL isComposing; @property (nonatomic) BOOL usesMediaAppearance; @property (retain, nonatomic) ETMessage *parentMessage; @property (nonatomic, getter=isPaused) BOOL paused; @property (nonatomic) BOOL useFastVerticalWisp; @property (nonatomic) BOOL angerUsesForceTouch; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; - (void)touchesCancelled:(id)a0 withEvent:(id)a1; - (void)willMoveToWindow:(id)a0; - (void)dealloc; - (void)traitCollectionDidChange:(id)a0; - (id)initWithFrame:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0; - (BOOL)gestureRecognizerShouldBegin:(id)a0; - (void)touchesBegan:(id)a0 withEvent:(id)a1; - (void).cxx_destruct; - (void)touchesEnded:(id)a0 withEvent:(id)a1; - (void)layoutSubviews; - (void)touchesMoved:(id)a0 withEvent:(id)a1; - (void)_tapRecognized:(id)a0; - (void)_updateVideoViewFrame; - (void)_sendHeartbeat; - (BOOL)_isTapTooRecentAfterKissGesture; - (BOOL)_sketchesPaused; - (BOOL)_tapsInProgress; - (void)_angerDurationLimitTimerFired; - (void)_angerRecognized:(id)a0; - (double)_angleOfRotationBetweenTwoFingers:(id)a0; - (void)_animateOutSketchView:(id)a0 withCompletion:(id /* block */)a1; - (BOOL)_areRecognizersTrackingMultipleFingers; - (BOOL)_canComposeExclusiveMessage; - (void)_checkForIdle; - (void)_clearDoodleViewForMessage:(id)a0; - (void)_clearSendMessageTimer; - (void)_configureAngerRecognizer; - (void)_createSketchViewWithColor:(id)a0 time:(double)a1 message:(id)a2; - (void)_doodleEndedWithTouches:(id)a0 cancelled:(BOOL)a1; - (void)_endMessage:(id)a0 withSend:(BOOL)a1; - (void)_fastTapAllowableMovementTimerFired; - (void)_heartbeatRecognized:(id)a0; - (void)_hideAnger; - (void)_hideHeartbeat; - (void)_hideHeartbeatTimerFired; - (void)_kissRecognized:(id)a0; - (struct CGPoint { double x0; double x1; })_normalizedGesturePoint:(id)a0; - (void)_sendAnger; - (void)_sendKiss; - (BOOL)_sendMessageTimerFired; - (void)_sendSketch; - (void)_sendTaps; - (void)_setIsComposingMessageOfType:(unsigned short)a0; - (void)_setSketchesPaused:(BOOL)a0; - (void)_showAngerAtPoint:(struct CGPoint { double x0; double x1; })a0; - (void)_showHeartbeatAtNormalizedPoint:(struct CGPoint { double x0; double x1; })a0 rotation:(double)a1; - (BOOL)_sketchInProgress; - (void)_startCheckForIdleTimer; - (void)_startDoodleMessageCompositionAtTime:(double)a0; - (void)_startFastTapAllowableMovementTimer; - (void)_startSendMessageTimer; - (void)_stopCheckForIdleTimer; - (void)_updatePhotoViewFrame; - (void)_updateRecognizersAtEndOfComposition; - (struct CGPoint { double x0; double x1; })_viewPointNormalizedInSceneSpace:(struct CGPoint { double x0; double x1; })a0; - (void)clearCanvasAnimated:(BOOL)a0; - (id)composedSketchMessage; - (void)endMessageComposition; - (void)handleDotAtX:(float)a0 Y:(float)a1 color:(id)a2 time:(double)a3 isRemote:(BOOL)a4; - (void)handlePanAtX:(float)a0 Y:(float)a1 color:(id)a2 time:(double)a3 state:(long long)a4 isRemote:(BOOL)a5; - (void)handleTapAtX:(float)a0 Y:(float)a1 color:(id)a2 time:(double)a3 isRemote:(BOOL)a4; - (void)hidePhoto; - (void)hideVideo; - (BOOL)isComposingHeartbeat; - (BOOL)isComposingSketch; - (void)messageDidStopPlaying:(id)a0; - (void)messageWillReachSizeLimit:(id)a0; - (void)messageWillStopPlaying:(id)a0; - (void)playMessage:(id)a0; - (void)playTestStrokeWithColor:(id)a0 duration:(double)a1; - (void)sendCurrentMessage; - (void)setAlwaysPaused:(BOOL)a0; - (void)setForceTouchEnabled:(BOOL)a0; - (void)showPhotoForImage:(id)a0; - (void)showVideoForPlayer:(id)a0; - (void)startDoodleMessageComposition; - (void)updateCurrentMessageWithHeartRate:(unsigned long long)a0; - (void)updateIgnoredTouchesRectForStatusBarSize:(struct CGSize { double x0; double x1; })a0; - (void)wispVisibleSketchViewsWithCompletion:(id /* block */)a0; @end