From eef34853687cfb92b8e8cfa86019ccdc95734b74 Mon Sep 17 00:00:00 2001
From: fabiolalombardim <37227394+fabiolalombardim@users.noreply.github.com>
Date: Mon, 26 Jun 2023 18:04:52 +0200
Subject: [PATCH 1/3] All Homebase modals updated (#593)
* modals updated
* current delegate added
---
src/modules/common/MainButton.tsx | 1 +
src/modules/common/SmallButton.tsx | 1 +
src/modules/explorer/components/BatchBar.tsx | 22 +--
.../components/ConfigProposalForm.tsx | 132 +++++++++++++-----
.../DelegationChangeProposalForm.tsx | 71 ++++++++--
.../components/GuardianChangeProposalForm.tsx | 96 ++++++++++---
.../components/NewTreasuryProposalDialog.tsx | 16 +--
.../explorer/components/ProposalForm.tsx | 48 +++----
.../explorer/components/ProposalFormInput.tsx | 2 +-
.../components/ProposalFormSendButton.tsx | 5 +-
.../explorer/components/ResponsiveDialog.tsx | 16 ++-
src/modules/explorer/pages/DAOList/index.tsx | 5 -
.../explorer/pages/Proposals/index.tsx | 4 -
src/theme/index.ts | 3 +-
14 files changed, 294 insertions(+), 128 deletions(-)
diff --git a/src/modules/common/MainButton.tsx b/src/modules/common/MainButton.tsx
index c22aed76..7c195a97 100644
--- a/src/modules/common/MainButton.tsx
+++ b/src/modules/common/MainButton.tsx
@@ -7,6 +7,7 @@ export const MainButton = styled(Button)(({ theme }) => ({
"transition": ".15s ease-in",
"background": theme.palette.secondary.main,
"textTransform": "none",
+ "borderRadius": 8,
"&$disabled": {
boxShadow: "none"
diff --git a/src/modules/common/SmallButton.tsx b/src/modules/common/SmallButton.tsx
index 29a66d65..39d060bb 100644
--- a/src/modules/common/SmallButton.tsx
+++ b/src/modules/common/SmallButton.tsx
@@ -6,6 +6,7 @@ export const SmallButton = styled(Button)({
"boxShadow": "0px 0px 7px -2px rgba(0, 0, 0, 0.2)",
"transition": ".15s ease-out",
"textTransform": "capitalize",
+ "borderRadius": 8,
"&$disabled": {
boxShadow: "none"
diff --git a/src/modules/explorer/components/BatchBar.tsx b/src/modules/explorer/components/BatchBar.tsx
index e6ca4519..ad03453a 100644
--- a/src/modules/explorer/components/BatchBar.tsx
+++ b/src/modules/explorer/components/BatchBar.tsx
@@ -45,13 +45,13 @@ const AddButton = styled(Paper)({
"minWidth": 31,
"textAlign": "center",
"padding": 0,
- "background": "#383e43",
- "color": "#fff",
+ "background": "inherit",
+ "color": "rgb(129, 254, 183)",
"alignItems": "center",
"display": "flex",
"justifyContent": "center",
"cursor": "pointer",
-
+ "boxShadow": "none",
"&:hover": {
background: "#3c4349"
}
@@ -69,10 +69,10 @@ interface Props {
export const BatchBar = ({ isBatch, handleIsBatchChange, onClickAdd, items, activeItem, setActiveItem }: Props) => {
return (
-
+
-
+
Batch Transfer?
@@ -90,13 +90,17 @@ export const BatchBar = ({ isBatch, handleIsBatchChange, onClickAdd, items, acti
item
key={index}
onClick={() => setActiveItem(index)}
- style={Number(index + 1) === activeItem ? { background: "#81FEB7" } : { background: "#3c4349" }}
+ style={Number(index + 1) === activeItem ? { background: "#81FEB7" } : { background: "inherit" }}
>
- #{index + 1}
+ {index + 1}
)
@@ -105,6 +109,6 @@ export const BatchBar = ({ isBatch, handleIsBatchChange, onClickAdd, items, acti
+
) : null}
-
+
)
}
diff --git a/src/modules/explorer/components/ConfigProposalForm.tsx b/src/modules/explorer/components/ConfigProposalForm.tsx
index cedc6b7d..28436398 100644
--- a/src/modules/explorer/components/ConfigProposalForm.tsx
+++ b/src/modules/explorer/components/ConfigProposalForm.tsx
@@ -1,5 +1,5 @@
/* eslint-disable react/display-name */
-import { Grid, Typography, TextField } from "@material-ui/core"
+import { Grid, Typography, TextField, styled } from "@material-ui/core"
import React, { useCallback } from "react"
import { useDAO } from "services/services/dao/hooks/useDAO"
import { SendButton } from "./ProposalFormSendButton"
@@ -8,6 +8,13 @@ import { useDAOID } from "../pages/DAO/router"
import { ProposalFormInput } from "./ProposalFormInput"
import { useProposeConfigChange } from "../../../services/contracts/baseDAO/hooks/useProposeConfigChange"
import { ResponsiveDialog } from "./ResponsiveDialog"
+import * as yup from "yup"
+import { yupResolver } from "@hookform/resolvers/yup"
+
+const ErrorText = styled(Typography)({
+ fontSize: 14,
+ color: "red"
+})
type RecursivePartial = {
[P in keyof T]?: RecursivePartial
@@ -27,16 +34,24 @@ interface Props {
defaultTab?: number
}
-// const validationSchema: Yup.SchemaOf = Yup.object({
-// frozen_extra_value: Yup.number().required("Required"),
-// slash_scale_value: Yup.number().min(0, "Cannot be lesser than 0").max(100, "Cannot be greater than 100")
-// });
+const validationSchema = yup.object({
+ frozen_extra_value: yup.number().typeError("Amount must be a number"),
+ returnedPercentage: yup
+ .number()
+ .min(0, "Cannot be lesser than 0")
+ .max(100, "Cannot be greater than 100")
+ .typeError("Amount must be a number")
+})
export const ConfigProposalForm: React.FC = ({ open, handleClose }) => {
const daoId = useDAOID()
const { data: dao } = useDAO(daoId)
- const methods = useForm()
+ const methods = useForm({ resolver: yupResolver(validationSchema) })
+
+ const {
+ formState: { errors }
+ } = methods
const { mutate } = useProposeConfigChange()
@@ -64,69 +79,112 @@ export const ConfigProposalForm: React.FC = ({ open, handleClose }) => {
handleClose()
}
},
- [dao, handleClose, methods, mutate]
+ [dao, mutate, methods, handleClose]
)
return (
-
+
All fields are optional. Leave empty what you wish to leave unchanged
-
-
+ {/*
+
(
)}
/>
+ */}
+
+
+ (
+
+ )}
+ />
+
+
+
+ Current:{" "}
+
+
+ {dao && dao?.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
+
+
- {/* */}
-
+
(
-
+
)}
/>
+ {errors.returnedPercentage?.message}
+
+
+ Current:{" "}
+
+
+ {dao && dao?.data.extra.returnedPercentage.toString()}%
+
+
-
-
- Proposal Fee:{" "}
-
-
- {dao && dao.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
-
+
+
+
+ Proposal Fee:{" "}
+
+
+ {dao && dao.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
+
+
+
+
+ Submit
+
+
-
-
- Submit
-
diff --git a/src/modules/explorer/components/DelegationChangeProposalForm.tsx b/src/modules/explorer/components/DelegationChangeProposalForm.tsx
index 45099290..1f4a2965 100644
--- a/src/modules/explorer/components/DelegationChangeProposalForm.tsx
+++ b/src/modules/explorer/components/DelegationChangeProposalForm.tsx
@@ -9,6 +9,15 @@ import { useDAOID } from "../pages/DAO/router"
import { ProposalFormInput } from "./ProposalFormInput"
import { ResponsiveDialog } from "./ResponsiveDialog"
import { useProposeDelegationChange } from "services/contracts/baseDAO/hooks/useProposeDelegationChange"
+import * as yup from "yup"
+import { yupResolver } from "@hookform/resolvers/yup"
+import { validateContractAddress, validateAddress } from "@taquito/utils"
+import { useDelegate } from "services/contracts/baseDAO/hooks/useDelegate"
+
+const ErrorText = styled(Typography)({
+ fontSize: 14,
+ color: "red"
+})
type RecursivePartial = {
[P in keyof T]?: RecursivePartial
@@ -31,10 +40,24 @@ const Content = styled(Grid)({
padding: "10px 0"
})
+const isInvalidKtOrTzAddress = (address: string | undefined) => {
+ if (address !== undefined) {
+ return validateContractAddress(address) !== 3 && validateAddress(address) !== 3 ? false : true
+ }
+ return false
+}
+
+const validationSchema = yup.object({
+ newDelegationAddress: yup
+ .string()
+ .test("is-valid-address", "Must be a valid address", value => isInvalidKtOrTzAddress(value))
+})
+
export const DelegationChangeProposalForm: React.FC = ({ open, handleClose, defaultValues }) => {
const daoId = useDAOID()
const { data: dao } = useDAO(daoId)
+ const currentDelegate = useDelegate(dao && dao?.data.address ? dao?.data.address : "")
const methods = useForm({
defaultValues: useMemo(
() => ({
@@ -42,10 +65,14 @@ export const DelegationChangeProposalForm: React.FC = ({ open, handleClos
...defaultValues
}),
[defaultValues]
- )
- // resolver: yupResolver(validationSchema as any),
+ ),
+ resolver: yupResolver(validationSchema)
})
+ const {
+ formState: { errors }
+ } = methods
+
const newDelegationAddress = methods.watch("newDelegationAddress")
useEffect(() => {
@@ -74,6 +101,19 @@ export const DelegationChangeProposalForm: React.FC = ({ open, handleClos
title={"Change Delegate"}
>
+ {dao && (
+
+
+ Current Delegate:{" "}
+
+
+ {currentDelegate && currentDelegate.data && currentDelegate.data.address
+ ? currentDelegate.data.address
+ : "-"}
+
+
+ )}
+
= ({ open, handleClos
)}
/>
+ {errors.newDelegationAddress?.message}
-
-
- Proposal Fee:{" "}
-
-
- {dao && dao.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
-
-
+
+
+
+ Proposal Fee:{" "}
+
+
+ {dao && dao.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
+
+
-
- Submit
-
+
+
+ Submit
+
+
+
diff --git a/src/modules/explorer/components/GuardianChangeProposalForm.tsx b/src/modules/explorer/components/GuardianChangeProposalForm.tsx
index 86cb69f0..10f092c2 100644
--- a/src/modules/explorer/components/GuardianChangeProposalForm.tsx
+++ b/src/modules/explorer/components/GuardianChangeProposalForm.tsx
@@ -8,6 +8,14 @@ import { useDAOID } from "../pages/DAO/router"
import { ProposalFormInput } from "./ProposalFormInput"
import { useProposeGuardianChange } from "../../../services/contracts/baseDAO/hooks/useProposeGuardianChange"
import { ResponsiveDialog } from "./ResponsiveDialog"
+import * as yup from "yup"
+import { yupResolver } from "@hookform/resolvers/yup"
+import { validateContractAddress, validateAddress } from "@taquito/utils"
+
+const ErrorText = styled(Typography)({
+ fontSize: 14,
+ color: "red"
+})
type RecursivePartial = {
[P in keyof T]?: RecursivePartial
@@ -28,6 +36,19 @@ interface Props {
const Content = styled(Grid)({})
+const isInvalidKtOrTzAddress = (address: string | undefined) => {
+ if (address !== undefined) {
+ return validateContractAddress(address) !== 3 && validateAddress(address) !== 3 ? false : true
+ }
+ return false
+}
+
+const validationSchema = yup.object({
+ newGuardianAddress: yup
+ .string()
+ .test("is-valid-address", "Must be a valid address", value => isInvalidKtOrTzAddress(value))
+})
+
export const GuardianChangeProposalForm: React.FC = ({ open, handleClose, defaultValues }) => {
const daoId = useDAOID()
const { data: dao } = useDAO(daoId)
@@ -39,10 +60,14 @@ export const GuardianChangeProposalForm: React.FC = ({ open, handleClose,
...defaultValues
}),
[defaultValues]
- )
- // resolver: yupResolver(validationSchema as any),
+ ),
+ resolver: yupResolver(validationSchema)
})
+ const {
+ formState: { errors }
+ } = methods
+
const newGuardianAddress = methods.watch("newGuardianAddress")
useEffect(() => {
@@ -68,17 +93,35 @@ export const GuardianChangeProposalForm: React.FC = ({ open, handleClose,
onClose={handleClose}
aria-labelledby="alert-dialog-title"
aria-describedby="alert-dialog-description"
- title={"Update Guardian"}
+ title={"Change Guardian"}
>
{dao && (
Current Guardian:{" "}
- {dao.data.guardian}
+
+
+ {dao.data.guardian}
)}
+ {/*
+
+ (
+
+ )}
+ />
+
+ */}
= ({ open, handleClose,
)}
/>
+ {errors.newGuardianAddress?.message}
-
-
- Proposal Fee:{" "}
-
-
- {dao && dao.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
-
+
+
+
+ Proposal Fee:{" "}
+
+
+ {dao && dao.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
+
+
+
+
+ Submit
+
+
-
-
- Submit
-
diff --git a/src/modules/explorer/components/NewTreasuryProposalDialog.tsx b/src/modules/explorer/components/NewTreasuryProposalDialog.tsx
index a707f90c..fb06bf50 100644
--- a/src/modules/explorer/components/NewTreasuryProposalDialog.tsx
+++ b/src/modules/explorer/components/NewTreasuryProposalDialog.tsx
@@ -29,14 +29,14 @@ export type Asset = Token | { symbol: "XTZ" }
const AmountText = styled(Typography)(({ theme }) => ({
color: theme.palette.secondary.main,
- fontSize: 14,
+ fontSize: 16,
lineHeight: "146.3%",
- marginRight: 10
+ marginRight: 10,
+ fontWeight: 300
}))
const DAOBalanceText = styled(Typography)({
color: "#ffff",
- fontSize: 14,
lineHeight: "100%",
marginRight: 10
})
@@ -201,7 +201,7 @@ export const NewTreasuryProposalDialog: React.FC<{ open: boolean }> = ({ open })
}, [index, setValue, max, currentAssetBalance, currentTransfer, ledger])
return (
-
+
= ({ open })
{"Must be greater than zero"}
) : null}
-
-
- DAO Balance
+
+
+ DAO Balance:
-
+
{daoAssets ? (
{currentAssetBalance !== undefined &&
diff --git a/src/modules/explorer/components/ProposalForm.tsx b/src/modules/explorer/components/ProposalForm.tsx
index 3d86bbb3..a4e75112 100644
--- a/src/modules/explorer/components/ProposalForm.tsx
+++ b/src/modules/explorer/components/ProposalForm.tsx
@@ -92,7 +92,8 @@ const enabledForms: Record<
}
const Content = styled(Grid)({
- padding: "0 54px"
+ padding: "0 54px",
+ paddingBottom: 24
})
const SwapText = styled(Typography)({
@@ -193,7 +194,6 @@ export const ProposalFormContainer: React.FC = ({
if (state === 0) {
handleChangeTab?.(1)
} else if (state === 1) {
- console.log()
handleChangeTab?.(0)
} else {
return
@@ -221,7 +221,7 @@ export const ProposalFormContainer: React.FC = ({
))}
-
+
= ({
/>
-
-
- Proposal Fee:{" "}
-
-
- {dao && dao.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
-
-
+
+
+
+ Proposal Fee:{" "}
+
+
+ {dao && dao.data.extra.frozen_extra_value.toString()} {dao ? dao.data.token.symbol : ""}
+
+
-
- Submit
-
+
+
+ Submit
+
+
+
>
)}
diff --git a/src/modules/explorer/components/ProposalFormInput.tsx b/src/modules/explorer/components/ProposalFormInput.tsx
index e6aa4e6c..099bad43 100644
--- a/src/modules/explorer/components/ProposalFormInput.tsx
+++ b/src/modules/explorer/components/ProposalFormInput.tsx
@@ -3,7 +3,7 @@ import Editor from "react-simple-code-editor"
import { Grid, styled, Typography } from "@material-ui/core"
const StyledBody = styled(Grid)(({ theme }) => ({
- "borderRadius": 4,
+ "borderRadius": 8,
"background": theme.palette.primary.main,
"padding": "0 20px",
"minHeight": 54,
diff --git a/src/modules/explorer/components/ProposalFormSendButton.tsx b/src/modules/explorer/components/ProposalFormSendButton.tsx
index 03a59806..e174cc3e 100644
--- a/src/modules/explorer/components/ProposalFormSendButton.tsx
+++ b/src/modules/explorer/components/ProposalFormSendButton.tsx
@@ -10,8 +10,9 @@ const SendContainer = styled(Grid)(({ theme }) => ({
}))
const StyledSendButton = styled(MainButton)(({ theme }) => ({
- width: 101,
- color: "#1C1F23"
+ width: 96,
+ color: "#1C1F23",
+ height: 40
}))
export const SendButton: React.FC = ({ children, ...props }) => {
diff --git a/src/modules/explorer/components/ResponsiveDialog.tsx b/src/modules/explorer/components/ResponsiveDialog.tsx
index a7138b4d..04aea87d 100644
--- a/src/modules/explorer/components/ResponsiveDialog.tsx
+++ b/src/modules/explorer/components/ResponsiveDialog.tsx
@@ -48,8 +48,13 @@ export const ResponsiveDialog: React.FC<{
return isSmall ? (
-
- {onGoBack ? : null}
+
+ {onGoBack !== undefined ? (
+
+ {" "}
+
+
+ ) : null}
{title}
@@ -64,7 +69,12 @@ export const ResponsiveDialog: React.FC<{
- {onGoBack ? : null}
+ {onGoBack !== undefined ? (
+
+ {" "}
+
+
+ ) : null}{" "}
{title}
diff --git a/src/modules/explorer/pages/DAOList/index.tsx b/src/modules/explorer/pages/DAOList/index.tsx
index 7c97c0e7..c8666d81 100644
--- a/src/modules/explorer/pages/DAOList/index.tsx
+++ b/src/modules/explorer/pages/DAOList/index.tsx
@@ -115,11 +115,6 @@ const ExternalLink = styled(Typography)({
}
})
-const ExternalLinkIcon = styled(LaunchOutlined)({
- fontSize: 14,
- marginBottom: 2
-})
-
export const DAOList: React.FC = () => {
const { network, account, tezos } = useTezos()
const { data: daos, isLoading } = useAllDAOs(network)
diff --git a/src/modules/explorer/pages/Proposals/index.tsx b/src/modules/explorer/pages/Proposals/index.tsx
index f8a2ee0c..bbdb671b 100644
--- a/src/modules/explorer/pages/Proposals/index.tsx
+++ b/src/modules/explorer/pages/Proposals/index.tsx
@@ -192,10 +192,6 @@ export const Proposals: React.FC = () => {
setOpenDialog(false)
}
- useEffect(() => {
- console.log("se actualizó")
- }, [openDialog])
-
const onFlush = useCallback(async () => {
if (executableProposals && expiredProposals && executableProposals.length && data) {
mutate({
diff --git a/src/theme/index.ts b/src/theme/index.ts
index 239ee96a..5953ba6b 100644
--- a/src/theme/index.ts
+++ b/src/theme/index.ts
@@ -317,7 +317,8 @@ export const theme = createTheme({
"$checked$checked + &": {
opacity: 1,
backgroundColor: "#1C1F23",
- color: "#81FEB7"
+ color: "#81FEB7",
+ border: "1px solid #1C1F23"
}
},
thumb: {
From 92b75d60bd8d9b809c9ac6603b5819c140ba24d5 Mon Sep 17 00:00:00 2001
From: fabiolalombardim <37227394+fabiolalombardim@users.noreply.github.com>
Date: Mon, 26 Jun 2023 18:05:14 +0200
Subject: [PATCH 2/3] Settings modal (#594)
* contract field & delegate added
* responsive modal
---
src/assets/img/download.svg | 3 +
src/modules/common/CopyAddress.tsx | 2 +-
src/modules/common/CopyButton.tsx | 7 +-
.../explorer/components/ResponsiveDialog.tsx | 13 +-
.../pages/Config/components/DAOInfoTable.tsx | 268 +++++++++++++-----
.../pages/DAO/components/Settings.tsx | 41 +--
src/theme/index.ts | 3 +-
7 files changed, 217 insertions(+), 120 deletions(-)
create mode 100644 src/assets/img/download.svg
diff --git a/src/assets/img/download.svg b/src/assets/img/download.svg
new file mode 100644
index 00000000..b3f04df2
--- /dev/null
+++ b/src/assets/img/download.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/modules/common/CopyAddress.tsx b/src/modules/common/CopyAddress.tsx
index af74a764..71c0fc32 100644
--- a/src/modules/common/CopyAddress.tsx
+++ b/src/modules/common/CopyAddress.tsx
@@ -16,7 +16,7 @@ export const CopyAddress: React.FC = ({ address, typographyProps }) => {
<>
-
+
{isMobileSmall ? toShortAddress(address) : address}
diff --git a/src/modules/common/CopyButton.tsx b/src/modules/common/CopyButton.tsx
index af259835..3b2d9f0b 100644
--- a/src/modules/common/CopyButton.tsx
+++ b/src/modules/common/CopyButton.tsx
@@ -1,8 +1,9 @@
import React, { useState } from "react"
import { Box, styled, Tooltip } from "@material-ui/core"
-import { FileCopyOutlined } from "@material-ui/icons"
+import { FileCopyOutlined, Image } from "@material-ui/icons"
+import DownloadIcon from "assets/img/download.svg"
-const CopyIcon = styled(FileCopyOutlined)({
+const CopyIcon = styled("img")({
cursor: "pointer"
})
@@ -23,7 +24,7 @@ export const CopyButton: React.FC<{ text: string; style?: any }> = ({ text, styl
}}
>
-
+
)
diff --git a/src/modules/explorer/components/ResponsiveDialog.tsx b/src/modules/explorer/components/ResponsiveDialog.tsx
index 04aea87d..eaddf628 100644
--- a/src/modules/explorer/components/ResponsiveDialog.tsx
+++ b/src/modules/explorer/components/ResponsiveDialog.tsx
@@ -8,12 +8,15 @@ const Content = styled(Grid)({
padding: "41px 46px"
})
-const TitleText = styled(Typography)({
+const TitleText = styled(Typography)(({ theme }) => ({
color: "#ffff",
fontWeight: 550,
lineHeight: ".80",
- textTransform: "capitalize"
-})
+ textTransform: "capitalize",
+ [theme.breakpoints.down("sm")]: {
+ fontSize: 18
+ }
+}))
const CustomDialog = styled(Dialog)({
"& .MuiDialog-paperWidthMd": {
@@ -62,7 +65,9 @@ export const ResponsiveDialog: React.FC<{
- {children}
+
+ {children}
+
) : (
diff --git a/src/modules/explorer/pages/Config/components/DAOInfoTable.tsx b/src/modules/explorer/pages/Config/components/DAOInfoTable.tsx
index c2ae6ce2..d5794866 100644
--- a/src/modules/explorer/pages/Config/components/DAOInfoTable.tsx
+++ b/src/modules/explorer/pages/Config/components/DAOInfoTable.tsx
@@ -1,109 +1,225 @@
/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */
-import { styled, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography } from "@material-ui/core"
+import {
+ Grid,
+ styled,
+ Table,
+ TableBody,
+ TableCell,
+ TableContainer,
+ TableHead,
+ TableRow,
+ Typography,
+ useMediaQuery,
+ useTheme
+} from "@material-ui/core"
import React from "react"
import { useDAO } from "services/services/dao/hooks/useDAO"
import BigNumber from "bignumber.js"
import { useDAOID } from "../../DAO/router"
+import { useDelegate } from "services/contracts/baseDAO/hooks/useDelegate"
+import { CopyButton } from "modules/common/CopyButton"
+import { CopyAddress } from "modules/common/CopyAddress"
-const RowValue = styled(Typography)({
+const RowValue = styled(Typography)(({ theme }) => ({
fontWeight: 300,
- fontSize: 18
-})
+ fontSize: 18,
+ [theme.breakpoints.down("sm")]: {
+ fontSize: 16
+ }
+}))
-const TableTitle = styled(Typography)({
+const TableTitle = styled(Typography)(({ theme }) => ({
fontWeight: 500,
- fontSize: 18
-})
+ fontSize: 18,
+ [theme.breakpoints.down("sm")]: {
+ fontSize: 16
+ }
+}))
const CustomTableContainer = styled(TableContainer)(({ theme }) => ({
+ width: "inherit",
[theme.breakpoints.down("sm")]: {}
}))
+const CustomTableCell = styled(TableCell)(({ theme }) => ({
+ [theme.breakpoints.down("sm")]: {
+ paddingBottom: 0,
+ paddingLeft: "16px !important",
+ textAlign: "end"
+ }
+}))
+
+const CustomTableCellTitle = styled(TableCell)(({ theme }) => ({
+ [theme.breakpoints.down("sm")]: {
+ paddingLeft: "16px !important"
+ }
+}))
+
+const CustomTableCellValue = styled(TableCell)(({ theme }) => ({
+ [theme.breakpoints.down("sm")]: {
+ paddingTop: 0,
+ paddingRight: "16px !important",
+ textAlign: "end",
+ paddingBottom: 0
+ }
+}))
+
export const DaoInfoTables: React.FC = () => {
const daoId = useDAOID()
const { data: dao } = useDAO(daoId)
+ const theme = useTheme()
+ const isMobileSmall = useMediaQuery(theme.breakpoints.down("sm"))
+ const currentDelegate = useDelegate(dao && dao?.data.address ? dao?.data.address : "")
return (
<>
+
+
+
+ {dao ? (
+ <>
+
+
+
+ Contract Address (Treasury)
+
+
+
+
+ {isMobileSmall ? (
+
+ ) : (
+ <>
+
+ {dao.data.address}
+
+
+ >
+ )}
+
+
+
+
+
+
+ Current Delegate
+
+
+
+
+ {currentDelegate && currentDelegate.data && currentDelegate.data.address ? (
+ isMobileSmall ? (
+
+ ) : (
+
+ {currentDelegate.data.address}
+
+
+ )
+ ) : (
+ "-"
+ )}
+
+
+
+ >
+ ) : null}
+
+
+
-
+
Proposal & Voting Settings
-
+
{dao ? (
<>
-
- Voting Period Duration
-
-
+
+
+ Voting Period Duration
+
+
+
{dao.data.period} blocks
-
+
-
- Flush Delay Duration
-
-
+
+
+ Flush Delay Duration
+
+
+
{new BigNumber(dao.data.proposal_flush_level).toNumber() -
2 * new BigNumber(dao.data.period).toNumber()}{" "}
blocks
-
+
-
- Proposal Blocks to Expire
-
-
+
+
+ Proposal Blocks to Expire
+
+
+
{new BigNumber(dao.data.proposal_expired_level).toNumber() -
new BigNumber(dao.data.proposal_flush_level).toNumber()}{" "}
blocks
-
+
-
- Stake Required to Propose
-
-
+
+
+ Stake Required to Propose
+
+
+
{new BigNumber(dao.data.extra.frozen_extra_value).toNumber()} locked {dao.data.token.symbol}
-
+
-
- Stake Returned if Rejected
-
-
+
+
+ Stake Returned if Rejected
+
+
+
{dao.data.extra.returnedPercentage}% of locked {dao.data.token.symbol}
-
+
-
- Transfer Maximum XTZ Amount
-
-
+
+
+ Transfer Maximum XTZ Amount
+
+
+
{new BigNumber(dao.data.extra.max_xtz_amount).div(10 ** 6).toNumber()} XTZ
-
+
-
- Transfer Minimum XTZ Amount
-
-
+
+
+ Transfer Minimum XTZ Amount
+
+
+
{new BigNumber(dao.data.extra.min_xtz_amount).div(10 ** 6).toNumber()} XTZ
-
+
>
) : null}
@@ -115,55 +231,65 @@ export const DaoInfoTables: React.FC = () => {
-
+
Quorum Settings
-
+
{dao ? (
<>
-
- Quorum Threshold
-
-
+
+
+ Quorum Threshold
+
+
+
{dao.data.quorum_threshold.toNumber()} {dao.data.token.symbol}
-
+
-
- Quorum Min Amount
-
-
+
+
+ Quorum Min Amount
+
+
+
{new BigNumber(dao.data.min_quorum_threshold).div(10000).toNumber()}%
-
+
-
- Quorum Max Amount
-
-
+
+
+ Quorum Max Amount
+
+
+
{new BigNumber(dao.data.max_quorum_threshold).div(10000).toNumber()}%
-
+
-
- Quorum Change
-
-
+
+
+ Quorum Change
+
+
+
{new BigNumber(dao.data.quorum_change).div(10000).toNumber()}%
-
+
-
- Quorum Max Change
-
-
+
+
+ Quorum Max Change
+
+
+
{new BigNumber(dao.data.max_quorum_change).div(10000).toNumber()}%
-
+
>
) : null}
diff --git a/src/modules/explorer/pages/DAO/components/Settings.tsx b/src/modules/explorer/pages/DAO/components/Settings.tsx
index 0a9d4025..32004f20 100644
--- a/src/modules/explorer/pages/DAO/components/Settings.tsx
+++ b/src/modules/explorer/pages/DAO/components/Settings.tsx
@@ -1,53 +1,14 @@
/* eslint-disable react/display-name */
-import { Grid, styled, Typography, useMediaQuery, useTheme } from "@material-ui/core"
-import React, { useState } from "react"
-import { useDAO } from "services/services/dao/hooks/useDAO"
-import { useDAOID } from "../router"
+import React from "react"
import { ResponsiveDialog } from "modules/explorer/components/ResponsiveDialog"
import { DaoInfoTables } from "../../Config/components/DAOInfoTable"
-const OptionContainer = styled(Grid)(({ theme }) => ({
- "minHeight": 80,
- "background": theme.palette.primary.main,
- "borderRadius": 8,
- "padding": "35px 42px",
- "marginBottom": 16,
- "cursor": "pointer",
- "height": 110,
- "&:hover": {
- background: theme.palette.secondary.dark,
- scale: 1.01,
- transition: "0.15s ease-in"
- }
-}))
-
-const ActionText = styled(Typography)(({ theme }) => ({
- fontWeight: 400,
- fontSize: 20,
- marginBottom: 8
-}))
-
-const ActionDescriptionText = styled(Typography)(({ theme }) => ({
- fontWeight: 300,
- fontSize: 16
-}))
-
-interface Action {
- id: any
- name: string
- description: string
- isLambda: boolean
-}
-
interface Props {
open: boolean
handleClose: () => void
}
export const DaoSettingModal: React.FC = ({ open, handleClose }) => {
- const theme = useTheme()
- const isMobileSmall = useMediaQuery(theme.breakpoints.down("sm"))
-
return (
<>
diff --git a/src/theme/index.ts b/src/theme/index.ts
index 5953ba6b..376daa07 100644
--- a/src/theme/index.ts
+++ b/src/theme/index.ts
@@ -388,7 +388,8 @@ export const theme = createTheme({
root: {
"height": 70,
"& th:first-child, & td:first-child": {
- paddingLeft: 46
+ paddingLeft: 46,
+ textAlign: "inherit"
},
"& th:last-child, & td:last-child": {
paddingRight: 46
From c8d70fd921a876c3d76c8092a8f1b9d502401444 Mon Sep 17 00:00:00 2001
From: Manank Patni
Date: Thu, 29 Jun 2023 03:15:56 +0530
Subject: [PATCH 3/3] Add delegated token deployment (#592)
Signed-off-by: Manank Patni
---
.../contracts/token/assets/MultiAsset.json | 4592 -----------------
.../assets/fa2_single_asset_delegated.ts | 938 ++++
.../contracts/token/hooks/useToken.ts | 8 +-
src/services/contracts/token/index.ts | 39 +-
4 files changed, 968 insertions(+), 4609 deletions(-)
delete mode 100644 src/services/contracts/token/assets/MultiAsset.json
create mode 100644 src/services/contracts/token/assets/fa2_single_asset_delegated.ts
diff --git a/src/services/contracts/token/assets/MultiAsset.json b/src/services/contracts/token/assets/MultiAsset.json
deleted file mode 100644
index e1f8b94a..00000000
--- a/src/services/contracts/token/assets/MultiAsset.json
+++ /dev/null
@@ -1,4592 +0,0 @@
-[
- {
- "prim": "storage",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%admin"
- ]
- },
- {
- "prim": "bool",
- "annots": [
- "%paused"
- ]
- }
- ]
- },
- {
- "prim": "option",
- "args": [
- {
- "prim": "address"
- }
- ],
- "annots": [
- "%pending_admin"
- ]
- }
- ],
- "annots": [
- "%admin"
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "nat"
- }
- ],
- "annots": [
- "%ledger"
- ]
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- }
- ]
- },
- {
- "prim": "unit"
- }
- ],
- "annots": [
- "%operators"
- ]
- }
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "nat"
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- },
- {
- "prim": "map",
- "args": [
- {
- "prim": "string"
- },
- {
- "prim": "bytes"
- }
- ],
- "annots": [
- "%token_info"
- ]
- }
- ]
- }
- ],
- "annots": [
- "%token_metadata"
- ]
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "nat"
- },
- {
- "prim": "nat"
- }
- ],
- "annots": [
- "%token_total_supply"
- ]
- }
- ]
- }
- ],
- "annots": [
- "%assets"
- ]
- }
- ]
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "string"
- },
- {
- "prim": "bytes"
- }
- ],
- "annots": [
- "%metadata"
- ]
- }
- ]
- }
- ]
- },
- {
- "prim": "parameter",
- "args": [
- {
- "prim": "or",
- "args": [
- {
- "prim": "or",
- "args": [
- {
- "prim": "or",
- "args": [
- {
- "prim": "or",
- "args": [
- {
- "prim": "unit",
- "annots": [
- "%confirm_admin"
- ]
- },
- {
- "prim": "bool",
- "annots": [
- "%pause"
- ]
- }
- ]
- },
- {
- "prim": "address",
- "annots": [
- "%set_admin"
- ]
- }
- ],
- "annots": [
- "%admin"
- ]
- },
- {
- "prim": "or",
- "args": [
- {
- "prim": "or",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "list",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%owner"
- ]
- },
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- }
- ]
- }
- ],
- "annots": [
- "%requests"
- ]
- },
- {
- "prim": "contract",
- "args": [
- {
- "prim": "list",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%owner"
- ]
- },
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- }
- ],
- "annots": [
- "%request"
- ]
- },
- {
- "prim": "nat",
- "annots": [
- "%balance"
- ]
- }
- ]
- }
- ]
- }
- ],
- "annots": [
- "%callback"
- ]
- }
- ],
- "annots": [
- "%balance_of"
- ]
- },
- {
- "prim": "list",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%from_"
- ]
- },
- {
- "prim": "list",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%to_"
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- },
- {
- "prim": "nat",
- "annots": [
- "%amount"
- ]
- }
- ]
- }
- ]
- }
- ],
- "annots": [
- "%txs"
- ]
- }
- ]
- }
- ],
- "annots": [
- "%transfer"
- ]
- }
- ]
- },
- {
- "prim": "list",
- "args": [
- {
- "prim": "or",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%owner"
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%operator"
- ]
- },
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- }
- ]
- }
- ],
- "annots": [
- "%add_operator"
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%owner"
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%operator"
- ]
- },
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- }
- ]
- }
- ],
- "annots": [
- "%remove_operator"
- ]
- }
- ]
- }
- ],
- "annots": [
- "%update_operators"
- ]
- }
- ],
- "annots": [
- "%assets"
- ]
- }
- ]
- },
- {
- "prim": "or",
- "args": [
- {
- "prim": "or",
- "args": [
- {
- "prim": "list",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%owner"
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- },
- {
- "prim": "nat",
- "annots": [
- "%amount"
- ]
- }
- ]
- }
- ]
- }
- ],
- "annots": [
- "%burn_tokens"
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- },
- {
- "prim": "map",
- "args": [
- {
- "prim": "string"
- },
- {
- "prim": "bytes"
- }
- ],
- "annots": [
- "%token_info"
- ]
- }
- ],
- "annots": [
- "%create_token"
- ]
- }
- ]
- },
- {
- "prim": "list",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address",
- "annots": [
- "%owner"
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "nat",
- "annots": [
- "%token_id"
- ]
- },
- {
- "prim": "nat",
- "annots": [
- "%amount"
- ]
- }
- ]
- }
- ]
- }
- ],
- "annots": [
- "%mint_tokens"
- ]
- }
- ],
- "annots": [
- "%tokens"
- ]
- }
- ]
- }
- ]
- },
- {
- "prim": "code",
- "args": [
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "FA2_TOKEN_UNDEFINED"
- }
- ]
- },
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "FA2_INSUFFICIENT_BALANCE"
- }
- ]
- },
- {
- "prim": "LAMBDA",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- }
- ]
- },
- {
- "prim": "nat"
- },
- [
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "GET"
- },
- {
- "prim": "IF_NONE",
- "args": [
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "nat"
- },
- {
- "int": "0"
- }
- ]
- }
- ],
- []
- ]
- }
- ]
- ]
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "LAMBDA",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "lambda",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "nat"
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- },
- [
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "ADD"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "nat"
- },
- {
- "int": "0"
- }
- ]
- },
- {
- "prim": "COMPARE"
- },
- {
- "prim": "EQ"
- },
- {
- "prim": "IF",
- "args": [
- [
- {
- "prim": "DROP"
- },
- {
- "prim": "NONE",
- "args": [
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "UPDATE"
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "SOME"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "UPDATE"
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "APPLY"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "LAMBDA",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "lambda",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "string"
- }
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "nat"
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "nat"
- }
- ]
- },
- [
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "SUB"
- },
- {
- "prim": "ISNAT"
- },
- {
- "prim": "IF_NONE",
- "args": [
- [
- {
- "prim": "DROP",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "nat"
- },
- {
- "int": "0"
- }
- ]
- },
- {
- "prim": "COMPARE"
- },
- {
- "prim": "EQ"
- },
- {
- "prim": "IF",
- "args": [
- [
- {
- "prim": "DROP"
- },
- {
- "prim": "NONE",
- "args": [
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "UPDATE"
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "SOME"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "UPDATE"
- }
- ]
- ]
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "APPLY"
- },
- {
- "prim": "LAMBDA",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "bool"
- }
- ]
- },
- {
- "prim": "option",
- "args": [
- {
- "prim": "address"
- }
- ]
- }
- ]
- },
- {
- "prim": "unit"
- },
- [
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "SENDER"
- },
- {
- "prim": "COMPARE"
- },
- {
- "prim": "NEQ"
- },
- {
- "prim": "IF",
- "args": [
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "NOT_AN_ADMIN"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ],
- []
- ]
- },
- {
- "prim": "UNIT"
- }
- ]
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "6"
- }
- ]
- },
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "6"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "IF_NONE",
- "args": [
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "NO_PENDING_ADMIN"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ],
- [
- {
- "prim": "SENDER"
- },
- {
- "prim": "COMPARE"
- },
- {
- "prim": "EQ"
- },
- {
- "prim": "IF",
- "args": [
- [
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "NONE",
- "args": [
- {
- "prim": "address"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "SENDER"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- }
- ],
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "NOT_A_PENDING_ADMIN"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "PAIR"
- }
- ],
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "PAIR"
- }
- ]
- ]
- }
- ],
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "SOME"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "PAIR"
- }
- ]
- ]
- },
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "PAIR"
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "IF",
- "args": [
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "PAUSED"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ],
- []
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "MAP",
- "args": [
- [
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "MEM"
- },
- {
- "prim": "IF",
- "args": [
- [
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "7"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "PAIR"
- }
- ],
- [
- {
- "prim": "DROP"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "6"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "mutez"
- },
- {
- "int": "0"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "TRANSFER_TOKENS"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CONS"
- },
- {
- "prim": "PAIR"
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "5"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "LAMBDA",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "address"
- }
- ]
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "nat"
- },
- {
- "prim": "big_map",
- "args": [
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "pair",
- "args": [
- {
- "prim": "address"
- },
- {
- "prim": "nat"
- }
- ]
- }
- ]
- },
- {
- "prim": "unit"
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "prim": "unit"
- },
- [
- {
- "prim": "DUP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "COMPARE"
- },
- {
- "prim": "EQ"
- },
- {
- "prim": "IF",
- "args": [
- [
- {
- "prim": "DROP",
- "args": [
- {
- "int": "3"
- }
- ]
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "MEM"
- },
- {
- "prim": "IF",
- "args": [
- [],
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "FA2_NOT_OPERATOR"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "UNIT"
- }
- ]
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "ITER",
- "args": [
- [
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "ITER",
- "args": [
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "MEM"
- },
- {
- "prim": "IF",
- "args": [
- [
- {
- "prim": "DUP",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SENDER"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "5"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "6"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "8"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "8"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- }
- ],
- [
- {
- "prim": "DROP",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "8"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DROP"
- }
- ]
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "PAIR"
- }
- ]
- ]
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SENDER"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "ITER",
- "args": [
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "IF_LEFT",
- "args": [
- [],
- []
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "COMPARE"
- },
- {
- "prim": "EQ"
- },
- {
- "prim": "IF",
- "args": [
- [],
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "FA2_NOT_OWNER"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ]
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "option",
- "args": [
- {
- "prim": "unit"
- }
- ]
- },
- {
- "prim": "Some",
- "args": [
- {
- "prim": "Unit"
- }
- ]
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "UPDATE"
- }
- ],
- [
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "NONE",
- "args": [
- {
- "prim": "unit"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "UPDATE"
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "PAIR"
- }
- ]
- ]
- },
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "PAIR"
- }
- ]
- ]
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "5"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "IF_LEFT",
- "args": [
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "ITER",
- "args": [
- [
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "5"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- }
- ]
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "ITER",
- "args": [
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "GET"
- },
- {
- "prim": "IF_NONE",
- "args": [
- [
- {
- "prim": "DROP",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "5"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ],
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "SUB"
- },
- {
- "prim": "ISNAT"
- },
- {
- "prim": "IF_NONE",
- "args": [
- [
- {
- "prim": "DUP",
- "args": [
- {
- "int": "6"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ],
- []
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "SOME"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "UPDATE"
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "PAIR"
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET"
- },
- {
- "prim": "IF_NONE",
- "args": [
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "SOME"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "UPDATE"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "option",
- "args": [
- {
- "prim": "nat"
- }
- ]
- },
- {
- "prim": "Some",
- "args": [
- {
- "int": "0"
- }
- ]
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "UPDATE"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- }
- ],
- [
- {
- "prim": "PUSH",
- "args": [
- {
- "prim": "string"
- },
- {
- "string": "FA2_DUP_TOKEN_ID"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ]
- ]
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "PAIR"
- }
- ]
- ]
- }
- ],
- [
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "ITER",
- "args": [
- [
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "5"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "EXEC"
- }
- ]
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "ITER",
- "args": [
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "GET"
- },
- {
- "prim": "IF_NONE",
- "args": [
- [
- {
- "prim": "DROP",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "FAILWITH"
- }
- ],
- [
- {
- "prim": "SWAP"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "ADD"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "SOME"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "UPDATE"
- }
- ]
- ]
- }
- ]
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "4"
- }
- ]
- },
- {
- "prim": "DROP"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "DUP"
- },
- {
- "prim": "DUG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "GET",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "NIL",
- "args": [
- {
- "prim": "operation"
- }
- ]
- },
- {
- "prim": "PAIR"
- }
- ]
- ]
- },
- {
- "prim": "UNPAIR"
- },
- {
- "prim": "DUP",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CDR"
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "2"
- }
- ]
- },
- {
- "prim": "DIG",
- "args": [
- {
- "int": "3"
- }
- ]
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "CAR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "PAIR"
- },
- {
- "prim": "SWAP"
- },
- {
- "prim": "PAIR"
- }
- ]
- ]
- }
- ]
- ]
- }
-]
\ No newline at end of file
diff --git a/src/services/contracts/token/assets/fa2_single_asset_delegated.ts b/src/services/contracts/token/assets/fa2_single_asset_delegated.ts
new file mode 100644
index 00000000..98f4d8f7
--- /dev/null
+++ b/src/services/contracts/token/assets/fa2_single_asset_delegated.ts
@@ -0,0 +1,938 @@
+export default `{ parameter
+ (or (or (or (or %admin (bool %pause) (address %set_admin))
+ (or %assets
+ (or (pair %balance_of
+ (list %requests (pair (address %owner) (nat %token_id)))
+ (contract %callback
+ (list (pair (pair %request (address %owner) (nat %token_id)) (nat %balance)))))
+ (list %transfer
+ (pair (address %from_) (list %txs (pair (address %to_) (nat %token_id) (nat %amount))))))
+ (list %update_operators
+ (or (pair %add_operator (address %owner) (address %operator) (nat %token_id))
+ (pair %remove_operator (address %owner) (address %operator) (nat %token_id))))))
+ (or (option %set_delegate address) (address %set_minter)))
+ (or %tokens
+ (list %burn_tokens (pair (address %owner) (nat %amount)))
+ (list %mint_tokens (pair (address %owner) (nat %amount))))) ;
+storage
+ (pair (pair (pair %admin (address %admin) (bool %paused))
+ (pair %assets
+ (pair (pair (big_map %delegates address address) (big_map %ledger address nat))
+ (address %minter)
+ (big_map %operators (pair address address nat) unit))
+ (pair (big_map %token_metadata nat (pair (nat %token_id) (map %token_info string bytes)))
+ (nat %total_supply))
+ (big_map %voting_power_history
+ (pair address nat)
+ (pair (nat %amount) (nat %from_block)))
+ (big_map %voting_power_history_sizes address nat)))
+ (big_map %metadata string bytes)) ;
+code { PUSH string "FA2_TOKEN_UNDEFINED" ;
+ PUSH string "FA2_INSUFFICIENT_BALANCE" ;
+ LAMBDA
+ int
+ nat
+ { ISNAT ; IF_NONE { PUSH string "NOT_A_NAT" ; FAILWITH } {} } ;
+ LAMBDA
+ (pair (lambda int nat)
+ (pair (pair address int)
+ (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat)))
+ (pair (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat))
+ { UNPAIR ;
+ SWAP ;
+ UNPAIR ;
+ UNPAIR ;
+ DUP 3 ;
+ CDR ;
+ CDR ;
+ CDR ;
+ DUP 2 ;
+ GET ;
+ IF_NONE
+ { SWAP ; DIG 3 ; SWAP ; EXEC ; PUSH nat 0 }
+ { DUP 4 ;
+ CDR ;
+ CDR ;
+ CAR ;
+ PUSH int 1 ;
+ DUP 3 ;
+ SUB ;
+ DUP 7 ;
+ SWAP ;
+ EXEC ;
+ DUP 4 ;
+ PAIR ;
+ GET ;
+ IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
+ DIG 3 ;
+ DUP 2 ;
+ CAR ;
+ ADD ;
+ DUP 6 ;
+ SWAP ;
+ EXEC ;
+ LEVEL ;
+ DIG 2 ;
+ CDR ;
+ COMPARE ;
+ EQ ;
+ IF { PUSH int 1 ; DIG 2 ; SUB ; DIG 4 ; SWAP ; EXEC }
+ { DIG 4 ; DROP ; SWAP } } ;
+ LEVEL ;
+ DIG 2 ;
+ PAIR ;
+ DUP 4 ;
+ CDR ;
+ CDR ;
+ CDR ;
+ PUSH nat 1 ;
+ DUP 4 ;
+ ADD ;
+ SOME ;
+ DUP 5 ;
+ UPDATE ;
+ DUP 5 ;
+ CDR ;
+ CDR ;
+ CAR ;
+ PAIR ;
+ DUP 5 ;
+ CDR ;
+ CAR ;
+ PAIR ;
+ DUP 5 ;
+ CAR ;
+ PAIR ;
+ DUP ;
+ CDR ;
+ CDR ;
+ CDR ;
+ DIG 5 ;
+ CDR ;
+ CDR ;
+ CAR ;
+ DIG 3 ;
+ SOME ;
+ DIG 4 ;
+ DIG 5 ;
+ PAIR ;
+ UPDATE ;
+ PAIR ;
+ DUP 2 ;
+ CDR ;
+ CAR ;
+ PAIR ;
+ SWAP ;
+ CAR ;
+ PAIR } ;
+ DUP 2 ;
+ APPLY ;
+ SWAP ;
+ DROP ;
+ LAMBDA
+ (pair address (big_map address nat))
+ nat
+ { UNPAIR ; GET ; IF_NONE { PUSH nat 0 } {} } ;
+ LAMBDA
+ (pair (pair (lambda (pair address (big_map address nat)) nat)
+ (lambda
+ (pair (pair address int)
+ (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat))
+ (pair (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat)))
+ string)
+ (pair (pair address int)
+ (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat)))
+ (pair (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat))
+ { UNPAIR ;
+ UNPAIR 3 ;
+ DIG 3 ;
+ UNPAIR ;
+ UNPAIR ;
+ DUP 3 ;
+ CAR ;
+ CAR ;
+ CDR ;
+ DUP 2 ;
+ PAIR ;
+ DIG 4 ;
+ SWAP ;
+ EXEC ;
+ DUP 3 ;
+ ADD ;
+ ISNAT ;
+ IF_NONE
+ { DIG 4 ; FAILWITH }
+ { DIG 5 ;
+ DROP ;
+ PUSH nat 0 ;
+ DUP 2 ;
+ COMPARE ;
+ EQ ;
+ IF { DROP ; DUP 3 ; CAR ; CAR ; CDR ; DUP 2 ; NONE nat ; SWAP ; UPDATE }
+ { DUP 4 ; CAR ; CAR ; CDR ; SWAP ; SOME ; DUP 3 ; UPDATE } } ;
+ PUSH int 0 ;
+ DUP 4 ;
+ COMPARE ;
+ EQ ;
+ IF { SWAP ; DIG 2 ; DIG 4 ; DROP 3 ; SWAP }
+ { DUP 4 ;
+ DIG 3 ;
+ DIG 4 ;
+ CAR ;
+ CAR ;
+ CAR ;
+ DUP 5 ;
+ GET ;
+ IF_NONE { DIG 3 } { DIG 4 ; DROP } ;
+ PAIR ;
+ PAIR ;
+ DIG 2 ;
+ SWAP ;
+ EXEC } ;
+ DUP ;
+ CDR ;
+ DUP 2 ;
+ CAR ;
+ CDR ;
+ DIG 3 ;
+ DIG 3 ;
+ CAR ;
+ CAR ;
+ CAR ;
+ PAIR ;
+ PAIR ;
+ PAIR } ;
+ DUP 4 ;
+ DUP 4 ;
+ DUP 4 ;
+ PAIR 3 ;
+ APPLY ;
+ LAMBDA
+ (pair (pair (lambda
+ (pair (pair address int)
+ (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat))
+ (pair (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat)))
+ string)
+ (pair (pair (list (pair (option address) (list (pair (option address) nat nat))))
+ (lambda (pair (pair address address) nat (big_map (pair address address nat) unit)) unit))
+ (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat)))
+ (pair (list operation)
+ (pair (pair (big_map address address) (big_map address nat))
+ address
+ (big_map (pair address address nat) unit))
+ (pair (big_map nat (pair nat (map string bytes))) nat)
+ (big_map (pair address nat) (pair nat nat))
+ (big_map address nat))
+ { UNPAIR ;
+ UNPAIR ;
+ DIG 2 ;
+ UNPAIR ;
+ UNPAIR ;
+ DIG 2 ;
+ SWAP ;
+ ITER { SWAP ;
+ SENDER ;
+ SWAP ;
+ DUP 3 ;
+ CDR ;
+ ITER { SWAP ;
+ PUSH nat 0 ;
+ DUP 3 ;
+ GET 3 ;
+ COMPARE ;
+ NEQ ;
+ IF { DROP 2 ; DUP 5 ; FAILWITH }
+ { DUP 4 ;
+ CAR ;
+ IF_NONE
+ {}
+ { DUP 2 ;
+ CAR ;
+ CDR ;
+ CDR ;
+ DUP 4 ;
+ GET 3 ;
+ PAIR ;
+ DUP 5 ;
+ DUP 3 ;
+ PAIR ;
+ PAIR ;
+ DUP 7 ;
+ SWAP ;
+ EXEC ;
+ DROP ;
+ SWAP ;
+ DUP 3 ;
+ GET 4 ;
+ NEG ;
+ DIG 2 ;
+ PAIR ;
+ PAIR ;
+ DUP 6 ;
+ SWAP ;
+ EXEC } ;
+ DUP 2 ;
+ CAR ;
+ IF_NONE
+ { SWAP ; DROP }
+ { SWAP ; DIG 2 ; GET 4 ; INT ; DIG 2 ; PAIR ; PAIR ; DUP 5 ; SWAP ; EXEC } } } ;
+ SWAP ;
+ DIG 2 ;
+ DROP 2 } ;
+ SWAP ;
+ DIG 2 ;
+ DIG 3 ;
+ DROP 3 ;
+ NIL operation ;
+ PAIR } ;
+ DUP 6 ;
+ DUP 3 ;
+ PAIR ;
+ APPLY ;
+ SWAP ;
+ DROP ;
+ LAMBDA
+ (list (pair address nat))
+ nat
+ { PUSH nat 0 ; SWAP ; ITER { CDR ; ADD } } ;
+ LAMBDA
+ (pair address bool)
+ unit
+ { CAR ;
+ SENDER ;
+ COMPARE ;
+ NEQ ;
+ IF { PUSH string "NOT_AN_ADMIN" ; FAILWITH } { UNIT } } ;
+ LAMBDA
+ (pair address bool)
+ unit
+ { CDR ; IF { PUSH string "PAUSED" ; FAILWITH } { UNIT } } ;
+ DIG 8 ;
+ UNPAIR ;
+ PUSH mutez 0 ;
+ AMOUNT ;
+ COMPARE ;
+ GT ;
+ IF { PUSH string "AMOUNT_NOT_ZERO" ; FAILWITH } {} ;
+ IF_LEFT
+ { DIG 4 ;
+ DIG 8 ;
+ DROP 2 ;
+ IF_LEFT
+ { DIG 6 ;
+ DROP ;
+ IF_LEFT
+ { DIG 2 ;
+ DIG 4 ;
+ DIG 5 ;
+ DIG 6 ;
+ DROP 4 ;
+ DUP 2 ;
+ CAR ;
+ CAR ;
+ DIG 3 ;
+ SWAP ;
+ EXEC ;
+ DROP ;
+ DUP 2 ;
+ CAR ;
+ CAR ;
+ SWAP ;
+ IF_LEFT { SWAP ; CAR } { SWAP ; CDR ; SWAP } ;
+ PAIR ;
+ NIL operation ;
+ DUP 3 ;
+ CDR ;
+ DIG 3 ;
+ CAR ;
+ CDR ;
+ DIG 3 }
+ { DIG 3 ;
+ DROP ;
+ DUP 2 ;
+ CAR ;
+ CAR ;
+ DIG 3 ;
+ SWAP ;
+ EXEC ;
+ DROP ;
+ DUP 2 ;
+ CAR ;
+ CDR ;
+ SWAP ;
+ IF_LEFT
+ { IF_LEFT
+ { DIG 3 ;
+ DROP ;
+ DUP ;
+ CAR ;
+ MAP { PUSH nat 0 ;
+ DUP 2 ;
+ CDR ;
+ COMPARE ;
+ NEQ ;
+ IF { DROP ; DUP 5 ; FAILWITH }
+ { DUP 3 ;
+ CAR ;
+ CAR ;
+ CDR ;
+ DUP 2 ;
+ CAR ;
+ PAIR ;
+ DUP 6 ;
+ SWAP ;
+ EXEC ;
+ SWAP ;
+ PAIR } } ;
+ DIG 4 ;
+ DIG 5 ;
+ DROP 2 ;
+ SWAP ;
+ CDR ;
+ PUSH mutez 0 ;
+ DIG 2 ;
+ TRANSFER_TOKENS ;
+ SWAP ;
+ NIL operation ;
+ DIG 2 ;
+ CONS ;
+ PAIR }
+ { DIG 4 ;
+ DIG 5 ;
+ DROP 2 ;
+ MAP { DUP ;
+ CDR ;
+ MAP { DUP ; GET 4 ; DUP 2 ; GET 3 ; DIG 2 ; CAR ; SOME ; PAIR 3 } ;
+ SWAP ;
+ CAR ;
+ SOME ;
+ PAIR } ;
+ SWAP ;
+ LAMBDA
+ (pair (pair address address) nat (big_map (pair address address nat) unit))
+ unit
+ { UNPAIR ;
+ UNPAIR ;
+ DIG 2 ;
+ UNPAIR ;
+ DUP 4 ;
+ DUP 4 ;
+ COMPARE ;
+ EQ ;
+ IF { DROP 4 ; UNIT }
+ { DIG 3 ;
+ PAIR ;
+ DIG 2 ;
+ PAIR ;
+ MEM ;
+ IF { UNIT } { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } } } ;
+ DIG 2 ;
+ PAIR ;
+ PAIR ;
+ DIG 2 ;
+ SWAP ;
+ EXEC } }
+ { DIG 3 ;
+ DIG 4 ;
+ DIG 5 ;
+ DROP 3 ;
+ SENDER ;
+ DUP 3 ;
+ CAR ;
+ CDR ;
+ CDR ;
+ DIG 2 ;
+ ITER { SWAP ;
+ DUP 3 ;
+ DUP 3 ;
+ IF_LEFT {} {} ;
+ CAR ;
+ COMPARE ;
+ EQ ;
+ IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
+ SWAP ;
+ IF_LEFT
+ { SWAP ;
+ UNIT ;
+ SOME ;
+ DUP 3 ;
+ GET 4 ;
+ DUP 4 ;
+ GET 3 ;
+ PAIR ;
+ DIG 3 ;
+ CAR ;
+ PAIR ;
+ UPDATE }
+ { SWAP ;
+ DUP 2 ;
+ GET 4 ;
+ DUP 3 ;
+ GET 3 ;
+ PAIR ;
+ DIG 2 ;
+ CAR ;
+ PAIR ;
+ NONE unit ;
+ SWAP ;
+ UPDATE } } ;
+ SWAP ;
+ DROP ;
+ DUP 2 ;
+ CDR ;
+ SWAP ;
+ DUP 3 ;
+ CAR ;
+ CDR ;
+ CAR ;
+ PAIR ;
+ DIG 2 ;
+ CAR ;
+ CAR ;
+ PAIR ;
+ PAIR ;
+ NIL operation ;
+ PAIR } ;
+ UNPAIR ;
+ DUP 3 ;
+ CDR ;
+ DIG 2 ;
+ DIG 3 ;
+ CAR ;
+ CAR } ;
+ PAIR ;
+ PAIR ;
+ SWAP }
+ { DIG 4 ;
+ DIG 7 ;
+ DROP 2 ;
+ IF_LEFT
+ { DIG 3 ;
+ DROP ;
+ DUP 2 ;
+ CAR ;
+ CAR ;
+ DIG 3 ;
+ SWAP ;
+ EXEC ;
+ DROP ;
+ DUP 2 ;
+ CAR ;
+ CDR ;
+ DUP ;
+ CAR ;
+ CAR ;
+ CDR ;
+ SENDER ;
+ PAIR ;
+ DIG 4 ;
+ SWAP ;
+ EXEC ;
+ DUP 3 ;
+ IF_NONE { SENDER } {} ;
+ DUP 3 ;
+ CAR ;
+ CAR ;
+ CAR ;
+ SENDER ;
+ GET ;
+ IF_NONE { SENDER } {} ;
+ PUSH nat 0 ;
+ DUP 4 ;
+ COMPARE ;
+ EQ ;
+ DUP 2 ;
+ DUP 4 ;
+ COMPARE ;
+ EQ ;
+ OR ;
+ IF { SWAP ; DIG 2 ; DIG 6 ; DROP 4 ; DUP }
+ { DUP 4 ;
+ DUP 4 ;
+ NEG ;
+ DIG 2 ;
+ PAIR ;
+ PAIR ;
+ DUP 7 ;
+ SWAP ;
+ EXEC ;
+ DIG 2 ;
+ INT ;
+ DIG 2 ;
+ PAIR ;
+ PAIR ;
+ DIG 4 ;
+ SWAP ;
+ EXEC } ;
+ DUP ;
+ CDR ;
+ DUP 2 ;
+ CAR ;
+ CDR ;
+ DIG 2 ;
+ CAR ;
+ CAR ;
+ CDR ;
+ DIG 3 ;
+ CAR ;
+ CAR ;
+ CAR ;
+ DIG 4 ;
+ SENDER ;
+ UPDATE ;
+ PAIR ;
+ PAIR ;
+ PAIR ;
+ DUP 2 ;
+ CDR ;
+ SWAP ;
+ DIG 2 ;
+ CAR ;
+ CAR }
+ { DIG 2 ;
+ DIG 4 ;
+ DIG 5 ;
+ DROP 3 ;
+ DUP 2 ;
+ CAR ;
+ CAR ;
+ DIG 3 ;
+ SWAP ;
+ EXEC ;
+ DROP ;
+ DUP 2 ;
+ CDR ;
+ DUP 3 ;
+ CAR ;
+ CDR ;
+ DUP ;
+ CDR ;
+ DUP 2 ;
+ CAR ;
+ CDR ;
+ CDR ;
+ DIG 4 ;
+ PAIR ;
+ DIG 2 ;
+ CAR ;
+ CAR ;
+ PAIR ;
+ PAIR ;
+ DIG 2 ;
+ CAR ;
+ CAR } ;
+ PAIR ;
+ PAIR ;
+ NIL operation } }
+ { DIG 3 ;
+ DIG 6 ;
+ DIG 7 ;
+ DIG 9 ;
+ DROP 4 ;
+ DUP 2 ;
+ CAR ;
+ CAR ;
+ DIG 3 ;
+ SWAP ;
+ EXEC ;
+ DROP ;
+ DUP 2 ;
+ CAR ;
+ CDR ;
+ CAR ;
+ CDR ;
+ CAR ;
+ SENDER ;
+ COMPARE ;
+ NEQ ;
+ IF { PUSH string "NOT_MINTER" ; FAILWITH } {} ;
+ DUP 2 ;
+ CAR ;
+ CDR ;
+ SWAP ;
+ IF_LEFT
+ { DUP ;
+ MAP { NIL (pair (option address) nat nat) ;
+ DUP 2 ;
+ CDR ;
+ PUSH nat 0 ;
+ NONE address ;
+ PAIR 3 ;
+ CONS ;
+ SWAP ;
+ CAR ;
+ SOME ;
+ PAIR } ;
+ DUP 3 ;
+ LAMBDA
+ (pair (pair address address) nat (big_map (pair address address nat) unit))
+ unit
+ { DROP ; UNIT } ;
+ DIG 2 ;
+ PAIR ;
+ PAIR ;
+ DIG 5 ;
+ SWAP ;
+ EXEC ;
+ UNPAIR ;
+ DIG 2 ;
+ DIG 5 ;
+ SWAP ;
+ EXEC ;
+ DIG 3 ;
+ CDR ;
+ CAR ;
+ CDR ;
+ SUB ;
+ ISNAT ;
+ IF_NONE { DIG 3 ; FAILWITH } { DIG 4 ; DROP } ;
+ DUP 3 ;
+ CDR ;
+ CDR ;
+ SWAP ;
+ DUP 4 ;
+ CDR ;
+ CAR ;
+ CAR ;
+ PAIR ;
+ PAIR ;
+ DIG 2 ;
+ CAR }
+ { DIG 5 ;
+ DROP ;
+ DUP ;
+ MAP { DUP ; CDR ; PUSH nat 0 ; DIG 2 ; CAR ; SOME ; PAIR 3 } ;
+ DUP 3 ;
+ LAMBDA
+ (pair (pair address address) nat (big_map (pair address address nat) unit))
+ unit
+ { DROP ; UNIT } ;
+ NIL (pair (option address) (list (pair (option address) nat nat))) ;
+ DIG 3 ;
+ NONE address ;
+ PAIR ;
+ CONS ;
+ PAIR ;
+ PAIR ;
+ DIG 5 ;
+ SWAP ;
+ EXEC ;
+ UNPAIR ;
+ DIG 2 ;
+ DIG 5 ;
+ SWAP ;
+ EXEC ;
+ DUP 3 ;
+ CDR ;
+ CDR ;
+ SWAP ;
+ DIG 4 ;
+ CDR ;
+ CAR ;
+ CDR ;
+ ADD ;
+ DUP 4 ;
+ CDR ;
+ CAR ;
+ CAR ;
+ PAIR ;
+ PAIR ;
+ DIG 2 ;
+ CAR } ;
+ PAIR ;
+ SWAP ;
+ DUP 3 ;
+ CDR ;
+ DIG 2 ;
+ DIG 3 ;
+ CAR ;
+ CAR ;
+ PAIR ;
+ PAIR ;
+ SWAP } ;
+ PAIR } ;
+view "voting_power"
+ (pair (address %addr) (nat %block_level))
+ nat
+ { LAMBDA
+ int
+ nat
+ { ISNAT ; IF_NONE { PUSH string "NOT_A_NAT" ; FAILWITH } {} } ;
+ SWAP ;
+ UNPAIR ;
+ SWAP ;
+ CAR ;
+ CDR ;
+ SWAP ;
+ UNPAIR ;
+ DUP 3 ;
+ CDR ;
+ CDR ;
+ CDR ;
+ DUP 2 ;
+ GET ;
+ IF_NONE { PUSH nat 0 } {} ;
+ PUSH nat 0 ;
+ DUP 2 ;
+ COMPARE ;
+ EQ ;
+ IF { DROP 5 ; PUSH nat 0 }
+ { DUP 4 ;
+ PUSH int 1 ;
+ DUP 3 ;
+ SUB ;
+ DUP 7 ;
+ SWAP ;
+ EXEC ;
+ DUP 4 ;
+ DIG 2 ;
+ CDR ;
+ CDR ;
+ CAR ;
+ DUG 2 ;
+ PAIR ;
+ GET ;
+ IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
+ DUP 4 ;
+ DUP 2 ;
+ CDR ;
+ COMPARE ;
+ LE ;
+ IF { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 5 ; CAR }
+ { DROP ;
+ DUP 4 ;
+ CDR ;
+ CDR ;
+ CAR ;
+ PUSH nat 0 ;
+ DUP 4 ;
+ PAIR ;
+ GET ;
+ IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
+ DUP 4 ;
+ SWAP ;
+ CDR ;
+ COMPARE ;
+ GT ;
+ IF { DROP 5 ; PUSH nat 0 }
+ { PUSH int 1 ;
+ SWAP ;
+ SUB ;
+ DUP 5 ;
+ SWAP ;
+ EXEC ;
+ PUSH nat 0 ;
+ PAIR ;
+ LEFT nat ;
+ LOOP_LEFT
+ { UNPAIR ;
+ DUP 2 ;
+ DUP 2 ;
+ COMPARE ;
+ EQ ;
+ IF { SWAP ;
+ DROP ;
+ DUP 4 ;
+ CDR ;
+ CDR ;
+ CAR ;
+ SWAP ;
+ DUP 3 ;
+ PAIR ;
+ GET ;
+ IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
+ CAR ;
+ RIGHT (pair nat nat) }
+ { PUSH int 2 ;
+ DUP 2 ;
+ DUP 4 ;
+ SUB ;
+ DUP 8 ;
+ SWAP ;
+ EXEC ;
+ EDIV ;
+ IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
+ CAR ;
+ DUP 3 ;
+ SUB ;
+ DUP 7 ;
+ SWAP ;
+ EXEC ;
+ DUP 6 ;
+ CDR ;
+ CDR ;
+ CAR ;
+ DUP 2 ;
+ DUP 6 ;
+ PAIR ;
+ GET ;
+ IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
+ DUP 6 ;
+ DUP 2 ;
+ CDR ;
+ COMPARE ;
+ EQ ;
+ IF { SWAP ; DIG 2 ; DIG 3 ; DROP 3 ; CAR ; RIGHT (pair nat nat) }
+ { DUP 6 ;
+ SWAP ;
+ CDR ;
+ COMPARE ;
+ GT ;
+ IF { DIG 2 ; DROP ; PUSH int 1 ; SWAP ; SUB ; DUP 6 ; SWAP ; EXEC }
+ { SWAP ; DROP ; SWAP } ;
+ SWAP ;
+ PAIR ;
+ LEFT nat } } } ;
+ SWAP ;
+ DIG 2 ;
+ DIG 3 ;
+ DIG 4 ;
+ DROP 4 } } } } ;
+view "total_supply" unit nat { CDR ; CAR ; CDR ; CDR ; CAR ; CDR } }
+
+`
diff --git a/src/services/contracts/token/hooks/useToken.ts b/src/services/contracts/token/hooks/useToken.ts
index 8c38d3c8..66526503 100644
--- a/src/services/contracts/token/hooks/useToken.ts
+++ b/src/services/contracts/token/hooks/useToken.ts
@@ -7,7 +7,8 @@ import { deployMetadataCarrier } from "services/contracts/metadataCarrier/deploy
import { useTezos } from "services/beacon/hooks/useTezos"
import mixpanel from "mixpanel-browser"
import { TokenContractParams } from "modules/creator/deployment/state/types"
-import { deployTokenContract } from ".."
+import { getCurrentBlock } from "services/utils/utils"
+import { deployTokenContract } from "services/contracts/token"
export const useTokenOriginate = (tokenData: TokenContractParams) => {
const queryClient = useQueryClient()
@@ -33,10 +34,13 @@ export const useTokenOriginate = (tokenData: TokenContractParams) => {
tokenSettings
}
+ const currentBlock = await getCurrentBlock(network)
+
const contract = await deployTokenContract({
...mutateTokenData,
tezos: tezosToolkit,
- account
+ account,
+ currentBlock
})
if (!contract) {
diff --git a/src/services/contracts/token/index.ts b/src/services/contracts/token/index.ts
index 89545d59..b235a152 100644
--- a/src/services/contracts/token/index.ts
+++ b/src/services/contracts/token/index.ts
@@ -2,7 +2,7 @@ import { MichelsonMap, TezosToolkit } from "@taquito/taquito"
import BigNumber from "bignumber.js"
import { TokenContractParams } from "modules/creator/deployment/state/types"
import { formatUnits } from "../utils"
-import fa2MultiAsset from "./assets/MultiAsset.json"
+import fa2_single_asset_delegated from "./assets/fa2_single_asset_delegated"
interface Tezos {
tezos: TezosToolkit
@@ -13,8 +13,9 @@ export const deployTokenContract = async ({
tokenSettings,
tokenDistribution,
tezos,
- account
-}: TokenContractParams & Tezos) => {
+ account,
+ currentBlock
+}: TokenContractParams & Tezos & any) => {
try {
const metadata = MichelsonMap.fromLiteral({
"": Buffer.from("tezos-storage:contents", "ascii").toString("hex"),
@@ -23,7 +24,7 @@ export const deployTokenContract = async ({
version: "v0.0.1",
name: tokenSettings.name,
description: tokenSettings.description,
- authors: ["FA2 Bakery"],
+ authors: ["Tezos Homebase"],
source: {
tools: ["Ligo"]
},
@@ -35,14 +36,17 @@ export const deployTokenContract = async ({
const storage = {
admin: {
admin: account,
- pending_admin: null,
paused: false
},
assets: {
- token_total_supply: MichelsonMap.fromLiteral({}),
- ledger: MichelsonMap.fromLiteral({}),
- operators: MichelsonMap.fromLiteral({}),
- token_metadata: MichelsonMap.fromLiteral({})
+ ledger: new MichelsonMap(),
+ voting_power_history: new MichelsonMap(),
+ voting_power_history_sizes: new MichelsonMap(),
+ delegates: new MichelsonMap(),
+ operators: new MichelsonMap(),
+ token_metadata: new MichelsonMap(),
+ total_supply: 0,
+ minter: account
},
metadata: metadata
}
@@ -52,14 +56,19 @@ export const deployTokenContract = async ({
tokenSettings.decimals &&
formatUnits(new BigNumber(tokenSettings.totalSupply), tokenSettings.decimals)
- totalSupply && storage.assets.token_total_supply.set(index, totalSupply.toString())
- tokenDistribution.holders.map((holder, holderIndex) => {
- holder.amount &&
- tokenSettings.decimals &&
+ storage.assets.total_supply = totalSupply.toString()
+ tokenDistribution.holders.map((holder: { amount: BigNumber.Value; walletAddress: any }) => {
+ if (holder.amount && tokenSettings.decimals) {
storage.assets.ledger.set(
- [holder.walletAddress, index],
+ holder.walletAddress,
formatUnits(new BigNumber(holder.amount), tokenSettings.decimals).toString()
)
+ storage.assets.voting_power_history.set([holder.walletAddress, 0], {
+ from_block: currentBlock,
+ amount: formatUnits(new BigNumber(holder.amount), tokenSettings.decimals).toString()
+ })
+ storage.assets.voting_power_history_sizes.set(holder.walletAddress, 1)
+ }
})
storage.assets.token_metadata.set(index, {
token_id: index,
@@ -73,7 +82,7 @@ export const deployTokenContract = async ({
})
})
const t = tezos.wallet.originate({
- code: fa2MultiAsset,
+ code: fa2_single_asset_delegated,
storage
})
const c = await t.send()