From e9a7c6c53e4f24d0f51effea0fd29b1265e60adf Mon Sep 17 00:00:00 2001 From: codemaster115 Date: Wed, 11 May 2022 07:46:34 -0500 Subject: [PATCH 001/101] Initial commit for governance --- .env.example | 4 +- actions/Memo.tsx | 52 + actions/RawTX.tsx | 57 + actions/types.tsx | 65 + components/AsyncButton.tsx | 39 + components/HelperCard.tsx | 32 + components/LabeledInput.tsx | 43 + components/Modal/ModalButton.tsx | 45 + components/Modal/ModalInner.tsx | 54 + components/Modal/context.tsx | 16 + components/Modal/index.tsx | 113 + .../Proposals/ProposalCreateView/index.tsx | 5 + .../ProposalConfirmationModal/ProposalIX.tsx | 23 + .../ProposalConfirmationModal/index.tsx | 124 + .../locked-voter/ProposalCreateInner.tsx | 246 ++ .../locked-voter/ProposalTXForm.tsx | 97 + .../ProposalCreateView/locked-voter/index.tsx | 25 + .../ActiveProposalVotingBars.tsx | 67 + .../Proposals/ProposalsList/PageNav.tsx | 63 + .../ProposalsList/PlaceholderCard.tsx | 39 + .../Proposals/ProposalsList/ProposalCard.tsx | 86 + .../ProposalsList/ProposalStateBadge.tsx | 59 + .../ProposalsList/ProposalStateDate.tsx | 72 + .../ProposalsList/ProposalStateLabel.tsx | 43 + .../ProposalsList/ProposalSubtitle.tsx | 32 + components/Proposals/ProposalsList/index.tsx | 142 ++ helpers/constants.ts | 9 + helpers/currencies.ts | 105 + helpers/fetchers.ts | 28 + helpers/format.ts | 249 ++ helpers/idl/ve_honey.json | 707 +++++- .../instructions/parseNonAnchorInstruction.ts | 145 ++ helpers/instructions/token/parsers.ts | 115 + helpers/instructions/token/types.ts | 237 ++ .../upgradeable_loader/instructions.ts | 223 ++ .../upgradeable_loader/parsers.ts | 72 + .../instructions/upgradeable_loader/types.ts | 188 ++ helpers/parser.ts | 66 + helpers/programs/veHoney.ts | 22 + helpers/sdk/constant.ts | 31 + helpers/sdk/gov.ts | 84 + helpers/sdk/index.ts | 1 + helpers/sdk/vehoney.ts | 193 +- helpers/types/ve_honey.ts | 2008 ++++++++++++++--- helpers/utils.ts | 281 ++- helpers/validators/pubkey.ts | 49 + hooks/deploydao/stripTrailingNullBytes.ts | 9 + hooks/deploydao/types.ts | 174 ++ .../deploydao/useCanonicalVerifiableBuild.ts | 19 + hooks/deploydao/useProgramData.ts | 57 + hooks/deploydao/useProgramIndex.ts | 21 + hooks/deploydao/useProgramMeta.ts | 29 + hooks/deploydao/useProgramRelease.ts | 20 + hooks/tribeca/useEscrow.ts | 99 + hooks/tribeca/useExecutiveCouncil.ts | 92 + hooks/tribeca/useGovernor.ts | 180 ++ hooks/tribeca/useProposalVotes.ts | 3 + hooks/tribeca/useProposals.ts | 265 +++ hooks/tribeca/useVote.ts | 23 + hooks/useIDLs.ts | 34 + hooks/useParsedInstruction.ts | 195 ++ hooks/useProgramMeta.ts | 40 + hooks/useSmartWalletAddress.tsx | 35 + icons/PulsingDot.tsx | 35 + package.json | 13 +- pages/_app.tsx | 66 +- pages/governance/index.tsx | 115 +- pages/governance/proposals/create.tsx | 13 + pages/governance/proposals/index.tsx | 16 + yarn.lock | 786 ++++++- 70 files changed, 8358 insertions(+), 437 deletions(-) create mode 100644 actions/Memo.tsx create mode 100644 actions/RawTX.tsx create mode 100644 actions/types.tsx create mode 100644 components/AsyncButton.tsx create mode 100644 components/HelperCard.tsx create mode 100644 components/LabeledInput.tsx create mode 100644 components/Modal/ModalButton.tsx create mode 100644 components/Modal/ModalInner.tsx create mode 100644 components/Modal/context.tsx create mode 100644 components/Modal/index.tsx create mode 100644 components/Proposals/ProposalCreateView/index.tsx create mode 100644 components/Proposals/ProposalCreateView/locked-voter/ProposalConfirmationModal/ProposalIX.tsx create mode 100644 components/Proposals/ProposalCreateView/locked-voter/ProposalConfirmationModal/index.tsx create mode 100644 components/Proposals/ProposalCreateView/locked-voter/ProposalCreateInner.tsx create mode 100644 components/Proposals/ProposalCreateView/locked-voter/ProposalTXForm.tsx create mode 100644 components/Proposals/ProposalCreateView/locked-voter/index.tsx create mode 100644 components/Proposals/ProposalsList/ActiveProposalVotingBars.tsx create mode 100644 components/Proposals/ProposalsList/PageNav.tsx create mode 100644 components/Proposals/ProposalsList/PlaceholderCard.tsx create mode 100644 components/Proposals/ProposalsList/ProposalCard.tsx create mode 100644 components/Proposals/ProposalsList/ProposalStateBadge.tsx create mode 100644 components/Proposals/ProposalsList/ProposalStateDate.tsx create mode 100644 components/Proposals/ProposalsList/ProposalStateLabel.tsx create mode 100644 components/Proposals/ProposalsList/ProposalSubtitle.tsx create mode 100644 components/Proposals/ProposalsList/index.tsx create mode 100644 helpers/constants.ts create mode 100644 helpers/currencies.ts create mode 100644 helpers/fetchers.ts create mode 100644 helpers/format.ts create mode 100644 helpers/instructions/parseNonAnchorInstruction.ts create mode 100644 helpers/instructions/token/parsers.ts create mode 100644 helpers/instructions/token/types.ts create mode 100644 helpers/instructions/upgradeable_loader/instructions.ts create mode 100644 helpers/instructions/upgradeable_loader/parsers.ts create mode 100644 helpers/instructions/upgradeable_loader/types.ts create mode 100644 helpers/parser.ts create mode 100644 helpers/programs/veHoney.ts create mode 100644 helpers/sdk/gov.ts create mode 100644 helpers/validators/pubkey.ts create mode 100644 hooks/deploydao/stripTrailingNullBytes.ts create mode 100644 hooks/deploydao/types.ts create mode 100644 hooks/deploydao/useCanonicalVerifiableBuild.ts create mode 100644 hooks/deploydao/useProgramData.ts create mode 100644 hooks/deploydao/useProgramIndex.ts create mode 100644 hooks/deploydao/useProgramMeta.ts create mode 100644 hooks/deploydao/useProgramRelease.ts create mode 100644 hooks/tribeca/useEscrow.ts create mode 100644 hooks/tribeca/useExecutiveCouncil.ts create mode 100644 hooks/tribeca/useGovernor.ts create mode 100644 hooks/tribeca/useProposalVotes.ts create mode 100644 hooks/tribeca/useProposals.ts create mode 100644 hooks/tribeca/useVote.ts create mode 100644 hooks/useIDLs.ts create mode 100644 hooks/useParsedInstruction.ts create mode 100644 hooks/useProgramMeta.ts create mode 100644 hooks/useSmartWalletAddress.tsx create mode 100644 icons/PulsingDot.tsx create mode 100644 pages/governance/proposals/create.tsx create mode 100644 pages/governance/proposals/index.tsx diff --git a/.env.example b/.env.example index 323b8d9c..2a54c320 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,3 @@ -NEXT_PUBLIC_RPC_NODE = 'https://api.mainnet-beta.solana.com' \ No newline at end of file +NEXT_PUBLIC_RPC_NODE = 'https://api.mainnet-beta.solana.com' +NEXT_PUBLIC_GOVERNOR_ADDRESS= +NEXT_PUBLIC_SMART_WALLET_ADDRESS= \ No newline at end of file diff --git a/actions/Memo.tsx b/actions/Memo.tsx new file mode 100644 index 00000000..0691c4e0 --- /dev/null +++ b/actions/Memo.tsx @@ -0,0 +1,52 @@ +import { + buildStubbedTransaction, + createMemoInstruction +} from '@saberhq/solana-contrib'; +import { useSolana } from '@saberhq/use-solana'; +import { useEffect, useState } from 'react'; +import { Text, Textarea } from 'degen'; +import { serializeToBase64 } from 'helpers/utils'; +import type { ActionFormProps } from './types'; + +export const Memo: React.FC = ({ + actor, + setError, + setTxRaw +}: ActionFormProps) => { + const [memo, setMemo] = useState(''); + const { network } = useSolana(); + + useEffect(() => { + if (memo === '') { + setError('Memo cannot be empty'); + } + }, [memo, setError]); + + return ( + <> +