# Copyright (c) 2022 CloudZero - ALL RIGHTS RESERVED - PROPRIETARY AND CONFIDENTIAL
# Unauthorized copying of this file and/or project, via any medium is strictly prohibited.
# Direct all questions to legal@cloudzero.com
from typing import Optional, Iterable

import czc.internal_api.client as client

from .billing_connections_client import BILLING_CONNECTIONS_IAPI, Tier1Connection
from .types import BillingConnection


@client.invoked(**BILLING_CONNECTIONS_IAPI, api='create-connection')
def create_connection(*, cz_organization_id: str, connection_info: Tier1Connection) -> BillingConnection:
    pass


@client.invoked(**BILLING_CONNECTIONS_IAPI, api='update-connection')
def update_connection(*, cz_organization_id: str, connection_id: str, data: dict) -> BillingConnection:
    pass


@client.invoked(**BILLING_CONNECTIONS_IAPI, api='delete-connection')
def delete_connection(*, cz_organization_id: str, connection_id: str) -> None:
    pass


@client.invoked(**BILLING_CONNECTIONS_IAPI, api='get-connection')
def get_connection(*, cz_organization_id: str, connection_id: str) -> BillingConnection:
    pass


@client.invoked(**BILLING_CONNECTIONS_IAPI, api='get-all-connections')
def get_all_connections(*, cz_organization_id: str, include_deleted: Optional[bool] = False) -> Iterable[BillingConnection]:
    pass
