from plaid import Client
from plaid.api.api import API as API
from typing import Any

from ..client import ResponseJSON


class PublicToken(API):
    def exchange(self, public_token: str) -> ResponseJSON: ...
    def create(self, access_token: str) -> ResponseJSON: ...

class AccessToken(API):
    def invalidate(self, access_token: str) -> ResponseJSON: ...
    def update_version(self, access_token: str) -> ResponseJSON: ...

class Webhook(API):
    def update(self, access_token: str, webhook: Any) -> ResponseJSON: ...

class Item(API):
    access_token: AccessToken = ...
    public_token: PublicToken = ...
    webhook: Webhook = ...
    def __init__(self, client: Client) -> None: ...
    def get(self, access_token: str) -> ResponseJSON: ...
    def remove(self, access_token: str) -> ResponseJSON: ...
