1<?php
2/*
3 * Copyright 2015 Google Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18namespace Google\Auth;
19
20/**
21 * An interface implemented by objects that can fetch auth tokens.
22 */
23interface FetchAuthTokenInterface
24{
25    /**
26     * Fetches the auth tokens based on the current state.
27     *
28     * @param callable $httpHandler callback which delivers psr7 request
29     * @return array<mixed> a hash of auth tokens
30     */
31    public function fetchAuthToken(callable $httpHandler = null);
32
33    /**
34     * Obtains a key that can used to cache the results of #fetchAuthToken.
35     *
36     * If the value is empty, the auth token is not cached.
37     *
38     * @return string a key that may be used to cache the auth token.
39     */
40    public function getCacheKey();
41
42    /**
43     * Returns an associative array with the token and
44     * expiration time.
45     *
46     * @return null|array<mixed> {
47     *     The last received access token.
48     *
49     *     @type string $access_token The access token string.
50     *     @type int $expires_at The time the token expires as a UNIX timestamp.
51     * }
52     */
53    public function getLastReceivedToken();
54}
55