# This file was autogenerated from vk-api json schema

from typing import List, Union, Optional, overload
from easy_vk.types import objects
from easy_vk.types import responses
from easy_vk.api_category import BaseCategory
try:
    from typing import Literal
except Exception:
    from typing_extensions import Literal


class Prettycards(BaseCategory):
    def __init__(self, session, access_token: str, v: str, last_call_timer, delay: float, auto_retry: bool, max_retries: int, timeout: float):
        super().__init__(session, access_token, v, last_call_timer, delay, auto_retry, max_retries, timeout)

    def create(self, owner_id: int, photo: str, title: str, link: str, price: Optional[str] = None, price_old: Optional[str] = None, button: Optional[str] = None) -> responses.PrettyCardsCreate:
        """
        :param owner_id:
        :param photo:
        :param title:
        :param link:
        :param price:
        :param price_old:
        :param button:
        """
    
        method_parameters = {k: v for k, v in locals().items() if k not in {'self', 'raw_response'}}
        param_aliases = []
        method_name = 'prettyCards.create'
        response_type = responses.PrettyCardsCreate
        return self._call(method_name, method_parameters, param_aliases, response_type)

    def delete(self, owner_id: int, card_id: int) -> responses.PrettyCardsDelete:
        """
        :param owner_id:
        :param card_id:
        """
    
        method_parameters = {k: v for k, v in locals().items() if k not in {'self', 'raw_response'}}
        param_aliases = []
        method_name = 'prettyCards.delete'
        response_type = responses.PrettyCardsDelete
        return self._call(method_name, method_parameters, param_aliases, response_type)

    def edit(self, owner_id: int, card_id: int, photo: Optional[str] = None, title: Optional[str] = None, link: Optional[str] = None, price: Optional[str] = None, price_old: Optional[str] = None, button: Optional[str] = None) -> responses.PrettyCardsEdit:
        """
        :param owner_id:
        :param card_id:
        :param photo:
        :param title:
        :param link:
        :param price:
        :param price_old:
        :param button:
        """
    
        method_parameters = {k: v for k, v in locals().items() if k not in {'self', 'raw_response'}}
        param_aliases = []
        method_name = 'prettyCards.edit'
        response_type = responses.PrettyCardsEdit
        return self._call(method_name, method_parameters, param_aliases, response_type)

    def get(self, owner_id: int, offset: Optional[int] = None, count: Optional[int] = None) -> responses.PrettyCardsGet:
        """
        :param owner_id:
        :param offset:
        :param count:
        """
    
        method_parameters = {k: v for k, v in locals().items() if k not in {'self', 'raw_response'}}
        param_aliases = []
        method_name = 'prettyCards.get'
        response_type = responses.PrettyCardsGet
        return self._call(method_name, method_parameters, param_aliases, response_type)

    def get_by_id(self, owner_id: int, card_ids: List[int]) -> responses.PrettyCardsGetById:
        """
        :param owner_id:
        :param card_ids:
        """
    
        method_parameters = {k: v for k, v in locals().items() if k not in {'self', 'raw_response'}}
        param_aliases = []
        method_name = 'prettyCards.getById'
        response_type = responses.PrettyCardsGetById
        return self._call(method_name, method_parameters, param_aliases, response_type)

    def get_upload_url(self) -> responses.PrettyCardsGetUploadUrl:
        method_parameters = {k: v for k, v in locals().items() if k not in {'self', 'raw_response'}}
        param_aliases = []
        method_name = 'prettyCards.getUploadURL'
        response_type = responses.PrettyCardsGetUploadUrl
        return self._call(method_name, method_parameters, param_aliases, response_type)
