Charged Settings Contract (V2)

Charged Particles Settings Contract. Used to view and update rules for how the Charged Particles contract functions.

Get Particle Settings

getCreatorAnnuities

Gets the creator of a Particle and the percentage of creator annuities for the specified Particle. Creator annuities can be reassigned from the original creator to a 3rd party using the setCreatorAnnuitiesRedirect function.

function getCreatorAnnuities(
  address contractAddress, 
  uint256 tokenId
  ) external returns (
    address creator, 
    uint256 annuityPct
  );
Parameter
Description
Type

contractAddress

The address to the contract of the token (Particle)

address

tokenId

The ID of the token (Particle)

uint256

Return Value
Description
Type

creator

The particle creator's address

address

annuityPct

The percentage of interest directed to the creator of the Particle

uint256

getCreatorAnnuitiesRedirect

Get the address that receives creator annuities for a given Particle/ Defaults to creator address if it has not been redirected via the setCreatorAnnuitiesRedirect function.

function getCreatorAnnuitiesRedirect(
  address contractAddress, 
  uint256 tokenId
  ) external view returns (address);
Parameter
Description
Type

contractAddress

The address to the contract of the token (Particle)

address

tokenId

The ID of the token (Particle)

uint256

Return Value
Description
Type

address

The address that receives creator annuities

address

getTempLockExpiryBlocks

Get the unlock block of the temporary timelock associated with a Particle. The temporary timelock exists to prevent front-running.

function getTempLockExpiryBlocks () returns (uint256)
Return Value
Description
Type

unlockBlock

Block number when temporary lock expires

uint256

getTimelockApprovals

Gets the approvals for time locks.

function getTimelockApprovals(
  address operator
  ) external view returns (
    bool timelockAny, 
    bool timelockOwn
  );
Parameter
Description
Type

operator

Particle operator's address

address

Return Value
Description
Type

timelockAny

whether or not operator can time lock any NFT on behalf of user

bool

timelockOwn

whether or not operator can time lock their own NFTS

bool

getAssetRequirements

Get requirements for an asset token that determine whether it can be deposited into a Particle. Aave, Compound, etc. have different requirements for tokens, and this function returns those requirements for each type of wallet manager / ERC20 asset.

function getAssetRequirements(
    address contractAddress,
    address assetToken
  ) external view returns (
    string memory requiredWalletManager,
    bool energizeEnabled,
    bool restrictedAssets,
    bool validAsset,
    uint256 depositCap,
    uint256 depositMin,
    uint256 depositMax,
    bool invalidAsset
  );
Parameter
Description
Type

contractAddress

address of contract for Particle (whether Proton or another NFT Contract)

address

assetToken

address of asset token to get requirements for

address

Return Value
Description
Type

requiredWalletManager

wallet manager required for asset token

string

energizeEnabled

wallet manager required for asset token

bool

restrictedAssets

wallet manager required for asset token

bool

validAsset

whether or not asset token is a valid asset

bool

depositCap

uint256

depositMin

uint256

depositMax

uint256

invalidAsset

whether or not asset token is a valid asset

bool

getNftAssetRequirements

Get requirements for NFTs that can be deposited into a Particle

function getNftAssetRequirements(
    address contractAddress,
    address nftTokenAddress
  ) external view returns (
    string memory requiredBasketManager,
    bool basketEnabled,
    uint256 maxNfts
  );
Parameter
Description
Type

contractAddress

address of contract for Particle (whether Proton or another NFT Contract)

address

nftTokenAddress

address of NFT to get requirements for

address

Return Value
Description
Type

requiredBasketManager

required NFT basket manager

string

basketEnabled

whether or not the basket is enabled for an NFT

bool

maxNfts

max number of NFTs in a basket

uint256

Update Particle Settings

setCreatorAnnuities

Sets a custom percentage for the Creator Annuities of a Particle.

function setCreatorAnnuities(
  address contractAddress, 
  uint256 tokenId, 
  address creator, 
  uint256 annuityPercent
) external;
Parameter
Description
Type

contractAddress

address of contract for Particle (whether Proton or another NFT Contract)

address

tokenId

The ID of the token (Particle)

uint256

annuityPercent

percentage of interest earned by an NFT directed to the creator (or 3rd party)

uint256

setCreatorAnnuitiesRedirect

Sets a custom receiver address for the Creator Annuities.

function setCreatorAnnuitiesRedirect(
  address contractAddress, 
  uint256 tokenId, 
  address receiver
) external;
Parameter
Description
Type

contractAddress

