From 5da4ecd87d159ea79f802aa018af19d8d4bc5a63 Mon Sep 17 00:00:00 2001 From: sirpy Date: Sun, 20 Oct 2024 17:21:23 +0300 Subject: [PATCH 1/3] fix: directpool permissoins before release --- .../contracts/DirectPayments/DirectPaymentsFactory.sol | 2 +- .../contracts/DirectPayments/DirectPaymentsPool.sol | 10 ++++++---- packages/contracts/contracts/UBI/UBIPool.sol | 4 ++-- .../DirectPayments/DirectPayments.superapp.test.ts | 2 +- .../test/DirectPayments/DirectPaymentsFactory.test.ts | 7 ++++--- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/contracts/contracts/DirectPayments/DirectPaymentsFactory.sol b/packages/contracts/contracts/DirectPayments/DirectPaymentsFactory.sol index c142370f..cdb07bf3 100644 --- a/packages/contracts/contracts/DirectPayments/DirectPaymentsFactory.sol +++ b/packages/contracts/contracts/DirectPayments/DirectPaymentsFactory.sol @@ -132,7 +132,6 @@ contract DirectPaymentsFactory is AccessControlUpgradeable, UUPSUpgradeable { nft.grantRole(nft.getManagerRole(nextNftType), _settings.manager); nft.grantRole(nft.getManagerRole(nextNftType), address(pool)); - pool.grantRole(pool.MINTER_ROLE(), _settings.manager); //access control to project is determinted by the first pool access control rules if (address(projectIdToControlPool[keccak256(bytes(_projectId))]) == address(0)) @@ -140,6 +139,7 @@ contract DirectPaymentsFactory is AccessControlUpgradeable, UUPSUpgradeable { registry[address(pool)].ipfs = _ipfs; registry[address(pool)].projectId = _projectId; + pool.grantRole(DEFAULT_ADMIN_ROLE, msg.sender); pool.renounceRole(DEFAULT_ADMIN_ROLE, address(this)); pools.push(address(pool)); diff --git a/packages/contracts/contracts/DirectPayments/DirectPaymentsPool.sol b/packages/contracts/contracts/DirectPayments/DirectPaymentsPool.sol index 37f8e48f..da3a9a24 100644 --- a/packages/contracts/contracts/DirectPayments/DirectPaymentsPool.sol +++ b/packages/contracts/contracts/DirectPayments/DirectPaymentsPool.sol @@ -140,8 +140,10 @@ contract DirectPaymentsPool is settings = _settings; limits = _limits; nft = _nft; - _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); - _setupRole(DEFAULT_ADMIN_ROLE, _settings.manager); + _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); // when using factory this gives factory role which then set role to the real msg.sender + _setupRole(MANAGER_ROLE, _settings.manager); + _setupRole(MINTER_ROLE, _settings.manager); + setSuperToken(ISuperToken(address(settings.rewardToken))); } @@ -398,7 +400,7 @@ contract DirectPaymentsPool is * @dev Sets the safety limits for the pool. * @param _limits The new safety limits. */ - function setPoolLimits(SafetyLimits memory _limits) public onlyRole(DEFAULT_ADMIN_ROLE) { + function setPoolLimits(SafetyLimits memory _limits) public onlyRole(MANAGER_ROLE) { limits = _limits; emit PoolLimitsChanged(_limits); } @@ -407,7 +409,7 @@ contract DirectPaymentsPool is * @dev Sets the settings for the pool. * @param _settings The new pool settings. */ - function setPoolSettings(PoolSettings memory _settings) public onlyRole(DEFAULT_ADMIN_ROLE) { + function setPoolSettings(PoolSettings memory _settings) public onlyRole(MANAGER_ROLE) { if (_settings.nftType != settings.nftType) revert NFTTYPE_CHANGED(); if (_settings.manager == address(0)) revert EMPTY_MANAGER(); diff --git a/packages/contracts/contracts/UBI/UBIPool.sol b/packages/contracts/contracts/UBI/UBIPool.sol index 4baaea58..507a6b79 100644 --- a/packages/contracts/contracts/UBI/UBIPool.sol +++ b/packages/contracts/contracts/UBI/UBIPool.sol @@ -126,7 +126,7 @@ contract UBIPool is AccessControlUpgradeable, GoodCollectiveSuperApp, UUPSUpgrad ubiSettings = _ubiSettings; _verifyPoolSettings(_settings); _verifyUBISettings(_ubiSettings); - _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); + _setupRole(DEFAULT_ADMIN_ROLE, msg.sender); // when using factory this gives factory role which then set role to the real msg.sender _setupRole(MANAGER_ROLE, _settings.manager); setSuperToken(ISuperToken(address(settings.rewardToken))); } @@ -394,6 +394,6 @@ contract UBIPool is AccessControlUpgradeable, GoodCollectiveSuperApp, UUPSUpgrad } function nextClaimTime() public view returns (uint256) { - return (getCurrentDay() + 1) * (1 days); + return (getCurrentDay() + ubiSettings.claimPeriodDays) * (1 days) + 12 hours; } } diff --git a/packages/contracts/test/DirectPayments/DirectPayments.superapp.test.ts b/packages/contracts/test/DirectPayments/DirectPayments.superapp.test.ts index f9cc9383..4c480320 100644 --- a/packages/contracts/test/DirectPayments/DirectPayments.superapp.test.ts +++ b/packages/contracts/test/DirectPayments/DirectPayments.superapp.test.ts @@ -281,7 +281,7 @@ describe('DirectPaymentsPool Superapp', () => { path: '0x', }, '0x') - console.log((await tx.wait()).events) + // console.log((await tx.wait()).events) expect(await mockToken.balanceOf(signer.address)).eq(0); expect(await gdframework.GoodDollar.balanceOf(signer.address)).eq(0); diff --git a/packages/contracts/test/DirectPayments/DirectPaymentsFactory.test.ts b/packages/contracts/test/DirectPayments/DirectPaymentsFactory.test.ts index b46ca249..e2e0dca4 100644 --- a/packages/contracts/test/DirectPayments/DirectPaymentsFactory.test.ts +++ b/packages/contracts/test/DirectPayments/DirectPaymentsFactory.test.ts @@ -102,8 +102,9 @@ describe('DirectPaymentsFactory', () => { expect(await nft.hasRole(await nft.getManagerRole('1'), signers[1].address)).to.be.true; expect(await nft.hasRole(await nft.getManagerRole('1'), pool.address)).to.be.true; - expect(await pool.hasRole(nft.DEFAULT_ADMIN_ROLE(), signers[1].address)).to.be.true; - expect(await pool.hasRole(nft.DEFAULT_ADMIN_ROLE(), factory.address)).to.be.false; + expect(await pool.hasRole(pool.DEFAULT_ADMIN_ROLE(), signer.address)).to.be.true; + expect(await pool.hasRole(pool.MANAGER_ROLE(), signers[1].address)).to.be.true; + expect(await pool.hasRole(pool.DEFAULT_ADMIN_ROLE(), factory.address)).to.be.false; // datastructures expect(await factory.projectIdToControlPool(ethers.utils.keccak256(ethers.utils.toUtf8Bytes('test')))).to.be.equal( @@ -119,7 +120,7 @@ describe('DirectPaymentsFactory', () => { }); it("should not be able to create pool if not project's manager", async () => { - const tx = await factory.createPool('test', 'pool1', poolSettings, poolLimits); + const tx = await factory.connect(signers[1]).createPool('test', 'pool1', poolSettings, poolLimits); // signer 1 is the pool manager so it should not revert await expect(factory.connect(signers[1]).createPool('test', 'pool2', poolSettings, poolLimits)).not.reverted; From 337092ff773e2b78bc03595ea9be21dfbcc82c7c Mon Sep 17 00:00:00 2001 From: sirpy Date: Mon, 21 Oct 2024 12:42:58 +0300 Subject: [PATCH 2/3] add: production ubi pools --- packages/contracts/contracts/UBI/UBIPool.sol | 3 +- packages/contracts/hardhat.config.ts | 14 +++ packages/sdk-js/scripts/createPool.ts | 105 +++++++++++------- .../config/{celo.json => celo-old.json} | 0 packages/subgraph/config/celo-prod.json | 8 ++ packages/subgraph/package.json | 2 +- 6 files changed, 92 insertions(+), 40 deletions(-) rename packages/subgraph/config/{celo.json => celo-old.json} (100%) create mode 100644 packages/subgraph/config/celo-prod.json diff --git a/packages/contracts/contracts/UBI/UBIPool.sol b/packages/contracts/contracts/UBI/UBIPool.sol index 507a6b79..5cc9fcb9 100644 --- a/packages/contracts/contracts/UBI/UBIPool.sol +++ b/packages/contracts/contracts/UBI/UBIPool.sol @@ -28,6 +28,7 @@ contract UBIPool is AccessControlUpgradeable, GoodCollectiveSuperApp, UUPSUpgrad error CLAIMFOR_DISABLED(); error NOT_MEMBER(address claimer); + error NOT_MANAGER(address manager); error NOT_WHITELISTED(address whitelistedRoot); error ALREADY_CLAIMED(address whitelistedRoot); error INVALID_0_VALUE(); @@ -273,7 +274,7 @@ contract UBIPool is AccessControlUpgradeable, GoodCollectiveSuperApp, UUPSUpgrad } // if no members validator then if members only only manager can add members else if (ubiSettings.onlyMembers && hasRole(MANAGER_ROLE, msg.sender) == false) { - revert NOT_MEMBER(member); + revert NOT_MANAGER(member); } _grantRole(MEMBER_ROLE, member); diff --git a/packages/contracts/hardhat.config.ts b/packages/contracts/hardhat.config.ts index ae70f1e1..d04c0630 100644 --- a/packages/contracts/hardhat.config.ts +++ b/packages/contracts/hardhat.config.ts @@ -77,6 +77,20 @@ const config: HardhatUserConfig = { }, }, }, + 'production-celo': { + chainId: 42220, + url: `https://forno.celo.org`, + gasPrice: 5000000000, + accounts: { + mnemonic, + }, + verify: { + etherscan: { + apiKey: process.env.CELOSCAN_KEY, + apiUrl: 'https://api.celoscan.io/', + }, + }, + }, 'development-celo': { chainId: 42220, url: `https://forno.celo.org`, diff --git a/packages/sdk-js/scripts/createPool.ts b/packages/sdk-js/scripts/createPool.ts index 1c9bb453..3dc823f1 100644 --- a/packages/sdk-js/scripts/createPool.ts +++ b/packages/sdk-js/scripts/createPool.ts @@ -23,8 +23,10 @@ const main = async () => { if (process.argv[2] === 'ubi') { return createUbiPool(); } + if (process.argv[2] === 'update') { + return updatePool('0xDd1c12f197E6D1E2FBA15487AaAE500eF6e07BCA'); + } return createPool(); - // return updatePool('0x5dd23da6e1635928fa7f4fa2d8d8d623aa9c89ee'); }; const getMemberPools = async (address: string) => { @@ -73,22 +75,44 @@ const createPool = async () => { }; const updatePool = async (pool: string) => { + // const poolAttributes = { + // name: 'Test ipfs single donation with swap (Real G$)', + // description: + // 'This Collective directly supports smallholder farmers around Kenya’s Kakamega forest. These farmers are acting as nurseries, growing and nurturing native trees to maturity for subsequent reforestation. In partnership with Silvi.', + // email: 'myemail@gmail.com', + // website: 'https://www.silvi.earth', + // twitter: 'https://twitter.com/SilviProtocol', + // instagram: 'https://instagram.com/x', + // threads: '', + // headerImage: + // 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/65032c75ac7830faf70f9469_FooterBackground.jpg', + // logo: 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/65032c4586b18e3e276db342_SilviLogo.png', + // images: [ + // 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/6507cb24ffa8a438ccf13d70_Screen%20Shot%202023-09-17%20at%208.59.00%20PM-p-500.png', + // 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/650352d39dde89c0fd676908_RuralPlanting.jpg', + // ], + // }; + const poolAttributes = { - name: 'Test ipfs single donation with swap (Real G$)', + name: 'Red Tent Women in Nigeria', description: - 'This Collective directly supports smallholder farmers around Kenya’s Kakamega forest. These farmers are acting as nurseries, growing and nurturing native trees to maturity for subsequent reforestation. In partnership with Silvi.', - email: 'myemail@gmail.com', - website: 'https://www.silvi.earth', - twitter: 'https://twitter.com/SilviProtocol', - instagram: 'https://instagram.com/x', - threads: '', - headerImage: - 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/65032c75ac7830faf70f9469_FooterBackground.jpg', - logo: 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/65032c4586b18e3e276db342_SilviLogo.png', - images: [ - 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/6507cb24ffa8a438ccf13d70_Screen%20Shot%202023-09-17%20at%208.59.00%20PM-p-500.png', - 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/650352d39dde89c0fd676908_RuralPlanting.jpg', - ], + 'The Red Tent Women’s Basic Income is designed to flow money unencumbered and unconditionally from women and allies who have it to women who need it. Red Tent’s goal is to create a decentralized, automated and highly personalized system that measures and improves collaboration and wellbeing in communities. Women are the keepers of family and community, yet continue to be disproportionately affected by lack of access to capital and influence in all systems.', + rewardDescription: 'Up to 500 women in Nigeria may claim G$ every day ', + goodidDescription: 'Verified women from Nigeria', + // email: '', + website: 'https://redtent.io', + // twitter: '', + // instagram: '', + // twitter: 'https://twitter.com/SilviProtocol', + // instagram: 'https://instagram.com/x', + // threads: '', + headerImage: 'https://bafybeigo4ef4czy3rscoukfccgilzkzjchsr5cbhesz7sdc2komkqcibxu.ipfs.w3s.link/RedTent.tiny.png', + logo: 'https://bafybeigo4ef4czy3rscoukfccgilzkzjchsr5cbhesz7sdc2komkqcibxu.ipfs.w3s.link/RedTent.tiny.png', + // logo: 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/65032c4586b18e3e276db342_SilviLogo.png', + // images: [ + // 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/6507cb24ffa8a438ccf13d70_Screen%20Shot%202023-09-17%20at%208.59.00%20PM-p-500.png', + // 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/650352d39dde89c0fd676908_RuralPlanting.jpg', + // ], }; const cid = await sdk.savePoolToIPFS(poolAttributes); @@ -98,44 +122,49 @@ const updatePool = async (pool: string) => { const res = await tx.wait(); console.log('updated pool', res); }; + const createUbiPool = async () => { - const projectId = 'testing'; + const projectId = 'redtent'; const poolAttributes = { - name: 'Test subgraph events UBI Pool (Dev token)', + name: 'Red Tent Women in Nigeria', description: - 'This Collective directly supports smallholder farmers around Kenya’s Kakamega forest. These farmers are acting as nurseries, growing and nurturing native trees to maturity for subsequent reforestation. In partnership with Silvi.', - rewardDescription: 'Daily UBI', - goodidDescription: 'Verified women from kenya', - email: 'myemail@gmail.com', - website: 'https://www.gooddollar.org', - twitter: 'https://twitter.com/SilviProtocol', - instagram: 'https://instagram.com/x', - threads: '', - headerImage: - 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/65032c75ac7830faf70f9469_FooterBackground.jpg', - logo: 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/65032c4586b18e3e276db342_SilviLogo.png', - images: [ - 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/6507cb24ffa8a438ccf13d70_Screen%20Shot%202023-09-17%20at%208.59.00%20PM-p-500.png', - 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/650352d39dde89c0fd676908_RuralPlanting.jpg', - ], + 'The Red Tent Women’s Basic Income is designed to flow money unencumbered and unconditionally from women and allies who have it to women who need it. Red Tent’s goal is to create a decentralized, automated and highly personalized system that measures and improves collaboration and wellbeing in communities. Women are the keepers of family and community, yet continue to be disproportionately affected by lack of access to capital and influence in all systems.', + rewardDescription: 'Up to 500 women in Nigeria may claim G$ every day ', + goodidDescription: 'Verified women from Nigeria', + // email: '', + website: 'https://redtent.io', + // twitter: '', + // instagram: '', + // twitter: 'https://twitter.com/SilviProtocol', + // instagram: 'https://instagram.com/x', + // threads: '', + headerImage: 'https://bafybeigo4ef4czy3rscoukfccgilzkzjchsr5cbhesz7sdc2komkqcibxu.ipfs.w3s.link/RedTent.tiny.png', + logo: 'https://bafybeigo4ef4czy3rscoukfccgilzkzjchsr5cbhesz7sdc2komkqcibxu.ipfs.w3s.link/RedTent.tiny.png', + // logo: 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/65032c4586b18e3e276db342_SilviLogo.png', + // images: [ + // 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/6507cb24ffa8a438ccf13d70_Screen%20Shot%202023-09-17%20at%208.59.00%20PM-p-500.png', + // 'https://uploads-ssl.webflow.com/639e611ba0716a170111fe96/650352d39dde89c0fd676908_RuralPlanting.jpg', + // ], }; const poolSettings: UBIPoolSettings = { manager: wallet.address, membersValidator: ethers.constants.AddressZero, - uniquenessValidator: '0xF25fA0D4896271228193E782831F6f3CFCcF169C', - rewardToken: '0xFa51eFDc0910CCdA91732e6806912Fa12e2FD475', + uniquenessValidator: '0xC361A6E67822a0EDc17D899227dd9FC50BD62F42', + // uniquenessValidator: '0xF25fA0D4896271228193E782831F6f3CFCcF169C', + // rewardToken: '0xFa51eFDc0910CCdA91732e6806912Fa12e2FD475', + rewardToken: '0x62B8B11039FcfE5aB0C56E502b1C372A3d2a9c7A', // network === 'development-celo' // ? '0xFa51eFDc0910CCdA91732e6806912Fa12e2FD475' // : '0x62B8B11039FcfE5aB0C56E502b1C372A3d2a9c7A', //celo production token }; const ubiSettings: UBISettings = { - cycleLengthDays: ethers.BigNumber.from(60), + cycleLengthDays: ethers.BigNumber.from(7), claimPeriodDays: ethers.BigNumber.from(1), - minActiveUsers: ethers.BigNumber.from(100), - claimForEnabled: true, - maxClaimAmount: ethers.utils.parseEther('100'), + minActiveUsers: ethers.BigNumber.from(500), + claimForEnabled: false, + maxClaimAmount: ethers.utils.parseEther('437'), maxClaimers: 500, onlyMembers: true, }; diff --git a/packages/subgraph/config/celo.json b/packages/subgraph/config/celo-old.json similarity index 100% rename from packages/subgraph/config/celo.json rename to packages/subgraph/config/celo-old.json diff --git a/packages/subgraph/config/celo-prod.json b/packages/subgraph/config/celo-prod.json new file mode 100644 index 00000000..5f2c287f --- /dev/null +++ b/packages/subgraph/config/celo-prod.json @@ -0,0 +1,8 @@ +{ + "network": "celo", + "UBIPoolFactoryAddress": "0x7af4A611FFA07644C3FE93aA49230e2BD2Ec8dBf", + "DirectPaymentsFactoryAddress": "0x55B06783023D8bfAB28ddb823098f1485b15Bf22", + "ProvableNFTAddress": "0x62AFaF745425fd2b67b358083068d3802e9EF04d", + "startBlock": 28352452, + "startBlockUbi": 28352452 +} diff --git a/packages/subgraph/package.json b/packages/subgraph/package.json index 14219bca..26f43bca 100644 --- a/packages/subgraph/package.json +++ b/packages/subgraph/package.json @@ -7,7 +7,7 @@ "codegen": "graph codegen", "build": "yarn build:copyabi && yarn codegen && graph build", "build:copyabi": "find ../contracts/artifacts/contracts/ -type f -not -name '*.dbg.json' -exec cp '{}' ./abis/ \\;", - "deploy": "yarn prepare celo; yarn prepare celo; graph auth --studio $STUDIO_PROD_KEY; graph deploy --studio goodcollective --version-label=v$npm_package_version", + "deploy": "yarn prepare celo-prod; graph auth --studio $STUDIO_PROD_KEY; graph deploy --studio goodcollective --version-label=v$npm_package_version", "deploy-dev": "yarn prepare celo-dev;graph auth --studio $STUDIO_PROD_KEY; graph deploy --studio goodcollective --version-label= --version-label=dev-v$npm_package_version", "create-local": "graph create --node http://localhost:8020/ scaffold-eth/your-contract", "remove-local": "graph remove --node http://localhost:8020/ scaffold-eth/your-contract", From 549b9d209321a6c468829e805e6b832433816c99 Mon Sep 17 00:00:00 2001 From: sirpy Date: Mon, 21 Oct 2024 12:54:02 +0300 Subject: [PATCH 3/3] add: deployments --- packages/contracts/releases/deployment.json | 11749 +++++++++++++++++- 1 file changed, 11072 insertions(+), 677 deletions(-) diff --git a/packages/contracts/releases/deployment.json b/packages/contracts/releases/deployment.json index 79bf7f8a..38c2fe71 100644 --- a/packages/contracts/releases/deployment.json +++ b/packages/contracts/releases/deployment.json @@ -6518,11 +6518,11 @@ } }, { - "name": "localhost", + "name": "development-celo", "chainId": "42220", "contracts": { "DirectPaymentsFactory": { - "address": "0x998abeb3E57409262aE5b751f60747921B33613E", + "address": "0xb1C7F09156d04BFf6F412447A73a0F72929b6ea4", "abi": [ { "anonymous": false, @@ -7488,7 +7488,7 @@ ] }, "DirectPaymentsFactory_Implementation": { - "address": "0x95401dc811bb5740090279Ba06cfA8fcF6113778", + "address": "0xff13c3E9E462a73433505E7230F72F4565b81296", "abi": [ { "inputs": [], @@ -8430,7 +8430,7 @@ ] }, "DirectPaymentsFactory_Proxy": { - "address": "0x998abeb3E57409262aE5b751f60747921B33613E", + "address": "0xb1C7F09156d04BFf6F412447A73a0F72929b6ea4", "abi": [ { "inputs": [ @@ -8504,7 +8504,7 @@ ] }, "DirectPaymentsPool": { - "address": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", + "address": "0x3a522bc2746d2411663317365C66ef4b248135E7", "abi": [ { "inputs": [ @@ -10513,155 +10513,8 @@ } ] }, - "GoodDollar": { - "address": "0xc5a5C42992dECbae36851359345FE25997F5C42d", - "abi": [ - "constructor(address _host)", - "error SF_TOKEN_AGREEMENT_ALREADY_EXISTS()", - "error SF_TOKEN_AGREEMENT_DOES_NOT_EXIST()", - "error SF_TOKEN_BURN_INSUFFICIENT_BALANCE()", - "error SF_TOKEN_MOVE_INSUFFICIENT_BALANCE()", - "error SF_TOKEN_ONLY_HOST()", - "error SF_TOKEN_ONLY_LISTED_AGREEMENT()", - "error SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS()", - "error SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS()", - "error SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS()", - "error SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER()", - "error SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED()", - "error SUPER_TOKEN_MINT_TO_ZERO_ADDRESS()", - "error SUPER_TOKEN_NFT_PROXY_ALREADY_SET()", - "error SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT()", - "error SUPER_TOKEN_NO_UNDERLYING_TOKEN()", - "error SUPER_TOKEN_ONLY_GOV_OWNER()", - "error SUPER_TOKEN_ONLY_HOST()", - "error SUPER_TOKEN_ONLY_SELF()", - "error SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS()", - "error SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS()", - "event AgreementCreated(address indexed agreementClass, bytes32 id, bytes32[] data)", - "event AgreementLiquidated(address indexed agreementClass, bytes32 id, address indexed penaltyAccount, address indexed rewardAccount, uint256 rewardAmount)", - "event AgreementLiquidatedBy(address liquidatorAccount, address indexed agreementClass, bytes32 id, address indexed penaltyAccount, address indexed bondAccount, uint256 rewardAmount, uint256 bailoutAmount)", - "event AgreementLiquidatedV2(address indexed agreementClass, bytes32 id, address indexed liquidatorAccount, address indexed targetAccount, address rewardAmountReceiver, uint256 rewardAmount, int256 targetAccountBalanceDelta, bytes liquidationTypeData)", - "event AgreementStateUpdated(address indexed agreementClass, address indexed account, uint256 slotId)", - "event AgreementTerminated(address indexed agreementClass, bytes32 id)", - "event AgreementUpdated(address indexed agreementClass, bytes32 id, bytes32[] data)", - "event Approval(address indexed owner, address indexed spender, uint256 value)", - "event AuthorizedOperator(address indexed operator, address indexed tokenHolder)", - "event Bailout(address indexed bailoutAccount, uint256 bailoutAmount)", - "event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData)", - "event CodeUpdated(bytes32 uuid, address codeAddress)", - "event ConstantInflowNFTCreated(address indexed constantInflowNFT)", - "event ConstantOutflowNFTCreated(address indexed constantOutflowNFT)", - "event Initialized(uint8 version)", - "event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData)", - "event Paused(address account)", - "event RevokedOperator(address indexed operator, address indexed tokenHolder)", - "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", - "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", - "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", - "event Sent(address indexed operator, address indexed from, address indexed to, uint256 amount, bytes data, bytes operatorData)", - "event Transfer(address indexed from, address indexed to, uint256 value, bytes data)", - "event Transfer(address indexed from, address indexed to, uint256 value)", - "event TransferFee(address from, address to, uint256 amount, uint256 fee, bool senderPays)", - "event Unpaused(address account)", - "function CONSTANT_INFLOW_NFT() view returns (address)", - "function CONSTANT_OUTFLOW_NFT() view returns (address)", - "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", - "function DOMAIN_SEPARATOR() view returns (bytes32)", - "function MINTER_ROLE() view returns (bytes32)", - "function PAUSER_ROLE() view returns (bytes32)", - "function addMinter(address _minter)", - "function addPauser(address _pauser)", - "function allowance(address account, address spender) view returns (uint256)", - "function approve(address spender, uint256 amount) returns (bool)", - "function authorizeOperator(address operator)", - "function balanceOf(address account) view returns (uint256 balance)", - "function burn(uint256 amount)", - "function burn(uint256 amount, bytes data)", - "function burnFrom(address account, uint256 amount)", - "function cap() view returns (uint256)", - "function castrate()", - "function createAgreement(bytes32 id, bytes32[] data)", - "function creditGasFees(address from, address feeRecipient, address gatewayFeeRecipient, address baseFeeRecipient, uint256 refund, uint256 tipTxFee, uint256 gatewayFee, uint256 baseTxFee)", - "function debitGasFees(address from, uint256 value)", - "function decimals() pure returns (uint8)", - "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", - "function defaultOperators() view returns (address[])", - "function disableHostOperations() view returns (bool)", - "function enableHostOperations(bool enabled)", - "function feeRecipient() view returns (address)", - "function formula() view returns (address)", - "function getAccountActiveAgreements(address account) view returns (address[])", - "function getAgreementData(address agreementClass, bytes32 id, uint256 dataLength) view returns (bytes32[] data)", - "function getAgreementStateSlot(address agreementClass, address account, uint256 slotId, uint256 dataLength) view returns (bytes32[] slotData)", - "function getCodeAddress() view returns (address codeAddress)", - "function getFees(uint256 amount, address sender, address recipient) view returns (uint256 fee, bool senderPays)", - "function getFees(uint256 amount) view returns (uint256 fee, bool senderPays)", - "function getHost() view returns (address host)", - "function getRoleAdmin(bytes32 role) view returns (bytes32)", - "function getRoleMember(bytes32 role, uint256 index) view returns (address)", - "function getRoleMemberCount(bytes32 role) view returns (uint256)", - "function getUnderlyingToken() view returns (address)", - "function grantRole(bytes32 role, address account)", - "function granularity() pure returns (uint256)", - "function hasRole(bytes32 role, address account) view returns (bool)", - "function identity() view returns (address)", - "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", - "function initialize(address underlyingToken, uint8 underlyingDecimals, string n, string s)", - "function initialize(string n, string s, uint256 _cap, address _formula, address _identity, address _feeRecipient, address _owner, address _outflowNFT, address _inflowNFT)", - "function isAccountCritical(address account, uint256 timestamp) view returns (bool isCritical)", - "function isAccountCriticalNow(address account) view returns (bool isCritical)", - "function isAccountSolvent(address account, uint256 timestamp) view returns (bool isSolvent)", - "function isAccountSolventNow(address account) view returns (bool isSolvent)", - "function isMinter(address _minter) view returns (bool)", - "function isOperatorFor(address operator, address tokenHolder) view returns (bool)", - "function isPauser(address _pauser) view returns (bool)", - "function makeLiquidationPayoutsV2(bytes32 id, bytes liquidationTypeData, address liquidatorAccount, bool useDefaultRewardAccount, address targetAccount, uint256 rewardAmount, int256 targetAccountBalanceDelta)", - "function mint(address to, uint256 amount) returns (bool)", - "function name() view returns (string)", - "function nonces(address owner) view returns (uint256)", - "function operationApprove(address account, address spender, uint256 amount)", - "function operationDecreaseAllowance(address account, address spender, uint256 subtractedValue)", - "function operationIncreaseAllowance(address account, address spender, uint256 addedValue)", - "function operationSend(address spender, address recipient, uint256 amount, bytes userData)", - "function operationTransferFrom(address account, address spender, address recipient, uint256 amount)", - "function operatorBurn(address account, uint256 amount, bytes data, bytes operatorData)", - "function operatorSend(address sender, address recipient, uint256 amount, bytes data, bytes operatorData)", - "function owner() view returns (address)", - "function pause()", - "function paused() view returns (bool)", - "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)", - "function poolAdminNFT() view returns (address)", - "function poolMemberNFT() view returns (address)", - "function proxiableUUID() pure returns (bytes32)", - "function realtimeBalanceOf(address account, uint256 timestamp) view returns (int256 availableBalance, uint256 deposit, uint256 owedDeposit)", - "function realtimeBalanceOfNow(address account) view returns (int256 availableBalance, uint256 deposit, uint256 owedDeposit, uint256 timestamp)", - "function renounceMinter()", - "function renounceRole(bytes32 role, address account)", - "function revokeOperator(address operator)", - "function revokeRole(bytes32 role, address account)", - "function selfApproveFor(address account, address spender, uint256 amount)", - "function send(address recipient, uint256 amount, bytes data)", - "function setFeeRecipient(address _feeRecipient)", - "function setFormula(address _formula)", - "function setIdentity(address _identity)", - "function setNFTProxyContracts(address _constantOutflowNFT, address _constantInflowNFT, address _poolAdminNFT, address _poolMemberNFT)", - "function settleBalance(address account, int256 delta)", - "function supportsInterface(bytes4 interfaceId) view returns (bool)", - "function symbol() view returns (string)", - "function terminateAgreement(bytes32 id, uint256 dataLength)", - "function totalSupply() view returns (uint256)", - "function transfer(address to, uint256 amount) returns (bool)", - "function transferAndCall(address to, uint256 amount, bytes data) returns (bool)", - "function transferFrom(address holder, address recipient, uint256 amount) returns (bool)", - "function transferOwnership(address _owner)", - "function unpause()", - "function updateAgreementData(bytes32 id, bytes32[] data)", - "function updateAgreementStateSlot(address account, uint256 slotId, bytes32[] slotData)", - "function updateCode(address newAddress)" - ] - }, "HelperLibrary": { - "address": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", + "address": "0xC25Da2F6d074230F0870056659f8cEC6eD6f44cb", "abi": [ { "inputs": [ @@ -10824,7 +10677,7 @@ ] }, "ProvableNFT": { - "address": "0xf5059a5D33d5853360D16C683c16e67980206f36", + "address": "0x251EEBd7d9469bbcc02Ef23c95D902Cbb7fD73B3", "abi": [ { "anonymous": false, @@ -12029,7 +11882,7 @@ ] }, "ProvableNFT_Implementation": { - "address": "0x851356ae760d987E095750cCeb3bC6014560891C", + "address": "0x3c6461fc746E156adB3d8979847b7c2637021b91", "abi": [ { "inputs": [ @@ -13210,7 +13063,7 @@ ] }, "ProvableNFT_Proxy": { - "address": "0xf5059a5D33d5853360D16C683c16e67980206f36", + "address": "0x251EEBd7d9469bbcc02Ef23c95D902Cbb7fD73B3", "abi": [ { "inputs": [ @@ -13283,18 +13136,19 @@ } ] }, - "SuperFluidResolver": { - "address": "0x02330b5Be8EBD0D4d354813a7BB535140A77C881", - "abi": [] - }, - "SwapRouterMock": { - "address": "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", + "UBIPool": { + "address": "0x5104a0843F45856b1529Faac34d2003990F87286", "abi": [ { "inputs": [ { - "internalType": "address", - "name": "token", + "internalType": "contract ISuperfluid", + "name": "_host", + "type": "address" + }, + { + "internalType": "contract IV3SwapRouter", + "name": "_swapRouter", "type": "address" } ], @@ -13304,167 +13158,49 @@ { "inputs": [ { - "components": [ - { - "internalType": "bytes", - "name": "path", - "type": "bytes" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMinimum", - "type": "uint256" - } - ], - "internalType": "struct IV3SwapRouter.ExactInputParams", - "name": "params", - "type": "tuple" + "internalType": "address", + "name": "whitelistedRoot", + "type": "address" } ], - "name": "exactInput", - "outputs": [ + "name": "ALREADY_CLAIMED", + "type": "error" + }, + { + "inputs": [], + "name": "CLAIMFOR_DISABLED", + "type": "error" + }, + { + "inputs": [], + "name": "EMPTY_MANAGER", + "type": "error" + }, + { + "inputs": [ { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" + "internalType": "int96", + "name": "curFeeRate", + "type": "int96" + }, + { + "internalType": "int96", + "name": "newFeeRate", + "type": "int96" } ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "tokenIn", - "type": "address" - }, - { - "internalType": "address", - "name": "tokenOut", - "type": "address" - }, - { - "internalType": "uint24", - "name": "fee", - "type": "uint24" - }, - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amountIn", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "amountOutMinimum", - "type": "uint256" - }, - { - "internalType": "uint160", - "name": "sqrtPriceLimitX96", - "type": "uint160" - } - ], - "internalType": "struct IV3SwapRouter.ExactInputSingleParams", - "name": "params", - "type": "tuple" - } - ], - "name": "exactInputSingle", - "outputs": [ - { - "internalType": "uint256", - "name": "amountOut", - "type": "uint256" - } - ], - "stateMutability": "payable", - "type": "function" - } - ] - }, - "UBIPool": { - "address": "0x4826533B4897376654Bb4d4AD88B7faFD0C98528", - "abi": [ - { - "inputs": [ - { - "internalType": "contract ISuperfluid", - "name": "_host", - "type": "address" - }, - { - "internalType": "contract IV3SwapRouter", - "name": "_swapRouter", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "whitelistedRoot", - "type": "address" - } - ], - "name": "ALREADY_CLAIMED", - "type": "error" - }, - { - "inputs": [], - "name": "CLAIMFOR_DISABLED", - "type": "error" - }, - { - "inputs": [], - "name": "EMPTY_MANAGER", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "int96", - "name": "curFeeRate", - "type": "int96" - }, - { - "internalType": "int96", - "name": "newFeeRate", - "type": "int96" - } - ], - "name": "FEE_FLOW_FAILED", - "type": "error" - }, - { - "inputs": [], - "name": "INVALID_0_VALUE", - "type": "error" - }, - { - "inputs": [], - "name": "MAX_CLAIMERS_REACHED", - "type": "error" + "name": "FEE_FLOW_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_0_VALUE", + "type": "error" + }, + { + "inputs": [], + "name": "MAX_CLAIMERS_REACHED", + "type": "error" }, { "inputs": [ @@ -14724,6 +14460,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -15203,7 +14952,7 @@ ] }, "UBIPoolFactory": { - "address": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", + "address": "0x4602C5F43A9961E430247D3Fb2d5450285080754", "abi": [ { "anonymous": false, @@ -16151,7 +15900,7 @@ ] }, "UBIPoolFactory_Implementation": { - "address": "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf", + "address": "0x1fd21Fe7e0ad98e311b507c71B196bAc3939B404", "abi": [ { "inputs": [], @@ -17075,7 +16824,7 @@ ] }, "UBIPoolFactory_Proxy": { - "address": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", + "address": "0x4602C5F43A9961E430247D3Fb2d5450285080754", "abi": [ { "inputs": [ @@ -17151,11 +16900,11 @@ } }, { - "name": "development-celo", + "name": "localhost", "chainId": "42220", "contracts": { "DirectPaymentsFactory": { - "address": "0xb1C7F09156d04BFf6F412447A73a0F72929b6ea4", + "address": "0x998abeb3E57409262aE5b751f60747921B33613E", "abi": [ { "anonymous": false, @@ -18121,7 +17870,7 @@ ] }, "DirectPaymentsFactory_Implementation": { - "address": "0x09f252f2a25fbaC45007De009e4587eeB769772D", + "address": "0x95401dc811bb5740090279Ba06cfA8fcF6113778", "abi": [ { "inputs": [], @@ -19063,7 +18812,7 @@ ] }, "DirectPaymentsFactory_Proxy": { - "address": "0xb1C7F09156d04BFf6F412447A73a0F72929b6ea4", + "address": "0x998abeb3E57409262aE5b751f60747921B33613E", "abi": [ { "inputs": [ @@ -19137,7 +18886,7 @@ ] }, "DirectPaymentsPool": { - "address": "0x3ddC912625244b056AB5b1572E8F50B8E0389DF6", + "address": "0x1613beB3B2C4f22Ee086B2b38C1476A3cE7f78E8", "abi": [ { "inputs": [ @@ -21146,118 +20895,265 @@ } ] }, - "HelperLibrary": { - "address": "0xC25Da2F6d074230F0870056659f8cEC6eD6f44cb", - "abi": [ - { - "inputs": [ - { - "components": [ - { - "internalType": "uint256", - "name": "netIncome", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "totalFees", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "lastUpdate", - "type": "uint256" - }, - { - "internalType": "address", - "name": "lastFeeRecipient", - "type": "address" - }, - { - "internalType": "int96", - "name": "lastIncomeRate", - "type": "int96" - } - ], - "internalType": "struct IGoodCollectiveSuperApp.Stats", - "name": "stats", - "type": "tuple" - }, - { - "internalType": "contract ISuperToken", - "name": "superToken", - "type": "ISuperToken" - } - ], - "name": "getRealtimeStats", - "outputs": [ - { - "internalType": "uint256", - "name": "netIncome", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "totalFees", - "type": "uint256" - }, - { - "internalType": "int96", - "name": "incomeFlowRate", - "type": "int96" - }, - { - "internalType": "int96", - "name": "feeRate", - "type": "int96" - } - ], - "stateMutability": "view", - "type": "function" - } - ] - }, - "MultiClaimModule": { - "address": "0xE6Af17143015aAA030c8aCd81811e72AC6046c0e", + "GoodDollar": { + "address": "0xc5a5C42992dECbae36851359345FE25997F5C42d", "abi": [ - { - "inputs": [], - "name": "getModuleTypes", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "typeID", - "type": "uint256" - } - ], - "name": "isModuleType", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "contracts", - "type": "address[]" + "constructor(address _host)", + "error SF_TOKEN_AGREEMENT_ALREADY_EXISTS()", + "error SF_TOKEN_AGREEMENT_DOES_NOT_EXIST()", + "error SF_TOKEN_BURN_INSUFFICIENT_BALANCE()", + "error SF_TOKEN_MOVE_INSUFFICIENT_BALANCE()", + "error SF_TOKEN_ONLY_HOST()", + "error SF_TOKEN_ONLY_LISTED_AGREEMENT()", + "error SUPER_TOKEN_APPROVE_FROM_ZERO_ADDRESS()", + "error SUPER_TOKEN_APPROVE_TO_ZERO_ADDRESS()", + "error SUPER_TOKEN_BURN_FROM_ZERO_ADDRESS()", + "error SUPER_TOKEN_CALLER_IS_NOT_OPERATOR_FOR_HOLDER()", + "error SUPER_TOKEN_INFLATIONARY_DEFLATIONARY_NOT_SUPPORTED()", + "error SUPER_TOKEN_MINT_TO_ZERO_ADDRESS()", + "error SUPER_TOKEN_NFT_PROXY_ALREADY_SET()", + "error SUPER_TOKEN_NOT_ERC777_TOKENS_RECIPIENT()", + "error SUPER_TOKEN_NO_UNDERLYING_TOKEN()", + "error SUPER_TOKEN_ONLY_GOV_OWNER()", + "error SUPER_TOKEN_ONLY_HOST()", + "error SUPER_TOKEN_ONLY_SELF()", + "error SUPER_TOKEN_TRANSFER_FROM_ZERO_ADDRESS()", + "error SUPER_TOKEN_TRANSFER_TO_ZERO_ADDRESS()", + "event AgreementCreated(address indexed agreementClass, bytes32 id, bytes32[] data)", + "event AgreementLiquidated(address indexed agreementClass, bytes32 id, address indexed penaltyAccount, address indexed rewardAccount, uint256 rewardAmount)", + "event AgreementLiquidatedBy(address liquidatorAccount, address indexed agreementClass, bytes32 id, address indexed penaltyAccount, address indexed bondAccount, uint256 rewardAmount, uint256 bailoutAmount)", + "event AgreementLiquidatedV2(address indexed agreementClass, bytes32 id, address indexed liquidatorAccount, address indexed targetAccount, address rewardAmountReceiver, uint256 rewardAmount, int256 targetAccountBalanceDelta, bytes liquidationTypeData)", + "event AgreementStateUpdated(address indexed agreementClass, address indexed account, uint256 slotId)", + "event AgreementTerminated(address indexed agreementClass, bytes32 id)", + "event AgreementUpdated(address indexed agreementClass, bytes32 id, bytes32[] data)", + "event Approval(address indexed owner, address indexed spender, uint256 value)", + "event AuthorizedOperator(address indexed operator, address indexed tokenHolder)", + "event Bailout(address indexed bailoutAccount, uint256 bailoutAmount)", + "event Burned(address indexed operator, address indexed from, uint256 amount, bytes data, bytes operatorData)", + "event CodeUpdated(bytes32 uuid, address codeAddress)", + "event ConstantInflowNFTCreated(address indexed constantInflowNFT)", + "event ConstantOutflowNFTCreated(address indexed constantOutflowNFT)", + "event Initialized(uint8 version)", + "event Minted(address indexed operator, address indexed to, uint256 amount, bytes data, bytes operatorData)", + "event Paused(address account)", + "event RevokedOperator(address indexed operator, address indexed tokenHolder)", + "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", + "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", + "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", + "event Sent(address indexed operator, address indexed from, address indexed to, uint256 amount, bytes data, bytes operatorData)", + "event Transfer(address indexed from, address indexed to, uint256 value, bytes data)", + "event Transfer(address indexed from, address indexed to, uint256 value)", + "event TransferFee(address from, address to, uint256 amount, uint256 fee, bool senderPays)", + "event Unpaused(address account)", + "function CONSTANT_INFLOW_NFT() view returns (address)", + "function CONSTANT_OUTFLOW_NFT() view returns (address)", + "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", + "function DOMAIN_SEPARATOR() view returns (bytes32)", + "function MINTER_ROLE() view returns (bytes32)", + "function PAUSER_ROLE() view returns (bytes32)", + "function addMinter(address _minter)", + "function addPauser(address _pauser)", + "function allowance(address account, address spender) view returns (uint256)", + "function approve(address spender, uint256 amount) returns (bool)", + "function authorizeOperator(address operator)", + "function balanceOf(address account) view returns (uint256 balance)", + "function burn(uint256 amount)", + "function burn(uint256 amount, bytes data)", + "function burnFrom(address account, uint256 amount)", + "function cap() view returns (uint256)", + "function castrate()", + "function createAgreement(bytes32 id, bytes32[] data)", + "function creditGasFees(address from, address feeRecipient, address gatewayFeeRecipient, address baseFeeRecipient, uint256 refund, uint256 tipTxFee, uint256 gatewayFee, uint256 baseTxFee)", + "function debitGasFees(address from, uint256 value)", + "function decimals() pure returns (uint8)", + "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", + "function defaultOperators() view returns (address[])", + "function disableHostOperations() view returns (bool)", + "function enableHostOperations(bool enabled)", + "function feeRecipient() view returns (address)", + "function formula() view returns (address)", + "function getAccountActiveAgreements(address account) view returns (address[])", + "function getAgreementData(address agreementClass, bytes32 id, uint256 dataLength) view returns (bytes32[] data)", + "function getAgreementStateSlot(address agreementClass, address account, uint256 slotId, uint256 dataLength) view returns (bytes32[] slotData)", + "function getCodeAddress() view returns (address codeAddress)", + "function getFees(uint256 amount, address sender, address recipient) view returns (uint256 fee, bool senderPays)", + "function getFees(uint256 amount) view returns (uint256 fee, bool senderPays)", + "function getHost() view returns (address host)", + "function getRoleAdmin(bytes32 role) view returns (bytes32)", + "function getRoleMember(bytes32 role, uint256 index) view returns (address)", + "function getRoleMemberCount(bytes32 role) view returns (uint256)", + "function getUnderlyingToken() view returns (address)", + "function grantRole(bytes32 role, address account)", + "function granularity() pure returns (uint256)", + "function hasRole(bytes32 role, address account) view returns (bool)", + "function identity() view returns (address)", + "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", + "function initialize(address underlyingToken, uint8 underlyingDecimals, string n, string s)", + "function initialize(string n, string s, uint256 _cap, address _formula, address _identity, address _feeRecipient, address _owner, address _outflowNFT, address _inflowNFT)", + "function isAccountCritical(address account, uint256 timestamp) view returns (bool isCritical)", + "function isAccountCriticalNow(address account) view returns (bool isCritical)", + "function isAccountSolvent(address account, uint256 timestamp) view returns (bool isSolvent)", + "function isAccountSolventNow(address account) view returns (bool isSolvent)", + "function isMinter(address _minter) view returns (bool)", + "function isOperatorFor(address operator, address tokenHolder) view returns (bool)", + "function isPauser(address _pauser) view returns (bool)", + "function makeLiquidationPayoutsV2(bytes32 id, bytes liquidationTypeData, address liquidatorAccount, bool useDefaultRewardAccount, address targetAccount, uint256 rewardAmount, int256 targetAccountBalanceDelta)", + "function mint(address to, uint256 amount) returns (bool)", + "function name() view returns (string)", + "function nonces(address owner) view returns (uint256)", + "function operationApprove(address account, address spender, uint256 amount)", + "function operationDecreaseAllowance(address account, address spender, uint256 subtractedValue)", + "function operationIncreaseAllowance(address account, address spender, uint256 addedValue)", + "function operationSend(address spender, address recipient, uint256 amount, bytes userData)", + "function operationTransferFrom(address account, address spender, address recipient, uint256 amount)", + "function operatorBurn(address account, uint256 amount, bytes data, bytes operatorData)", + "function operatorSend(address sender, address recipient, uint256 amount, bytes data, bytes operatorData)", + "function owner() view returns (address)", + "function pause()", + "function paused() view returns (bool)", + "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)", + "function poolAdminNFT() view returns (address)", + "function poolMemberNFT() view returns (address)", + "function proxiableUUID() pure returns (bytes32)", + "function realtimeBalanceOf(address account, uint256 timestamp) view returns (int256 availableBalance, uint256 deposit, uint256 owedDeposit)", + "function realtimeBalanceOfNow(address account) view returns (int256 availableBalance, uint256 deposit, uint256 owedDeposit, uint256 timestamp)", + "function renounceMinter()", + "function renounceRole(bytes32 role, address account)", + "function revokeOperator(address operator)", + "function revokeRole(bytes32 role, address account)", + "function selfApproveFor(address account, address spender, uint256 amount)", + "function send(address recipient, uint256 amount, bytes data)", + "function setFeeRecipient(address _feeRecipient)", + "function setFormula(address _formula)", + "function setIdentity(address _identity)", + "function setNFTProxyContracts(address _constantOutflowNFT, address _constantInflowNFT, address _poolAdminNFT, address _poolMemberNFT)", + "function settleBalance(address account, int256 delta)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function symbol() view returns (string)", + "function terminateAgreement(bytes32 id, uint256 dataLength)", + "function totalSupply() view returns (uint256)", + "function transfer(address to, uint256 amount) returns (bool)", + "function transferAndCall(address to, uint256 amount, bytes data) returns (bool)", + "function transferFrom(address holder, address recipient, uint256 amount) returns (bool)", + "function transferOwnership(address _owner)", + "function unpause()", + "function updateAgreementData(bytes32 id, bytes32[] data)", + "function updateAgreementStateSlot(address account, uint256 slotId, bytes32[] slotData)", + "function updateCode(address newAddress)" + ] + }, + "HelperLibrary": { + "address": "0xa82fF9aFd8f496c3d6ac40E2a0F282E47488CFc9", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "netIncome", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalFees", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdate", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lastFeeRecipient", + "type": "address" + }, + { + "internalType": "int96", + "name": "lastIncomeRate", + "type": "int96" + } + ], + "internalType": "struct IGoodCollectiveSuperApp.Stats", + "name": "stats", + "type": "tuple" + }, + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "ISuperToken" + } + ], + "name": "getRealtimeStats", + "outputs": [ + { + "internalType": "uint256", + "name": "netIncome", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalFees", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "incomeFlowRate", + "type": "int96" + }, + { + "internalType": "int96", + "name": "feeRate", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + } + ] + }, + "MultiClaimModule": { + "address": "0xE6Af17143015aAA030c8aCd81811e72AC6046c0e", + "abi": [ + { + "inputs": [], + "name": "getModuleTypes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "typeID", + "type": "uint256" + } + ], + "name": "isModuleType", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "contracts", + "type": "address[]" }, { "internalType": "contract IERC20Upgradeable", @@ -21310,7 +21206,7 @@ ] }, "ProvableNFT": { - "address": "0x251EEBd7d9469bbcc02Ef23c95D902Cbb7fD73B3", + "address": "0xf5059a5D33d5853360D16C683c16e67980206f36", "abi": [ { "anonymous": false, @@ -22515,7 +22411,7 @@ ] }, "ProvableNFT_Implementation": { - "address": "0x3c6461fc746E156adB3d8979847b7c2637021b91", + "address": "0x851356ae760d987E095750cCeb3bC6014560891C", "abi": [ { "inputs": [ @@ -23486,17 +23382,10526 @@ { "inputs": [ { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ] + }, + "ProvableNFT_Proxy": { + "address": "0xf5059a5D33d5853360D16C683c16e67980206f36", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] + }, + "SuperFluidResolver": { + "address": "0x02330b5Be8EBD0D4d354813a7BB535140A77C881", + "abi": [] + }, + "SwapRouterMock": { + "address": "0xc3e53F4d16Ae77Db1c982e75a937B9f60FE63690", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes", + "name": "path", + "type": "bytes" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinimum", + "type": "uint256" + } + ], + "internalType": "struct IV3SwapRouter.ExactInputParams", + "name": "params", + "type": "tuple" + } + ], + "name": "exactInput", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "tokenOut", + "type": "address" + }, + { + "internalType": "uint24", + "name": "fee", + "type": "uint24" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amountIn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amountOutMinimum", + "type": "uint256" + }, + { + "internalType": "uint160", + "name": "sqrtPriceLimitX96", + "type": "uint160" + } + ], + "internalType": "struct IV3SwapRouter.ExactInputSingleParams", + "name": "params", + "type": "tuple" + } + ], + "name": "exactInputSingle", + "outputs": [ + { + "internalType": "uint256", + "name": "amountOut", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + } + ] + }, + "UBIPool": { + "address": "0x4826533B4897376654Bb4d4AD88B7faFD0C98528", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "_host", + "type": "address" + }, + { + "internalType": "contract IV3SwapRouter", + "name": "_swapRouter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "whitelistedRoot", + "type": "address" + } + ], + "name": "ALREADY_CLAIMED", + "type": "error" + }, + { + "inputs": [], + "name": "CLAIMFOR_DISABLED", + "type": "error" + }, + { + "inputs": [], + "name": "EMPTY_MANAGER", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int96", + "name": "curFeeRate", + "type": "int96" + }, + { + "internalType": "int96", + "name": "newFeeRate", + "type": "int96" + } + ], + "name": "FEE_FLOW_FAILED", + "type": "error" + }, + { + "inputs": [], + "name": "INVALID_0_VALUE", + "type": "error" + }, + { + "inputs": [], + "name": "MAX_CLAIMERS_REACHED", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + } + ], + "name": "MIN_FLOWRATE", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "claimer", + "type": "address" + } + ], + "name": "NOT_MEMBER", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "whitelistedRoot", + "type": "address" + } + ], + "name": "NOT_WHITELISTED", + "type": "error" + }, + { + "inputs": [], + "name": "NotAcceptedSuperToken", + "type": "error" + }, + { + "inputs": [], + "name": "NotImplemented", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "ONLY_HOST_OR_SENDER", + "type": "error" + }, + { + "inputs": [], + "name": "UNSUPPORTED_TOKEN", + "type": "error" + }, + { + "inputs": [], + "name": "UnauthorizedHost", + "type": "error" + }, + { + "inputs": [], + "name": "ZERO_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "ZERO_AMOUNT", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct UBIPool.PoolSettings", + "name": "settings", + "type": "tuple" + } + ], + "name": "PoolSettingsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "supporter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "previousContribution", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "contribution", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int96", + "name": "previousFlowRate", + "type": "int96" + }, + { + "indexed": false, + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isFlowUpdate", + "type": "bool" + } + ], + "name": "SupporterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "day", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "dailyUbi", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "periodClaimers", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "periodDistributed", + "type": "uint256" + } + ], + "name": "UBICalculated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "whitelistedRoot", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "claimer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "UBIClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "day", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "pool", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "cycleLength", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "dailyUBIPool", + "type": "uint256" + } + ], + "name": "UBICycleCalculated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "indexed": false, + "internalType": "struct UBIPool.UBISettings", + "name": "settings", + "type": "tuple" + } + ], + "name": "UBISettingsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "CFAV1_TYPE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MANAGER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MEMBER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_FLOW_RATE", + "outputs": [ + { + "internalType": "int96", + "name": "", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + }, + { + "internalType": "bytes", + "name": "extraData", + "type": "bytes" + } + ], + "name": "addMember", + "outputs": [ + { + "internalType": "bool", + "name": "isMember", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementCreated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementTerminated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementUpdated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "beforeAgreementCreated", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "beforeAgreementTerminated", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "beforeAgreementUpdated", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cfaV1", + "outputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "contract IConstantFlowAgreementV1", + "name": "cfa", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_member", + "type": "address" + } + ], + "name": "checkEntitlement", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "checkEntitlement", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "claimer", + "type": "address" + }, + { + "internalType": "bool", + "name": "sendToWhitelistedRoot", + "type": "bool" + } + ], + "name": "claimFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "currentDayInCycle", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "estimateNextDailyUBI", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getCurrentDay", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getRealtimeContribution", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRealtimeStats", + "outputs": [ + { + "internalType": "uint256", + "name": "netIncome", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalFees", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "incomeFlowRate", + "type": "int96" + }, + { + "internalType": "int96", + "name": "feeRate", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRegistry", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "swapFrom", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minReturn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "path", + "type": "bytes" + } + ], + "internalType": "struct HelperLibrary.SwapData", + "name": "_customData", + "type": "tuple" + }, + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_ctx", + "type": "bytes" + } + ], + "name": "handleSwap", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_member", + "type": "address" + } + ], + "name": "hasClaimed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "host", + "outputs": [ + { + "internalType": "contract ISuperfluid", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "internalType": "struct UBIPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "internalType": "struct UBIPool.UBISettings", + "name": "_ubiSettings", + "type": "tuple" + }, + { + "internalType": "contract UBIPoolFactory", + "name": "_registry", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "_superToken", + "type": "address" + } + ], + "name": "isAcceptedSuperToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextClaimTime", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onTokenTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registry", + "outputs": [ + { + "internalType": "contract UBIPoolFactory", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "internalType": "struct UBIPool.PoolSettings", + "name": "_settings", + "type": "tuple" + } + ], + "name": "setPoolSettings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "internalType": "struct UBIPool.UBISettings", + "name": "_ubiSettings", + "type": "tuple" + } + ], + "name": "setUBISettings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "settings", + "outputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stats", + "outputs": [ + { + "internalType": "uint256", + "name": "netIncome", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalFees", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdate", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lastFeeRecipient", + "type": "address" + }, + { + "internalType": "int96", + "name": "lastIncomeRate", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "status", + "outputs": [ + { + "internalType": "uint256", + "name": "currentDay", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dailyUbi", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "dailyCyclePool", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "startOfCycle", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "currentCycleLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "periodClaimers", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "periodDistributed", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "claimersCount", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "superToken", + "outputs": [ + { + "internalType": "contract ISuperToken", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_ctx", + "type": "bytes" + } + ], + "name": "support", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "swapFrom", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minReturn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "path", + "type": "bytes" + } + ], + "internalType": "struct HelperLibrary.SwapData", + "name": "_customData", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "_ctx", + "type": "bytes" + } + ], + "name": "supportWithSwap", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "supporters", + "outputs": [ + { + "internalType": "uint256", + "name": "contribution", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "internalType": "uint128", + "name": "lastUpdated", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "swapRouter", + "outputs": [ + { + "internalType": "contract IV3SwapRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ubiSettings", + "outputs": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToLatest", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ] + }, + "UBIPoolFactory": { + "address": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "inputs": [], + "name": "NOT_POOL", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_PROJECT_OWNER", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "string", + "name": "projectId", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct UBIPool.PoolSettings", + "name": "poolSettings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "indexed": false, + "internalType": "struct UBIPool.UBISettings", + "name": "poolLimits", + "type": "tuple" + } + ], + "name": "PoolCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + } + ], + "name": "PoolDetailsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isVerified", + "type": "bool" + } + ], + "name": "PoolVerifiedChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "impl", + "type": "address" + } + ], + "name": "UpdatedImpl", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract UBIPool", + "name": "_pool", + "type": "address" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + } + ], + "name": "changePoolDetails", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_projectId", + "type": "string" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "internalType": "struct UBIPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "internalType": "struct UBIPool.UBISettings", + "name": "_limits", + "type": "tuple" + } + ], + "name": "createManagedPool", + "outputs": [ + { + "internalType": "contract UBIPool", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_projectId", + "type": "string" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "internalType": "struct UBIPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "internalType": "struct UBIPool.UBISettings", + "name": "_limits", + "type": "tuple" + } + ], + "name": "createPool", + "outputs": [ + { + "internalType": "contract UBIPool", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeBps", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "getMemberPools", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "impl", + "outputs": [ + { + "internalType": "contract UpgradeableBeacon", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_impl", + "type": "address" + }, + { + "internalType": "address", + "name": "_feeRecipient", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_feeBps", + "type": "uint32" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "memberPools", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "pools", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "projectIdToControlPool", + "outputs": [ + { + "internalType": "contract UBIPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "registry", + "outputs": [ + { + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "internalType": "bool", + "name": "isVerified", + "type": "bool" + }, + { + "internalType": "string", + "name": "projectId", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeRecipient", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_feeBps", + "type": "uint32" + } + ], + "name": "setFeeInfo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract UBIPool", + "name": "_pool", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isVerified", + "type": "bool" + } + ], + "name": "setVerified", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_impl", + "type": "address" + } + ], + "name": "updateImpl", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + } + ] + }, + "UBIPoolFactory_Implementation": { + "address": "0x99bbA657f2BbC93c02D617f8bA121cB8Fc104Acf", + "abi": [ + { + "inputs": [], + "name": "NOT_POOL", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_PROJECT_OWNER", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "string", + "name": "projectId", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "indexed": false, + "internalType": "struct UBIPool.PoolSettings", + "name": "poolSettings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "indexed": false, + "internalType": "struct UBIPool.UBISettings", + "name": "poolLimits", + "type": "tuple" + } + ], + "name": "PoolCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + } + ], + "name": "PoolDetailsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isVerified", + "type": "bool" + } + ], + "name": "PoolVerifiedChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "impl", + "type": "address" + } + ], + "name": "UpdatedImpl", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract UBIPool", + "name": "_pool", + "type": "address" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + } + ], + "name": "changePoolDetails", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_projectId", + "type": "string" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "internalType": "struct UBIPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "internalType": "struct UBIPool.UBISettings", + "name": "_limits", + "type": "tuple" + } + ], + "name": "createManagedPool", + "outputs": [ + { + "internalType": "contract UBIPool", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_projectId", + "type": "string" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + } + ], + "internalType": "struct UBIPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "cycleLengthDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "claimPeriodDays", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "minActiveUsers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "claimForEnabled", + "type": "bool" + }, + { + "internalType": "uint256", + "name": "maxClaimAmount", + "type": "uint256" + }, + { + "internalType": "uint32", + "name": "maxClaimers", + "type": "uint32" + }, + { + "internalType": "bool", + "name": "onlyMembers", + "type": "bool" + } + ], + "internalType": "struct UBIPool.UBISettings", + "name": "_limits", + "type": "tuple" + } + ], + "name": "createPool", + "outputs": [ + { + "internalType": "contract UBIPool", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeBps", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "getMemberPools", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "impl", + "outputs": [ + { + "internalType": "contract UpgradeableBeacon", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_impl", + "type": "address" + }, + { + "internalType": "address", + "name": "_feeRecipient", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_feeBps", + "type": "uint32" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "memberPools", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "pools", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "projectIdToControlPool", + "outputs": [ + { + "internalType": "contract UBIPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "registry", + "outputs": [ + { + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "internalType": "bool", + "name": "isVerified", + "type": "bool" + }, + { + "internalType": "string", + "name": "projectId", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeRecipient", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_feeBps", + "type": "uint32" + } + ], + "name": "setFeeInfo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract UBIPool", + "name": "_pool", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isVerified", + "type": "bool" + } + ], + "name": "setVerified", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_impl", + "type": "address" + } + ], + "name": "updateImpl", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ] + }, + "UBIPoolFactory_Proxy": { + "address": "0x0E801D84Fa97b50751Dbf25036d067dCf18858bF", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] + } + } + }, + { + "name": "production-celo", + "chainId": "42220", + "contracts": { + "HelperLibrary": { + "address": "0xbc67CA6E216b37C3496Aa9Aa091a648b575755a4", + "abi": [ + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "netIncome", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalFees", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdate", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lastFeeRecipient", + "type": "address" + }, + { + "internalType": "int96", + "name": "lastIncomeRate", + "type": "int96" + } + ], + "internalType": "struct IGoodCollectiveSuperApp.Stats", + "name": "stats", + "type": "tuple" + }, + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "ISuperToken" + } + ], + "name": "getRealtimeStats", + "outputs": [ + { + "internalType": "uint256", + "name": "netIncome", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalFees", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "incomeFlowRate", + "type": "int96" + }, + { + "internalType": "int96", + "name": "feeRate", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + } + ] + }, + "DirectPaymentsPool": { + "address": "0xb49947CeFA93bf543A93d521F619b3C78AD46E5E", + "abi": [ + { + "inputs": [ + { + "internalType": "contract ISuperfluid", + "name": "_host", + "type": "address" + }, + { + "internalType": "contract IV3SwapRouter", + "name": "_swapRouter", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "ALREADY_CLAIMED", + "type": "error" + }, + { + "inputs": [], + "name": "EMPTY_MANAGER", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int96", + "name": "curFeeRate", + "type": "int96" + }, + { + "internalType": "int96", + "name": "newFeeRate", + "type": "int96" + } + ], + "name": "FEE_FLOW_FAILED", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + } + ], + "name": "MIN_FLOWRATE", + "type": "error" + }, + { + "inputs": [], + "name": "NFTTYPE_CHANGED", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "NFT_MISSING", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_MANAGER", + "type": "error" + }, + { + "inputs": [], + "name": "NO_BALANCE", + "type": "error" + }, + { + "inputs": [], + "name": "NotAcceptedSuperToken", + "type": "error" + }, + { + "inputs": [], + "name": "NotImplemented", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "ONLY_HOST_OR_SENDER", + "type": "error" + }, + { + "inputs": [], + "name": "OVER_GLOBAL_LIMITS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "OVER_MEMBER_LIMITS", + "type": "error" + }, + { + "inputs": [], + "name": "UNSUPPORTED_NFT", + "type": "error" + }, + { + "inputs": [], + "name": "UNSUPPORTED_TOKEN", + "type": "error" + }, + { + "inputs": [], + "name": "UnauthorizedHost", + "type": "error" + }, + { + "inputs": [], + "name": "ZERO_ADDRESS", + "type": "error" + }, + { + "inputs": [], + "name": "ZERO_AMOUNT", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "eventType", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "eventTimestamp", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "eventQuantity", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewardPerContributer", + "type": "uint256" + } + ], + "name": "EventRewardClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "totalRewards", + "type": "uint256" + } + ], + "name": "NFTClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "contributer", + "type": "address" + } + ], + "name": "NOT_MEMBER_OR_WHITELISTED", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "string", + "name": "projectId", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "indexed": false, + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "poolSettings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "poolLimits", + "type": "tuple" + } + ], + "name": "PoolCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "limits", + "type": "tuple" + } + ], + "name": "PoolLimitsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "indexed": false, + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "settings", + "type": "tuple" + } + ], + "name": "PoolSettingsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "supporter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "previousContribution", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "contribution", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "int96", + "name": "previousFlowRate", + "type": "int96" + }, + { + "indexed": false, + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isFlowUpdate", + "type": "bool" + } + ], + "name": "SupporterUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "CFAV1_TYPE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MANAGER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MEMBER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_FLOW_RATE", + "outputs": [ + { + "internalType": "int96", + "name": "", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementCreated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementTerminated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "cbdata", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "ctx", + "type": "bytes" + } + ], + "name": "afterAgreementUpdated", + "outputs": [ + { + "internalType": "bytes", + "name": "newCtx", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "beforeAgreementCreated", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "beforeAgreementTerminated", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "superToken", + "type": "address" + }, + { + "internalType": "address", + "name": "agreementClass", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "agreementData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "beforeAgreementUpdated", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cfaV1", + "outputs": [ + { + "internalType": "contract ISuperfluid", + "name": "host", + "type": "address" + }, + { + "internalType": "contract IConstantFlowAgreementV1", + "name": "cfa", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_nftId", + "type": "uint256" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_nftId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "_data", + "type": "tuple" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "claimedNfts", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getRealtimeContribution", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRealtimeStats", + "outputs": [ + { + "internalType": "uint256", + "name": "netIncome", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalFees", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "incomeFlowRate", + "type": "int96" + }, + { + "internalType": "int96", + "name": "feeRate", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getRegistry", + "outputs": [ + { + "internalType": "contract IRegistry", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "globalLimits", + "outputs": [ + { + "internalType": "uint128", + "name": "daily", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "monthly", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "total", + "type": "uint128" + }, + { + "internalType": "uint64", + "name": "lastReward", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "lastMonth", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "swapFrom", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minReturn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "path", + "type": "bytes" + } + ], + "internalType": "struct HelperLibrary.SwapData", + "name": "_customData", + "type": "tuple" + }, + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_ctx", + "type": "bytes" + } + ], + "name": "handleSwap", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "host", + "outputs": [ + { + "internalType": "contract ISuperfluid", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ProvableNFT", + "name": "_nft", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "_limits", + "type": "tuple" + }, + { + "internalType": "contract DirectPaymentsFactory", + "name": "_registry", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract ISuperToken", + "name": "_superToken", + "type": "address" + } + ], + "name": "isAcceptedSuperToken", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "limits", + "outputs": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "memberLimits", + "outputs": [ + { + "internalType": "uint128", + "name": "daily", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "monthly", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "total", + "type": "uint128" + }, + { + "internalType": "uint64", + "name": "lastReward", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "lastMonth", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "_nftData", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "withClaim", + "type": "bool" + } + ], + "name": "mintNFT", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "nft", + "outputs": [ + { + "internalType": "contract ProvableNFT", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onTokenTransfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registry", + "outputs": [ + { + "internalType": "contract DirectPaymentsFactory", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "_limits", + "type": "tuple" + } + ], + "name": "setPoolLimits", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "_settings", + "type": "tuple" + } + ], + "name": "setPoolSettings", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "settings", + "outputs": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "stats", + "outputs": [ + { + "internalType": "uint256", + "name": "netIncome", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "totalFees", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdate", + "type": "uint256" + }, + { + "internalType": "address", + "name": "lastFeeRecipient", + "type": "address" + }, + { + "internalType": "int96", + "name": "lastIncomeRate", + "type": "int96" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "superToken", + "outputs": [ + { + "internalType": "contract ISuperToken", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_ctx", + "type": "bytes" + } + ], + "name": "support", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_sender", + "type": "address" + }, + { + "components": [ + { + "internalType": "address", + "name": "swapFrom", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minReturn", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "path", + "type": "bytes" + } + ], + "internalType": "struct HelperLibrary.SwapData", + "name": "_customData", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "_ctx", + "type": "bytes" + } + ], + "name": "supportWithSwap", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "supporters", + "outputs": [ + { + "internalType": "uint256", + "name": "contribution", + "type": "uint256" + }, + { + "internalType": "int96", + "name": "flowRate", + "type": "int96" + }, + { + "internalType": "uint128", + "name": "lastUpdated", + "type": "uint128" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "swapRouter", + "outputs": [ + { + "internalType": "contract IV3SwapRouter", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToLatest", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ] + }, + "ProvableNFT_Implementation": { + "address": "0x31DF376bE970d426E053C760B9C642Da86e53BA0", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + } + ], + "name": "BAD_DATAHASH", + "type": "error" + }, + { + "inputs": [], + "name": "BAD_NFTTYPE", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "NOT_MANAGER", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_MINTER", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "nftDataHash", + "type": "bytes32" + } + ], + "name": "ProvableNftMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_manager", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_nftType", + "type": "uint32" + } + ], + "name": "addManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_nftType", + "type": "uint32" + } + ], + "name": "getManagerRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "roleHash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getNFTData", + "outputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getNFTEvent", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getNFTEvents", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "string", + "name": "_uri", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "_nftDataHash", + "type": "bytes32" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "_nftData", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "_withStore", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_callData", + "type": "bytes" + } + ], + "name": "mintPermissioned", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "_nftData", + "type": "tuple" + } + ], + "name": "proveNFTData", + "outputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "data", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ] + }, + "ProvableNFT_Proxy": { + "address": "0x62AFaF745425fd2b67b358083068d3802e9EF04d", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] + }, + "ProvableNFT": { + "address": "0x62AFaF745425fd2b67b358083068d3802e9EF04d", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "dataHash", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "tokenId", + "type": "bytes32" + } + ], + "name": "BAD_DATAHASH", + "type": "error" + }, + { + "inputs": [], + "name": "BAD_NFTTYPE", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "name": "NOT_MANAGER", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_MINTER", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "nftDataHash", + "type": "bytes32" + } + ], + "name": "ProvableNftMinted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_manager", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_nftType", + "type": "uint32" + } + ], + "name": "addManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint32", + "name": "_nftType", + "type": "uint32" + } + ], + "name": "getManagerRole", + "outputs": [ + { + "internalType": "bytes32", + "name": "roleHash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getNFTData", + "outputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_index", + "type": "uint256" + } + ], + "name": "getNFTEvent", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getNFTEvents", + "outputs": [ + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "string", + "name": "_uri", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "_nftDataHash", + "type": "bytes32" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "_nftData", + "type": "tuple" + }, + { + "internalType": "bool", + "name": "_withStore", + "type": "bool" + }, + { + "internalType": "bytes", + "name": "_callData", + "type": "bytes" + } + ], + "name": "mintPermissioned", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "_nftData", + "type": "tuple" + } + ], + "name": "proveNFTData", + "outputs": [ + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16", + "name": "version", + "type": "uint16" + }, + { + "internalType": "string", + "name": "nftUri", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint16", + "name": "subtype", + "type": "uint16" + }, + { + "internalType": "uint32", + "name": "timestamp", + "type": "uint32" + }, + { + "internalType": "uint256", + "name": "quantity", + "type": "uint256" + }, + { + "internalType": "string", + "name": "eventUri", + "type": "string" + }, + { + "internalType": "address[]", + "name": "contributers", + "type": "address[]" + }, + { + "internalType": "uint128", + "name": "rewardOverride", + "type": "uint128" + } + ], + "internalType": "struct ProvableNFT.EventData[]", + "name": "events", + "type": "tuple[]" + } + ], + "internalType": "struct ProvableNFT.NFTData", + "name": "data", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + } + ] + }, + "DirectPaymentsFactory_Implementation": { + "address": "0x65A82dc2142C8fB529E202a1B2b0F427E487a94e", + "abi": [ + { + "inputs": [], + "name": "NOT_POOL", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_PROJECT_OWNER", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "string", + "name": "projectId", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "indexed": false, + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "poolSettings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "poolLimits", + "type": "tuple" + } + ], + "name": "PoolCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + } + ], + "name": "PoolDetailsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isVerified", + "type": "bool" + } + ], + "name": "PoolVerifiedChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "impl", + "type": "address" + } + ], + "name": "UpdatedImpl", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "addMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "_pool", + "type": "address" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + } + ], + "name": "changePoolDetails", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_projectId", + "type": "string" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "_limits", + "type": "tuple" + } + ], + "name": "createBeaconPool", + "outputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_projectId", + "type": "string" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "_limits", + "type": "tuple" + } + ], + "name": "createPool", + "outputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeBps", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "impl", + "outputs": [ + { + "internalType": "contract UpgradeableBeacon", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_dpimpl", + "type": "address" + }, + { + "internalType": "contract ProvableNFT", + "name": "_nft", + "type": "address" + }, + { + "internalType": "address", + "name": "_feeRecipient", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_feeBps", + "type": "uint32" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "memberPools", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextNftType", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nft", + "outputs": [ + { + "internalType": "contract ProvableNFT", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "pools", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "projectIdToControlPool", + "outputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "registry", + "outputs": [ + { + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "internalType": "bool", + "name": "isVerified", + "type": "bool" + }, + { + "internalType": "string", + "name": "projectId", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_feeRecipient", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_feeBps", + "type": "uint32" + } + ], + "name": "setFeeInfo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "_pool", + "type": "address" + }, + { + "internalType": "bool", + "name": "_isVerified", + "type": "bool" + } + ], + "name": "setVerified", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_impl", + "type": "address" + } + ], + "name": "updateImpl", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ] + }, + "DirectPaymentsFactory_Proxy": { + "address": "0x55B06783023D8bfAB28ddb823098f1485b15Bf22", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ] + }, + "DirectPaymentsFactory": { + "address": "0x55B06783023D8bfAB28ddb823098f1485b15Bf22", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "inputs": [], + "name": "NOT_POOL", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_PROJECT_OWNER", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": true, + "internalType": "string", + "name": "projectId", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "indexed": false, + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "poolSettings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "indexed": false, + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "poolLimits", + "type": "tuple" + } + ], + "name": "PoolCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "string", + "name": "ipfs", + "type": "string" + } + ], + "name": "PoolDetailsChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pool", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "isVerified", + "type": "bool" + } + ], + "name": "PoolVerifiedChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "impl", + "type": "address" + } + ], + "name": "UpdatedImpl", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "addMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "_pool", + "type": "address" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + } + ], + "name": "changePoolDetails", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_projectId", + "type": "string" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "_limits", + "type": "tuple" + } + ], + "name": "createBeaconPool", + "outputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_projectId", + "type": "string" + }, + { + "internalType": "string", + "name": "_ipfs", + "type": "string" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "nftType", + "type": "uint32" + }, + { + "internalType": "uint16[]", + "name": "validEvents", + "type": "uint16[]" + }, + { + "internalType": "uint128[]", + "name": "rewardPerEvent", + "type": "uint128[]" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "contract IMembersValidator", + "name": "membersValidator", + "type": "address" + }, + { + "internalType": "contract IIdentityV2", + "name": "uniquenessValidator", + "type": "address" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "rewardToken", + "type": "address" + }, + { + "internalType": "bool", + "name": "allowRewardOverride", + "type": "bool" + } + ], + "internalType": "struct DirectPaymentsPool.PoolSettings", + "name": "_settings", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "maxTotalPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerMonth", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxMemberPerDay", + "type": "uint256" + } + ], + "internalType": "struct DirectPaymentsPool.SafetyLimits", + "name": "_limits", + "type": "tuple" + } + ], + "name": "createPool", + "outputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "pool", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "feeBps", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "feeRecipient", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "impl", + "outputs": [ + { + "internalType": "contract UpgradeableBeacon", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_owner", + "type": "address" + }, + { + "internalType": "address", + "name": "_dpimpl", + "type": "address" + }, + { + "internalType": "contract ProvableNFT", + "name": "_nft", + "type": "address" + }, + { + "internalType": "address", + "name": "_feeRecipient", + "type": "address" + }, + { + "internalType": "uint32", + "name": "_feeBps", + "type": "uint32" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "memberPools", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextNftType", + "outputs": [ + { + "internalType": "uint32", + "name": "", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nft", + "outputs": [ + { + "internalType": "contract ProvableNFT", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "pools", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "projectIdToControlPool", + "outputs": [ + { + "internalType": "contract DirectPaymentsPool", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "registry", + "outputs": [ + { + "internalType": "string", + "name": "ipfs", + "type": "string" + }, + { + "internalType": "bool", + "name": "isVerified", + "type": "bool" }, + { + "internalType": "string", + "name": "projectId", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ { "internalType": "address", - "name": "account", + "name": "member", "type": "address" } ], - "name": "renounceRole", + "name": "removeMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -23514,7 +33919,7 @@ "type": "address" } ], - "name": "revokeRole", + "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -23522,22 +33927,17 @@ { "inputs": [ { - "internalType": "address", - "name": "from", - "type": "address" + "internalType": "bytes32", + "name": "role", + "type": "bytes32" }, { "internalType": "address", - "name": "to", + "name": "account", "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" } ], - "name": "safeTransferFrom", + "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -23546,26 +33946,16 @@ "inputs": [ { "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", + "name": "_feeRecipient", "type": "address" }, { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "internalType": "uint32", + "name": "_feeBps", + "type": "uint32" } ], - "name": "safeTransferFrom", + "name": "setFeeInfo", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -23573,17 +33963,17 @@ { "inputs": [ { - "internalType": "address", - "name": "operator", + "internalType": "contract DirectPaymentsPool", + "name": "_pool", "type": "address" }, { "internalType": "bool", - "name": "approved", + "name": "_isVerified", "type": "bool" } ], - "name": "setApprovalForAll", + "name": "setVerified", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -23607,57 +33997,15 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "tokenURI", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", + "name": "_impl", "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" } ], - "name": "transferFrom", + "name": "updateImpl", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -23692,12 +34040,7 @@ "outputs": [], "stateMutability": "payable", "type": "function" - } - ] - }, - "ProvableNFT_Proxy": { - "address": "0x251EEBd7d9469bbcc02Ef23c95D902Cbb7fD73B3", - "abi": [ + }, { "inputs": [ { @@ -23713,64 +34056,11 @@ ], "stateMutability": "payable", "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "stateMutability": "payable", - "type": "receive" } ] }, "UBIPool": { - "address": "0xeEDC10E7e417FB9B79dA655F9D00384520E2c545", + "address": "0xf527334fEb570D21644586903262BAfD63cc9f46", "abi": [ { "inputs": [ @@ -25093,6 +35383,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "member", + "type": "address" + } + ], + "name": "removeMember", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -25571,9 +35874,19 @@ } ] }, - "UBIPoolFactory": { - "address": "0x4602C5F43A9961E430247D3Fb2d5450285080754", + "UBIPoolFactory_Implementation": { + "address": "0x29Bf50E94c3adD90551C1E7C85dD5f7a8C968B75", "abi": [ + { + "inputs": [], + "name": "NOT_POOL", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_PROJECT_OWNER", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -25599,44 +35912,13 @@ { "indexed": true, "internalType": "address", - "name": "beacon", - "type": "address" - } - ], - "name": "BeaconUpgraded", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", + "name": "beacon", "type": "address" } ], - "name": "Upgraded", + "name": "BeaconUpgraded", "type": "event" }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "stateMutability": "payable", - "type": "receive" - }, - { - "inputs": [], - "name": "NOT_POOL", - "type": "error" - }, - { - "inputs": [], - "name": "NOT_PROJECT_OWNER", - "type": "error" - }, { "anonymous": false, "inputs": [ @@ -25872,6 +36154,19 @@ "name": "UpdatedImpl", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", @@ -26500,7 +36795,12 @@ "outputs": [], "stateMutability": "payable", "type": "function" - }, + } + ] + }, + "UBIPoolFactory_Proxy": { + "address": "0x7af4A611FFA07644C3FE93aA49230e2BD2Ec8dBf", + "abi": [ { "inputs": [ { @@ -26516,22 +36816,65 @@ ], "stateMutability": "payable", "type": "constructor" - } - ] - }, - "UBIPoolFactory_Implementation": { - "address": "0x396A429Fe95F21475860593C86CC9c17D39F7f69", - "abi": [ + }, { - "inputs": [], - "name": "NOT_POOL", - "type": "error" + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" }, { - "inputs": [], - "name": "NOT_PROJECT_OWNER", - "type": "error" + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" }, + { + "stateMutability": "payable", + "type": "receive" + } + ] + }, + "UBIPoolFactory": { + "address": "0x7af4A611FFA07644C3FE93aA49230e2BD2Ec8dBf", + "abi": [ { "anonymous": false, "inputs": [ @@ -26564,6 +36907,37 @@ "name": "BeaconUpgraded", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + }, + { + "inputs": [], + "name": "NOT_POOL", + "type": "error" + }, + { + "inputs": [], + "name": "NOT_PROJECT_OWNER", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -26799,19 +37173,6 @@ "name": "UpdatedImpl", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", @@ -27440,12 +37801,7 @@ "outputs": [], "stateMutability": "payable", "type": "function" - } - ] - }, - "UBIPoolFactory_Proxy": { - "address": "0x4602C5F43A9961E430247D3Fb2d5450285080754", - "abi": [ + }, { "inputs": [ { @@ -27461,59 +37817,98 @@ ], "stateMutability": "payable", "type": "constructor" + } + ] + }, + "MultiClaimModule": { + "address": "0xE6Af17143015aAA030c8aCd81811e72AC6046c0e", + "abi": [ + { + "inputs": [], + "name": "getModuleTypes", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" }, { - "anonymous": false, "inputs": [ { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, + "internalType": "uint256", + "name": "typeID", + "type": "uint256" + } + ], + "name": "isModuleType", + "outputs": [ { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" + "internalType": "bool", + "name": "", + "type": "bool" } ], - "name": "AdminChanged", - "type": "event" + "stateMutability": "view", + "type": "function" }, { - "anonymous": false, "inputs": [ { - "indexed": true, + "internalType": "address[]", + "name": "contracts", + "type": "address[]" + }, + { + "internalType": "contract IERC20Upgradeable", + "name": "token", + "type": "address" + }, + { "internalType": "address", - "name": "beacon", + "name": "recipient", "type": "address" } ], - "name": "BeaconUpgraded", - "type": "event" + "name": "multiClaim", + "outputs": [ + { + "internalType": "bool[]", + "name": "success", + "type": "bool[]" + } + ], + "stateMutability": "nonpayable", + "type": "function" }, { - "anonymous": false, "inputs": [ { - "indexed": true, - "internalType": "address", - "name": "implementation", - "type": "address" + "internalType": "bytes", + "name": "data", + "type": "bytes" } ], - "name": "Upgraded", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" + "name": "onInstall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" }, { - "stateMutability": "payable", - "type": "receive" + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onUninstall", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" } ] }