# This file was auto-generated by Fern from our API Definition.

from .environment import MercoaEnvironment
from .resources.bank_lookup.client import AsyncBankLookupClient, BankLookupClient
from .resources.entity.client import AsyncEntityClient, EntityClient
from .resources.invoice.client import AsyncInvoiceClient, InvoiceClient
from .resources.ocr.client import AsyncOcrClient, OcrClient
from .resources.organization.client import AsyncOrganizationClient, OrganizationClient
from .resources.payment_method_schema.client import AsyncPaymentMethodSchemaClient, PaymentMethodSchemaClient
from .resources.transaction.client import AsyncTransactionClient, TransactionClient


class Mercoa:
    def __init__(self, *, environment: MercoaEnvironment = MercoaEnvironment.PRODUCTION, token: str):
        self._environment = environment
        self._token = token
        self.entity = EntityClient(environment=self._environment, token=self._token)
        self.invoice = InvoiceClient(environment=self._environment, token=self._token)
        self.bank_lookup = BankLookupClient(environment=self._environment, token=self._token)
        self.ocr = OcrClient(environment=self._environment, token=self._token)
        self.organization = OrganizationClient(environment=self._environment, token=self._token)
        self.payment_method_schema = PaymentMethodSchemaClient(environment=self._environment, token=self._token)
        self.transaction = TransactionClient(environment=self._environment, token=self._token)


class AsyncMercoa:
    def __init__(self, *, environment: MercoaEnvironment = MercoaEnvironment.PRODUCTION, token: str):
        self._environment = environment
        self._token = token
        self.entity = AsyncEntityClient(environment=self._environment, token=self._token)
        self.invoice = AsyncInvoiceClient(environment=self._environment, token=self._token)
        self.bank_lookup = AsyncBankLookupClient(environment=self._environment, token=self._token)
        self.ocr = AsyncOcrClient(environment=self._environment, token=self._token)
        self.organization = AsyncOrganizationClient(environment=self._environment, token=self._token)
        self.payment_method_schema = AsyncPaymentMethodSchemaClient(environment=self._environment, token=self._token)
        self.transaction = AsyncTransactionClient(environment=self._environment, token=self._token)
