"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright 2021 The ChromiumOS Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _LoginMode:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _LoginModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_LoginMode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    LOGIN_MODE_UNSPECIFIED: _LoginMode.ValueType  # 0
    LOGIN_MODE_NO_LOGIN: _LoginMode.ValueType  # 1
    """restart Chrome but don't log in"""
    LOGIN_MODE_FAKE_LOGIN: _LoginMode.ValueType  # 2
    """fake login with no authentication"""
    LOGIN_MODE_GAIA_LOGIN: _LoginMode.ValueType  # 3
    """real network-based login using GAIA backend"""
    LOGIN_MODE_GUEST_LOGIN: _LoginMode.ValueType  # 4
    """sign in as ephemeral guest user"""

class LoginMode(_LoginMode, metaclass=_LoginModeEnumTypeWrapper):
    """LoginMode describes the user mode for the login."""

LOGIN_MODE_UNSPECIFIED: LoginMode.ValueType  # 0
LOGIN_MODE_NO_LOGIN: LoginMode.ValueType  # 1
"""restart Chrome but don't log in"""
LOGIN_MODE_FAKE_LOGIN: LoginMode.ValueType  # 2
"""fake login with no authentication"""
LOGIN_MODE_GAIA_LOGIN: LoginMode.ValueType  # 3
"""real network-based login using GAIA backend"""
LOGIN_MODE_GUEST_LOGIN: LoginMode.ValueType  # 4
"""sign in as ephemeral guest user"""
global___LoginMode = LoginMode

class _ArcMode:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _ArcModeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_ArcMode.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ARC_MODE_UNSPECIFIED: _ArcMode.ValueType  # 0
    ARC_MODE_DISABLED: _ArcMode.ValueType  # 1
    ARC_MODE_ENABLED: _ArcMode.ValueType  # 2
    ARC_MODE_SUPPORTED: _ArcMode.ValueType  # 3

class ArcMode(_ArcMode, metaclass=_ArcModeEnumTypeWrapper):
    """ArcMode describes how ARC is supported."""

ARC_MODE_UNSPECIFIED: ArcMode.ValueType  # 0
ARC_MODE_DISABLED: ArcMode.ValueType  # 1
ARC_MODE_ENABLED: ArcMode.ValueType  # 2
ARC_MODE_SUPPORTED: ArcMode.ValueType  # 3
global___ArcMode = ArcMode

