/*! @file GTMTVServiceConfiguration.h
    @brief GTMAppAuth SDK
    @copyright
        Copyright 2016 Google Inc.
    @copydetails
        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.
 */

#ifndef GTMAPPAUTH_USER_IMPORTS
#import <AppAuth/AppAuth.h>
#else // GTMAPPAUTH_USER_IMPORTS
#import "AppAuth.h"
#endif // GTMAPPAUTH_USER_IMPORTS

NS_ASSUME_NONNULL_BEGIN

/*! @brief Configuration for authorizing the user with the @c GTMTVAuthorizationService.
 */
@interface GTMTVServiceConfiguration : OIDServiceConfiguration

/*! @brief The TV authorization endpoint URI.
 */
@property(nonatomic, readonly) NSURL *TVAuthorizationEndpoint;

/*! @internal
    @brief Unavailable. Please use
        @c initWithAuthorizationEndpoint:TVAuthorizationEndpoint:tokenEndpoint:
 */
- (instancetype)init NS_UNAVAILABLE;

/*! @internal
    @brief Unavailable. Please use
        @c initWithAuthorizationEndpoint:TVAuthorizationEndpoint:tokenEndpoint:
 */
- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint
                                tokenEndpoint:(NSURL *)tokenEndpoint NS_UNAVAILABLE;

/*! @internal
    @brief Unavailable. Please use
        @c initWithAuthorizationEndpoint:TVAuthorizationEndpoint:tokenEndpoint:
 */
- (instancetype)initWithDiscoveryDocument:(OIDServiceDiscovery *)discoveryDocument NS_UNAVAILABLE;

/*! @brief Designated initializer.
    @param authorizationEndpoint The authorization endpoint URI.
    @param TVAuthorizationEndpoint The TV authorization endpoint URI.
    @param tokenEndpoint The token exchange and refresh endpoint URI.
 */
- (instancetype)initWithAuthorizationEndpoint:(NSURL *)authorizationEndpoint
                      TVAuthorizationEndpoint:(NSURL *)TVAuthorizationEndpoint
                                tokenEndpoint:(NSURL *)tokenEndpoint NS_DESIGNATED_INITIALIZER;

@end

NS_ASSUME_NONNULL_END
