// Copyright 2021 Google LLC
//
// 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
//
// https://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.

#import <GoogleMobileAds/GoogleMobileAds.h>

NS_ASSUME_NONNULL_BEGIN

/**
 * Represent `GADAdapterInitializationState` for the Google Mobile Ads Plugin.
 *
 * Used to help serialize and pass  `GADAdapterInitializationState`  to Dart.
 */
typedef NS_ENUM(NSUInteger, FLTAdapterInitializationState) {
  FLTAdapterInitializationStateNotReady,
  FLTAdapterInitializationStateReady,
};

/**
 * Wrapper around `GADAdapterStatus` for the Google Mobile Ads Plugin.
 *
 * Used to help serialize and pass  `GADAdapterStatus`  to Dart.
 */
@interface FLTAdapterStatus : NSObject
@property NSNumber *state;
@property NSString *statusDescription;
@property NSNumber *latency;
- (instancetype)initWithStatus:(GADAdapterStatus *)status;
@end

/**
 * Wrapper around `GADInitializationStatus` for the Google Mobile Ads Plugin.
 *
 * Used to help serialize and pass  `GADInitializationStatus`  to Dart.
 */
@interface FLTInitializationStatus : NSObject
@property NSDictionary<NSString *, FLTAdapterStatus *> *adapterStatuses;
- (instancetype)initWithStatus:(GADInitializationStatus *)status;
@end

@interface FLTServerSideVerificationOptions : NSObject
@property(nonatomic, copy, nullable) NSString *userIdentifier;
@property(nonatomic, copy, nullable) NSString *customRewardString;
- (GADServerSideVerificationOptions *_Nonnull)
    asGADServerSideVerificationOptions;
@end
NS_ASSUME_NONNULL_END