@typing.final
class NewRequest(google.protobuf.message.Message):
    """NewRequest to login to Chrome with configurable features, arguments and GAIA
    credentials.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    @typing.final
    class Credentials(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        USERNAME_FIELD_NUMBER: builtins.int
        PASSWORD_FIELD_NUMBER: builtins.int
        GAIA_ID_FIELD_NUMBER: builtins.int
        CONTACT_FIELD_NUMBER: builtins.int
        PARENT_USERNAME_FIELD_NUMBER: builtins.int
        PARENT_PASSWORD_FIELD_NUMBER: builtins.int
        username: builtins.str
        """Username is the user name of a user account. It is typically an email
        address (e.g. example@gmail.com).
        """
        password: builtins.str
        """Password is the password of a user account."""
        gaia_id: builtins.str
        """GaiaId is a GAIA ID used on fake logins. If it is empty, an ID is
        generated from the user name. The field is ignored on other type of
        logins.
        """
        contact: builtins.str
        """Contact is an email address of a user who owns a test account.
        When logging in with a test account, its contact user may be
        notified of a login attempt and asked for approval.
        """
        parent_username: builtins.str
        """ParentUsername is the user name of a parent account. It is used to
        approve a login attempt when a child account is supervised by a
        parent account.
        """
        parent_password: builtins.str
        """ParentPassword is the pass of a parent account. It is used to approve
        a login attempt when a child account is supervised by a parent
        account.
        """
        def __init__(
            self,
            *,
            username: builtins.str = ...,
            password: builtins.str = ...,
            gaia_id: builtins.str = ...,
            contact: builtins.str = ...,
            parent_username: builtins.str = ...,
            parent_password: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["contact", b"contact", "gaia_id", b"gaia_id", "parent_password", b"parent_password", "parent_username", b"parent_username", "password", b"password", "username", b"username"]) -> None: ...

    LOGIN_MODE_FIELD_NUMBER: builtins.int
    CREDENTIALS_FIELD_NUMBER: builtins.int
    ENABLE_FEATURES_FIELD_NUMBER: builtins.int
    DISABLE_FEATURES_FIELD_NUMBER: builtins.int
    EXTRA_ARGS_FIELD_NUMBER: builtins.int
    KEEP_STATE_FIELD_NUMBER: builtins.int
    TRY_REUSE_SESSION_FIELD_NUMBER: builtins.int
    ARC_MODE_FIELD_NUMBER: builtins.int
    ENABLE_HID_SCREEN_ON_OOBE_FIELD_NUMBER: builtins.int
    SIGNIN_PROFILE_TEST_EXTENSION_ID_FIELD_NUMBER: builtins.int
    UNPACKED_EXTENSIONS_FIELD_NUMBER: builtins.int
    DONT_SKIP_OOBE_AFTER_LOGIN_FIELD_NUMBER: builtins.int
    REGION_FIELD_NUMBER: builtins.int
    login_mode: global___LoginMode.ValueType
    keep_state: builtins.bool
    """KeepState controls whether to keep existing user profiles."""
    try_reuse_session: builtins.bool
    """TryReuseSession controls whether to try reusing a current user session."""
    arc_mode: global___ArcMode.ValueType
    """Describes the availability of ARC, e.g. enabled / disabled."""
    enable_hid_screen_on_oobe: builtins.bool
    """If true, OOBE HID detection screen will not be skipped in OOBE."""
    signin_profile_test_extension_id: builtins.str
    """Used to pass |ui.signinProfileTestExtensionManifestKey| string.
    |ui.signinProfileTestExtensionManifestKey| is used to start chrome
    in OOBE, by passing the value into chrome options
    |LoadSigninProfileExtension|.
    """
    dont_skip_oobe_after_login: builtins.bool
    """If true, stay in OOBE after user login."""
    region: builtins.str
    """Region of a user session."""
    @property
    def credentials(self) -> global___NewRequest.Credentials:
        """Credentials is login credentials."""

    @property
    def enable_features(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """EnableFeatures contains extra Chrome features to enable."""

    @property
    def disable_features(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """DisableFeatures contains extra Chrome features to disable."""

    @property
    def extra_args(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """ExtraArgs returns extra arguments to pass to Chrome."""

    @property
    def unpacked_extensions(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Pass directories of unpacked extensions to be loaded by Ash Chrome."""

    def __init__(
        self,
        *,
        login_mode: global___LoginMode.ValueType = ...,
        credentials: global___NewRequest.Credentials | None = ...,
        enable_features: collections.abc.Iterable[builtins.str] | None = ...,
        disable_features: collections.abc.Iterable[builtins.str] | None = ...,
        extra_args: collections.abc.Iterable[builtins.str] | None = ...,
        keep_state: builtins.bool = ...,
        try_reuse_session: builtins.bool = ...,
        arc_mode: global___ArcMode.ValueType = ...,
        enable_hid_screen_on_oobe: builtins.bool = ...,
        signin_profile_test_extension_id: builtins.str = ...,
        unpacked_extensions: collections.abc.Iterable[builtins.str] | None = ...,
        dont_skip_oobe_after_login: builtins.bool = ...,
        region: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["credentials", b"credentials"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["arc_mode", b"arc_mode", "credentials", b"credentials", "disable_features", b"disable_features", "dont_skip_oobe_after_login", b"dont_skip_oobe_after_login", "enable_features", b"enable_features", "enable_hid_screen_on_oobe", b"enable_hid_screen_on_oobe", "extra_args", b"extra_args", "keep_state", b"keep_state", "login_mode", b"login_mode", "region", b"region", "signin_profile_test_extension_id", b"signin_profile_test_extension_id", "try_reuse_session", b"try_reuse_session", "unpacked_extensions", b"unpacked_extensions"]) -> None: ...

global___NewRequest = NewRequest

@typing.final
class UserHashResponse(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    USER_HASH_FIELD_NUMBER: builtins.int
    user_hash: builtins.str
    def __init__(
        self,
        *,
        user_hash: builtins.str = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["user_hash", b"user_hash"]) -> None: ...

global___UserHashResponse = UserHashResponse
