@class NSMutableDictionary, UICollectionViewLayoutAttributes, NSIndexPath, PUSectionedGridLayoutData, NSDictionary, PULayoutSampledSectioning, NSString, NSSet, PUSectionedGridLayoutInvalidationContext, NSIndexSet, NSPointerArray, PULayoutAnimationsHelper, NSArray, NSNumber, UICollectionViewLayout; @protocol PUSectionedGridLayoutDelegate, PUCollectionViewLayoutTransitioningDelegate; @interface PUSectionedGridLayout : UICollectionViewLayout <PUReorderableLayout, PUPhotosGridTransitioningLayout, PUCollectionViewLayoutDelegating, PUGridLayoutProtocol> { BOOL _layoutDataIsValid; BOOL _sectioningDataIsValid; BOOL _samplingDataIsValid; struct CGSize { double width; double height; } _contentSize; UICollectionViewLayoutAttributes *_globalFooterAttributes; NSSet *_supplementaryViewKinds; long long _totalRealSections; long long _totalVisualSections; NSPointerArray *_realToVisualSections; NSArray *_visualToRealSectionIndexes; NSPointerArray *_samplingHelpersByVisualSection; double *_visualSectionStartYs; long long *_realSectionItemCounts; long long *_visualSectionMaxRows; NSArray *_cachedNonHeaderLayoutAttributesInRect; struct CGRect { struct CGPoint { double x; double y; } origin; struct CGSize { double width; double height; } size; } _cachedLayoutAttributesLastKnownRect; NSIndexSet *_deletedSections; NSSet *_deletedItemIndexPaths; BOOL _processingCollectionViewUpdates; NSIndexPath *_viewSizeTransitionAnchorItem; double _viewSizeTransitionAnchorItemNormalizedYOffset; BOOL _floatingHeadersLayoutIsValid; BOOL _hasFloatingHeaders; long long _floatingHeaderVisualSectionIndex; PUSectionedGridLayoutInvalidationContext *_cachedFloatingHeaderInvalidationContext; long long _cachedFloatingHeaderInvalidationContextNewVisualSection; NSDictionary *_transitionSectionInfosByTransitionSection; NSDictionary *_transitionSectionInfosByVisualSection; NSMutableDictionary *_axLargeTextSectionHeaderHeightByVisualSection; PUSectionedGridLayoutData *_layoutData; BOOL _isPreparingLayout; BOOL _delegateSupportsGroupedSections; BOOL _delegateSupportsAnchorItemForContentOffset; BOOL _delegateSupportsTargetContentOffset; BOOL _delegateSupportsTransitionAutoContentOffsetEnabled; BOOL _delegateSupportsFinalContentInsetForCurrentContentInset; BOOL _delegateSupportsDidInvalidateWithContext; BOOL _delegateSupportsAspectRatioForItemAtIndexPath; BOOL _delegateSupportsSectionHeaderHeightForVisualSection; BOOL _delegateSupportsAccessibilitySectionHeaderHeightForVisualSection; BOOL _delegateSupportsWillPrepareLayout; BOOL _usesRenderedStrips; NSIndexPath *_reorderingSourceIndexPath; NSIndexPath *_reorderingTargetIndexPath; NSIndexPath *_reorderingInsertedIndexPath; BOOL _transitionApplyingEffectiveContentOrigin; PULayoutAnimationsHelper *_transitionAnimationsHelper; id /* block */ _transitionAnimationEndCleanupBlock; } @property (nonatomic, setter=_setColumnsPerRow:) long long columnsPerRow; @property (weak, nonatomic) id<PUSectionedGridLayoutDelegate> delegate; @property (readonly, nonatomic) NSIndexPath *globalHeaderIndexPath; @property (readonly, nonatomic) UICollectionViewLayoutAttributes *globalHeaderAttributes; @property (readonly, nonatomic) NSIndexPath *globalFooterIndexPath; @property (readonly, nonatomic) PULayoutSampledSectioning *layoutSectioning; @property (nonatomic) struct CGSize { double width; double height; } interItemSpacing; @property (nonatomic) struct CGSize { double width; double height; } itemSize; @property (nonatomic) double sectionBottomPadding; @property (nonatomic) struct UIEdgeInsets { double top; double left; double bottom; double right; } sectionContentInset; @property (nonatomic) BOOL floatingSectionHeadersEnabled; @property (nonatomic) double globalHeaderHeight; @property (nonatomic) double globalFooterHeight; @property (retain, nonatomic) NSNumber *cachedDefaultGlobalFooterHeight; @property (nonatomic) BOOL dynamicLayoutEnabled; @property (copy, nonatomic) NSString *renderedStripsElementKind; @property (nonatomic) long long cropType; @property (nonatomic) double cropAmount; @property (nonatomic) BOOL usesRenderedStripTopExtendersForTransitions; @property (nonatomic) BOOL usesAspectItems; @property (nonatomic) struct CGPoint { double x; double y; } transitionEffectiveContentOrigin; @property (readonly, nonatomic) struct CGSize { double x0; double x1; } transitionActualContentSize; @property (nonatomic) BOOL transitionIsAnimated; @property (readonly, nonatomic) long long transitionAnchorColumnOffset; @property (copy, nonatomic) NSIndexPath *transitionExplicitAnchorItemIndexPath; @property (nonatomic) BOOL transitionAnchorShiftsColumns; @property (readonly, nonatomic) long long itemsPerRow; @property (readonly, nonatomic) long long numberOfVisualSections; @property (readonly, copy, nonatomic) NSIndexPath *transitionFirstVisibleRowVisualPath; @property (readonly, copy, nonatomic) NSIndexPath *transitionLastVisibleRowVisualPath; @property (readonly, nonatomic) UICollectionViewLayout *transitionLayout; @property (nonatomic) struct CGPoint { double x; double y; } transitionStartContentOffset; @property (readonly, nonatomic) struct CGPoint { double x; double y; } transitionEndContentOffset; @property (nonatomic) BOOL transitionZoomingOut; @property (readonly, nonatomic) BOOL transitionIsAppearing; @property (readonly) unsigned long long hash; @property (readonly) Class superclass; @property (readonly, copy) NSString *description; @property (readonly, copy) NSString *debugDescription; @property (weak, nonatomic) id<PUCollectionViewLayoutTransitioningDelegate> transitioningDelegate; @property (nonatomic) double globalTopPadding; @property (nonatomic) double globalBottomPadding; @property (copy, nonatomic) NSSet *hiddenItemIndexPaths; @property (copy, nonatomic) NSString *sectionHeaderElementKind; @property (nonatomic) BOOL sectionHeadersEnabled; @property (nonatomic) double sectionTopPadding; + (Class)invalidationContextClass; - (struct CGSize { double x0; double x1; })collectionViewContentSize; - (BOOL)shouldInvalidateLayoutForBoundsChange:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0; - (id)invalidationContextForBoundsChange:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0; - (void)invalidateLayoutWithContext:(id)a0; - (void)prepareLayout; - (id)layoutAttributesForSupplementaryViewOfKind:(id)a0 atIndexPath:(id)a1; - (id)layoutAttributesForElementsInRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0; - (id)finalLayoutAttributesForDisappearingItemAtIndexPath:(id)a0; - (id)init; - (id)layoutAttributesForItemAtIndexPath:(id)a0; - (void)dealloc; - (void)endReordering; - (id)initialLayoutAttributesForAppearingItemAtIndexPath:(id)a0; - (void).cxx_destruct; - (void)updateReorderingTargetIndexPath:(id)a0; - (void)prepareForTransitionFromLayout:(id)a0; - (void)prepareForAnimatedBoundsChange:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0; - (id /* block */)_animationForReusableView:(id)a0 toLayoutAttributes:(id)a1 type:(unsigned long long)a2; - (void)_didFinishLayoutTransitionAnimations:(BOOL)a0; - (void)_invalidateLayoutWithContext:(id)a0; - (BOOL)_supportsAdvancedTransitionAnimations; - (id)finalLayoutAttributesForDisappearingSupplementaryElementOfKind:(id)a0 atIndexPath:(id)a1; - (void)finalizeAnimatedBoundsChange; - (void)finalizeCollectionViewUpdates; - (void)finalizeLayoutTransition; - (id)initialLayoutAttributesForAppearingSupplementaryElementOfKind:(id)a0 atIndexPath:(id)a1; - (void)prepareForCollectionViewUpdates:(id)a0; - (void)prepareForTransitionToLayout:(id)a0; - (struct CGPoint { double x0; double x1; })targetContentOffsetForProposedContentOffset:(struct CGPoint { double x0; double x1; })a0; - (BOOL)_hasAccessibilityLargeText; - (void)_prepareLayoutIfNeeded; - (struct CGPoint { double x0; double x1; })_visibleRectOriginForScrollOffset:(struct CGPoint { double x0; double x1; })a0; - (void)beginReorderingItemAtIndexPath:(id)a0; - (long long)numberOfRealItemsInRealSection:(long long)a0; - (id)prepareForViewTransitionToSize:(struct CGSize { double x0; double x1; })a0; - (id)pu_layoutAttributesForElementClosestToPoint:(struct CGPoint { double x0; double x1; })a0 inRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a1 passingTest:(id /* block */)a2; - (void)_adjustGridTransitionLayoutAttributes:(id)a0 toOrFromGridLayout:(id)a1 outTargetRowExists:(BOOL *)a2 isAppearing:(BOOL)a3; - (void)_adjustItemLayoutAttributesForReordering:(id)a0; - (void)_adjustRenderedStripLayoutAttributes:(id)a0 toOrFromGridLayout:(id)a1 isAppearing:(BOOL)a2; - (void)_adjustSectionHeaderLayoutAttributes:(id)a0 toOrFromGridLayout:(id)a1 isAppearing:(BOOL)a2; - (void)_clearLayoutCaches; - (void)_clearRetainedCaches; - (void)_clearSamplingCaches; - (void)_clearSectioningCaches; - (struct CGPoint { double x0; double x1; })_currentVisibleRectOrigin; - (double)_delegateAccessibilitySectionHeaderHeightForSection:(long long)a0; - (void)_ensureRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0 inData:(id)a1 outDeltaOriginY:(double *)a2; - (BOOL)_ensureUpdatedLayoutData:(id)a0 isForward:(BOOL)a1 outDeltaOriginY:(double *)a2; - (void)_ensureVisualSection:(long long)a0 inData:(id)a1; - (void)_enumerateVisualItemFramesInRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0 usingBlock:(id /* block */)a1; - (struct UIEdgeInsets { double x0; double x1; double x2; double x3; })_finalContentInset; - (double)_finalSectionHeaderHeightForSection:(long long)a0; - (long long)_firstVisualItemIndexForRenderedStripIndex:(long long)a0; - (long long)_floatingHeaderVisualSectionForVisibleOrigin:(struct CGPoint { double x0; double x1; })a0; - (struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })_frameByAdjustingOffScreenEnteringFrame:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0 forRowAtVisualIndexPath:(struct PUSimpleIndexPath { long long x0; long long x1; })a1 transitionSectionInfo:(id)a2 toOrFromGridLayout:(id)a3 isAppearing:(BOOL)a4; - (id)_gridTransitionLayout; - (double)_heightOfSectionAtVisualIndex:(long long)a0; - (void)_invalidateFloatingHeadersLayout; - (void)_invalidateSupplementaryViewKinds; - (BOOL)_isSupportedSupplementaryViewKind:(id)a0; - (BOOL)_isTransitionForeignSupplementaryViewKind:(id)a0; - (struct PUSimpleIndexPath { long long x0; long long x1; })_itemVisualIndexPathAtPoint:(struct CGPoint { double x0; double x1; })a0; - (id)_layoutAttributesForItemAtVisualIndexPath:(struct PUSimpleIndexPath { long long x0; long long x1; })a0 realIndexPath:(id)a1 isMainRealItem:(BOOL)a2; - (id)_layoutAttributesForSupplementaryViewOfKind:(id)a0 forVisualSection:(long long)a1 supplementaryViewIndex:(long long)a2; - (long long)_nextVisualSectionForSupplementaryViewSection:(long long)a0 forward:(BOOL)a1; - (void)_prepareFloatingHeadersLayoutIfNeeded; - (void)_prepareForTransitionFromStackedLayout:(id)a0; - (void)_prepareForTransitionToOrFromGridLayout:(id)a0 isAppearing:(BOOL)a1; - (void)_prepareSamplingDataIfNeeded; - (void)_prepareSectioningDataIfNeeded; - (id)_realItemIndexPathClosestToPoint:(struct CGPoint { double x0; double x1; })a0 inRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a1 withTest:(id /* block */)a2; - (long long)_renderedStripIndexForSectionRowIndex:(long long)a0; - (double)_sectionHeaderHeightDeltaForSection:(long long)a0; - (double)_sectionWidth; - (double)_startYOfContentAtVisualSectionIndex:(long long)a0; - (double)_startYOfContentAtVisualSectionIndexWithDynamicLayout:(long long)a0; - (double)_startYOfVisualSectionAtIndex:(long long)a0; - (id)_supplementaryViewKinds; - (struct CGPoint { double x0; double x1; })_targetContentOffsetWithAnchorItemIndexPath:(id)a0 isRotation:(BOOL)a1 orTransitionFromLayout:(id)a2 keepAnchorStable:(BOOL)a3; - (struct PUGridCoordinates { long long x0; long long x1; })_targetTransitionGridCoordsForGridCoords:(struct PUGridCoordinates { long long x0; long long x1; })a0 atVisualSection:(long long)a1 transitionSectionInfo:(id)a2; - (struct CATransform3D { double x0; double x1; double x2; double x3; double x4; double x5; double x6; double x7; double x8; double x9; double x10; double x11; double x12; double x13; double x14; double x15; })_transformToConvertRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0 intoRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a1 referenceCenter:(struct CGPoint { double x0; double x1; })a2; - (void)_updateHasFloatingHeaders; - (struct PUSimpleIndexPath { long long x0; long long x1; })_visualIndexPathForTransitionCoordinates:(struct PUGridCoordinates { long long x0; long long x1; })a0 inTransitionSection:(long long)a1; - (struct PUSimpleIndexPath { long long x0; long long x1; })_visualRowPathForTransitionRowIndex:(long long)a0 transitionSectionInfo:(id)a1; - (long long)_visualSectionAtPoint:(struct CGPoint { double x0; double x1; })a0; - (BOOL)_visualSectionsMatchTransitionSectionsToOrFromLayout:(id)a0; - (void)adjustEffectiveContentOriginForTransitionEndContentOffset:(struct CGPoint { double x0; double x1; })a0; - (id)assetIndexPathsForElementsInRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0; - (void)beginInsertingItemAtIndexPath:(id)a0; - (void)endInsertingItem; - (void)enumerateItemIndexPathsForVisualSection:(long long)a0 inVisualItemRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; })a1 usingBlock:(id /* block */)a2; - (void)enumerateRealSectionsForVisualSection:(long long)a0 usingBlock:(id /* block */)a1; - (void)finalizeViewTransitionToSize; - (long long)firstPreparedVisualSection; - (struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })frameForItemAtGridCoordinates:(struct PUGridCoordinates { long long x0; long long x1; })a0 inTransitionSection:(long long)a1; - (struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })frameForItemAtGridCoordinates:(struct PUGridCoordinates { long long x0; long long x1; })a0 inVisualSection:(long long)a1; - (struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })frameForItemAtGridCoordinates:(struct PUGridCoordinates { long long x0; long long x1; })a0 inVisualSection:(long long)a1 indexPath:(id)a2; - (struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })frameForSectionHeaderAtVisualSection:(long long)a0; - (struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })frameForSectionHeaderOfRealItem:(id)a0; - (void)getVisualSectionIndex:(long long *)a0 visualItemRange:(struct _NSRange { unsigned long long x0; unsigned long long x1; } *)a1 forRenderStripAtIndexPath:(id)a2; - (struct PUGridCoordinates { long long x0; long long x1; })gridCoordinatesInSectionForItemAtVisualIndex:(long long)a0; - (struct PUGridCoordinates { long long x0; long long x1; })gridCoordinatesInTransitionSectionForItemAtIndexPath:(id)a0; - (struct PUGridCoordinates { long long x0; long long x1; })gridCoordinatesInVisualSectionForItemAtIndexPath:(id)a0; - (BOOL)hasItemAtGridCoordinates:(struct PUGridCoordinates { long long x0; long long x1; })a0 inTransitionSection:(long long)a1; - (void)invalidateLayoutForMetricsChange; - (void)invalidateLayoutForVerticalScroll; - (id)itemIndexPathAtCenterOfRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0; - (id)itemIndexPathAtPoint:(struct CGPoint { double x0; double x1; })a0; - (id)itemIndexPathClosestToPoint:(struct CGPoint { double x0; double x1; })a0; - (long long)lastPreparedVisualSection; - (struct CGSize { double x0; double x1; })layoutItemSizeForColumn:(long long)a0; - (id)mainRealIndexPathAtGridCoordinates:(struct PUGridCoordinates { long long x0; long long x1; })a0 inTransitionSection:(long long)a1; - (long long)mainRealSectionForVisualSection:(long long)a0; - (id)maxItemIndexPathAbovePoint:(struct CGPoint { double x0; double x1; })a0; - (id)maxItemIndexPathLeftOfPoint:(struct CGPoint { double x0; double x1; })a0; - (long long)maximumNumberOfItemsInVisualSection:(long long)a0 withNumberOfRealItems:(long long)a1 forSectioning:(id)a2; - (long long)numberOfColumnsForWidth:(double)a0; - (long long)numberOfContiguousRowsInTransitionSection:(long long)a0; - (long long)numberOfItemsInRealSection:(long long)a0 forSectioning:(id)a1; - (long long)numberOfRealItemsInVisualSection:(long long)a0; - (long long)numberOfRealSections; - (long long)numberOfRealSectionsForSectioning:(id)a0; - (long long)numberOfRowsInVisualSection:(long long)a0; - (long long)numberOfVisualItemsInVisualSection:(long long)a0; - (long long)numberOfVisualSectionsForSectioning:(id)a0; - (id)pu_debugRows; - (id)realSectionsForVisualSection:(long long)a0 forSectioning:(id)a1; - (id)reorderedIndexPath:(id)a0; - (void)setIsPreparingLayout:(BOOL)a0; - (BOOL)shouldHideVisualSection:(long long)a0; - (id)supplementaryViewIndexPathForVisualSection:(long long)a0 supplementaryViewItemIndex:(long long)a1; - (struct CGPoint { double x0; double x1; })targetContentOffsetForTransitionFromGridLayout:(id)a0; - (struct CGPoint { double x0; double x1; })targetContentOffsetForViewSizeTransitionContext:(id)a0; - (struct PUGridCoordinates { long long x0; long long x1; })targetTransitionGridCoordsForGridCoords:(struct PUGridCoordinates { long long x0; long long x1; })a0 atVisualSection:(long long)a1 outTransitionSection:(long long *)a2; - (id)targetTransitionRealIndexPathForIndexPath:(id)a0; - (id)transitionAnchorIndexPathForTransitionSection:(long long)a0; - (id)transitionSectionsInRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0 toOrFromGridLayout:(id)a1; - (struct PUGridCoordinates { long long x0; long long x1; })visualGridCoordsForTransitionGridCoords:(struct PUGridCoordinates { long long x0; long long x1; })a0 atTransitionSection:(long long)a1 outVisualSection:(long long *)a2; - (long long)visualIndexForItemAtGridCoordinates:(struct PUGridCoordinates { long long x0; long long x1; })a0; - (struct _NSRange { unsigned long long x0; unsigned long long x1; })visualRowsInRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0 inVisualSection:(long long)a1 totalVisualSectionRows:(long long *)a2; - (long long)visualSectionForHeaderIndexPath:(id)a0; - (long long)visualSectionForRealSection:(long long)a0; - (long long)visualSectionForSupplementaryViewIndexPath:(id)a0; - (struct _NSRange { unsigned long long x0; unsigned long long x1; })visualSectionsInRect:(struct CGRect { struct CGPoint { double x0; double x1; } x0; struct CGSize { double x0; double x1; } x1; })a0; @end