diff --git a/components/instructions/programs/symmetryV2.tsx b/components/instructions/programs/symmetryV2.tsx
index 3a0bd424f4..b6820b2f02 100644
--- a/components/instructions/programs/symmetryV2.tsx
+++ b/components/instructions/programs/symmetryV2.tsx
@@ -18,6 +18,17 @@ const rebalanceAndLpLayout = BufferLayout.seq(
'rebalanceAndLp'
);
+
+const SymmetryLogoLink = () => {
+ return
+
+
+}
+
export const SYMMETRY_V2_INSTRUCTIONS = {
"2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr": {
78: {
@@ -43,10 +54,32 @@ export const SYMMETRY_V2_INSTRUCTIONS = {
]).decode(Buffer.from(data), 8)
return (
- <>
-
- Basket Composition:
- {
- composition.map((compItem, i) => {
- return
- })
- }
+
+
+
+
+
+
+
Editing Basket Settings
+
If the proposal passes, the basket will be edited to the following settings:
+
- >
+
+
+
+
+
- Manager Fee:
+ - {managerFee / 100}%
+
+
+
- Rebalance Check Interval:
+ - {rebalanceInterval / 60} minutes
+
+
+
- Rebalance Trigger Threshold:
+ - {rebalanceThreshold / 100}%
+
+
+
- Maximum Slippage Allowed During Rebalancing:
+ - {rebalanceSlippage / 100}%
+
+
+
- Liquidity Provision Threshold:
+ - {lpOffsetThreshold / 100}%
+
+
+
- Rebalancing Enabled:
+ - {rebalanceAndLp[0] === 0 ? "Yes" : "No"}
+
+
+
- Liquidity Provision Enabled:
+ - {rebalanceAndLp[1] === 0 ? "Yes" : "No"}
+
+
+
- Basket Composition Size:
+ - {numOfTokens} Tokens
+
+
+
+
+
Basket Composition:
+
+
+
+
)
},
},
@@ -188,7 +289,14 @@ export const SYMMETRY_V2_INSTRUCTIONS = {
targetCompositionLayout,
targetWeightsLayout,
]).decode(Buffer.from(data), 8)
-
+ const getBasketType = (type) => {
+ switch (type) {
+ case 0: return "Bundle";
+ case 1: return "Portfolio";
+ case 2: return "Private";
+ default: return "Unknown";
+ }
+ };
let basketsSdk = await BasketsSDK.init(connection);
let tokenData = basketsSdk.getTokenListData();
@@ -213,28 +321,86 @@ export const SYMMETRY_V2_INSTRUCTIONS = {
}).filter(x => x != null)
return (
- <>
-
Manager Fee: {managerFee / 100}%
-
Host Platform Fee: {hostFee / 100}%
-
Basket Type: {basketType === 0 ? "Bundle" : basketType === 1 ? "Portfolio" : "Private"}
-
Rebalance Check Interval: {rebalanceInterval / 60} minutes
-
Rebalance Trigger Threshold: {rebalanceThreshold / 100}%
-
Maximum Slippage Allowed During Rebalancing: {rebalanceSlippage / 100}%
-
Liquidity Provision Threshold: {lpOffsetThreshold / 100}%
-
Rebalancing Enabled: {rebalanceAndLp[0] === 0 ? "Yes" : "No"}
-
Liquidity Provision Enabled: {rebalanceAndLp[1] === 0 ? "No" : "Yes"}
-
Basket Composition Size: {numOfTokens} Tokens
-
- Basket Composition:
- {
- composition.map((compItem, i) => {
- return
- })
- }
+
+
+
+
+
+
+
Creating a Basket
+
If the proposal passes, a basket will be created with the following settings:
+
+
+
+
+
+
+
- Manager Fee:
+ - {managerFee / 100}%
+
+
+
- Host Platform Fee:
+ - {hostFee / 100}%
+
+
+
- Basket Type:
+ - {getBasketType(basketType)}
+
+
+
- Rebalance Check Interval:
+ - {rebalanceInterval / 60} minutes
+
+
+
- Rebalance Trigger Threshold:
+ - {rebalanceThreshold / 100}%
+
+
+
- Maximum Slippage Allowed During Rebalancing:
+ - {rebalanceSlippage / 100}%
+
+
+
- Liquidity Provision Threshold:
+ - {lpOffsetThreshold / 100}%
+
+
+
- Rebalancing Enabled:
+ - {rebalanceAndLp[0] === 0 ? "Yes" : "No"}
+
+
+
- Liquidity Provision Enabled:
+ - {rebalanceAndLp[1] === 0 ? "Yes" : "No"}
+
+
+
- Basket Composition Size:
+ - {numOfTokens} Tokens
+
+
+
+
+
Basket Composition:
+
+
- >
+
)
},
},
diff --git a/pages/dao/[symbol]/proposal/components/instructions/Symmetry/SymmetryCreateBasket.tsx b/pages/dao/[symbol]/proposal/components/instructions/Symmetry/SymmetryCreateBasket.tsx
index 92a3d481be..16a1b34999 100644
--- a/pages/dao/[symbol]/proposal/components/instructions/Symmetry/SymmetryCreateBasket.tsx
+++ b/pages/dao/[symbol]/proposal/components/instructions/Symmetry/SymmetryCreateBasket.tsx
@@ -315,6 +315,30 @@ const SymmetryCreateBasket = ({
}
+ {
+ form.governedAccount &&
+
+
+
+ Make sure {form.governedAccount?.pubkey.toBase58()} has at least 0.22 SOL, which will required to deploy the basket after the proposal passes.
+
+
+ }
>
)
}
diff --git a/pages/dao/[symbol]/proposal/components/instructions/Symmetry/SymmetryDeposit.tsx b/pages/dao/[symbol]/proposal/components/instructions/Symmetry/SymmetryDeposit.tsx
index ea8cb31184..208f3a0697 100644
--- a/pages/dao/[symbol]/proposal/components/instructions/Symmetry/SymmetryDeposit.tsx
+++ b/pages/dao/[symbol]/proposal/components/instructions/Symmetry/SymmetryDeposit.tsx
@@ -5,12 +5,13 @@ import Input from '@components/inputs/Input'
import { NewProposalContext } from '../../../new';
import { BasketsSDK, FilterOption } from "@symmetry-hq/baskets-sdk";
import { buyBasketIx } from "@symmetry-hq/baskets-sdk/dist/basketInstructions";
-
+import ArrowButton from './components/ArrowButton';
import { useConnection } from '@solana/wallet-adapter-react';
import { PublicKey } from '@solana/web3.js';
import useGovernanceAssets from '@hooks/useGovernanceAssets';
import Select from '@components/inputs/Select';
import GovernedAccountSelect from '../../GovernedAccountSelect';
+import { LoaderIcon } from './SymmetryEditBasket';
const SymmetryDeposit = ({
index,
@@ -34,7 +35,6 @@ const SymmetryDeposit = ({
const shouldBeGoverned = !!(index !== 0 && governance)
const [assetAccountsLoaded, setAssetAccountsLoaded] = useState(false);
-
const handleSetForm = ({ propertyName, value }) => {
setFormErrors({})
setForm({ ...form, [propertyName]: value })
@@ -46,13 +46,12 @@ const SymmetryDeposit = ({
}, [assetAccounts]);
useEffect(() => {
- if(assetAccountsLoaded) {
- const basketsOwnerAccounts: FilterOption[] = assetAccounts.filter(x => x.isSol).map((token) => {
- return {
+ if(form.governedAccount) {
+ const basketsOwnerAccounts: FilterOption[] = [{
filterType: 'manager',
- filterPubkey: token.pubkey
+ filterPubkey: form.governedAccount.pubkey
}
- })
+ ]
BasketsSDK.init(connection).then((sdk) => {
setBasketSdk(sdk);
sdk.findBaskets(basketsOwnerAccounts).then((baskets) => {
@@ -71,7 +70,7 @@ const SymmetryDeposit = ({
});
});
}
- }, [assetAccountsLoaded]);
+ }, [form.governedAccount]);
useEffect(() => {
handleSetInstructions(
@@ -99,7 +98,28 @@ const SymmetryDeposit = ({
return <>
{
- managedBaskets ?
+ assetAccountsLoaded ?
+
x.isSol)}
+ onChange={(value) => {
+ handleSetForm({ value, propertyName: 'governedAccount' })
+ }}
+ value={form.governedAccount}
+ error={formErrors['governedAccount']}
+ shouldBeGoverned={shouldBeGoverned}
+ governance={governance}
+ type='wallet'
+ />
+ :
+
+
+
Loading DAO Accounts
+
+ }
+ {
+ form.governedAccount &&
+ (managedBaskets ?