# Copyright (C) 2023 Cochise Ruhulessin
#
# All rights reserved. No warranty, explicit or implicit, provided. In
# no event shall the author(s) be liable for any claim or damages.
#
# 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.
import functools
from typing import Literal

from .baseclient import BaseClient
from oauthx.lib.models.grant import Grant


class PublicClient(BaseClient):
    credential: Literal[None] = None
    token_endpoint_auth_method: Literal['none'] = 'none'

    @functools.singledispatchmethod
    async def authenticate(self, grant: Grant) -> bool:
        raise NotImplementedError

    def can_encrypt(self) -> bool:
        return False

    def is_confidential(self) -> bool:
        return False