from plaid import Client
from plaid.api.api import API as API
from typing import Any, Optional, Dict, List

from ..client import ResponseStr, ResponseJSON


class AssetReport(API):
    audit_copy: AuditCopy = ...
    def __init__(self, client: Client) -> None: ...
    def create(self, access_tokens: List[str], days_requested: int, options: Optional[Dict[str, Any]] = ...) -> ResponseJSON: ...
    def filter(self, asset_report_token: str, account_ids_to_exclude: List[str]) -> ResponseJSON: ...
    def refresh(self, asset_report_token: str, days_requested: int, options: Optional[Dict[str, Any]] = ...) -> ResponseJSON: ...
    def get(self, asset_report_token: str, include_insights: bool = ...) -> ResponseJSON: ...
    def get_pdf(self, asset_report_token: str) -> ResponseStr: ...
    def remove(self, asset_report_token: str) -> ResponseJSON: ...

class AuditCopy(API):
    def create(self, asset_report_token: str, auditor_id: str) -> ResponseJSON: ...
    def get(self, audit_copy_token: str) -> ResponseJSON: ...
    def remove(self, audit_copy_token: str) -> ResponseJSON: ...
