diff --git a/centrifuge-app/src/components/Tooltips.tsx b/centrifuge-app/src/components/Tooltips.tsx
index c7bc13c28..0bca55ddc 100644
--- a/centrifuge-app/src/components/Tooltips.tsx
+++ b/centrifuge-app/src/components/Tooltips.tsx
@@ -358,6 +358,26 @@ export const tooltipText = {
label: '',
body: 'This pool will have three classes. Senior tranche is the safest tranche with priority in repayment. Mezzanine tranche has intermediate risk and receives payment after Senior tranche obligations are met. Junior tranche which only receives returns after both Senior and Mezzanine tranches are paid.',
},
+ singleMultisign: {
+ label: '',
+ body: 'Setup a wallet where only one private key is required to authorise changes to the pool configuration.',
+ },
+ multiMultisign: {
+ label: '',
+ body: 'Setup a wallet that requires multiple private keys to authorise changes to the pool configuration.',
+ },
+ centrifugeOnboarding: {
+ label: '',
+ body: 'Investors will go through the Centrifuge onboarding provider, Shuftipro, before they can invest in your pool.',
+ },
+ externalOnboarding: {
+ label: '',
+ body: 'You can select the provider you want to KYC/onboard your investors.',
+ },
+ noneOnboarding: {
+ label: '',
+ body: 'You can directly whitelist the addresses that can invest in the pool.',
+ },
}
export type TooltipsProps = {
diff --git a/centrifuge-app/src/pages/IssuerCreatePool/PoolSetupSection.tsx b/centrifuge-app/src/pages/IssuerCreatePool/PoolSetupSection.tsx
index 92dd2f95f..d3854f899 100644
--- a/centrifuge-app/src/pages/IssuerCreatePool/PoolSetupSection.tsx
+++ b/centrifuge-app/src/pages/IssuerCreatePool/PoolSetupSection.tsx
@@ -1,7 +1,6 @@
import { PoolMetadataInput } from '@centrifuge/centrifuge-js'
import {
Box,
- Button,
Checkbox,
FileUpload,
Grid,
@@ -14,7 +13,7 @@ import {
Text,
TextInput,
} from '@centrifuge/fabric'
-import { Field, FieldProps, useFormikContext } from 'formik'
+import { Field, FieldArray, FieldProps, useFormikContext } from 'formik'
import { useTheme } from 'styled-components'
import { FieldWithErrorMessage } from '../../../src/components/FieldWithErrorMessage'
import { Tooltips } from '../../../src/components/Tooltips'
@@ -39,14 +38,9 @@ export const PoolSetupSection = () => {
return (
-
-
- Management setup
-
-
-
+
+ Management setup
+
Pool managers*
@@ -57,29 +51,47 @@ export const PoolSetupSection = () => {
Security requirement
}
/>
}
/>
-
+
Wallet addresses
-
- {({ field, form }: FieldProps) => }
-
-
- {({ field, form }: FieldProps) => }
-
-
+
+ {({ push }) => (
+ <>
+ {form.values.adminMultisig?.signers?.map((_, index) => (
+
+
+ {({ field }: FieldProps) => }
+
+
+ ))}
+
+ {
+ if (form.values.adminMultisig && form.values.adminMultisig.signers?.length <= 10) {
+ push('')
+ }
+ }}
+ />
+
+ >
+ )}
+
+
@@ -88,12 +100,18 @@ export const PoolSetupSection = () => {
{({ field, meta, form }: FieldProps) => (
- Pool delegates
-
- Pool managers can authorize additional addresses to perform designated pool actions.
-
-
-
-
- Add or remove addresses that can:
-
-
- {({ field, form }: FieldProps) => (
-
- )}
-
-
-
-
-
-
+
+ {({ push }) => (
+
+
+
+ Add or remove addresses that can:
+
+ Originate assets and invest in the pool*
+ {form.values.assetOriginators?.map((_: string, index: number) => (
+
+
+ {({ field }: FieldProps) => }
+
+
+ ))}
+
+
+
+ {
+ if (form.values.adminMultisig && form.values.adminMultisig.signers?.length <= 10) {
+ push('')
+ }
+ }}
+ />
+
+
+ )}
+
@@ -169,94 +197,95 @@ export const PoolSetupSection = () => {
- {values.poolFees.map((s, index) => (
-
-
-
- Pool fees {index + 1}
-
-
-
-
-
-
-
-
- {({ field, form, meta }: FieldProps) => (
-
-
- {({ field, meta }: FieldProps) => {
- return (
-
-
-
- {({ field, meta }: FieldProps) => {
- return (
-
-
-
+
+
+
+ ))}
+
+
+ push({ name: '', category: '', feePosition: '', feeType: '', percentOfNav: '', walletAddress: '' })
+ }
/>
-
-
-
- ))}
-
-
-
-
+
+ >
+ )}
+
Investor onboarding
@@ -265,23 +294,26 @@ export const PoolSetupSection = () => {
Onboarding experience
}
/>
}
/>
}
/>
diff --git a/centrifuge-app/src/pages/IssuerCreatePool/PoolStructureSection.tsx b/centrifuge-app/src/pages/IssuerCreatePool/PoolStructureSection.tsx
index 8342f2ae2..e54569561 100644
--- a/centrifuge-app/src/pages/IssuerCreatePool/PoolStructureSection.tsx
+++ b/centrifuge-app/src/pages/IssuerCreatePool/PoolStructureSection.tsx
@@ -61,7 +61,7 @@ export const CheckboxOption = ({
name: string
label: string
sublabel?: string
- value: string | number
+ value: string | number | boolean
disabled?: boolean
icon?: React.ReactNode
id?: keyof typeof tooltipText
@@ -88,7 +88,7 @@ export const CheckboxOption = ({
{...field}
errorMessage={meta.touched && meta.error ? meta.error : undefined}
label={label}
- value={value}
+ value={value.toString()}
disabled={disabled}
onChange={(val) => form.setFieldValue(name, val.target.checked ? value : null)}
onBlur={field.onBlur}
diff --git a/centrifuge-app/src/pages/IssuerCreatePool/types.ts b/centrifuge-app/src/pages/IssuerCreatePool/types.ts
index 4cbb8e55c..b6f9c8eac 100644
--- a/centrifuge-app/src/pages/IssuerCreatePool/types.ts
+++ b/centrifuge-app/src/pages/IssuerCreatePool/types.ts
@@ -102,8 +102,9 @@ export const initialValues: CreatePoolValues = {
reportAuthorAvatar: null,
reportUrl: '',
+ assetOriginators: [''],
adminMultisig: {
- signers: [],
+ signers: ['', ''],
threshold: 1,
},
adminMultisigEnabled: false,