Smart Contract responsável por permitir que o Tesouro Nacional realize a operação de resgate de Títulos Públicos Federais tokenizados (TPFt) para um participante ou cliente que esteja cadastrado no Real Digital.
struct RepaymentTPFtInfo {
uint256 tpftId;
uint256 tpftAmount;
uint256 operationId;
struct ITPFt.TPFtData tpftData;
uint256 unitRepaymentPrice;
uint256 financialRepaymentValue;
}constructor(contract AddressDiscovery addressDiscovery_, address tpftFacadeContract_, contract TPFtOperationId tpftOperationIdContract_, contract TPFtRepaymentReserve tpftRepaymentReserve_) publicInicializa o contrato TPFtOperation e concede a role REPAYMENT_ROLE para operações de resgate de TPFts.
| Name | Type | Description |
|---|---|---|
| addressDiscovery_ | contract AddressDiscovery | Endereço do contrato que facilita a descoberta dos demais endereços de contratos. |
| tpftFacadeContract_ | address | Contrato TPFtFacade. |
| tpftOperationIdContract_ | contract TPFtOperationId | Contrato TPFtOperationId fornecendo funções utilitárias para operações TPFt. |
| tpftRepaymentReserve_ | contract TPFtRepaymentReserve | Endereço do contrato TPFtRepaymentReserve. |
function repayment(address sender, uint256 operationId, struct ITPFt.TPFtData tpftData, uint256 unitRepaymentPrice) externalFunção que permite que o Tesouro Nacional realize a operação de resgate de TPFt para um participante ou cliente.
| Name | Type | Description |
|---|---|---|
| sender | address | Endereço da carteira do cedente da operação. |
| operationId | uint256 | Número de operação + data vigente no formato yyyyMMdd. |
| tpftData | struct ITPFt.TPFtData | Estrutura de dados do TPFt, que incluem as seguintes informações: - acronym: A sigla do TPFt. - code: O código único do TPFt. - maturityDate: A data de vencimento do TPFt, representada como um valor numérico (timestamp Unix). |
| unitRepaymentPrice | uint256 | Preço unitário de cada TPFt no momento do resgate. |
function _repaymentForParticipant(address sender, address receiver, struct TPFtOperation1012.RepaymentTPFtInfo repaymentTPFtInfo, contract RealDigital realDigital) internalFunção interna para realizar o resgate de TPFt para a carteira de um participante, efetuando o pagamento em Real Digital.
| Name | Type | Description |
|---|---|---|
| sender | address | Endereço da carteira do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| repaymentTPFtInfo | struct TPFtOperation1012.RepaymentTPFtInfo | Informações sobre o TPFt a ser resgatado. |
| realDigital | contract RealDigital | Contrato Real Digital usado para o pagamento. |
function _repaymentForClient(address sender, address receiver, struct TPFtOperation1012.RepaymentTPFtInfo repaymentTPFtInfo, contract RealDigital realDigital, contract KeyDictionary keyDictionary, bytes32 key) internalFunção interna para processar o resgate de TPFt para a carteira de um cliente. O fluxo de resgate depende da verificação das condições associadas ao cliente e ao contrato Real Tokenizado.
| Name | Type | Description |
|---|---|---|
| sender | address | Endereço da carteira do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| repaymentTPFtInfo | struct TPFtOperation1012.RepaymentTPFtInfo | Informações sobre o TPFt a ser resgatado. |
| realDigital | contract RealDigital | Contrato Real Digital. |
| keyDictionary | contract KeyDictionary | Contrato KeyDictionary. |
| key | bytes32 | Chave associada ao cliente. |
function _repaymentForContract(address sender, address receiver, struct TPFtOperation1012.RepaymentTPFtInfo repaymentTPFtInfo, contract RealDigital realDigital, string reason) internalFunção interna para realizar o resgate de TPFt para o contrato de resgate, efetuando o pagamento em Real Digital.
| Name | Type | Description |
|---|---|---|
| sender | address | Endereço da carteira do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| repaymentTPFtInfo | struct TPFtOperation1012.RepaymentTPFtInfo | Informações sobre o TPFt a ser resgatado. |
| realDigital | contract RealDigital | Contrato Real Digital usado para o pagamento. |
| reason | string | Motivo de pagamento registrado no contrato de resgate. |
function _transferSwap(address receiver, address swapToRetailAddress, uint256 financialRepaymentValue, contract RealDigital realDigital) internalFunção interna para realizar uma transferência de Real Digital a esse contrato e aumentar a autorização para o endereço de contrato SwapToRetail para receber fundos no valor de financialRepaymentValue.
Esta função é utilizada para facilitar a troca de Real Digital por outros tokens de Real Tokenizado.
| Name | Type | Description |
|---|---|---|
| receiver | address | Endereço da carteira do cessionário da operação. |
| swapToRetailAddress | address | Endereço do contrato SwapToRetailAddress para pagamento de Real Tokenizado ao cliente. |
| financialRepaymentValue | uint256 | Valor financeiro a ser transferido. |
| realDigital | contract RealDigital | Contrato Real Digital. |
function _handleRepaymentWithVerifiedAccount(address sender, address receiver, struct TPFtOperation1012.RepaymentTPFtInfo repaymentTPFtInfo, contract RealDigital realDigital, contract RealTokenizado realTokenizado) internalFunção interna para realizar o resgate de TPFt para a carteira de um cliente, efetuando o pagamento em Real Tokenizado.
| Name | Type | Description |
|---|---|---|
| sender | address | Endereço da carteira do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| repaymentTPFtInfo | struct TPFtOperation1012.RepaymentTPFtInfo | Informações sobre o TPFt a ser resgatado. |
| realDigital | contract RealDigital | Contrato Real Digital. |
| realTokenizado | contract RealTokenizado | Contrato Real Tokenizado. |
function _handleRepaymentWithoutVerifiedAccount(address sender, address receiver, struct TPFtOperation1012.RepaymentTPFtInfo repaymentTPFtInfo, contract RealDigital realDigital, contract RealTokenizado realTokenizado) internalFunção interna para processar o resgate de TPFt para a carteira reserva do participante ao qual o cliente pertence. O pagamento é efetuado em Real Digital se a conta da carteira reserva do participante estiver habilitada no Real Digital. Caso contrário, o pagamento é realizado diretamente para o contrato de resgate.
| Name | Type | Description |
|---|---|---|
| sender | address | Endereço da carteira do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| repaymentTPFtInfo | struct TPFtOperation1012.RepaymentTPFtInfo | Informações sobre o TPFt a ser resgatado. |
| realDigital | contract RealDigital | Contrato Real Digital. |
| realTokenizado | contract RealTokenizado | Contrato Real Tokenizado. |
function _burnTPFts(address sender, uint256 tpftId, uint256 tpftAmount) internalFunção interna para realizar a baixa do TPFt.
| Name | Type | Description |
|---|---|---|
| sender | address | Endereço da carteira do cedente da operação. |
| tpftId | uint256 | Id do TPFt. |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
function _validateRepayment(uint256 operationId, uint256 tpftId, uint256 tpftAmount, uint256 unitRepaymentPrice, address tpftFacadeContract) internal virtualFunção interna para validar a operação de resgate.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação + data vigente no formato yyyyMMdd. |
| tpftId | uint256 | Id do TPFt. |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitRepaymentPrice | uint256 | Preço unitário de cada TPFt no momento do resgate. |
| tpftFacadeContract | address |
function updateAddressDiscovery(contract AddressDiscovery newAddressDiscovery) externalFunção que atualiza o endereço do contrato AddressDiscovery
| Name | Type | Description |
|---|---|---|
| newAddressDiscovery | contract AddressDiscovery | novo endereço do AddressDiscovery |
function updateTpftFacadeContract(address newTPFTFacadeContract) externalFunção que atualiza o endereço do contrato TPFtFacade
| Name | Type | Description |
|---|---|---|
| newTPFTFacadeContract | address | novo endereço do TPFtFacade |
function updateTpftOperationId(contract TPFtOperationId newTpftOperationIdContract) externalFunção que atualiza o endereço do contrato TPFtOperationId
| Name | Type | Description |
|---|---|---|
| newTpftOperationIdContract | contract TPFtOperationId | novo endereço do TPFtOperationId |
function updateTpftRepaymentReserve(contract TPFtRepaymentReserve newTPFtRepaymentReserve) externalFunção que atualiza o endereço do contrato TPFtRepaymentReserve
| Name | Type | Description |
|---|---|---|
| newTPFtRepaymentReserve | contract TPFtRepaymentReserve | novo endereço do TPFtRepaymentReserve |