'''
NOTE: you shouldn't modify this file.
You probably want to edit your personal config (check via 'hpi config check' or create with 'hpi config create').

See https://github.com/karlicoss/HPI/blob/master/doc/SETUP.org#setting-up-modules for info on creating your own config

This file is used for:
- documentation (as an example of the config structure)
- mypy: this file provides some type annotations
- for loading the actual user config
'''
#### NOTE: you won't need this line VVVV in your personal config
from my.core import init
###


from datetime import tzinfo
from pathlib import Path
from typing import List


from my.core import Paths, PathIsh


class hypothesis:
    # expects outputs from https://github.com/karlicoss/hypexport
    # (it's just the standard Hypothes.is export format)
    export_path: Paths = r'/path/to/hypothesis/data'

class instapaper:
    export_path: Paths = ''

class smscalls:
    export_path: Paths = ''

class pocket:
    export_path: Paths = ''

class github:
    export_path: Paths = ''

    gdpr_dir: Paths = ''

class reddit:
    class rexport:
        export_path: Paths = ''
    class pushshift:
        export_path: Paths = ''
    class gdpr:
        export_path: Paths = ''

class endomondo:
    export_path: Paths = ''

class exercise:
    workout_log: PathIsh = '/some/path.org'

class bluemaestro:
    export_path: Paths = ''

class stackexchange:
    export_path: Paths = ''

class goodreads:
    export_path: Paths = ''

class pinboard:
    export_dir: Paths = ''

class google:
    class maps:
        class android:
            export_path: Paths = ''

    takeout_path: Paths = ''


from typing import Sequence, Union, Tuple
from datetime import datetime, date, timedelta
DateIsh = Union[datetime, date, str]
LatLon = Tuple[float, float]
class location:
    # todo ugh, need to think about it... mypy wants the type here to be general, otherwise it can't deduce
    # and we can't import the types from the module itself, otherwise would be circular. common module?
    home: Union[LatLon, Sequence[Tuple[DateIsh, LatLon]]] = (1.0, -1.0)
    home_accuracy = 30_000.0

    class via_ip:
        accuracy: float
        for_duration: timedelta

    class gpslogger:
        export_path: Paths = ''
        accuracy: float

    class google_takeout_semantic:
        # a value between 0 and 100, 100 being the most confident
        # set to 0 to include all locations
        # https://locationhistoryformat.com/reference/semantic/#/$defs/placeVisit/properties/locationConfidence
        require_confidence: float = 40
        # default accuracy for semantic locations
        accuracy: float = 100


from typing import Literal
class time:
    class tz:
        policy: Literal['keep', 'convert', 'throw']

        class via_location:
            fast: bool
            sort_locations: bool
            require_accuracy: float


class orgmode:
    paths: Paths


class arbtt:
    logfiles: Paths


from typing import Optional
class commits:
    emails: Optional[Sequence[str]]
    names: Optional[Sequence[str]]
    roots: Sequence[PathIsh]


class pdfs:
    paths: Paths


class zulip:
    class organization:
        export_path: Paths


class bumble:
    class android:
        export_path: Paths


class tinder:
    class android:
        export_path: Paths


class instagram:
    class android:
        export_path: Paths
        username: Optional[str]
        full_name: Optional[str]

    class gdpr:
        export_path: Paths


class hackernews:
    class dogsheep:
        export_path: Paths


class materialistic:
    export_path: Paths


class fbmessenger:
    class fbmessengerexport:
        export_db: PathIsh
        facebook_id: Optional[str]
    class android:
        export_path: Paths


class twitter_archive:
    export_path: Paths


class twitter:
    class talon:
        export_path: Paths
    class android:
        export_path: Paths


class twint:
    export_path: Paths


class browser:
    class export:
        export_path: Paths = ''
    class active_browser:
        export_path: Paths = ''


class telegram:
    class telegram_backup:
        export_path: PathIsh = ''


class demo:
    data_path: Paths
    username: str
    timezone: tzinfo


class simple:
    count: int


class vk_messages_backup:
    storage_path: Path
    user_id: int


class kobo:
    export_path: Paths


class feedly:
    export_path: Paths


class feedbin:
    export_path: Paths


class taplog:
    export_path: Paths


class lastfm:
    export_path: Paths


class rescuetime:
    export_path: Paths


class runnerup:
    export_path: Paths


class emfit:
    export_path: Path
    timezone: tzinfo
    excluded_sids: List[str]


class foursquare:
    export_path: Paths


class rtm:
    export_path: Paths


class imdb:
    export_path: Paths


class roamresearch:
    export_path: Paths
    username: str


class whatsapp:
    class android:
        export_path: Paths
        my_user_id: Optional[str]


class harmonic:
    export_path: Paths


class monzo:
    class monzoexport:
        export_path: Paths
