Smart Contract responsável por permitir que participantes cadastrados no Real Digital realizem a operação de compra/venda compromissada envolvendo Título Público Federal tokenizado (TPFt) entre si e/ou seus clientes.
constructor(contract AddressDiscovery addressDiscovery_, contract ITPFt tpftContract_, contract TPFtOperationId tpftOperationId_, contract ITPFtDvP tpftDvP_, contract TPFtRepoStorage tpftRepoStorage_, contract DateTimeOracle dateTimeOracle_) publicInicializa o contrato TPFtTwoStepRepoOperation, facilitando operações relacionadas a TPFts em duplo comando.
| Name | Type | Description |
|---|---|---|
| addressDiscovery_ | contract AddressDiscovery | Endereço do contrato que facilita a descoberta dos demais endereços de contratos. |
| tpftContract_ | contract ITPFt | Contrato TPFt. |
| tpftOperationId_ | contract TPFtOperationId | Contrato TPFtOperationId para utilidades relacionadas a TPFts. |
| tpftDvP_ | contract ITPFtDvP | Contrato TPFtDvP para operações de DvP. |
| tpftRepoStorage_ | contract TPFtRepoStorage | Contrato TPFtRepoStorage. |
| dateTimeOracle_ | contract DateTimeOracle | Contrato de Oráculo de Data. |
function tradeRepo(uint256 operationId, uint256 cnpj8Sender, uint256 cnpj8Receiver, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice, uint256 returnUnitPrice, uint256 returnDate) externalFunção para os participantes realizarem a operação de compra/venda compromissada entre si informando os CNPJ8s das partes. O CNPJ8 identifica a carteira default da parte.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| cnpj8Sender | uint256 | CNPJ8 do cedente da operação. |
| cnpj8Receiver | uint256 | CNPJ8 do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
| returnUnitPrice | uint256 | Preço unitário de retorno do TPFt. Incluindo as 8 casas decimais. |
| returnDate | uint256 | Data de retorno da operação de compra/venda compromissada, representada como um valor numérico (timestamp Unix). |
function tradeRepo(uint256 operationId, address sender, address receiver, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice, uint256 returnUnitPrice, uint256 returnDate) externalFunção para os participantes realizarem a operação de compra/venda compromissada
entre si informando os endereços das carteiras das partes.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| sender | address | Endereço da carteira do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
| returnUnitPrice | uint256 | Preço unitário de retorno do TPFt. Incluindo as 8 casas decimais. |
| returnDate | uint256 | Data de retorno da operação de compra/venda compromissada, representada como um valor numérico (timestamp Unix). |
function tradeRepo(uint256 operationId, address sender, contract RealTokenizado senderToken, address receiver, contract RealTokenizado receiverToken, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice, uint256 returnUnitPrice, uint256 returnDate) externalFunção para participantes e clientes realizarem a operação de compra/venda compromissada
entre si informando o endereço das carteiras das partes e do seu Real Tokenizado.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| sender | address | Endereço da carteira do cedente da operação. |
| senderToken | contract RealTokenizado | RealTokenizado do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| receiverToken | contract RealTokenizado | RealTokenizado do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
| returnUnitPrice | uint256 | Preço unitário de retorno do TPFt. Incluindo as 8 casas decimais. |
| returnDate | uint256 | Data de retorno da operação de compra/venda compromissada, representada como um valor numérico (timestamp Unix). |
function tradeRepoIntraday(uint256 operationId, uint256 cnpj8Sender, uint256 cnpj8Receiver, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice) externalFunção para os participantes realizarem a operação de compra/venda compromissada intradiária
entre si informando os CNPJ8s das partes. O CNPJ8 identifica a carteira default da parte.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| cnpj8Sender | uint256 | CNPJ8 do cedente da operação. |
| cnpj8Receiver | uint256 | CNPJ8 do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
function tradeRepoIntraday(uint256 operationId, address sender, address receiver, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice) externalFunção para os participantes realizarem a operação de compra/venda compromissada intradiária
entre si informando os endereços das carteiras das partes.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| sender | address | Endereço da carteira do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
function tradeRepoIntraday(uint256 operationId, address sender, contract RealTokenizado senderToken, address receiver, contract RealTokenizado receiverToken, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice) externalFunção para participantes e clientes realizarem a operação de compra/venda compromissada intradiária
entre si informando o endereço das carteiras das partes e do seu Real Tokenizado.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| sender | address | Endereço da carteira do cedente da operação. |
| senderToken | contract RealTokenizado | RealTokenizado do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| receiverToken | contract RealTokenizado | RealTokenizado do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
function tradeRepoOpenReturnPrice(uint256 operationId, uint256 cnpj8Sender, uint256 cnpj8Receiver, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice, uint256 returnDate) externalFunção para os participantes realizarem a operação de compra/venda compromissada com o preço unitário de retorno aberto, entre si informando os CNPJ8s das partes. O CNPJ8 identifica a carteira default da parte.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| cnpj8Sender | uint256 | CNPJ8 do cedente da operação. |
| cnpj8Receiver | uint256 | CNPJ8 do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
| returnDate | uint256 | Data de retorno da operação de compra/venda compromissada, representada como um valor numérico (timestamp Unix). |
function tradeRepoOpenReturnPrice(uint256 operationId, address sender, address receiver, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice, uint256 returnDate) externalFunção para os participantes realizarem a operação de compra/venda compromissada com o preço unitário de retorno aberto, entre si informando os endereços das carteiras das partes.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| sender | address | Endereço da carteira do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
| returnDate | uint256 | Data de retorno da operação de compra/venda compromissada, representada como um valor numérico (timestamp Unix). |
function tradeRepoOpenReturnPrice(uint256 operationId, address sender, contract RealTokenizado senderToken, address receiver, contract RealTokenizado receiverToken, enum CallerPart callerPart, struct ITPFt.TPFtData tpftData, uint256 tpftAmount, uint256 unitPrice, uint256 returnDate) externalFunção para participantes e clientes realizarem a operação de compra/venda compromissada com o preço unitário de retorno aberto, entre si informando o endereço das carteiras das partes e do seu Real Tokenizado.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| sender | address | Endereço da carteira do cedente da operação. |
| senderToken | contract RealTokenizado | RealTokenizado do cedente da operação. |
| receiver | address | Endereço da carteira do cessionário da operação. |
| receiverToken | contract RealTokenizado | RealTokenizado do cessionário da operação. |
| callerPart | enum CallerPart | Parte que está transmitindo o comando da operação. Se for o cedente deve ser informado CallerPart.TPFtSender, se for o cessionário deve ser informado CallerPart.TPFtReceiver. |
| 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). |
| tpftAmount | uint256 | Quantidade de TPFt a ser negociada. Incluir as 2 casas decimais. |
| unitPrice | uint256 | Preço unitário do TPFt. Incluir as 8 casas decimais. |
| returnDate | uint256 | Data de retorno da operação de compra/venda compromissada, representada como um valor numérico (timestamp Unix). |
function setDefault(uint256 operationId, string reason) externalFunção para indicar que o compromisso de uma operação de compra/venda compromissada não foi honrado.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| reason | string | Motivo do envio para status default. |
function cancel(uint256 operationId, string reason) externalFunção para cancelar uma operação de compra/venda compromissada envolvendo TPFt.
| Name | Type | Description |
|---|---|---|
| operationId | uint256 | Número de operação de compra/venda compromissada + data vigente no formato yyyyMMdd. |
| reason | string | Motivo do cancelamento |
function pause() externalFunção externa utilizada pela carteira que é detentor da ROLE DEFAULT_ADMIN_ROLE para colocar o contrato em pausa. Apenas o detentor desse papel pode executar essa função, verificado pelo modificador "onlyRole(DEFAULT_ADMIN_ROLE)". O contrato em pausa bloqueará a execução de funções, garantindo que o contrato possa ser temporariamente interrompido.
function unpause() externalFunção externa utilizada pela carteira que é detentor da ROLE DEFAULT_ADMIN_ROLE para retirar o contrato de pausa. Apenas o detentor desse papel pode executar essa função, verificado pelo modificador "onlyRole(DEFAULT_ADMIN_ROLE)". O contrato retirado de pausa permite a execução normal de todas as funções novamente após ter sido previamente pausado.
function updateTPFtRepoStorage(contract TPFtRepoStorage newTPFtRepoStorage) externalFunção que atualiza o endereço do contrato TPFtRepoStorage.
| Name | Type | Description |
|---|---|---|
| newTPFtRepoStorage | contract TPFtRepoStorage | Novo endereço do contrato TPFtRepoStorage. |
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 contrato AddressDiscovery. |
function updateTPFt(address newTPFt) externalFunção que atualiza o endereço do contrato TPFt.
| Name | Type | Description |
|---|---|---|
| newTPFt | address | Novo endereço do contrato TPFt. |
function updateTPFtDvP(contract ITPFtDvP newTPFtDvP) externalFunção que atualiza o endereço do contrato TPFtDvP.
| Name | Type | Description |
|---|---|---|
| newTPFtDvP | contract ITPFtDvP | Novo endereço do contrato TPFtDvP. |
function updateTPFtOperationId(contract TPFtOperationId newTPFtOperationId) externalFunção que atualiza o endereço do contrato TPFtOperationId.
| Name | Type | Description |
|---|---|---|
| newTPFtOperationId | contract TPFtOperationId | Novo endereço do contrato TPFtOperationId. |
function updateDateTimeOracle(contract DateTimeOracle newDateTimeOracle) externalFunção que atualiza o endereço do contrato DateTimeOracle
| Name | Type | Description |
|---|---|---|
| newDateTimeOracle | contract DateTimeOracle | Novo endereço do contrato DateTimeOracle |
function getDateTimeOracle() external view returns (contract DateTimeOracle)Função que retorna o endereço do contrato DateTimeOracle
function getTPFtRepoStorage() public view returns (contract TPFtRepoStorage)Função que retorna o endereço do contrato TPFtRepoStorage.
function getAddressDiscovery() public view returns (contract AddressDiscovery)Função que retorna o endereço do contrato AddressDiscovery.
function getTPFt() public view returns (address)Função que retorna o endereço do contrato TPFt.
function getTPFtDvP() public view returns (contract ITPFtDvP)Função que retorna o endereço do contrato TPFtDvP.
function getTPFtOperationId() public view returns (contract TPFtOperationId)Função que retorna o endereço do contrato TPFtOperationId.