hunk.code_window: import { ObservableInput, SubjectLike } from '../types';
   import { Subject } from '../Subject';
   import { Subscription } from '../Subscription';
   import { Observable } from '../Observable';
   import { defer } from './defer';
  
hunk.labels: replace keep keep keep keep keep
hunk.after_edit: import { Connectable, ObservableInput, SubjectLike } from '../types';
  
hunk.file_path: src/internal/observable/connectable.ts
hunk.type: replace
file: import { CompleteNotification, NextNotification, ErrorNotification } from './types';
  
  /**
   * A completion object optimized for memory use and created to be the
   * same "shape" as other notifications in v8.
   * @internal
   */
  export const COMPLETE_NOTIFICATION = (() => createNotification('C', undefined, undefined) as CompleteNotification)();
  
  /**
   * Internal use only. Creates an optimized error notification that is the same "shape"
   * as other notifications.
   * @internal
   */
  export function errorNotification(error: any): ErrorNotification {
    return createNotification('E', undefined, error) as any;
  }
  
  /**
   * Internal use only. Creates an optimized next notification that is the same "shape"
   * as other notifications.
   * @internal
   */
  export function nextNotification<T>(value: T) {
    return createNotification('N', value, undefined) as NextNotification<T>;
  }
  
  /**
   * Ensures that all notifications created internally have the same "shape" in v8.
   *
   * TODO: This is only exported to support a crazy legacy test in `groupBy`.
   * @internal
   */
  export function createNotification(kind: 'N' | 'E' | 'C', value: any, error: any) {
    return {
      kind,
      value,
      error,
    };
  }
  