# from ..auth.oauth2 import TokenResponse as TokenResponse
from ..object.cloneable import Cloneable as Cloneable

# from ..object.collaboration_allowlist import CollaborationAllowlist as CollaborationAllowlist
# from ..object.collaboration_whitelist import CollaborationWhitelist as CollaborationWhitelist
# from ..object.events import Events as Events
# from ..object.search import Search as Search
# from ..object.trash import Trash as Trash
from ..object.user import User as User
from ..object.folder import Folder as Folder
from ..object.file import File as File
from ..auth.oauth2 import OAuth2 as OAuth2

# from ..pagination.limit_offset_based_object_collection import LimitOffsetBasedObjectCollection as LimitOffsetBasedObjectCollection
# from ..pagination.marker_based_object_collection import MarkerBasedObjectCollection as MarkerBasedObjectCollection
# from ..session.session import AuthorizedSession as AuthorizedSession, Session as Session
# from ..util.api_call_decorator import api_call as api_call
# from ..util.deprecation_decorator import deprecated as deprecated
# from ..util.shared_link import get_shared_link_header as get_shared_link_header
from _typeshed import Incomplete

class Client(Cloneable):
    _auth: OAuth2
    # unauthorized_session_class = Session
    # authorized_session_class = AuthorizedSession
    def __init__(self, oauth, session: Incomplete | None = None) -> None: ...
    @property
    def auth(self) -> OAuth2: ...
    @property
    def session(self): ...
    @property
    def translator(self): ...
    def folder(self, folder_id): ...
    def root_folder(self): ...
    def file(self, file_id): ...
    def file_version(self, version_id): ...
    def upload_session(self, session_id): ...
    def comment(self, comment_id): ...
    def user(self, user_id: str = "me") -> User: ...
    def invite(self, invite_id): ...
    def email_alias(self, alias_id): ...
    def group(self, group_id): ...
    def collaboration(self, collab_id): ...
    def collaboration_whitelist(self): ...
    def collaboration_whitelist_entry(self, entry_id): ...
    def collaboration_whitelist_exempt_target(self, exemption_id): ...
    def collaboration_allowlist(self): ...
    def collaboration_allowlist_entry(self, entry_id): ...
    def collaboration_allowlist_exempt_target(self, exemption_id): ...
    def trash(self): ...
    def legal_hold_policy(self, policy_id): ...
    def legal_hold_policy_assignment(self, policy_assignment_id): ...
    def legal_hold(self, hold_id): ...
    def create_legal_hold_policy(
        self,
        policy_name,
        description: Incomplete | None = None,
        filter_starting_at: Incomplete | None = None,
        filter_ending_at: Incomplete | None = None,
        is_ongoing: Incomplete | None = None,
    ): ...
    def get_legal_hold_policies(
        self,
        policy_name: Incomplete | None = None,
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def collection(self, collection_id): ...
    def collections(
        self,
        limit: Incomplete | None = None,
        offset: int = 0,
        fields: Incomplete | None = None,
    ): ...
    def enterprise(self, enterprise_id): ...
    def get_current_enterprise(self): ...
    def users(
        self,
        limit: Incomplete | None = None,
        offset: int = 0,
        filter_term: Incomplete | None = None,
        user_type: Incomplete | None = None,
        fields: Incomplete | None = None,
        use_marker: bool = False,
        marker: Incomplete | None = None,
    ): ...
    def search(self): ...
    def events(self): ...
    def group_membership(self, group_membership_id): ...
    def get_groups(
        self,
        name: Incomplete | None = None,
        limit: Incomplete | None = None,
        offset: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def webhook(self, webhook_id): ...
    def create_webhook(self, target, triggers, address): ...
    def get_webhooks(
        self,
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def create_group(
        self,
        name,
        provenance: Incomplete | None = None,
        external_sync_identifier: Incomplete | None = None,
        description: Incomplete | None = None,
        invitability_level: Incomplete | None = None,
        member_viewability_level: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def storage_policy(self, policy_id): ...
    def storage_policy_assignment(self, assignment_id): ...
    def get_storage_policies(
        self,
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def terms_of_service(self, tos_id): ...
    def terms_of_service_user_status(self, tos_user_status_id): ...
    def get_terms_of_services(
        self,
        tos_type: Incomplete | None = None,
        limit: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def task(self, task_id): ...
    def task_assignment(self, assignment_id): ...
    def retention_policy(self, retention_id): ...
    def file_version_retention(self, retention_id): ...
    def retention_policy_assignment(self, assignment_id): ...
    def create_retention_policy(
        self,
        policy_name,
        disposition_action,
        retention_length,
        can_owner_extend_retention: Incomplete | None = None,
        are_owners_notified: Incomplete | None = None,
        custom_notification_recipients: Incomplete | None = None,
    ): ...
    def get_retention_policies(
        self,
        policy_name: Incomplete | None = None,
        policy_type: Incomplete | None = None,
        user: Incomplete | None = None,
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def create_terms_of_service(self, status, tos_type, text): ...
    def get_file_version_retentions(
        self,
        target_file: Incomplete | None = None,
        file_version: Incomplete | None = None,
        policy: Incomplete | None = None,
        disposition_action: Incomplete | None = None,
        disposition_before: Incomplete | None = None,
        disposition_after: Incomplete | None = None,
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def web_link(self, web_link_id): ...
    def get_recent_items(
        self,
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
        **collection_kwargs
    ): ...
    def get_shared_item(self, shared_link, password: Incomplete | None = None): ...
    def make_request(self, method, url, **kwargs): ...
    def create_user(self, name, login: Incomplete | None = None, **user_attributes): ...
    def get_pending_collaborations(
        self,
        limit: Incomplete | None = None,
        offset: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def downscope_token(
        self,
        scopes,
        item: Incomplete | None = None,
        additional_data: Incomplete | None = None,
        shared_link: Incomplete | None = None,
    ): ...
    def clone(self, session: Incomplete | None = None): ...
    def get_url(self, endpoint, *args): ...
    def device_pinner(self, device_pin_id): ...
    def device_pinners(
        self,
        enterprise: Incomplete | None = None,
        direction: Incomplete | None = None,
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def metadata_cascade_policy(self, policy_id): ...
    def metadata_template(self, scope, template_key): ...
    def metadata_template_by_id(self, template_id): ...
    def get_metadata_templates(
        self,
        scope: str = "enterprise",
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
    def create_metadata_template(
        self,
        display_name,
        fields,
        template_key: Incomplete | None = None,
        hidden: bool = False,
        scope: str = "enterprise",
        copy_instance_on_item_copy: bool = False,
    ): ...
    def download_zip(self, name, items, writeable_stream): ...
    def folder_lock(self, folder_lock_id): ...
    def sign_request(self, sign_request_id): ...
    def create_sign_request(
        self,
        files,
        signers,
        parent_folder_id,
        prefill_tags: Incomplete | None = None,
        are_reminders_enabled: Incomplete | None = None,
        are_text_signatures_enabled: Incomplete | None = None,
        days_valid: Incomplete | None = None,
        email_message: Incomplete | None = None,
        email_subject: Incomplete | None = None,
        external_id: Incomplete | None = None,
        is_document_preparation_needed: Incomplete | None = None,
    ): ...
    def get_sign_requests(
        self,
        limit: Incomplete | None = None,
        marker: Incomplete | None = None,
        fields: Incomplete | None = None,
    ): ...
