# Referência de clientes do SDK

Esta referência associa cada interface de cliente do SDK Demo App à chamada ao SDK que ela envolve. Use para encontrar a chamada exata do recurso que você quer integrar.

## Estrutura de pacotes

A aplicação é dividida em duas áreas claramente separadas. Apenas a primeira é material para a sua integração.

| Camada | Pacote | Papel |
| :--- | :--- | :--- |
| Clientes do SDK | `com.pagonxt.apolo.devkit.sdk` | Wrappers leves que chamam o SDK — exatamente as chamadas que você precisa para integrar. |
| Componentes internos do demo app | `com.pagonxt.apolo.devkit.internal` | A aplicação de demonstração em si (interface, estado, armazenamento, DI). Útil como inspiração, não necessária para integrar o SDK. |

## Interfaces de cliente

Cada recurso do SDK é exposto por uma interface pequena no pacote `sdk/`. O que importa para a sua integração é o corpo de cada método do cliente, que contém a chamada exata ao SDK.

| Interface do cliente | Responsabilidade do SDK | Chamada ao SDK subjacente |
| :--- | :--- | :--- |
| `ISetupClient` | Ciclo de vida do SDK: `setup(…)`, `reinitialize(…)`, `shutdown()` | `ApoloSdk.Builder(…).build()` e `ApoloSdk.shutdown()` |
| `ISaleClient` | Iniciar um pagamento (padrão, apenas valor ou totalmente parametrizado) | `ApoloSdk.getClient().initSale(context, setup, onPaymentResult)` |
| `IRefundClient` | Estornar um pagamento (por id ou pela tela do SDK) | `ApoloSdk.getClient().initRefund(context, refundData, onResult)` |
| `IPrinterClient` | Imprimir um `Bitmap` | `ApoloSdk.getClient().printBitmap(bitmap, onStatus)` |
| `INavCustomizationClient` | Inserir ou substituir telas no fluxo do SDK | `ApoloSdk.getClient().customizeNavigation(config)` |
| `IPaymentTypesClient` | Consultar os tipos de pagamento habilitados para o terminal | `ApoloSdk.getClient().getAvailablePaymentTypes()` |

## Estrutura de source sets

As interfaces e as implementações específicas por país ficam em source sets distintos.

| Local | Contém |
| :--- | :--- |
| `src/main/.../sdk/` | As interfaces de cliente compartilhadas, mais as implementações `ApoloPrinterClient` e `PaymentTypesClient`. |
| `src/brazil/.../sdk/Br*.kt` | Implementações de cliente específicas por país, vinculadas por um módulo do Koin. |

A inicialização é o único passo que toda integração precisa fazer primeiro. No demo app, ela é conduzida pelo `BrSetupClient`.

## Recursos relacionados

* [Início rápido](/pt/getnet-toolbox/sdk-demo-app/first-steps-demo/quickstart) — coloque a aplicação para rodar antes de rastrear as chamadas dela.
* [Referência de inicialização](/pt/getnet-toolbox/sdk-white-label/reference-sdk/initialization) — o contrato do SDK por trás do `ISetupClient`.
* [Referência de resultado da transação](/pt/getnet-toolbox/sdk-white-label/reference-sdk/transaction-result) — o que `ISaleClient` e `IRefundClient` devolvem.