diff --git a/app/(general)/integration/allo/layout.tsx b/app/(general)/integration/allo/layout.tsx
new file mode 100644
index 00000000..99a6cb01
--- /dev/null
+++ b/app/(general)/integration/allo/layout.tsx
@@ -0,0 +1,72 @@
+'use client'
+import { ReactNode } from 'react'
+
+import { motion } from 'framer-motion'
+import Image from 'next/image'
+import { usePathname } from 'next/navigation'
+import Balancer from 'react-wrap-balancer'
+
+import { IsDarkTheme } from '@/components/shared/is-dark-theme'
+import { IsLightTheme } from '@/components/shared/is-light-theme'
+import { LinkComponent } from '@/components/shared/link-component'
+import { FADE_DOWN_ANIMATION_VARIANTS } from '@/config/design'
+import { turboIntegrations } from '@/data/turbo-integrations'
+import { cn } from '@/lib/utils'
+
+const integrationData = turboIntegrations.allo
+const registryPath = '/integration/allo/registry'
+const alloPath = '/integration/allo/pool'
+
+export default function LayoutIntegration({ children }: { children: ReactNode }) {
+ const pathname = usePathname()
+
+ return (
+ <>
+
+
+
+
+
+
+
+
+
+ {integrationData.name}
+
+
+ {integrationData.description}
+
+
+
+ Documentation
+
+
+
+
+
+
+
+
+
+
+
+
+ {children}
+ >
+ )
+}
diff --git a/app/(general)/integration/allo/opengraph-image.tsx b/app/(general)/integration/allo/opengraph-image.tsx
new file mode 100644
index 00000000..935b53ae
--- /dev/null
+++ b/app/(general)/integration/allo/opengraph-image.tsx
@@ -0,0 +1,9 @@
+import { IntegrationOgImage } from '@/components/ui/social/og-image-integrations'
+
+export const runtime = 'edge'
+export const size = {
+ width: 1200,
+ height: 630,
+}
+
+export default IntegrationOgImage('allo')
diff --git a/app/(general)/integration/allo/page.tsx b/app/(general)/integration/allo/page.tsx
new file mode 100644
index 00000000..0a784207
--- /dev/null
+++ b/app/(general)/integration/allo/page.tsx
@@ -0,0 +1,5 @@
+import { redirect } from 'next/navigation'
+
+export default function PageIntegration() {
+ redirect('/integration/allo/registry')
+}
diff --git a/app/(general)/integration/allo/pool/page.tsx b/app/(general)/integration/allo/pool/page.tsx
new file mode 100644
index 00000000..974da58d
--- /dev/null
+++ b/app/(general)/integration/allo/pool/page.tsx
@@ -0,0 +1,27 @@
+'use client'
+
+import { WalletConnect } from '@/components/blockchain/wallet-connect'
+import { IsWalletConnected } from '@/components/shared/is-wallet-connected'
+import { IsWalletDisconnected } from '@/components/shared/is-wallet-disconnected'
+import { AlloAllocate, AlloCreatePool, AlloDistribute, AlloFundPool, AlloRegisterRecipient } from '@/integrations/allo/components/pool'
+
+export default function PageAllo() {
+ return (
+
+ )
+}
diff --git a/app/(general)/integration/allo/registry/page.tsx b/app/(general)/integration/allo/registry/page.tsx
new file mode 100644
index 00000000..8619509e
--- /dev/null
+++ b/app/(general)/integration/allo/registry/page.tsx
@@ -0,0 +1,25 @@
+'use client'
+
+import { WalletConnect } from '@/components/blockchain/wallet-connect'
+import { IsWalletConnected } from '@/components/shared/is-wallet-connected'
+import { IsWalletDisconnected } from '@/components/shared/is-wallet-disconnected'
+import { RegistryCreateProfile, RegistryUpdateProfileMetadata, RegistryUpdateProfileName } from '@/integrations/allo/components/registry'
+
+export default function PageRegistry() {
+ return (
+
+ )
+}
diff --git a/app/(general)/integration/allo/twitter-image.tsx b/app/(general)/integration/allo/twitter-image.tsx
new file mode 100644
index 00000000..dbca541e
--- /dev/null
+++ b/app/(general)/integration/allo/twitter-image.tsx
@@ -0,0 +1,9 @@
+import Image from './opengraph-image'
+
+export const runtime = 'edge'
+export const size = {
+ width: 1200,
+ height: 630,
+}
+
+export default Image
diff --git a/app/(general)/page.tsx b/app/(general)/page.tsx
index c9b5045e..68faf98e 100644
--- a/app/(general)/page.tsx
+++ b/app/(general)/page.tsx
@@ -349,6 +349,21 @@ const features = [
),
},
+ {
+ title: turboIntegrations.allo.name,
+ description: turboIntegrations.allo.description,
+ href: turboIntegrations.allo.href,
+ demo: (
+
+
+
+
+
+
+
+
+ ),
+ },
{
title: turboIntegrations.starter.name,
description: turboIntegrations.starter.description,
diff --git a/data/turbo-integrations.ts b/data/turbo-integrations.ts
index 9dc5668a..ba59db7f 100644
--- a/data/turbo-integrations.ts
+++ b/data/turbo-integrations.ts
@@ -96,6 +96,14 @@ export const turboIntegrations = {
imgLight: '/integrations/gelato-light.svg',
imgDark: '/integrations/gelato-light.svg',
},
+ allo: {
+ name: 'Allo Protocol',
+ href: '/integration/allo',
+ url: 'https://docs.allo.gitcoin.co/',
+ description: 'Allo Protocol is an open-source protocol that enables groups to efficiently and transparently allocate pooled capital.',
+ imgLight: '/integrations/allo.jpeg',
+ imgDark: '/integrations/allo.jpeg',
+ },
starter: {
name: 'Starter Template',
href: '/integration/starter',
diff --git a/integrations/allo/README.md b/integrations/allo/README.md
new file mode 100644
index 00000000..86d925d5
--- /dev/null
+++ b/integrations/allo/README.md
@@ -0,0 +1,62 @@
+# Starter TurboETH Integration
+
+Welcome to the Starter TurboETH Integration! This folder serves as a blueprint for creating new integrations in TurboETH. If you're looking to contribute a new integration, simply copy this directory, and also the starter page located at `app/integration/starter`, to begin your development.
+
+## Creating a new integration
+
+Below are the steps to create a new integration.
+
+1. Copy the integration folder template from `/integrations/starter` and add your integration code, adhering to the file structure patterns evident in this folder.
+
+2. Duplicate the integration page from `/app/(general)/integration/starter` and populate it with your integration pages' code.
+
+3. Locate any API endpoints associated with your integration in the `/api` folder within the page folder of your integration. An example API endpoint can be found at `/app/(general)/integration/starter/api/hello-world/route.ts`. These API endpoints should follow the new [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/router-handlers) patterns of Next.js 13.
+
+4. Enter the data related to your integration in `/data/turbo-integrations.ts`. Here, add a new object with the name, description, image, and URL of your integration.
+
+5. Update the OG image configuration of your integration page in the `opengraph-image.tsx` file. Do this by replacing the argument of the `IntegrationOgImage` function with the object key of your integration used in the previous step.
+
+## Understanding the Starter template
+
+Each component of the Starter TurboETH template is designed to help streamline your development process:
+
+- **abis/**: Put your contract's ABI here. Each ABI should be in its own TypeScript file.
+
+- **client/**: Any client initialization for your chosen module or SDK should be placed here.
+
+- **components/**: This is the home for your React components. 'Read' components, which display data from a contract, and 'write' components, that send transactions, should all be placed here.
+
+- **hooks/**: Place your custom React hooks in this folder. These hooks are intended to manage state updates and encapsulate the logic for interacting with Ethereum contracts.
+
+- **starter-wagmi.ts**: This is a generated file from [wagmi-cli](https://wagmi.sh/cli/getting-started). It includes hooks for your contracts .
+
+- **index.ts**: Consider this as the entry point for your integration. It should export all the hooks, components, and utility functions that your integration provides.
+
+- **wagmi.config.ts**: This file should hold the wagmi-cli configuration for your integration, which includes settings like compiler version and optimization.
+
+- **README.md**: Here, you should document your integration. Explain its purpose, its use, and any important information a new developer or user should know.
+
+Each of these elements plays a crucial role in making your integration functional and accessible.
+
+## File Structure
+
+```
+integrations/starter
+├─ abis/
+│ ├─ starter-abi.ts
+├─ client/
+│ ├─ index.ts
+├─ components/
+│ ├─ starter-header.tsx
+├─ generated/
+│ ├─ starter-wagmi.ts
+├─ hooks/
+│ ├─ use-starter.ts
+├─ utils/
+│ ├─ types.ts
+├─ index.ts
+├─ README.md
+├─ wagmi.config.ts
+```
+
+By using this template, you'll create well-organized and understandable integrations that are easy for you and others to navigate. Happy coding!
diff --git a/integrations/allo/abis/allo-abi.ts b/integrations/allo/abis/allo-abi.ts
new file mode 100644
index 00000000..649e48cf
--- /dev/null
+++ b/integrations/allo/abis/allo-abi.ts
@@ -0,0 +1,1279 @@
+/**
+ * Allo ABI.
+ * source code: https://github.com/allo-protocol/allo-v2/blob/main/contracts/core/Allo.sol
+ */
+export const alloABI = [
+ {
+ inputs: [],
+ name: 'AMOUNT_MISMATCH',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'INVALID_FEE',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'IS_APPROVED_STRATEGY',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'MISMATCH',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'NOT_APPROVED_STRATEGY',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'NOT_CONTRACT',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'NOT_ENOUGH_FUNDS',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'NewOwnerIsZeroAddress',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'NoHandoverRequest',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'UNAUTHORIZED',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'Unauthorized',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'ZERO_ADDRESS',
+ type: 'error',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'uint256',
+ name: 'poolId',
+ type: 'uint256',
+ },
+ {
+ indexed: false,
+ internalType: 'uint256',
+ name: 'amount',
+ type: 'uint256',
+ },
+ ],
+ name: 'BaseFeePaid',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: 'uint256',
+ name: 'baseFee',
+ type: 'uint256',
+ },
+ ],
+ name: 'BaseFeeUpdated',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: 'uint256',
+ name: 'feePercentage',
+ type: 'uint256',
+ },
+ ],
+ name: 'FeePercentageUpdated',
+ 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: 'pendingOwner',
+ type: 'address',
+ },
+ ],
+ name: 'OwnershipHandoverCanceled',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'address',
+ name: 'pendingOwner',
+ type: 'address',
+ },
+ ],
+ name: 'OwnershipHandoverRequested',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'address',
+ name: 'oldOwner',
+ type: 'address',
+ },
+ {
+ indexed: true,
+ internalType: 'address',
+ name: 'newOwner',
+ type: 'address',
+ },
+ ],
+ name: 'OwnershipTransferred',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'uint256',
+ name: 'poolId',
+ type: 'uint256',
+ },
+ {
+ indexed: true,
+ internalType: 'bytes32',
+ name: 'profileId',
+ type: 'bytes32',
+ },
+ {
+ indexed: false,
+ internalType: 'contract IStrategy',
+ name: 'strategy',
+ type: 'address',
+ },
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'token',
+ type: 'address',
+ },
+ {
+ indexed: false,
+ internalType: 'uint256',
+ name: 'amount',
+ type: 'uint256',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ indexed: false,
+ internalType: 'struct Metadata',
+ name: 'metadata',
+ type: 'tuple',
+ },
+ ],
+ name: 'PoolCreated',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'uint256',
+ name: 'poolId',
+ type: 'uint256',
+ },
+ {
+ indexed: false,
+ internalType: 'uint256',
+ name: 'amount',
+ type: 'uint256',
+ },
+ {
+ indexed: false,
+ internalType: 'uint256',
+ name: 'fee',
+ type: 'uint256',
+ },
+ ],
+ name: 'PoolFunded',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'uint256',
+ name: 'poolId',
+ type: 'uint256',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ indexed: false,
+ internalType: 'struct Metadata',
+ name: 'metadata',
+ type: 'tuple',
+ },
+ ],
+ name: 'PoolMetadataUpdated',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'registry',
+ type: 'address',
+ },
+ ],
+ name: 'RegistryUpdated',
+ 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: false,
+ internalType: 'address',
+ name: 'strategy',
+ type: 'address',
+ },
+ ],
+ name: 'StrategyApproved',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'strategy',
+ type: 'address',
+ },
+ ],
+ name: 'StrategyRemoved',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'treasury',
+ type: 'address',
+ },
+ ],
+ name: 'TreasuryUpdated',
+ type: 'event',
+ },
+ {
+ inputs: [],
+ name: 'DEFAULT_ADMIN_ROLE',
+ outputs: [
+ {
+ internalType: 'bytes32',
+ name: '',
+ type: 'bytes32',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'FEE_DENOMINATOR',
+ outputs: [
+ {
+ internalType: 'uint256',
+ name: '',
+ type: 'uint256',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'NATIVE',
+ outputs: [
+ {
+ internalType: 'address',
+ name: '',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ internalType: 'address',
+ name: '_manager',
+ type: 'address',
+ },
+ ],
+ name: 'addPoolManager',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '_strategy',
+ type: 'address',
+ },
+ ],
+ name: 'addToCloneableStrategies',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ internalType: 'bytes',
+ name: '_data',
+ type: 'bytes',
+ },
+ ],
+ name: 'allocate',
+ outputs: [],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256[]',
+ name: '_poolIds',
+ type: 'uint256[]',
+ },
+ {
+ internalType: 'bytes[]',
+ name: '_datas',
+ type: 'bytes[]',
+ },
+ ],
+ name: 'batchAllocate',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256[]',
+ name: '_poolIds',
+ type: 'uint256[]',
+ },
+ {
+ internalType: 'bytes[]',
+ name: '_data',
+ type: 'bytes[]',
+ },
+ ],
+ name: 'batchRegisterRecipient',
+ outputs: [
+ {
+ internalType: 'address[]',
+ name: '',
+ type: 'address[]',
+ },
+ ],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'cancelOwnershipHandover',
+ outputs: [],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: 'pendingOwner',
+ type: 'address',
+ },
+ ],
+ name: 'completeOwnershipHandover',
+ outputs: [],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address',
+ name: '_strategy',
+ type: 'address',
+ },
+ {
+ internalType: 'bytes',
+ name: '_initStrategyData',
+ type: 'bytes',
+ },
+ {
+ internalType: 'address',
+ name: '_token',
+ type: 'address',
+ },
+ {
+ internalType: 'uint256',
+ name: '_amount',
+ type: 'uint256',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: '_metadata',
+ type: 'tuple',
+ },
+ {
+ internalType: 'address[]',
+ name: '_managers',
+ type: 'address[]',
+ },
+ ],
+ name: 'createPool',
+ outputs: [
+ {
+ internalType: 'uint256',
+ name: 'poolId',
+ type: 'uint256',
+ },
+ ],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address',
+ name: '_strategy',
+ type: 'address',
+ },
+ {
+ internalType: 'bytes',
+ name: '_initStrategyData',
+ type: 'bytes',
+ },
+ {
+ internalType: 'address',
+ name: '_token',
+ type: 'address',
+ },
+ {
+ internalType: 'uint256',
+ name: '_amount',
+ type: 'uint256',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: '_metadata',
+ type: 'tuple',
+ },
+ {
+ internalType: 'address[]',
+ name: '_managers',
+ type: 'address[]',
+ },
+ ],
+ name: 'createPoolWithCustomStrategy',
+ outputs: [
+ {
+ internalType: 'uint256',
+ name: 'poolId',
+ type: 'uint256',
+ },
+ ],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ internalType: 'address[]',
+ name: '_recipientIds',
+ type: 'address[]',
+ },
+ {
+ internalType: 'bytes',
+ name: '_data',
+ type: 'bytes',
+ },
+ ],
+ name: 'distribute',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ internalType: 'uint256',
+ name: '_amount',
+ type: 'uint256',
+ },
+ ],
+ name: 'fundPool',
+ outputs: [],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'getBaseFee',
+ outputs: [
+ {
+ internalType: 'uint256',
+ name: '',
+ type: 'uint256',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'getFeePercentage',
+ outputs: [
+ {
+ internalType: 'uint256',
+ name: '',
+ type: 'uint256',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ ],
+ name: 'getPool',
+ outputs: [
+ {
+ components: [
+ {
+ internalType: 'bytes32',
+ name: 'profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'contract IStrategy',
+ name: 'strategy',
+ type: 'address',
+ },
+ {
+ internalType: 'address',
+ name: 'token',
+ type: 'address',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: 'metadata',
+ type: 'tuple',
+ },
+ {
+ internalType: 'bytes32',
+ name: 'managerRole',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'bytes32',
+ name: 'adminRole',
+ type: 'bytes32',
+ },
+ ],
+ internalType: 'struct IAllo.Pool',
+ name: '',
+ type: 'tuple',
+ },
+ ],
+ 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: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ ],
+ name: 'getStrategy',
+ outputs: [
+ {
+ internalType: 'address',
+ name: '',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'getTreasury',
+ outputs: [
+ {
+ internalType: 'address payable',
+ name: '',
+ type: 'address',
+ },
+ ],
+ 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: 'address',
+ name: '_registry',
+ type: 'address',
+ },
+ {
+ internalType: 'address payable',
+ name: '_treasury',
+ type: 'address',
+ },
+ {
+ internalType: 'uint256',
+ name: '_feePercentage',
+ type: 'uint256',
+ },
+ {
+ internalType: 'uint256',
+ name: '_baseFee',
+ type: 'uint256',
+ },
+ ],
+ name: 'initialize',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '_strategy',
+ type: 'address',
+ },
+ ],
+ name: 'isCloneableStrategy',
+ outputs: [
+ {
+ internalType: 'bool',
+ name: '',
+ type: 'bool',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ internalType: 'address',
+ name: '_address',
+ type: 'address',
+ },
+ ],
+ name: 'isPoolAdmin',
+ outputs: [
+ {
+ internalType: 'bool',
+ name: '',
+ type: 'bool',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ internalType: 'address',
+ name: '_address',
+ type: 'address',
+ },
+ ],
+ name: 'isPoolManager',
+ outputs: [
+ {
+ internalType: 'bool',
+ name: '',
+ type: 'bool',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'owner',
+ outputs: [
+ {
+ internalType: 'address',
+ name: 'result',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: 'pendingOwner',
+ type: 'address',
+ },
+ ],
+ name: 'ownershipHandoverExpiresAt',
+ outputs: [
+ {
+ internalType: 'uint256',
+ name: 'result',
+ type: 'uint256',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '_token',
+ type: 'address',
+ },
+ {
+ internalType: 'address',
+ name: '_recipient',
+ type: 'address',
+ },
+ ],
+ name: 'recoverFunds',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ internalType: 'bytes',
+ name: '_data',
+ type: 'bytes',
+ },
+ ],
+ name: 'registerRecipient',
+ outputs: [
+ {
+ internalType: 'address',
+ name: '',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '_strategy',
+ type: 'address',
+ },
+ ],
+ name: 'removeFromCloneableStrategies',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ internalType: 'address',
+ name: '_manager',
+ type: 'address',
+ },
+ ],
+ name: 'removePoolManager',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'renounceOwnership',
+ outputs: [],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: 'role',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address',
+ name: 'account',
+ type: 'address',
+ },
+ ],
+ name: 'renounceRole',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [],
+ name: 'requestOwnershipHandover',
+ outputs: [],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: 'role',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address',
+ name: 'account',
+ type: 'address',
+ },
+ ],
+ name: 'revokeRole',
+ 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: 'newOwner',
+ type: 'address',
+ },
+ ],
+ name: 'transferOwnership',
+ outputs: [],
+ stateMutability: 'payable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_baseFee',
+ type: 'uint256',
+ },
+ ],
+ name: 'updateBaseFee',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_feePercentage',
+ type: 'uint256',
+ },
+ ],
+ name: 'updateFeePercentage',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_poolId',
+ type: 'uint256',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: '_metadata',
+ type: 'tuple',
+ },
+ ],
+ name: 'updatePoolMetadata',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '_registry',
+ type: 'address',
+ },
+ ],
+ name: 'updateRegistry',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address payable',
+ name: '_treasury',
+ type: 'address',
+ },
+ ],
+ name: 'updateTreasury',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+] as const
diff --git a/integrations/allo/abis/index.ts b/integrations/allo/abis/index.ts
new file mode 100644
index 00000000..25f18526
--- /dev/null
+++ b/integrations/allo/abis/index.ts
@@ -0,0 +1,2 @@
+export { alloABI } from './allo-abi'
+export { registryABI } from './registry-abi'
diff --git a/integrations/allo/abis/registry-abi.ts b/integrations/allo/abis/registry-abi.ts
new file mode 100644
index 00000000..eb2a8b01
--- /dev/null
+++ b/integrations/allo/abis/registry-abi.ts
@@ -0,0 +1,903 @@
+/**
+ * Registry ABI.
+ * source code: https://github.com/allo-protocol/allo-v2/blob/main/contracts/core/Registry.sol
+ */
+export const registryABI = [
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '_owner',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'nonpayable',
+ type: 'constructor',
+ },
+ {
+ inputs: [],
+ name: 'AMOUNT_MISMATCH',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'NONCE_NOT_AVAILABLE',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'NOT_PENDING_OWNER',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'UNAUTHORIZED',
+ type: 'error',
+ },
+ {
+ inputs: [],
+ name: 'ZERO_ADDRESS',
+ type: 'error',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'bytes32',
+ name: 'profileId',
+ type: 'bytes32',
+ },
+ {
+ indexed: false,
+ internalType: 'uint256',
+ name: 'nonce',
+ type: 'uint256',
+ },
+ {
+ indexed: false,
+ internalType: 'string',
+ name: 'name',
+ type: 'string',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ indexed: false,
+ internalType: 'struct Metadata',
+ name: 'metadata',
+ type: 'tuple',
+ },
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'owner',
+ type: 'address',
+ },
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'anchor',
+ type: 'address',
+ },
+ ],
+ name: 'ProfileCreated',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'bytes32',
+ name: 'profileId',
+ type: 'bytes32',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ indexed: false,
+ internalType: 'struct Metadata',
+ name: 'metadata',
+ type: 'tuple',
+ },
+ ],
+ name: 'ProfileMetadataUpdated',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'bytes32',
+ name: 'profileId',
+ type: 'bytes32',
+ },
+ {
+ indexed: false,
+ internalType: 'string',
+ name: 'name',
+ type: 'string',
+ },
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'anchor',
+ type: 'address',
+ },
+ ],
+ name: 'ProfileNameUpdated',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'bytes32',
+ name: 'profileId',
+ type: 'bytes32',
+ },
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'owner',
+ type: 'address',
+ },
+ ],
+ name: 'ProfileOwnerUpdated',
+ type: 'event',
+ },
+ {
+ anonymous: false,
+ inputs: [
+ {
+ indexed: true,
+ internalType: 'bytes32',
+ name: 'profileId',
+ type: 'bytes32',
+ },
+ {
+ indexed: false,
+ internalType: 'address',
+ name: 'pendingOwner',
+ type: 'address',
+ },
+ ],
+ name: 'ProfilePendingOwnerUpdated',
+ 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',
+ },
+ {
+ inputs: [],
+ name: 'ALLO_OWNER',
+ 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: 'NATIVE',
+ outputs: [
+ {
+ internalType: 'address',
+ name: '',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ ],
+ name: 'acceptProfileOwnership',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address[]',
+ name: '_members',
+ type: 'address[]',
+ },
+ ],
+ name: 'addMembers',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '',
+ type: 'address',
+ },
+ ],
+ name: 'anchorToProfileId',
+ outputs: [
+ {
+ internalType: 'bytes32',
+ name: '',
+ type: 'bytes32',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'uint256',
+ name: '_nonce',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: '_name',
+ type: 'string',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: '_metadata',
+ type: 'tuple',
+ },
+ {
+ internalType: 'address',
+ name: '_owner',
+ type: 'address',
+ },
+ {
+ internalType: 'address[]',
+ name: '_members',
+ type: 'address[]',
+ },
+ ],
+ name: 'createProfile',
+ outputs: [
+ {
+ internalType: 'bytes32',
+ name: '',
+ type: 'bytes32',
+ },
+ ],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '_anchor',
+ type: 'address',
+ },
+ ],
+ name: 'getProfileByAnchor',
+ outputs: [
+ {
+ components: [
+ {
+ internalType: 'bytes32',
+ name: 'id',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'uint256',
+ name: 'nonce',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'name',
+ type: 'string',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: 'metadata',
+ type: 'tuple',
+ },
+ {
+ internalType: 'address',
+ name: 'owner',
+ type: 'address',
+ },
+ {
+ internalType: 'address',
+ name: 'anchor',
+ type: 'address',
+ },
+ ],
+ internalType: 'struct IRegistry.Profile',
+ name: '',
+ type: 'tuple',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: 'profileId',
+ type: 'bytes32',
+ },
+ ],
+ name: 'getProfileById',
+ outputs: [
+ {
+ components: [
+ {
+ internalType: 'bytes32',
+ name: 'id',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'uint256',
+ name: 'nonce',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'name',
+ type: 'string',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: 'metadata',
+ type: 'tuple',
+ },
+ {
+ internalType: 'address',
+ name: 'owner',
+ type: 'address',
+ },
+ {
+ internalType: 'address',
+ name: 'anchor',
+ type: 'address',
+ },
+ ],
+ internalType: 'struct IRegistry.Profile',
+ 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: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address',
+ name: '_member',
+ type: 'address',
+ },
+ ],
+ name: 'isMemberOfProfile',
+ outputs: [
+ {
+ internalType: 'bool',
+ name: '',
+ type: 'bool',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address',
+ name: '_owner',
+ type: 'address',
+ },
+ ],
+ name: 'isOwnerOfProfile',
+ outputs: [
+ {
+ internalType: 'bool',
+ name: '',
+ type: 'bool',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address',
+ name: '_account',
+ type: 'address',
+ },
+ ],
+ name: 'isOwnerOrMemberOfProfile',
+ outputs: [
+ {
+ internalType: 'bool',
+ name: '',
+ type: 'bool',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '',
+ type: 'bytes32',
+ },
+ ],
+ name: 'profileIdToPendingOwner',
+ outputs: [
+ {
+ internalType: 'address',
+ name: '',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '',
+ type: 'bytes32',
+ },
+ ],
+ name: 'profilesById',
+ outputs: [
+ {
+ internalType: 'bytes32',
+ name: 'id',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'uint256',
+ name: 'nonce',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'name',
+ type: 'string',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: 'metadata',
+ type: 'tuple',
+ },
+ {
+ internalType: 'address',
+ name: 'owner',
+ type: 'address',
+ },
+ {
+ internalType: 'address',
+ name: 'anchor',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'address',
+ name: '_token',
+ type: 'address',
+ },
+ {
+ internalType: 'address',
+ name: '_recipient',
+ type: 'address',
+ },
+ ],
+ name: 'recoverFunds',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address[]',
+ name: '_members',
+ type: 'address[]',
+ },
+ ],
+ name: 'removeMembers',
+ 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: 'bytes4',
+ name: 'interfaceId',
+ type: 'bytes4',
+ },
+ ],
+ name: 'supportsInterface',
+ outputs: [
+ {
+ internalType: 'bool',
+ name: '',
+ type: 'bool',
+ },
+ ],
+ stateMutability: 'view',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ components: [
+ {
+ internalType: 'uint256',
+ name: 'protocol',
+ type: 'uint256',
+ },
+ {
+ internalType: 'string',
+ name: 'pointer',
+ type: 'string',
+ },
+ ],
+ internalType: 'struct Metadata',
+ name: '_metadata',
+ type: 'tuple',
+ },
+ ],
+ name: 'updateProfileMetadata',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'string',
+ name: '_name',
+ type: 'string',
+ },
+ ],
+ name: 'updateProfileName',
+ outputs: [
+ {
+ internalType: 'address',
+ name: '',
+ type: 'address',
+ },
+ ],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+ {
+ inputs: [
+ {
+ internalType: 'bytes32',
+ name: '_profileId',
+ type: 'bytes32',
+ },
+ {
+ internalType: 'address',
+ name: '_pendingOwner',
+ type: 'address',
+ },
+ ],
+ name: 'updateProfilePendingOwner',
+ outputs: [],
+ stateMutability: 'nonpayable',
+ type: 'function',
+ },
+] as const
diff --git a/integrations/allo/components/pool/allo-allocate.tsx b/integrations/allo/components/pool/allo-allocate.tsx
new file mode 100644
index 00000000..6e9814e6
--- /dev/null
+++ b/integrations/allo/components/pool/allo-allocate.tsx
@@ -0,0 +1,68 @@
+import { useForm } from 'react-hook-form'
+import { useDebounce } from 'usehooks-ts'
+import type { Address, BaseError } from 'viem'
+import { useWaitForTransaction } from 'wagmi'
+
+import { ContractWriteButton } from '@/components/blockchain/contract-write-button'
+import { TransactionStatus } from '@/components/blockchain/transaction-status'
+
+import { useAlloAllocate, usePrepareAlloAllocate } from '../../generated/allo-wagmi'
+import { ALLO_ADDRESS } from '../../utils/constants'
+
+interface FormSchema {
+ poolId: string
+ strategyData: Address
+}
+
+export function AlloAllocate() {
+ const { register, watch, handleSubmit, reset } = useForm({
+ defaultValues: {
+ strategyData: '0x',
+ },
+ })
+
+ const poolId = useDebounce(watch('poolId'), 500)
+ const strategyData = useDebounce(watch('strategyData'), 500)
+
+ const isValidInput = Number(poolId) && typeof strategyData === 'string'
+
+ const { config, error, isError } = usePrepareAlloAllocate({
+ address: ALLO_ADDRESS,
+ args: isValidInput ? [BigInt(poolId), strategyData] : undefined,
+ value: BigInt(0),
+ enabled: Boolean(isValidInput),
+ })
+
+ const { data, write, isLoading: isLoadingWrite } = useAlloAllocate(config)
+
+ const { isLoading: isLoadingTx, isSuccess } = useWaitForTransaction({
+ hash: data?.hash,
+ onSuccess: () => {
+ reset()
+ },
+ })
+
+ const onSubmit = () => {
+ write?.()
+ }
+
+ return (
+
+ )
+}
diff --git a/integrations/allo/components/pool/allo-create-pool.tsx b/integrations/allo/components/pool/allo-create-pool.tsx
new file mode 100644
index 00000000..ff90fe70
--- /dev/null
+++ b/integrations/allo/components/pool/allo-create-pool.tsx
@@ -0,0 +1,112 @@
+import { useMemo } from 'react'
+
+import { useForm } from 'react-hook-form'
+import { useDebounce } from 'usehooks-ts'
+import type { Address, BaseError } from 'viem'
+import { useWaitForTransaction } from 'wagmi'
+
+import { ContractWriteButton } from '@/components/blockchain/contract-write-button'
+import { TransactionStatus } from '@/components/blockchain/transaction-status'
+
+import { useAlloCreatePool, usePrepareAlloCreatePool } from '../../generated/allo-wagmi'
+import { parseAddresses } from '../../utils'
+import { ALLO_ADDRESS } from '../../utils/constants'
+
+interface FormSchema {
+ profileId: Address
+ strategy: Address
+ initStrategyData: Address
+ token: Address
+ amount: string
+ protocol: string
+ pointer: string
+ members: string
+}
+
+export function AlloCreatePool() {
+ const { register, watch, handleSubmit, reset } = useForm({
+ defaultValues: {
+ protocol: '1',
+ initStrategyData: '0x',
+ amount: '0',
+ },
+ })
+
+ const profileId = useDebounce(watch('profileId'), 500)
+ const strategy = useDebounce(watch('strategy'), 500)
+ const initStrategyData = useDebounce(watch('initStrategyData'), 500)
+ const token = useDebounce(watch('token'), 500)
+ const amount = useDebounce(watch('amount'), 500)
+ const protocol = useDebounce(watch('protocol'), 500)
+ const pointer = useDebounce(watch('pointer'), 500)
+ const members = useDebounce(watch('members'), 500)
+
+ const formattedMembers = useMemo(() => parseAddresses(members), [members])
+
+ const isValidInput = profileId && strategy && initStrategyData && token && pointer && Number(protocol) !== 0 && formattedMembers.length > 0
+
+ const { config, error, isError } = usePrepareAlloCreatePool({
+ address: ALLO_ADDRESS,
+ args: isValidInput
+ ? [
+ profileId,
+ strategy,
+ initStrategyData,
+ token,
+ BigInt(amount),
+ {
+ protocol: BigInt(Number(protocol)),
+ pointer,
+ },
+ formattedMembers,
+ ]
+ : undefined,
+ value: BigInt(0),
+ enabled: Boolean(isValidInput),
+ })
+
+ const { data, write, isLoading: isLoadingWrite } = useAlloCreatePool(config)
+
+ const { isLoading: isLoadingTx, isSuccess } = useWaitForTransaction({
+ hash: data?.hash,
+ onSuccess: () => {
+ reset()
+ },
+ })
+
+ const onSubmit = () => {
+ write?.()
+ }
+
+ return (
+
+ )
+}
diff --git a/integrations/allo/components/pool/allo-distribute.tsx b/integrations/allo/components/pool/allo-distribute.tsx
new file mode 100644
index 00000000..301453ca
--- /dev/null
+++ b/integrations/allo/components/pool/allo-distribute.tsx
@@ -0,0 +1,74 @@
+import { useForm } from 'react-hook-form'
+import { useDebounce } from 'usehooks-ts'
+import type { Address, BaseError } from 'viem'
+import { useWaitForTransaction } from 'wagmi'
+
+import { ContractWriteButton } from '@/components/blockchain/contract-write-button'
+import { TransactionStatus } from '@/components/blockchain/transaction-status'
+
+import { useAlloDistribute, usePrepareAlloDistribute } from '../../generated/allo-wagmi'
+import { parseAddresses } from '../../utils'
+import { ALLO_ADDRESS } from '../../utils/constants'
+
+interface FormSchema {
+ poolId: string
+ strategyData: Address
+ recipientIds: string
+}
+
+export function AlloDistribute() {
+ const { register, watch, handleSubmit, reset } = useForm({
+ defaultValues: {
+ strategyData: '0x',
+ },
+ })
+
+ const poolId = useDebounce(watch('poolId'), 500)
+ const strategyData = useDebounce(watch('strategyData'), 500)
+ const recipientIds = useDebounce(watch('recipientIds'), 500)
+
+ const formattedRecipientIds = parseAddresses(recipientIds)
+
+ const isValidInput = Number(poolId) && typeof strategyData === 'string'
+
+ const { config, error, isError } = usePrepareAlloDistribute({
+ address: ALLO_ADDRESS,
+ args: isValidInput ? [BigInt(poolId), formattedRecipientIds, strategyData] : undefined,
+ enabled: Boolean(isValidInput),
+ })
+
+ const { data, write, isLoading: isLoadingWrite } = useAlloDistribute(config)
+
+ const { isLoading: isLoadingTx, isSuccess } = useWaitForTransaction({
+ hash: data?.hash,
+ onSuccess: () => {
+ reset()
+ },
+ })
+
+ const onSubmit = () => {
+ write?.()
+ }
+
+ return (
+
+
+
+ )
+}
diff --git a/integrations/allo/components/pool/allo-fund-pool.tsx b/integrations/allo/components/pool/allo-fund-pool.tsx
new file mode 100644
index 00000000..5ac7d645
--- /dev/null
+++ b/integrations/allo/components/pool/allo-fund-pool.tsx
@@ -0,0 +1,64 @@
+import { useForm } from 'react-hook-form'
+import { useDebounce } from 'usehooks-ts'
+import type { BaseError } from 'viem'
+import { useWaitForTransaction } from 'wagmi'
+
+import { ContractWriteButton } from '@/components/blockchain/contract-write-button'
+import { TransactionStatus } from '@/components/blockchain/transaction-status'
+
+import { useAlloFundPool, usePrepareAlloFundPool } from '../../generated/allo-wagmi'
+import { ALLO_ADDRESS } from '../../utils/constants'
+
+interface FormSchema {
+ poolId: string
+ amount: string
+}
+
+export function AlloFundPool() {
+ const { register, watch, handleSubmit, reset } = useForm()
+
+ const poolId = useDebounce(watch('poolId'), 500)
+ const amount = useDebounce(watch('amount'), 500)
+
+ const isValidInput = Number(poolId) && Number(amount)
+
+ const { config, error, isError } = usePrepareAlloFundPool({
+ address: ALLO_ADDRESS,
+ args: isValidInput ? [BigInt(poolId), BigInt(amount)] : undefined,
+ value: BigInt(0),
+ enabled: Boolean(isValidInput),
+ })
+
+ const { data, write, isLoading: isLoadingWrite } = useAlloFundPool(config)
+
+ const { isLoading: isLoadingTx, isSuccess } = useWaitForTransaction({
+ hash: data?.hash,
+ onSuccess: () => {
+ reset()
+ },
+ })
+
+ const onSubmit = () => {
+ write?.()
+ }
+
+ return (
+
+
+
+ )
+}
diff --git a/integrations/allo/components/pool/allo-register-recipient.tsx b/integrations/allo/components/pool/allo-register-recipient.tsx
new file mode 100644
index 00000000..66d10d12
--- /dev/null
+++ b/integrations/allo/components/pool/allo-register-recipient.tsx
@@ -0,0 +1,73 @@
+import { useForm } from 'react-hook-form'
+import { useDebounce } from 'usehooks-ts'
+import type { Address, BaseError } from 'viem'
+import { useWaitForTransaction } from 'wagmi'
+
+import { ContractWriteButton } from '@/components/blockchain/contract-write-button'
+import { TransactionStatus } from '@/components/blockchain/transaction-status'
+
+import { useAlloRegisterRecipient, usePrepareAlloRegisterRecipient } from '../../generated/allo-wagmi'
+import { ALLO_ADDRESS } from '../../utils/constants'
+
+interface FormSchema {
+ poolId: string
+ strategyData: Address
+}
+
+export function AlloRegisterRecipient() {
+ const { register, watch, handleSubmit, reset } = useForm({
+ defaultValues: {
+ strategyData: '0x',
+ },
+ })
+
+ const poolId = useDebounce(watch('poolId'), 500)
+ const strategyData = useDebounce(watch('strategyData'), 500)
+
+ const isValidInput = Number(poolId) && typeof strategyData === 'string'
+
+ const { config, error, isError } = usePrepareAlloRegisterRecipient({
+ address: ALLO_ADDRESS,
+ args: isValidInput ? [BigInt(poolId), strategyData] : undefined,
+ value: BigInt(0),
+ enabled: Boolean(isValidInput),
+ })
+
+ const { data, write, isLoading: isLoadingWrite } = useAlloRegisterRecipient(config)
+
+ const { isLoading: isLoadingTx, isSuccess } = useWaitForTransaction({
+ hash: data?.hash,
+ onSuccess: () => {
+ reset()
+ },
+ })
+
+ const onSubmit = () => {
+ write?.()
+ }
+
+ return (
+
+
+
+ )
+}
diff --git a/integrations/allo/components/pool/index.ts b/integrations/allo/components/pool/index.ts
new file mode 100644
index 00000000..ab7471b2
--- /dev/null
+++ b/integrations/allo/components/pool/index.ts
@@ -0,0 +1,5 @@
+export { AlloAllocate } from './allo-allocate'
+export { AlloCreatePool } from './allo-create-pool'
+export { AlloDistribute } from './allo-distribute'
+export { AlloFundPool } from './allo-fund-pool'
+export { AlloRegisterRecipient } from './allo-register-recipient'
diff --git a/integrations/allo/components/registry/index.ts b/integrations/allo/components/registry/index.ts
new file mode 100644
index 00000000..0fb76258
--- /dev/null
+++ b/integrations/allo/components/registry/index.ts
@@ -0,0 +1,3 @@
+export { RegistryCreateProfile } from './registry-create-profile'
+export { RegistryUpdateProfileName } from './registry-update-profile-name'
+export { RegistryUpdateProfileMetadata } from './registry-update-profile-metadata'
diff --git a/integrations/allo/components/registry/registry-create-profile.tsx b/integrations/allo/components/registry/registry-create-profile.tsx
new file mode 100644
index 00000000..bc58f735
--- /dev/null
+++ b/integrations/allo/components/registry/registry-create-profile.tsx
@@ -0,0 +1,106 @@
+import { useMemo } from 'react'
+
+import { useForm } from 'react-hook-form'
+import { useDebounce } from 'usehooks-ts'
+import type { BaseError } from 'viem'
+import { encodePacked, keccak256 } from 'viem'
+import { useAccount, useWaitForTransaction } from 'wagmi'
+
+import { ContractWriteButton } from '@/components/blockchain/contract-write-button'
+import { TransactionStatus } from '@/components/blockchain/transaction-status'
+
+import { usePrepareRegistryCreateProfile, useRegistryCreateProfile } from '../../generated/allo-wagmi'
+import { useNonce } from '../../hooks/use-nonce'
+import { parseAddresses } from '../../utils'
+import { REGISTRY_ADDRESS } from '../../utils/constants'
+
+interface FormSchema {
+ name: string
+ protocol: string
+ pointer: string
+ members: string
+}
+
+export function RegistryCreateProfile() {
+ const { register, watch, handleSubmit, reset } = useForm({
+ defaultValues: {
+ protocol: '1',
+ },
+ })
+ const { data: nonce } = useNonce()
+ const { address } = useAccount()
+
+ const name = useDebounce(watch('name'), 500)
+ const protocol = useDebounce(watch('protocol'), 500)
+ const pointer = useDebounce(watch('pointer'), 500)
+ const members = useDebounce(watch('members'), 500)
+
+ const profileId = useMemo(
+ () => (nonce && address ? keccak256(encodePacked(['uint256', 'address'], [BigInt(nonce), address])) : undefined),
+ [nonce, address]
+ )
+
+ const formattedMembers = useMemo(() => parseAddresses(members), [members])
+
+ const isValidInput = address && typeof nonce === 'number' && name && pointer && formattedMembers.length > 0 && Number(protocol) !== 0
+
+ const { config, error, isError } = usePrepareRegistryCreateProfile({
+ address: REGISTRY_ADDRESS,
+ args: isValidInput
+ ? [
+ BigInt(nonce),
+ name,
+ {
+ protocol: BigInt(Number(protocol)),
+ pointer,
+ },
+ address,
+ formattedMembers,
+ ]
+ : undefined,
+ enabled: Boolean(isValidInput),
+ })
+
+ const { data, write, isLoading: isLoadingWrite } = useRegistryCreateProfile(config)
+
+ const { isLoading: isLoadingTx, isSuccess } = useWaitForTransaction({
+ hash: data?.hash,
+ onSuccess: () => {
+ reset()
+ },
+ })
+
+ const onSubmit = () => {
+ write?.()
+ }
+
+ return (
+
+ )
+}
diff --git a/integrations/allo/components/registry/registry-update-profile-metadata.tsx b/integrations/allo/components/registry/registry-update-profile-metadata.tsx
new file mode 100644
index 00000000..b52ecf5a
--- /dev/null
+++ b/integrations/allo/components/registry/registry-update-profile-metadata.tsx
@@ -0,0 +1,84 @@
+import { useForm } from 'react-hook-form'
+import { useDebounce } from 'usehooks-ts'
+import type { Address, BaseError } from 'viem'
+import { useWaitForTransaction } from 'wagmi'
+
+import { ContractWriteButton } from '@/components/blockchain/contract-write-button'
+import { TransactionStatus } from '@/components/blockchain/transaction-status'
+
+import { usePrepareRegistryUpdateProfileMetadata, useRegistryUpdateProfileMetadata } from '../../generated/allo-wagmi'
+import { REGISTRY_ADDRESS } from '../../utils/constants'
+
+interface FormSchema {
+ profileId: Address
+ protocol: string
+ pointer: string
+}
+
+export function RegistryUpdateProfileMetadata() {
+ const { register, watch, handleSubmit, reset } = useForm({
+ defaultValues: {
+ protocol: '1',
+ },
+ })
+
+ const profileId = useDebounce(watch('profileId'), 500)
+ const protocol = useDebounce(watch('protocol'), 500)
+ const pointer = useDebounce(watch('pointer'), 500)
+
+ const isValidInput = profileId && pointer && Number(protocol) !== 0
+
+ const { config, error, isError } = usePrepareRegistryUpdateProfileMetadata({
+ address: REGISTRY_ADDRESS,
+ args: isValidInput
+ ? [
+ profileId,
+ {
+ protocol: BigInt(Number(protocol)),
+ pointer,
+ },
+ ]
+ : undefined,
+ enabled: Boolean(isValidInput),
+ })
+
+ const { data, write, isLoading: isLoadingWrite } = useRegistryUpdateProfileMetadata(config)
+
+ const { isLoading: isLoadingTx, isSuccess } = useWaitForTransaction({
+ hash: data?.hash,
+ onSuccess: () => {
+ reset()
+ },
+ })
+
+ const onSubmit = () => {
+ write?.()
+ }
+
+ return (
+
+ )
+}
diff --git a/integrations/allo/components/registry/registry-update-profile-name.tsx b/integrations/allo/components/registry/registry-update-profile-name.tsx
new file mode 100644
index 00000000..0baf4148
--- /dev/null
+++ b/integrations/allo/components/registry/registry-update-profile-name.tsx
@@ -0,0 +1,68 @@
+import { useForm } from 'react-hook-form'
+import { useDebounce } from 'usehooks-ts'
+import type { Address, BaseError } from 'viem'
+import { useWaitForTransaction } from 'wagmi'
+
+import { ContractWriteButton } from '@/components/blockchain/contract-write-button'
+import { TransactionStatus } from '@/components/blockchain/transaction-status'
+
+import { usePrepareRegistryUpdateProfileName, useRegistryUpdateProfileName } from '../../generated/allo-wagmi'
+import { REGISTRY_ADDRESS } from '../../utils/constants'
+
+interface FormSchema {
+ profileId: Address
+ name: string
+}
+
+export function RegistryUpdateProfileName() {
+ const { register, watch, handleSubmit, reset } = useForm()
+
+ const profileId = useDebounce(watch('profileId'), 500)
+ const name = useDebounce(watch('name'), 500)
+
+ const isValidInput = name && profileId
+
+ const { config, error, isError } = usePrepareRegistryUpdateProfileName({
+ address: REGISTRY_ADDRESS,
+ args: isValidInput ? [profileId, name] : undefined,
+ enabled: Boolean(isValidInput),
+ })
+
+ const { data, write, isLoading: isLoadingWrite } = useRegistryUpdateProfileName(config)
+
+ const { isLoading: isLoadingTx, isSuccess } = useWaitForTransaction({
+ hash: data?.hash,
+ onSuccess: () => {
+ reset()
+ },
+ })
+
+ const onSubmit = () => {
+ write?.()
+ }
+
+ return (
+
+
+
+ )
+}
diff --git a/integrations/allo/generated/allo-wagmi.ts b/integrations/allo/generated/allo-wagmi.ts
new file mode 100644
index 00000000..04dd8a7c
--- /dev/null
+++ b/integrations/allo/generated/allo-wagmi.ts
@@ -0,0 +1,2785 @@
+// Generated by @wagmi/cli@1.1.0 on 8/14/2023 at 8:22:21 PM
+import {
+ useContractRead,
+ UseContractReadConfig,
+ useContractWrite,
+ UseContractWriteConfig,
+ usePrepareContractWrite,
+ UsePrepareContractWriteConfig,
+ useContractEvent,
+ UseContractEventConfig,
+} from 'wagmi'
+import { ReadContractResult, WriteContractMode, PrepareWriteContractResult } from 'wagmi/actions'
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// allo
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+export const alloABI = [
+ { type: 'error', inputs: [], name: 'AMOUNT_MISMATCH' },
+ { type: 'error', inputs: [], name: 'INVALID_FEE' },
+ { type: 'error', inputs: [], name: 'IS_APPROVED_STRATEGY' },
+ { type: 'error', inputs: [], name: 'MISMATCH' },
+ { type: 'error', inputs: [], name: 'NOT_APPROVED_STRATEGY' },
+ { type: 'error', inputs: [], name: 'NOT_CONTRACT' },
+ { type: 'error', inputs: [], name: 'NOT_ENOUGH_FUNDS' },
+ { type: 'error', inputs: [], name: 'NewOwnerIsZeroAddress' },
+ { type: 'error', inputs: [], name: 'NoHandoverRequest' },
+ { type: 'error', inputs: [], name: 'UNAUTHORIZED' },
+ { type: 'error', inputs: [], name: 'Unauthorized' },
+ { type: 'error', inputs: [], name: 'ZERO_ADDRESS' },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'poolId', internalType: 'uint256', type: 'uint256', indexed: true },
+ { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },
+ ],
+ name: 'BaseFeePaid',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [{ name: 'baseFee', internalType: 'uint256', type: 'uint256', indexed: false }],
+ name: 'BaseFeeUpdated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [{ name: 'feePercentage', internalType: 'uint256', type: 'uint256', indexed: false }],
+ name: 'FeePercentageUpdated',
+ },
+ { type: 'event', anonymous: false, inputs: [{ name: 'version', internalType: 'uint8', type: 'uint8', indexed: false }], name: 'Initialized' },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [{ name: 'pendingOwner', internalType: 'address', type: 'address', indexed: true }],
+ name: 'OwnershipHandoverCanceled',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [{ name: 'pendingOwner', internalType: 'address', type: 'address', indexed: true }],
+ name: 'OwnershipHandoverRequested',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'oldOwner', internalType: 'address', type: 'address', indexed: true },
+ { name: 'newOwner', internalType: 'address', type: 'address', indexed: true },
+ ],
+ name: 'OwnershipTransferred',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'poolId', internalType: 'uint256', type: 'uint256', indexed: true },
+ { name: 'profileId', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'strategy', internalType: 'contract IStrategy', type: 'address', indexed: false },
+ { name: 'token', internalType: 'address', type: 'address', indexed: false },
+ { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },
+ {
+ name: 'metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ indexed: false,
+ },
+ ],
+ name: 'PoolCreated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'poolId', internalType: 'uint256', type: 'uint256', indexed: true },
+ { name: 'amount', internalType: 'uint256', type: 'uint256', indexed: false },
+ { name: 'fee', internalType: 'uint256', type: 'uint256', indexed: false },
+ ],
+ name: 'PoolFunded',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'poolId', internalType: 'uint256', type: 'uint256', indexed: true },
+ {
+ name: 'metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ indexed: false,
+ },
+ ],
+ name: 'PoolMetadataUpdated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [{ name: 'registry', internalType: 'address', type: 'address', indexed: false }],
+ name: 'RegistryUpdated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'previousAdminRole', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'newAdminRole', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ ],
+ name: 'RoleAdminChanged',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'account', internalType: 'address', type: 'address', indexed: true },
+ { name: 'sender', internalType: 'address', type: 'address', indexed: true },
+ ],
+ name: 'RoleGranted',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'account', internalType: 'address', type: 'address', indexed: true },
+ { name: 'sender', internalType: 'address', type: 'address', indexed: true },
+ ],
+ name: 'RoleRevoked',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [{ name: 'strategy', internalType: 'address', type: 'address', indexed: false }],
+ name: 'StrategyApproved',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [{ name: 'strategy', internalType: 'address', type: 'address', indexed: false }],
+ name: 'StrategyRemoved',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [{ name: 'treasury', internalType: 'address', type: 'address', indexed: false }],
+ name: 'TreasuryUpdated',
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [],
+ name: 'DEFAULT_ADMIN_ROLE',
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [],
+ name: 'FEE_DENOMINATOR',
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
+ },
+ { stateMutability: 'view', type: 'function', inputs: [], name: 'NATIVE', outputs: [{ name: '', internalType: 'address', type: 'address' }] },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ { name: '_manager', internalType: 'address', type: 'address' },
+ ],
+ name: 'addPoolManager',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [{ name: '_strategy', internalType: 'address', type: 'address' }],
+ name: 'addToCloneableStrategies',
+ outputs: [],
+ },
+ {
+ stateMutability: 'payable',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ { name: '_data', internalType: 'bytes', type: 'bytes' },
+ ],
+ name: 'allocate',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_poolIds', internalType: 'uint256[]', type: 'uint256[]' },
+ { name: '_datas', internalType: 'bytes[]', type: 'bytes[]' },
+ ],
+ name: 'batchAllocate',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_poolIds', internalType: 'uint256[]', type: 'uint256[]' },
+ { name: '_data', internalType: 'bytes[]', type: 'bytes[]' },
+ ],
+ name: 'batchRegisterRecipient',
+ outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }],
+ },
+ { stateMutability: 'payable', type: 'function', inputs: [], name: 'cancelOwnershipHandover', outputs: [] },
+ {
+ stateMutability: 'payable',
+ type: 'function',
+ inputs: [{ name: 'pendingOwner', internalType: 'address', type: 'address' }],
+ name: 'completeOwnershipHandover',
+ outputs: [],
+ },
+ {
+ stateMutability: 'payable',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_strategy', internalType: 'address', type: 'address' },
+ { name: '_initStrategyData', internalType: 'bytes', type: 'bytes' },
+ { name: '_token', internalType: 'address', type: 'address' },
+ { name: '_amount', internalType: 'uint256', type: 'uint256' },
+ {
+ name: '_metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ { name: '_managers', internalType: 'address[]', type: 'address[]' },
+ ],
+ name: 'createPool',
+ outputs: [{ name: 'poolId', internalType: 'uint256', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'payable',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_strategy', internalType: 'address', type: 'address' },
+ { name: '_initStrategyData', internalType: 'bytes', type: 'bytes' },
+ { name: '_token', internalType: 'address', type: 'address' },
+ { name: '_amount', internalType: 'uint256', type: 'uint256' },
+ {
+ name: '_metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ { name: '_managers', internalType: 'address[]', type: 'address[]' },
+ ],
+ name: 'createPoolWithCustomStrategy',
+ outputs: [{ name: 'poolId', internalType: 'uint256', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ { name: '_recipientIds', internalType: 'address[]', type: 'address[]' },
+ { name: '_data', internalType: 'bytes', type: 'bytes' },
+ ],
+ name: 'distribute',
+ outputs: [],
+ },
+ {
+ stateMutability: 'payable',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ { name: '_amount', internalType: 'uint256', type: 'uint256' },
+ ],
+ name: 'fundPool',
+ outputs: [],
+ },
+ { stateMutability: 'view', type: 'function', inputs: [], name: 'getBaseFee', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }] },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [],
+ name: 'getFeePercentage',
+ outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: '_poolId', internalType: 'uint256', type: 'uint256' }],
+ name: 'getPool',
+ outputs: [
+ {
+ name: '',
+ internalType: 'struct IAllo.Pool',
+ type: 'tuple',
+ components: [
+ { name: 'profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'strategy', internalType: 'contract IStrategy', type: 'address' },
+ { name: 'token', internalType: 'address', type: 'address' },
+ {
+ name: 'metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ { name: 'managerRole', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'adminRole', internalType: 'bytes32', type: 'bytes32' },
+ ],
+ },
+ ],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [],
+ name: 'getRegistry',
+ outputs: [{ name: '', internalType: 'contract IRegistry', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: 'role', internalType: 'bytes32', type: 'bytes32' }],
+ name: 'getRoleAdmin',
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: '_poolId', internalType: 'uint256', type: 'uint256' }],
+ name: 'getStrategy',
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [],
+ name: 'getTreasury',
+ outputs: [{ name: '', internalType: 'address payable', type: 'address' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'account', internalType: 'address', type: 'address' },
+ ],
+ name: 'grantRole',
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'account', internalType: 'address', type: 'address' },
+ ],
+ name: 'hasRole',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_registry', internalType: 'address', type: 'address' },
+ { name: '_treasury', internalType: 'address payable', type: 'address' },
+ { name: '_feePercentage', internalType: 'uint256', type: 'uint256' },
+ { name: '_baseFee', internalType: 'uint256', type: 'uint256' },
+ ],
+ name: 'initialize',
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: '_strategy', internalType: 'address', type: 'address' }],
+ name: 'isCloneableStrategy',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ { name: '_address', internalType: 'address', type: 'address' },
+ ],
+ name: 'isPoolAdmin',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ { name: '_address', internalType: 'address', type: 'address' },
+ ],
+ name: 'isPoolManager',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ { stateMutability: 'view', type: 'function', inputs: [], name: 'owner', outputs: [{ name: 'result', internalType: 'address', type: 'address' }] },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: 'pendingOwner', internalType: 'address', type: 'address' }],
+ name: 'ownershipHandoverExpiresAt',
+ outputs: [{ name: 'result', internalType: 'uint256', type: 'uint256' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_token', internalType: 'address', type: 'address' },
+ { name: '_recipient', internalType: 'address', type: 'address' },
+ ],
+ name: 'recoverFunds',
+ outputs: [],
+ },
+ {
+ stateMutability: 'payable',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ { name: '_data', internalType: 'bytes', type: 'bytes' },
+ ],
+ name: 'registerRecipient',
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [{ name: '_strategy', internalType: 'address', type: 'address' }],
+ name: 'removeFromCloneableStrategies',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ { name: '_manager', internalType: 'address', type: 'address' },
+ ],
+ name: 'removePoolManager',
+ outputs: [],
+ },
+ { stateMutability: 'payable', type: 'function', inputs: [], name: 'renounceOwnership', outputs: [] },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'account', internalType: 'address', type: 'address' },
+ ],
+ name: 'renounceRole',
+ outputs: [],
+ },
+ { stateMutability: 'payable', type: 'function', inputs: [], name: 'requestOwnershipHandover', outputs: [] },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'account', internalType: 'address', type: 'address' },
+ ],
+ name: 'revokeRole',
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],
+ name: 'supportsInterface',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'payable',
+ type: 'function',
+ inputs: [{ name: 'newOwner', internalType: 'address', type: 'address' }],
+ name: 'transferOwnership',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [{ name: '_baseFee', internalType: 'uint256', type: 'uint256' }],
+ name: 'updateBaseFee',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [{ name: '_feePercentage', internalType: 'uint256', type: 'uint256' }],
+ name: 'updateFeePercentage',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_poolId', internalType: 'uint256', type: 'uint256' },
+ {
+ name: '_metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ ],
+ name: 'updatePoolMetadata',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [{ name: '_registry', internalType: 'address', type: 'address' }],
+ name: 'updateRegistry',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [{ name: '_treasury', internalType: 'address payable', type: 'address' }],
+ name: 'updateTreasury',
+ outputs: [],
+ },
+] as const
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// registry
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+export const registryABI = [
+ { stateMutability: 'nonpayable', type: 'constructor', inputs: [{ name: '_owner', internalType: 'address', type: 'address' }] },
+ { type: 'error', inputs: [], name: 'AMOUNT_MISMATCH' },
+ { type: 'error', inputs: [], name: 'NONCE_NOT_AVAILABLE' },
+ { type: 'error', inputs: [], name: 'NOT_PENDING_OWNER' },
+ { type: 'error', inputs: [], name: 'UNAUTHORIZED' },
+ { type: 'error', inputs: [], name: 'ZERO_ADDRESS' },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'profileId', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'nonce', internalType: 'uint256', type: 'uint256', indexed: false },
+ { name: 'name', internalType: 'string', type: 'string', indexed: false },
+ {
+ name: 'metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ indexed: false,
+ },
+ { name: 'owner', internalType: 'address', type: 'address', indexed: false },
+ { name: 'anchor', internalType: 'address', type: 'address', indexed: false },
+ ],
+ name: 'ProfileCreated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'profileId', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ {
+ name: 'metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ indexed: false,
+ },
+ ],
+ name: 'ProfileMetadataUpdated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'profileId', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'name', internalType: 'string', type: 'string', indexed: false },
+ { name: 'anchor', internalType: 'address', type: 'address', indexed: false },
+ ],
+ name: 'ProfileNameUpdated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'profileId', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'owner', internalType: 'address', type: 'address', indexed: false },
+ ],
+ name: 'ProfileOwnerUpdated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'profileId', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'pendingOwner', internalType: 'address', type: 'address', indexed: false },
+ ],
+ name: 'ProfilePendingOwnerUpdated',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'previousAdminRole', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'newAdminRole', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ ],
+ name: 'RoleAdminChanged',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'account', internalType: 'address', type: 'address', indexed: true },
+ { name: 'sender', internalType: 'address', type: 'address', indexed: true },
+ ],
+ name: 'RoleGranted',
+ },
+ {
+ type: 'event',
+ anonymous: false,
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32', indexed: true },
+ { name: 'account', internalType: 'address', type: 'address', indexed: true },
+ { name: 'sender', internalType: 'address', type: 'address', indexed: true },
+ ],
+ name: 'RoleRevoked',
+ },
+ { stateMutability: 'view', type: 'function', inputs: [], name: 'ALLO_OWNER', outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }] },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [],
+ name: 'DEFAULT_ADMIN_ROLE',
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
+ },
+ { stateMutability: 'view', type: 'function', inputs: [], name: 'NATIVE', outputs: [{ name: '', internalType: 'address', type: 'address' }] },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [{ name: '_profileId', internalType: 'bytes32', type: 'bytes32' }],
+ name: 'acceptProfileOwnership',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_members', internalType: 'address[]', type: 'address[]' },
+ ],
+ name: 'addMembers',
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: '', internalType: 'address', type: 'address' }],
+ name: 'anchorToProfileId',
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_nonce', internalType: 'uint256', type: 'uint256' },
+ { name: '_name', internalType: 'string', type: 'string' },
+ {
+ name: '_metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ { name: '_owner', internalType: 'address', type: 'address' },
+ { name: '_members', internalType: 'address[]', type: 'address[]' },
+ ],
+ name: 'createProfile',
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: '_anchor', internalType: 'address', type: 'address' }],
+ name: 'getProfileByAnchor',
+ outputs: [
+ {
+ name: '',
+ internalType: 'struct IRegistry.Profile',
+ type: 'tuple',
+ components: [
+ { name: 'id', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'nonce', internalType: 'uint256', type: 'uint256' },
+ { name: 'name', internalType: 'string', type: 'string' },
+ {
+ name: 'metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ { name: 'owner', internalType: 'address', type: 'address' },
+ { name: 'anchor', internalType: 'address', type: 'address' },
+ ],
+ },
+ ],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: 'profileId', internalType: 'bytes32', type: 'bytes32' }],
+ name: 'getProfileById',
+ outputs: [
+ {
+ name: '',
+ internalType: 'struct IRegistry.Profile',
+ type: 'tuple',
+ components: [
+ { name: 'id', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'nonce', internalType: 'uint256', type: 'uint256' },
+ { name: 'name', internalType: 'string', type: 'string' },
+ {
+ name: 'metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ { name: 'owner', internalType: 'address', type: 'address' },
+ { name: 'anchor', internalType: 'address', type: 'address' },
+ ],
+ },
+ ],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: 'role', internalType: 'bytes32', type: 'bytes32' }],
+ name: 'getRoleAdmin',
+ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'account', internalType: 'address', type: 'address' },
+ ],
+ name: 'grantRole',
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'account', internalType: 'address', type: 'address' },
+ ],
+ name: 'hasRole',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_member', internalType: 'address', type: 'address' },
+ ],
+ name: 'isMemberOfProfile',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_owner', internalType: 'address', type: 'address' },
+ ],
+ name: 'isOwnerOfProfile',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_account', internalType: 'address', type: 'address' },
+ ],
+ name: 'isOwnerOrMemberOfProfile',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
+ name: 'profileIdToPendingOwner',
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }],
+ name: 'profilesById',
+ outputs: [
+ { name: 'id', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'nonce', internalType: 'uint256', type: 'uint256' },
+ { name: 'name', internalType: 'string', type: 'string' },
+ {
+ name: 'metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ { name: 'owner', internalType: 'address', type: 'address' },
+ { name: 'anchor', internalType: 'address', type: 'address' },
+ ],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_token', internalType: 'address', type: 'address' },
+ { name: '_recipient', internalType: 'address', type: 'address' },
+ ],
+ name: 'recoverFunds',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_members', internalType: 'address[]', type: 'address[]' },
+ ],
+ name: 'removeMembers',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'account', internalType: 'address', type: 'address' },
+ ],
+ name: 'renounceRole',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: 'role', internalType: 'bytes32', type: 'bytes32' },
+ { name: 'account', internalType: 'address', type: 'address' },
+ ],
+ name: 'revokeRole',
+ outputs: [],
+ },
+ {
+ stateMutability: 'view',
+ type: 'function',
+ inputs: [{ name: 'interfaceId', internalType: 'bytes4', type: 'bytes4' }],
+ name: 'supportsInterface',
+ outputs: [{ name: '', internalType: 'bool', type: 'bool' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ {
+ name: '_metadata',
+ internalType: 'struct Metadata',
+ type: 'tuple',
+ components: [
+ { name: 'protocol', internalType: 'uint256', type: 'uint256' },
+ { name: 'pointer', internalType: 'string', type: 'string' },
+ ],
+ },
+ ],
+ name: 'updateProfileMetadata',
+ outputs: [],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_name', internalType: 'string', type: 'string' },
+ ],
+ name: 'updateProfileName',
+ outputs: [{ name: '', internalType: 'address', type: 'address' }],
+ },
+ {
+ stateMutability: 'nonpayable',
+ type: 'function',
+ inputs: [
+ { name: '_profileId', internalType: 'bytes32', type: 'bytes32' },
+ { name: '_pendingOwner', internalType: 'address', type: 'address' },
+ ],
+ name: 'updateProfilePendingOwner',
+ outputs: [],
+ },
+] as const
+
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+// React
+//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__.
+ */
+export function useAlloRead>(
+ config: Omit, 'abi'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, ...config } as UseContractReadConfig)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"DEFAULT_ADMIN_ROLE"`.
+ */
+export function useAlloDefaultAdminRole>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'DEFAULT_ADMIN_ROLE', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"FEE_DENOMINATOR"`.
+ */
+export function useAlloFeeDenominator>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'FEE_DENOMINATOR', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"NATIVE"`.
+ */
+export function useAlloNative>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'NATIVE', ...config } as UseContractReadConfig)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"getBaseFee"`.
+ */
+export function useAlloGetBaseFee>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'getBaseFee', ...config } as UseContractReadConfig)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"getFeePercentage"`.
+ */
+export function useAlloGetFeePercentage>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'getFeePercentage', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"getPool"`.
+ */
+export function useAlloGetPool>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'getPool', ...config } as UseContractReadConfig)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"getRegistry"`.
+ */
+export function useAlloGetRegistry>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'getRegistry', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"getRoleAdmin"`.
+ */
+export function useAlloGetRoleAdmin>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'getRoleAdmin', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"getStrategy"`.
+ */
+export function useAlloGetStrategy>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'getStrategy', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"getTreasury"`.
+ */
+export function useAlloGetTreasury>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'getTreasury', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"hasRole"`.
+ */
+export function useAlloHasRole>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'hasRole', ...config } as UseContractReadConfig)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"isCloneableStrategy"`.
+ */
+export function useAlloIsCloneableStrategy<
+ TFunctionName extends 'isCloneableStrategy',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: alloABI, functionName: 'isCloneableStrategy', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"isPoolAdmin"`.
+ */
+export function useAlloIsPoolAdmin>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'isPoolAdmin', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"isPoolManager"`.
+ */
+export function useAlloIsPoolManager>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'isPoolManager', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"owner"`.
+ */
+export function useAlloOwner>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'owner', ...config } as UseContractReadConfig)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"ownershipHandoverExpiresAt"`.
+ */
+export function useAlloOwnershipHandoverExpiresAt<
+ TFunctionName extends 'ownershipHandoverExpiresAt',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: alloABI, functionName: 'ownershipHandoverExpiresAt', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"supportsInterface"`.
+ */
+export function useAlloSupportsInterface>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: alloABI, functionName: 'supportsInterface', ...config } as UseContractReadConfig<
+ typeof alloABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__.
+ */
+export function useAlloWrite(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], TFunctionName, TMode>
+ : UseContractWriteConfig & {
+ abi?: never
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"addPoolManager"`.
+ */
+export function useAlloAddPoolManager(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'addPoolManager', TMode> & {
+ functionName?: 'addPoolManager'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'addPoolManager'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'addPoolManager', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"addToCloneableStrategies"`.
+ */
+export function useAlloAddToCloneableStrategies(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig<
+ PrepareWriteContractResult['request']['abi'],
+ 'addToCloneableStrategies',
+ TMode
+ > & { functionName?: 'addToCloneableStrategies' }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'addToCloneableStrategies'
+ } = {} as any
+) {
+ return useContractWrite({
+ abi: alloABI,
+ functionName: 'addToCloneableStrategies',
+ ...config,
+ } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"allocate"`.
+ */
+export function useAlloAllocate(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'allocate', TMode> & {
+ functionName?: 'allocate'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'allocate'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'allocate', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"batchAllocate"`.
+ */
+export function useAlloBatchAllocate(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'batchAllocate', TMode> & {
+ functionName?: 'batchAllocate'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'batchAllocate'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'batchAllocate', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"batchRegisterRecipient"`.
+ */
+export function useAlloBatchRegisterRecipient(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig<
+ PrepareWriteContractResult['request']['abi'],
+ 'batchRegisterRecipient',
+ TMode
+ > & { functionName?: 'batchRegisterRecipient' }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'batchRegisterRecipient'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'batchRegisterRecipient', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"cancelOwnershipHandover"`.
+ */
+export function useAlloCancelOwnershipHandover(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig<
+ PrepareWriteContractResult['request']['abi'],
+ 'cancelOwnershipHandover',
+ TMode
+ > & { functionName?: 'cancelOwnershipHandover' }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'cancelOwnershipHandover'
+ } = {} as any
+) {
+ return useContractWrite({
+ abi: alloABI,
+ functionName: 'cancelOwnershipHandover',
+ ...config,
+ } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"completeOwnershipHandover"`.
+ */
+export function useAlloCompleteOwnershipHandover(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig<
+ PrepareWriteContractResult['request']['abi'],
+ 'completeOwnershipHandover',
+ TMode
+ > & { functionName?: 'completeOwnershipHandover' }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'completeOwnershipHandover'
+ } = {} as any
+) {
+ return useContractWrite({
+ abi: alloABI,
+ functionName: 'completeOwnershipHandover',
+ ...config,
+ } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"createPool"`.
+ */
+export function useAlloCreatePool(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'createPool', TMode> & {
+ functionName?: 'createPool'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'createPool'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'createPool', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"createPoolWithCustomStrategy"`.
+ */
+export function useAlloCreatePoolWithCustomStrategy(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig<
+ PrepareWriteContractResult['request']['abi'],
+ 'createPoolWithCustomStrategy',
+ TMode
+ > & { functionName?: 'createPoolWithCustomStrategy' }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'createPoolWithCustomStrategy'
+ } = {} as any
+) {
+ return useContractWrite({
+ abi: alloABI,
+ functionName: 'createPoolWithCustomStrategy',
+ ...config,
+ } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"distribute"`.
+ */
+export function useAlloDistribute(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'distribute', TMode> & {
+ functionName?: 'distribute'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'distribute'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'distribute', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"fundPool"`.
+ */
+export function useAlloFundPool(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'fundPool', TMode> & {
+ functionName?: 'fundPool'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'fundPool'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'fundPool', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"grantRole"`.
+ */
+export function useAlloGrantRole(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'grantRole', TMode> & {
+ functionName?: 'grantRole'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'grantRole'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'grantRole', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"initialize"`.
+ */
+export function useAlloInitialize(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'initialize', TMode> & {
+ functionName?: 'initialize'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'initialize'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'initialize', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"recoverFunds"`.
+ */
+export function useAlloRecoverFunds(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'recoverFunds', TMode> & {
+ functionName?: 'recoverFunds'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'recoverFunds'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'recoverFunds', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"registerRecipient"`.
+ */
+export function useAlloRegisterRecipient(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'registerRecipient', TMode> & {
+ functionName?: 'registerRecipient'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'registerRecipient'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'registerRecipient', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"removeFromCloneableStrategies"`.
+ */
+export function useAlloRemoveFromCloneableStrategies(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig<
+ PrepareWriteContractResult['request']['abi'],
+ 'removeFromCloneableStrategies',
+ TMode
+ > & { functionName?: 'removeFromCloneableStrategies' }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'removeFromCloneableStrategies'
+ } = {} as any
+) {
+ return useContractWrite({
+ abi: alloABI,
+ functionName: 'removeFromCloneableStrategies',
+ ...config,
+ } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"removePoolManager"`.
+ */
+export function useAlloRemovePoolManager(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'removePoolManager', TMode> & {
+ functionName?: 'removePoolManager'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'removePoolManager'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'removePoolManager', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"renounceOwnership"`.
+ */
+export function useAlloRenounceOwnership(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'renounceOwnership', TMode> & {
+ functionName?: 'renounceOwnership'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'renounceOwnership'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'renounceOwnership', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"renounceRole"`.
+ */
+export function useAlloRenounceRole(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'renounceRole', TMode> & {
+ functionName?: 'renounceRole'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'renounceRole'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'renounceRole', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"requestOwnershipHandover"`.
+ */
+export function useAlloRequestOwnershipHandover(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig<
+ PrepareWriteContractResult['request']['abi'],
+ 'requestOwnershipHandover',
+ TMode
+ > & { functionName?: 'requestOwnershipHandover' }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'requestOwnershipHandover'
+ } = {} as any
+) {
+ return useContractWrite({
+ abi: alloABI,
+ functionName: 'requestOwnershipHandover',
+ ...config,
+ } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"revokeRole"`.
+ */
+export function useAlloRevokeRole(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'revokeRole', TMode> & {
+ functionName?: 'revokeRole'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'revokeRole'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'revokeRole', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"transferOwnership"`.
+ */
+export function useAlloTransferOwnership(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'transferOwnership', TMode> & {
+ functionName?: 'transferOwnership'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'transferOwnership'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'transferOwnership', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updateBaseFee"`.
+ */
+export function useAlloUpdateBaseFee(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'updateBaseFee', TMode> & {
+ functionName?: 'updateBaseFee'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'updateBaseFee'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'updateBaseFee', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updateFeePercentage"`.
+ */
+export function useAlloUpdateFeePercentage(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'updateFeePercentage', TMode> & {
+ functionName?: 'updateFeePercentage'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'updateFeePercentage'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'updateFeePercentage', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updatePoolMetadata"`.
+ */
+export function useAlloUpdatePoolMetadata(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'updatePoolMetadata', TMode> & {
+ functionName?: 'updatePoolMetadata'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'updatePoolMetadata'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'updatePoolMetadata', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updateRegistry"`.
+ */
+export function useAlloUpdateRegistry(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'updateRegistry', TMode> & {
+ functionName?: 'updateRegistry'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'updateRegistry'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'updateRegistry', ...config } as any)
+}
+
+/**
+ * Wraps __{@link useContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updateTreasury"`.
+ */
+export function useAlloUpdateTreasury(
+ config: TMode extends 'prepared'
+ ? UseContractWriteConfig['request']['abi'], 'updateTreasury', TMode> & {
+ functionName?: 'updateTreasury'
+ }
+ : UseContractWriteConfig & {
+ abi?: never
+ functionName?: 'updateTreasury'
+ } = {} as any
+) {
+ return useContractWrite({ abi: alloABI, functionName: 'updateTreasury', ...config } as any)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__.
+ */
+export function usePrepareAlloWrite(
+ config: Omit, 'abi'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, ...config } as UsePrepareContractWriteConfig)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"addPoolManager"`.
+ */
+export function usePrepareAlloAddPoolManager(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'addPoolManager', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'addPoolManager'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"addToCloneableStrategies"`.
+ */
+export function usePrepareAlloAddToCloneableStrategies(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'addToCloneableStrategies', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'addToCloneableStrategies'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"allocate"`.
+ */
+export function usePrepareAlloAllocate(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'allocate', ...config } as UsePrepareContractWriteConfig)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"batchAllocate"`.
+ */
+export function usePrepareAlloBatchAllocate(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'batchAllocate', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'batchAllocate'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"batchRegisterRecipient"`.
+ */
+export function usePrepareAlloBatchRegisterRecipient(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'batchRegisterRecipient', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'batchRegisterRecipient'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"cancelOwnershipHandover"`.
+ */
+export function usePrepareAlloCancelOwnershipHandover(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'cancelOwnershipHandover', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'cancelOwnershipHandover'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"completeOwnershipHandover"`.
+ */
+export function usePrepareAlloCompleteOwnershipHandover(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'completeOwnershipHandover', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'completeOwnershipHandover'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"createPool"`.
+ */
+export function usePrepareAlloCreatePool(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'createPool', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'createPool'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"createPoolWithCustomStrategy"`.
+ */
+export function usePrepareAlloCreatePoolWithCustomStrategy(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'createPoolWithCustomStrategy', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'createPoolWithCustomStrategy'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"distribute"`.
+ */
+export function usePrepareAlloDistribute(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'distribute', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'distribute'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"fundPool"`.
+ */
+export function usePrepareAlloFundPool(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'fundPool', ...config } as UsePrepareContractWriteConfig)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"grantRole"`.
+ */
+export function usePrepareAlloGrantRole(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'grantRole', ...config } as UsePrepareContractWriteConfig)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"initialize"`.
+ */
+export function usePrepareAlloInitialize(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'initialize', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'initialize'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"recoverFunds"`.
+ */
+export function usePrepareAlloRecoverFunds(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'recoverFunds', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'recoverFunds'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"registerRecipient"`.
+ */
+export function usePrepareAlloRegisterRecipient(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'registerRecipient', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'registerRecipient'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"removeFromCloneableStrategies"`.
+ */
+export function usePrepareAlloRemoveFromCloneableStrategies(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'removeFromCloneableStrategies', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'removeFromCloneableStrategies'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"removePoolManager"`.
+ */
+export function usePrepareAlloRemovePoolManager(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'removePoolManager', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'removePoolManager'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"renounceOwnership"`.
+ */
+export function usePrepareAlloRenounceOwnership(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'renounceOwnership', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'renounceOwnership'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"renounceRole"`.
+ */
+export function usePrepareAlloRenounceRole(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'renounceRole', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'renounceRole'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"requestOwnershipHandover"`.
+ */
+export function usePrepareAlloRequestOwnershipHandover(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'requestOwnershipHandover', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'requestOwnershipHandover'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"revokeRole"`.
+ */
+export function usePrepareAlloRevokeRole(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'revokeRole', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'revokeRole'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"transferOwnership"`.
+ */
+export function usePrepareAlloTransferOwnership(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'transferOwnership', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'transferOwnership'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updateBaseFee"`.
+ */
+export function usePrepareAlloUpdateBaseFee(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'updateBaseFee', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'updateBaseFee'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updateFeePercentage"`.
+ */
+export function usePrepareAlloUpdateFeePercentage(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'updateFeePercentage', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'updateFeePercentage'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updatePoolMetadata"`.
+ */
+export function usePrepareAlloUpdatePoolMetadata(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'updatePoolMetadata', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'updatePoolMetadata'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updateRegistry"`.
+ */
+export function usePrepareAlloUpdateRegistry(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'updateRegistry', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'updateRegistry'
+ >)
+}
+
+/**
+ * Wraps __{@link usePrepareContractWrite}__ with `abi` set to __{@link alloABI}__ and `functionName` set to `"updateTreasury"`.
+ */
+export function usePrepareAlloUpdateTreasury(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return usePrepareContractWrite({ abi: alloABI, functionName: 'updateTreasury', ...config } as UsePrepareContractWriteConfig<
+ typeof alloABI,
+ 'updateTreasury'
+ >)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__.
+ */
+export function useAlloEvent(config: Omit, 'abi'> = {} as any) {
+ return useContractEvent({ abi: alloABI, ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"BaseFeePaid"`.
+ */
+export function useAlloBaseFeePaidEvent(config: Omit, 'abi' | 'eventName'> = {} as any) {
+ return useContractEvent({ abi: alloABI, eventName: 'BaseFeePaid', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"BaseFeeUpdated"`.
+ */
+export function useAlloBaseFeeUpdatedEvent(config: Omit, 'abi' | 'eventName'> = {} as any) {
+ return useContractEvent({ abi: alloABI, eventName: 'BaseFeeUpdated', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"FeePercentageUpdated"`.
+ */
+export function useAlloFeePercentageUpdatedEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'FeePercentageUpdated', ...config } as UseContractEventConfig<
+ typeof alloABI,
+ 'FeePercentageUpdated'
+ >)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"Initialized"`.
+ */
+export function useAlloInitializedEvent(config: Omit, 'abi' | 'eventName'> = {} as any) {
+ return useContractEvent({ abi: alloABI, eventName: 'Initialized', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"OwnershipHandoverCanceled"`.
+ */
+export function useAlloOwnershipHandoverCanceledEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'OwnershipHandoverCanceled', ...config } as UseContractEventConfig<
+ typeof alloABI,
+ 'OwnershipHandoverCanceled'
+ >)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"OwnershipHandoverRequested"`.
+ */
+export function useAlloOwnershipHandoverRequestedEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'OwnershipHandoverRequested', ...config } as UseContractEventConfig<
+ typeof alloABI,
+ 'OwnershipHandoverRequested'
+ >)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"OwnershipTransferred"`.
+ */
+export function useAlloOwnershipTransferredEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'OwnershipTransferred', ...config } as UseContractEventConfig<
+ typeof alloABI,
+ 'OwnershipTransferred'
+ >)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"PoolCreated"`.
+ */
+export function useAlloPoolCreatedEvent(config: Omit, 'abi' | 'eventName'> = {} as any) {
+ return useContractEvent({ abi: alloABI, eventName: 'PoolCreated', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"PoolFunded"`.
+ */
+export function useAlloPoolFundedEvent(config: Omit, 'abi' | 'eventName'> = {} as any) {
+ return useContractEvent({ abi: alloABI, eventName: 'PoolFunded', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"PoolMetadataUpdated"`.
+ */
+export function useAlloPoolMetadataUpdatedEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'PoolMetadataUpdated', ...config } as UseContractEventConfig<
+ typeof alloABI,
+ 'PoolMetadataUpdated'
+ >)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"RegistryUpdated"`.
+ */
+export function useAlloRegistryUpdatedEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'RegistryUpdated', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"RoleAdminChanged"`.
+ */
+export function useAlloRoleAdminChangedEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'RoleAdminChanged', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"RoleGranted"`.
+ */
+export function useAlloRoleGrantedEvent(config: Omit, 'abi' | 'eventName'> = {} as any) {
+ return useContractEvent({ abi: alloABI, eventName: 'RoleGranted', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"RoleRevoked"`.
+ */
+export function useAlloRoleRevokedEvent(config: Omit, 'abi' | 'eventName'> = {} as any) {
+ return useContractEvent({ abi: alloABI, eventName: 'RoleRevoked', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"StrategyApproved"`.
+ */
+export function useAlloStrategyApprovedEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'StrategyApproved', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"StrategyRemoved"`.
+ */
+export function useAlloStrategyRemovedEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'StrategyRemoved', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractEvent}__ with `abi` set to __{@link alloABI}__ and `eventName` set to `"TreasuryUpdated"`.
+ */
+export function useAlloTreasuryUpdatedEvent(
+ config: Omit, 'abi' | 'eventName'> = {} as any
+) {
+ return useContractEvent({ abi: alloABI, eventName: 'TreasuryUpdated', ...config } as UseContractEventConfig)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__.
+ */
+export function useRegistryRead>(
+ config: Omit, 'abi'> = {} as any
+) {
+ return useContractRead({ abi: registryABI, ...config } as UseContractReadConfig)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"ALLO_OWNER"`.
+ */
+export function useRegistryAlloOwner>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: registryABI, functionName: 'ALLO_OWNER', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"DEFAULT_ADMIN_ROLE"`.
+ */
+export function useRegistryDefaultAdminRole<
+ TFunctionName extends 'DEFAULT_ADMIN_ROLE',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: registryABI, functionName: 'DEFAULT_ADMIN_ROLE', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"NATIVE"`.
+ */
+export function useRegistryNative>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: registryABI, functionName: 'NATIVE', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"anchorToProfileId"`.
+ */
+export function useRegistryAnchorToProfileId<
+ TFunctionName extends 'anchorToProfileId',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: registryABI, functionName: 'anchorToProfileId', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"getProfileByAnchor"`.
+ */
+export function useRegistryGetProfileByAnchor<
+ TFunctionName extends 'getProfileByAnchor',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: registryABI, functionName: 'getProfileByAnchor', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"getProfileById"`.
+ */
+export function useRegistryGetProfileById<
+ TFunctionName extends 'getProfileById',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: registryABI, functionName: 'getProfileById', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"getRoleAdmin"`.
+ */
+export function useRegistryGetRoleAdmin>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: registryABI, functionName: 'getRoleAdmin', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"hasRole"`.
+ */
+export function useRegistryHasRole>(
+ config: Omit, 'abi' | 'functionName'> = {} as any
+) {
+ return useContractRead({ abi: registryABI, functionName: 'hasRole', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"isMemberOfProfile"`.
+ */
+export function useRegistryIsMemberOfProfile<
+ TFunctionName extends 'isMemberOfProfile',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: registryABI, functionName: 'isMemberOfProfile', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"isOwnerOfProfile"`.
+ */
+export function useRegistryIsOwnerOfProfile<
+ TFunctionName extends 'isOwnerOfProfile',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: registryABI, functionName: 'isOwnerOfProfile', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"isOwnerOrMemberOfProfile"`.
+ */
+export function useRegistryIsOwnerOrMemberOfProfile<
+ TFunctionName extends 'isOwnerOrMemberOfProfile',
+ TSelectData = ReadContractResult
+>(config: Omit, 'abi' | 'functionName'> = {} as any) {
+ return useContractRead({ abi: registryABI, functionName: 'isOwnerOrMemberOfProfile', ...config } as UseContractReadConfig<
+ typeof registryABI,
+ TFunctionName,
+ TSelectData
+ >)
+}
+
+/**
+ * Wraps __{@link useContractRead}__ with `abi` set to __{@link registryABI}__ and `functionName` set to `"profileIdToPendingOwner"`.
+ */
+export function useRegistryProfileIdToPendingOwner<
+ TFunctionName extends 'profileIdToPendingOwner',
+ TSelectData = ReadContractResult
+>(config: Omit