address of NFT Contract (Proton or other) to configure

address

tokenId

The ID of the token (Particle)

uint256

receiver

3rd party address to redirect creator annuities to

address

Update Settings for Entire NFT Contracts

For the owner or admin of an NFT contract only

setRequiredWalletManager

Sets a required Wallet Manager for External NFT contracts (otherwise set to "none" to allow any Wallet Manager).

function setRequiredWalletManager(
  address contractAddress, 
  string calldata walletManager
) external;
Parameter
Description
Type

contractAddress

address of NFT Contract (Proton or other) to configure

address

walletManager

If set, will only allow deposits from this specific Wallet Manager

string

setRequiredBasketManager

Sets a required Basket Manager for External NFT contracts (otherwise set to "none" to allow any Basket Manager).

function setRequiredBasketManager(
  address contractAddress, 
  string calldata basketManager
) external;
Parameter
Description
Type

contractAddress

address of NFT Contract (Proton or other) to configure

address

basketManager

If set, will only allow deposits from this specific Basket Manager

string

setAssetTokenRestrictions

Enables or disables asset token restrictions for External NFT contracts.

function setAssetTokenRestrictions(
  address contractAddress, 
  bool restrictionsEnabled
) external;
Parameter
Description
Type

contractAddress

address of NFT Contract (Proton or other) to configure

address

restrictionsEnabled

If set, only allowed asset tokens can be deposited

bool

setAllowedAssetToken

Enables or disables allowed asset tokens for External NFT contracts.

function setAllowedAssetToken(
  address contractAddress, 
  address assetToken, 
  bool isAllowed
) external;
Parameter
Description
Type

contractAddress

address of NFT Contract (Proton or other) to configure

address

assetToken

The address of the asset token to allow or disallow

address

isAllowed

The address of the asset token to allow or disallow

bool

setAssetTokenLimits

Sets the custom configuration for External contracts.

function setAssetTokenLimits(
  address contractAddress, 
  address assetToken, 
  uint256 depositMin, 
  uint256 depositMax
) external;
Parameter
Description
Type

contractAddress

address of NFT Contract (Proton or other) to configure

address

assetToken

The address of the asset token to set min/max for

address

depositMin

If set, will define the minimum amount of Asset tokens the NFT may hold, otherwise any amount

uint256

depositMax

If set, will define the maximum amount of Asset tokens the NFT may hold, otherwise any amount

uint256

setMaxNfts

Sets the maximum number of NFTs that can be held by a Particle, for a given contract. For example, if you wanted a Particle to only be able to hold one Bored Ape, you would use this function to set that restriction.

function setMaxNfts(
  address contractAddress, 
  address nftTokenAddress, 
  uint256 maxNfts
) external;
Parameter
Description
Type

contractAddress

address of NFT Contract (Proton or other) to configure

address

nftTokenAddress

The address of the NFT contract to set min/max for

address

maxNfts

The maximum numbers of NFTs that can be held by a given NFT (0 = unlimited)

uint256

Other

Events

event Initialized(address indexed initiator);
  event ControllerSet(address indexed controllerAddress, string controllerId);
  event DepositCapSet(address assetToken, uint256 depositCap);
  event TempLockExpirySet(uint256 expiryBlocks);
  event RequiredWalletManagerSet(address indexed contractAddress, string walletManager);
  event RequiredBasketManagerSet(address indexed contractAddress, string basketManager);
  event AssetTokenRestrictionsSet(address indexed contractAddress, bool restrictionsEnabled);
  event AllowedAssetTokenSet(address indexed contractAddress, address assetToken, bool isAllowed);
  event AssetTokenLimitsSet(address indexed contractAddress, address assetToken, uint256 assetDepositMin, uint256 assetDepositMax);
  event MaxNftsSet(address indexed contractAddress, address indexed nftTokenAddress, uint256 maxNfts);
  event AssetInvaliditySet(address indexed assetToken, bool invalidity);
  event TokenCreatorConfigsSet(address indexed contractAddress, uint256 indexed tokenId, address indexed creatorAddress, uint256 annuityPercent);
  event TokenCreatorAnnuitiesRedirected(address indexed contractAddress, uint256 indexed tokenId, address indexed redirectAddress);
  event PermsSetForCharge(address indexed contractAddress, bool state);
  event PermsSetForBasket(address indexed contractAddress, bool state);
  event PermsSetForTimelockAny(address indexed contractAddress, bool state);
  event PermsSetForTimelockSelf(address indexed contractAddress, bool state);

Last updated