Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Author: DEFYCA Labs S.Ã .r.l
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Interface defining the token factory for all tokens in the Frictionless protocol.
Sets the Treasury Manager to be the specified address.
Parameters
newTreasuryManager_
address
the addresses of the treasury manager to set throws FrictionlessTokensFactoryZeroAddress
if the newTreasuryManager_ is a zero address
Deploys the FrictionlessFundDepositToken
contract as a proxy
Parameters
tokenOwner_
address
The owner of the deployed contract
baseTokenInitParams_
BaseTokenInitParams
the base contract data to deploy a Frictionless token contract
initData_
IFrictionlessFundDepositToken.FFDImmutableData
the immutable data for the FrictionlessFundDepositToken
Returns
tokenProxyAddr_
address
the address of the deployed token contract FrictionlessFundDepositToken
throws FrictionlessTokensFactoryNotATreasuryManager
if the msg.sender is not the treasury manager emits FrictionlessTokenDeployed
event upon successful deployment of the token contract.
Deploys the FrictionlessDigitalSecurityToken
contract as a proxy
Parameters
tokenOwner_
address
The owner of the deployed contract
baseTokenInitParams_
BaseTokenInitParams
the base contract data to deploy a Frictionless token contract
initData_
IFrictionlessDigitalSecurityToken.FDSImmutableData
the immutable data for the FrictionlessDigitalSecurityToken
updateData_
IFrictionlessDigitalSecurityToken.FDSMutableData
the mutable data for the FrictionlessDigitalSecurityToken
Returns
tokenProxyAddr_
address
the address of the deployed token contract FrictionlessDigitalSecurityToken
throws FrictionlessTokensFactoryNotATreasuryManager
if the msg.sender is not the treasury manager emits FrictionlessTokenDeployed
event upon successful deployment of the token contract.
Deploys the FrictionlessOnChainAssetToken
contract as a proxy
Parameters
tokenOwner_
address
The owner of the deployed contract
baseTokenInitParams_
BaseTokenInitParams
the base contract data to deploy a Frictionless token contract
specData_
IFrictionlessOnChainAssetToken.FOCASpecData
the immutable specification data for the FrictionlessOnChainAssetToken
issuanceData_
IFrictionlessOnChainAssetToken.FOCAIssuanceData
the immutable issuance data for the FrictionlessOnChainAssetToken
updateData_
IFrictionlessOnChainAssetToken.FOCAUpdateData
the mutable update data for the FrictionlessOnChainAssetToken
Returns
tokenProxyAddr_
address
the address of the deployed token contract FrictionlessOnChainAssetToken
throws FrictionlessTokensFactoryNotATreasuryManager
if the msg.sender is not the treasury manager emits FrictionlessTokenDeployed
event upon successful deployment of the token contract.
returns the address of the treasuryManager
Returns
<none>
address
the address of the treasuryManager
Checks whether a given token address is an existing frictionless token
Parameters
tokenAddr_
address
the address of the token to check
Returns
<none>
bool
A boolean indicating whether the token is an existing frictionless token
Event emitted upon successful deployment of a compliance contract.
error thrown if an attempt to set a zero address contract during function setTreasuryManager
error thrown if the msg.sender
is not the treasury manager during the functions deployFundDepositToken
, deployDigitalSecurityToken
, or deployOnChainAssetToken
Struct to represent the base contract data to deploy a Frictionless token contract.
Inherits: IBasicFrictionlessToken
Author: DEFYCA Labs S.Ã .r.l
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Implementation of the storage of the underlying OnChain Asset and it's data.
Sets the specData data for the FrictionlessOnChainAssetToken
. throws FrictionlessOnChainAssetTokenUnableToUpdateData
This data is immutable, an attempt to modify will generate the error FrictionlessOnChainAssetTokenUnableToUpdateData
Parameters
specData
FOCASpecData
the specData data for the FrictionlessOnChainAssetToken
Sets the issuanceData data for the FrictionlessOnChainAssetToken
throws FrictionlessOnChainAssetTokenUnableToUpdateData
This data is immutable, an attempt to modify will generate the error FrictionlessOnChainAssetTokenUnableToUpdateData
Parameters
issuanceData
FOCAIssuanceData
the updatable data for the FrictionlessOnChainAssetToken
Sets the updatable data for the FrictionlessOnChainAssetToken
Parameters
updateData
FOCAUpdateData
the updatable data for the FrictionlessOnChainAssetToken
Get the specData data for the FrictionlessOnChainAssetToken
.
Returns
<none>
FOCASpecData
the specData data for the FrictionlessOnChainAssetToken
Get the issuanceData data for the FrictionlessOnChainAssetToken
.
Returns
<none>
FOCAIssuanceData
the issuanceData data for the FrictionlessOnChainAssetToken
Get the updateData data for the FrictionlessOnChainAssetToken
.
Returns
<none>
FOCAUpdateData
the updateData data for the FrictionlessOnChainAssetToken
Get the currency the FrictionlessOnChainAssetToken
is issued in.
Returns
<none>
string
the currency the FrictionlessOnChainAssetToken
is issued in.
error throw if there is an attempt to modify the immutable data.
The specification data for the FrictionlessOnChainAssetToken
, this is an immutable data struct.
The issuance data for the FrictionlessOnChainAssetToken
, this is an immutable data struct.
The uopdatable data for the FrictionlessOnChainAssetToken
.
Enum for the schedule of the payments by the Manager, either pro_rat or coupon/bullet style.
Enum for the periodicity of payments by the Manager
Enum for the yield for this FrictionlessOnChainAssetToken
is a fixed/floating rate
Enum for the price quote status obtained at auction
Enum for the current status of the FrictionlessOnChainAssetToken
. Updated over time by the Treasury
Enum for the current S&P style riskGrade of the FrictionlessOnChainAssetToken
. Updated over time by the Manager/Treasury/Risk Oracle.
The Frictionless Tokens describe the tokens which are emitted by the Frictionless protocol to represent Asset, Securities and Deposits. These tokens are based on the ERC-3643 specification of IToken.
The following diagram describes the high-level interaction and composition of a Frictionless token.
Inherits: IBasicFrictionlessToken
Author: DEFYCA Labs S.Ã .r.l
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
A Fund Deposit Token represents a permissioned Investors FIAT contribution to a specific fund IBAN in a denominated FIAT currency. The Fund Deposit Token is used as a means of payment and settlement. The Fund Deposit Token can only be transferred between permissioned Investors in the fund. A daily attestation of the fund IBAN serves to prove the 1:1 backing with FIAT. Exclusively under Frictionless Markets S.Ã .r.l issuance terms Investors holding a FrictionlessFundDepositToken
have the legal right to the FIAT value held in the fund IBAN account.
Sets the immutable data for the FrictionlessFundDepositToken
Parameters
initData
FFDImmutableData
the immutable data for the FrictionlessFundDepositToken
Get the currency the FIAT denomination of the deposit token.
Returns
<none>
string
the currency the FIAT denomination of the deposit token.
Get the description the description of the deposit token.
Returns
<none>
string
the description the description of the deposit token
Get the IBAN which Frictionless Markets S.Ã .r.l holds a matching FIAT currency ledger with a G-SIB for this currency, attestations are provided on this IBAN. This is restricted to onlyAgent roles.
Returns
<none>
string
the IBAN which Frictionless Markets S.Ã .r.l holds a matching FIAT currency ledger with a G-SIB for this currency, attestations are provided on this IBAN.
error throw if there is an attempt to modify the immutable data.
Struct which represents the immutable data in the Token. Once set it cannot be modified.
These contracts define the compliance layer for permissioned network participants (KYC/AML, Sanctions, PEP screening), the offering rules and the transfer rules for tokens, which ensures transfers are conducted in line with the legal and regulatory guardrails of MiFID II.
The compliance modules are upgradeable and are tied to specific tokens.
Inherits: IToken
Author: DEFYCA Labs S.Ã .r.l
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The IBasicFrictionlessToken Represents the base interface for Frictionless protocol tokens, this interface is used to determine a token type.
Sets the token type according to the specified enumeration
Parameters
newTokenType_
FrictionlessTokenTypes
the token type to set
Returns the token type according to the specified enumeration
Returns
<none>
FrictionlessTokenTypes
FrictionlessTokenTypes the token type according to the specified enumeration
error thrown if an attempt to set an invalid token type during function setFrictionlessTokenType
Enumeration to represent each of the tokens in the Frictionless protocol.
Inherits: IBasicFrictionlessToken
Author: DEFYCA Labs S.Ã .r.l
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
This is the permissioned & transferable digital security which represents the future cash flow from the FrictionlessOnChainAssetToken
and is purchased by the Investor using FrictionlessFundDepositTokens
. These digital securities are permissioned and transferable between permissioned Investors in a permissioned secondary market. This token is linked to the FrictionlessOnChainAssetToken
and denominated in a FIAT currency at a future date for settlement.
Sets the immutable data for the FrictionlessDigitalSecurityToken
Parameters
initData
FDSImmutableData
the immutable data for the FrictionlessDigitalSecurityToken
Sets the updatable data for the FrictionlessDigitalSecurityToken
Parameters
mutableData
FDSMutableData
the updatable data for the FrictionlessDigitalSecurityToken
Get the baseCurrency is the FIAT denomination of the digital security, this is the currency the FrictionlessOnChainAssetToken
is issued in.
Returns
<none>
string
the baseCurrency is the FIAT denomination of the digital security, this is the currency the FrictionlessOnChainAssetToken
is issued in.
Get the type of the token as defined in the enum FrictionlessDigitalSecurityTokenType
.
Returns
<none>
FrictionlessDigitalSecurityTokenType
the type of the token as defined in the enum.
Get the onChainAssetAddress the address of the FrictionlessOnChainAssetToken
for which this token is a future cash distribution.
Returns
<none>
address
onChainAssetAddress the address of the FrictionlessOnChainAssetToken
for which this token is a future cash distribution.
Get the maturity date of the digital security.
Returns
<none>
uint256
the maturity date of the digital security.
error throw if there is an attempt to modify the immutable data.
Struct which represents the immutable data in the Token. Once set it cannot be modified.
Struct which represents the updatable data in the Token. This data can be modified by the Agent only.
The Frictionless protocol smart contracts are documented using the NATSPEC standard.
Inherits: IModule
Author: DEFYCA Labs S.Ã .r.l
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The IFrictionlessCompliance is responsible for the compliant transfer of the various Tokens in the Frictionless protocol.
Sets the instance of the IFrictionlessPermissionsManager
to determine permissions for users.
Parameters
frictionlessPermissionsManager_
address
the address of the IFrictionlessPermissionsManager
contract
Sets the instance of the IFrictionlessComplianceFactory
to determine the compliance module for the protocol.
Parameters
newComplianceFactory_
address
the address of the IFrictionlessComplianceFactory
contract
Gets the instance of the IFrictionlessPermissionsManager
to determine permissions for users.
Returns
<none>
IFrictionlessPermissionsManager
the address of the IFrictionlessPermissionsManager
contract
Gets the instance of the IFrictionlessComplianceFactory
to determine the compliance module for the protocol.
Returns
<none>
IFrictionlessComplianceFactory
the address of the IFrictionlessComplianceFactory
contract
Verifies if the specified wallet address is a PROTOCOL_TREASURY user.
Parameters
walletAddress_
address
the address of the users wallet.
Returns
<none>
bool
true if the specified wallet address is a PROTOCOL_TREASURY user, otherwise false
Verifies if the specified wallet address is a PERMISSIONED_CUSTODIAN user.
Parameters
walletAddress_
address
the address of the users wallet.
Returns
<none>
bool
true if the specified wallet address is a PERMISSIONED_CUSTODIAN user, otherwise false
Verifies if the specified wallet address is a PERMISSIONED_INVESTOR user.
Parameters
walletAddress_
address
the address of the users wallet.
Returns
<none>
bool
true if the specified wallet address is a PERMISSIONED_INVESTOR user, otherwise false
Verifies if the specified wallet address is a PERMISSIONED_MANAGER user.
Parameters
walletAddress_
address
the address of the users wallet.
Returns
<none>
bool
true if the specified wallet address is a PERMISSIONED_MANAGER user, otherwise false
Verifies if the specified wallet address is a PERMISSIONED_CALCULATING_AGENT user.
Parameters
walletAddress_
address
the address of the users wallet.
Returns
<none>
bool
true if the specified wallet address is a PERMISSIONED_CALCULATING_AGENT user, otherwise false
Verifies if the specified wallet address is a PERMISSIONED_TRANSFER_AGENT user.
Parameters
walletAddress_
address
the address of the users wallet.
Returns
<none>
bool
true if the specified wallet address is a PERMISSIONED_TRANSFER_AGENT user, otherwise false
Verifies if the specified wallet address is a PERMISSIONED_FUND_ACCOUNTANT user.
Parameters
walletAddress_
address
the address of the users wallet.
Returns
<none>
bool
true if the specified wallet address is a PERMISSIONED_FUND_ACCOUNTANT user, otherwise false
Verifies if the specified wallet address is a permissioned user in the Frictionless protocol.
Parameters
walletAddress_
address
the address of the users wallet.
Returns
<none>
bool
true if the specified wallet address is a permissioned user in the Frictionless protocol, otherwise false
verify if the userAddress is permissioned in the Frictionless protocol and has a valid claim
Parameters
userAddress_
address
the address of the user's wallet to verify
userType_
IFrictionlessPermissionsManager.FrictionlessPermissionedUser
the type of the user as per the enum
Returns
<none>
bool
true if a valid permissioned user and has a valid claim, otherwise false.
Event emitted during compliance module transfers
throws if specific address is zero.
thrown if the compliance module address is invalid during bindCompliance
and unBindCompliance
thrown if the compliance module address is not approved during bindCompliance
thrown if the compliance module address is already bound, thrown by bindCompliance
thrown if the compliance module address is not already bound during unBindCompliance
Author: DEFYCA Labs S.Ã .r.l
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
get the FeeInfo for a given key.
Parameters
Returns
get the feeInBps value for a given key
Parameters
Returns
get the feeRecipientAddr value for a given key
Parameters
Returns
Calculates the actual fee in absolute terms for a given fee in basis points.
Parameters
Returns
Event emitted during _setTokenFee
error thrown if the recipient is a zero address
error thrown if the feesInBps is outside the valid range
Struct which defines the FeeInfo, representing the fee in basis points and the recipient of the fees on-chain.
Inherits: IModularCompliance
Author: DEFYCA Labs S.Ã .r.l
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
The IFrictionlessModularCompliance is responsible for the compliant transfer of the various Tokens in the Frictionless protocol.
Initializes the modular compliance, sets the maximum allowable modules per token and adds the modules provided
Parameters
Set the maximum number of allowable modules which can be bound.
Parameters
Adds modules based on the array of module addresses provided
Parameters
Removes modules based on the array of module addresses provided
Parameters
Returns the maximum number of allowable modules which can be bound.
Returns
Emitted during updateMaxModulesCount
to inform of new modules max count updates
Emitted during addModules
to inform of new modules added
Emitted during removeModules
to inform of modules removed
thrown if specific address is zero.
thrown if an attempt to set the maximum number of allowable modules to zero is made in updateMaxModulesCount
thrown if an attempt to add an already existing module during addModules
thrown if module for the given address is not already bound by the modifier onlyExistingModule
thrown if an attempt to add more than the allowable modules during addModules
thrown during bindToken
or unBindToken
if the caller is not the owner or the bound token address
thrown if the the msg.sender is not the bound token address during modifier onlyToken
Inherits: IAbstractFeeModule
Copyright © 2023 DEFYCA Labs S.à .r.l Permission is hereby granted, free of charge, to any person obtaining a copy of the Frictionless protocol smart contracts (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL DEFYCA LABS S.à .r.l BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Use SafeERC20
for any ERC20 token in the conversion
represents 0 bps in fees (the minima of fees or 0%)
represents 10000 bps in fees (the maxima of fees or 100%)
Shouldnt arrise due to validation, but being doubly sure, we can't compute incorrect fees.
Validates the FeeInfo, specifically validates the non zero address of the feeRecipientAddr and the range for the feeInBps (0 to MAX_FEES_IN_BPS).
Parameters