//
// Copyright 2018 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

/**
 *  Umbrella header for public GTX APIs.
 */
#import <UIKit/UIKit.h>

//! Project version number for GTXiLib.
FOUNDATION_EXPORT double GTXiLibVersionNumber;

//! Project version string for GTXiLib.
FOUNDATION_EXPORT const unsigned char GTXiLibVersionString[];

#import <GTXiLib/GTXAccessibilityTree.h>
#import <GTXiLib/GTXAnalytics.h>
#import <GTXiLib/GTXAnalyticsUtils.h>
#import <GTXiLib/GTXAssertions.h>
#import <GTXiLib/GTXiLibCore.h>
#import <GTXiLib/GTXCheckBlock.h>
#import <GTXiLib/GTXChecksCollection.h>
#import <GTXiLib/GTXCommon.h>
#import <GTXiLib/GTXBlacklistFactory.h>
#import <GTXiLib/GTXErrorReporter.h>
#import <GTXiLib/GTXImageRGBAData.h>
#import <GTXiLib/GTXImageAndColorUtils.h>
#import <GTXiLib/GTXLogging.h>
#import <GTXiLib/GTXPluginXCTestCase.h>
#import <GTXiLib/GTXTestEnvironment.h>
#import <GTXiLib/GTXToolKit.h>
#import <GTXiLib/GTXTestSuite.h>
#import <GTXiLib/NSError+GTXAdditions.h>
#import <GTXiLib/UIColor+GTXAdditions.h>
