diff --git a/apps/counter/package.json b/apps/counter/package.json index 387d333..019ac8f 100644 --- a/apps/counter/package.json +++ b/apps/counter/package.json @@ -12,27 +12,27 @@ }, "dependencies": { "@ton/core": "^0.56.3", - "@tonconnect/ui": "^2.0.2", - "@tonconnect/ui-react": "^2.0.2", + "@tonconnect/ui": "^2.0.3", + "@tonconnect/ui-react": "^2.0.3", "react": "^18.3.1", "react-dom": "^18.3.1", - "viem": "^2.9.28" + "viem": "^2.13.5" }, "devDependencies": { "@fotonjs/api": "workspace:*", - "@fotonjs/core": "workspace:*", "@fotonjs/cli": "workspace:*", - "@tact-lang/compiler": "^1.2.0", - "@types/react": "^18.3.1", + "@fotonjs/core": "workspace:*", + "@tact-lang/compiler": "^1.3.0", + "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", - "@typescript-eslint/eslint-plugin": "^7.7.1", - "@typescript-eslint/parser": "^7.7.1", - "@vitejs/plugin-react-swc": "^3.6.0", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", + "@vitejs/plugin-react-swc": "^3.7.0", "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.2", - "eslint-plugin-react-refresh": "^0.4.6", + "eslint-plugin-react-refresh": "^0.4.7", "typescript": "^5.4.5", - "vite": "^5.2.10", + "vite": "^5.2.12", "vite-plugin-node-polyfills": "^0.21.0" } } diff --git a/apps/docs/package.json b/apps/docs/package.json index 81947af..35d355f 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -9,18 +9,18 @@ "lint": "next lint" }, "dependencies": { - "@vercel/analytics": "^1.2.2", + "@vercel/analytics": "^1.3.1", "next": "14.2.3", "nextra": "^2.13.4", "nextra-theme-docs": "^2.13.4", - "react": "^18", - "react-dom": "^18", + "react": "^18.3.1", + "react-dom": "^18.3.1", "shiki": "^0.14.7" }, "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "typescript": "^5" + "@types/node": "^20.14.1", + "@types/react": "^18.3.3", + "@types/react-dom": "^18.3.0", + "typescript": "^5.4.5" } } diff --git a/apps/jetton/.env.production b/apps/jetton/.env.production new file mode 100644 index 0000000..98bfd95 --- /dev/null +++ b/apps/jetton/.env.production @@ -0,0 +1 @@ +VITE_API_KEY="" diff --git a/apps/jetton/.eslintrc.cjs b/apps/jetton/.eslintrc.cjs new file mode 100644 index 0000000..7c49501 --- /dev/null +++ b/apps/jetton/.eslintrc.cjs @@ -0,0 +1,19 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'semi': ['warn', 'always'], + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/apps/jetton/.gitignore b/apps/jetton/.gitignore new file mode 100644 index 0000000..863e5c8 --- /dev/null +++ b/apps/jetton/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +build diff --git a/apps/jetton/README.md b/apps/jetton/README.md new file mode 100644 index 0000000..41bc6c2 --- /dev/null +++ b/apps/jetton/README.md @@ -0,0 +1,3 @@ +# Foton Jetton + +An application showcasing how Foton can help with Jetton manipulations diff --git a/apps/jetton/index.html b/apps/jetton/index.html new file mode 100644 index 0000000..fb7692e --- /dev/null +++ b/apps/jetton/index.html @@ -0,0 +1,13 @@ + + + + + + + Jetton | Foton + + +
+ + + diff --git a/apps/jetton/package.json b/apps/jetton/package.json new file mode 100644 index 0000000..ceec1cc --- /dev/null +++ b/apps/jetton/package.json @@ -0,0 +1,36 @@ +{ + "name": "@fotonjs/jetton", + "private": true, + "version": "0.0.1", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview", + "compile": "tact --config ./tact.config.json" + }, + "dependencies": { + "@ton/core": "^0.56.3", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zustand": "^4.5.2" + }, + "devDependencies": { + "@fotonjs/api": "workspace:*", + "@fotonjs/core": "workspace:*", + "@tact-lang/compiler": "^1.2.0", + "@ton/blueprint": "^0.20.0", + "@types/react": "^18.2.66", + "@types/react-dom": "^18.2.22", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.57.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.6", + "typescript": "^5.2.2", + "vite": "^5.2.0", + "vite-plugin-node-polyfills": "^0.21.0" + } +} diff --git a/apps/jetton/public/foton.png b/apps/jetton/public/foton.png new file mode 100644 index 0000000..d85c29d Binary files /dev/null and b/apps/jetton/public/foton.png differ diff --git a/apps/jetton/public/tonconnect-manifest.json b/apps/jetton/public/tonconnect-manifest.json new file mode 100644 index 0000000..ca59a81 --- /dev/null +++ b/apps/jetton/public/tonconnect-manifest.json @@ -0,0 +1,5 @@ +{ + "name": "Foton Jetton", + "url": "https://jetton.foton.sh", + "iconUrl": "https://jetton.foton.sh/foton.png" +} diff --git a/apps/jetton/src/.eslintignore b/apps/jetton/src/.eslintignore new file mode 100644 index 0000000..4d27c38 --- /dev/null +++ b/apps/jetton/src/.eslintignore @@ -0,0 +1 @@ +src/contract diff --git a/apps/jetton/src/App.css b/apps/jetton/src/App.css new file mode 100644 index 0000000..73aa63d --- /dev/null +++ b/apps/jetton/src/App.css @@ -0,0 +1,23 @@ +#root { + width: 90%; + margin: 0 auto; + padding-top: 3rem; +} + +@media (min-width: 768px) { + #root { + width: 720px; + } +} + +.card { + display: flex; + align-items: center; + justify-content: center; + gap: 12px; + padding: 2em; +} + +form { + margin-top: 2em; +} diff --git a/apps/jetton/src/App.tsx b/apps/jetton/src/App.tsx new file mode 100644 index 0000000..27b8134 --- /dev/null +++ b/apps/jetton/src/App.tsx @@ -0,0 +1,29 @@ +import { useEffect } from 'react'; +import { useUserStore } from './stores/user-store.ts'; +import { JettonMinters } from './components/jetton-minters'; +import { CreateJetton } from './components/create-jetton'; +import { ManageJetton } from './components/manage-jetton'; +import { AppHeader } from './components/header'; +import './App.css'; + +function App() { + const userAddress = useUserStore((state) => state.address); + const activeSection = useUserStore((state) => state.activeSection); + const monitorAuth = useUserStore((state) => state.monitorAuth); + + useEffect(() => { + monitorAuth(); + }, [monitorAuth]); + + return ( + <> + + + {activeSection === 'minters' && } + {activeSection === 'create' && } + {activeSection === 'manage' && } + + ); +} + +export default App; diff --git a/apps/jetton/src/components/connect-button/index.tsx b/apps/jetton/src/components/connect-button/index.tsx new file mode 100644 index 0000000..b1b44e5 --- /dev/null +++ b/apps/jetton/src/components/connect-button/index.tsx @@ -0,0 +1,13 @@ +import { FC } from 'react'; +import { useUserStore } from '../../stores/user-store.ts'; + +export const ConnectButton: FC = () => { + const loading = useUserStore((state) => state.loading); + const connect = useUserStore((state) => state.connect); + + return ( + + ); +}; diff --git a/apps/jetton/src/components/create-jetton/index.tsx b/apps/jetton/src/components/create-jetton/index.tsx new file mode 100644 index 0000000..f92a5b9 --- /dev/null +++ b/apps/jetton/src/components/create-jetton/index.tsx @@ -0,0 +1,109 @@ +import { FC, FormEventHandler, useState } from 'react'; +import styles from './styles.module.css'; +import { getJettonDeployArguments, parseTon } from '@fotonjs/core'; +import { contractClient, publicClient, walletClient } from '../../ton-clients.ts'; +import { AppSection } from '../section'; +import { useUserStore } from '../../stores/user-store.ts'; + +export interface CreateJettonProps {} + +export const CreateJetton: FC = () => { + const changeSection = useUserStore((state) => state.changeSection); + const userAddress = useUserStore((state) => state.address); + + const [name, setName] = useState(''); + const [symbol, setSymbol] = useState(''); + const [description, setDescription] = useState(''); + + const [error, setError] = useState(); + const [loading, setLoading] = useState(false); + + const onConnect = () => { + walletClient.connect(); + }; + + const onSubmit: FormEventHandler = async (event) => { + event.preventDefault(); + + setError(undefined); + if (!name || !symbol || !description) { + setError('Please, fill in all fields'); + return; + } + + const data = getJettonDeployArguments({ + owner: userAddress!, + maxSupply: 21000000n, + content: { + name: 'Foton', + symbol: 'FTN', + description: 'Foton token', + }, + }); + + setLoading(true); + const res = await contractClient.deploy({ + value: parseTon('0.05'), + arguments: data, + payload: undefined, + }); + + if (res.data) { + await publicClient.waitForTransaction({ hash: res.data.txHash }); + changeSection('minters'); + } else { + setError(res.error.message); + } + setLoading(false); + }; + + return ( + +
+
+ + setName(event.currentTarget.value)} + /> +
+ +
+ + setSymbol(event.currentTarget.value)} + /> +
+ +
+ + setDescription(event.currentTarget.value)} + /> +
+ + {error &&

{error}

} + + {userAddress ? ( + + ) : ( + + )} +
+
+ ); +}; diff --git a/apps/jetton/src/components/create-jetton/styles.module.css b/apps/jetton/src/components/create-jetton/styles.module.css new file mode 100644 index 0000000..109443f --- /dev/null +++ b/apps/jetton/src/components/create-jetton/styles.module.css @@ -0,0 +1,37 @@ +.form { + display: flex; + flex-direction: column; + margin: 0; + gap: 16px; + padding-bottom: 32px; +} + +.field { + display: flex; + flex-direction: column; + gap: 6px; + border: none; + padding: 0; + margin: 0; +} + +.field input { + width: 100%; + padding: 16px; + border: none; + border-radius: 8px; + font-size: 16px; +} + +.form > button { + padding: 16px; + border-radius: 8px; + font-size: 16px; + font-weight: bold; + cursor: pointer; +} + +.error { + text-align: center; + color: #fa3636; +} diff --git a/apps/jetton/src/components/disconnect-button/index.tsx b/apps/jetton/src/components/disconnect-button/index.tsx new file mode 100644 index 0000000..1ccc46c --- /dev/null +++ b/apps/jetton/src/components/disconnect-button/index.tsx @@ -0,0 +1,25 @@ +import { FC } from 'react'; +import { useUserStore } from '../../stores/user-store.ts'; +import { shortenAddress } from '../../utils/shortenAddress.ts'; +import styles from './styles.module.css'; + +export interface DisconnectButtonProps {} + +export const DisconnectButton: FC = () => { + const address = useUserStore((state) => state.address); + const loading = useUserStore((state) => state.loading); + const changeSection = useUserStore((state) => state.changeSection); + const disconnect = useUserStore((state) => state.disconnect); + + return ( +
+ {shortenAddress(address)} + + + + +
+ ); +}; diff --git a/apps/jetton/src/components/disconnect-button/styles.module.css b/apps/jetton/src/components/disconnect-button/styles.module.css new file mode 100644 index 0000000..a9740dd --- /dev/null +++ b/apps/jetton/src/components/disconnect-button/styles.module.css @@ -0,0 +1,7 @@ +.account { + position: relative; + display: flex; + align-items: center; + justify-content: center; + gap: 12px; +} diff --git a/apps/jetton/src/components/header/index.tsx b/apps/jetton/src/components/header/index.tsx new file mode 100644 index 0000000..b722627 --- /dev/null +++ b/apps/jetton/src/components/header/index.tsx @@ -0,0 +1,24 @@ +import { FC } from 'react'; +import fotonLogo from '/foton.png'; + +import { ConnectButton } from '../connect-button'; +import { DisconnectButton } from '../disconnect-button'; +import { useUserStore } from '../../stores/user-store.ts'; +import styles from './styles.module.css'; + +export const AppHeader: FC = () => { + const userAddress = useUserStore((state) => state.address); + + return ( +
+ + Foton logo +

Jetton

+
+ + {!userAddress + ? + : } +
+ ); +}; diff --git a/apps/jetton/src/components/header/styles.module.css b/apps/jetton/src/components/header/styles.module.css new file mode 100644 index 0000000..a5c6775 --- /dev/null +++ b/apps/jetton/src/components/header/styles.module.css @@ -0,0 +1,47 @@ +.header { + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; +} + +.header > a { + display: flex; + align-items: center; + gap: 8px; +} + +.header h1 { + margin: 0; +} + +.header img { + height: 40px; + width: 40px; + will-change: filter; + transition: filter 300ms; +} + +.header img:hover { + filter: drop-shadow(0 0 2em rgba(255, 154, 7, 0.89)); +} + +.header.down { + flex-direction: column; + gap: 16px; +} + +@media (min-width: 768px) { + .header > a { + gap: 24px; + } + + .header img { + height: 60px; + width: 60px; + } + + .header.down { + flex-direction: row; + } +} diff --git a/apps/jetton/src/components/jetton-minters/index.tsx b/apps/jetton/src/components/jetton-minters/index.tsx new file mode 100644 index 0000000..17c422e --- /dev/null +++ b/apps/jetton/src/components/jetton-minters/index.tsx @@ -0,0 +1,119 @@ +import { FC, useEffect, useState } from 'react'; +import { JettonMaster, JettonWallet } from '@fotonjs/api'; +import { contractClient, publicClient } from '../../ton-clients.ts'; +import { shortenAddress } from '../../utils/shortenAddress.ts'; +import { useUserStore } from '../../stores/user-store.ts'; +import { AppSection } from '../section'; +import styles from './styles.module.css'; + +interface JettonMetadata { + name: string; + description: string; + symbol: string; + image: string; + imageData: string; + uri: string; + decimals: number; + amount_style: 'n' | 'n-of-total' | '%'; + render_type: 'currency' | 'game'; +} + +interface JettonMinter extends JettonMaster { + jetton_content: JettonMetadata; + balance: bigint; +} + +export interface JettonMintersProps {} + +export const JettonMinters: FC = () => { + const userAddress = useUserStore((state) => state.address); + const changeSection = useUserStore((state) => state.changeSection); + + const [minters, setMinters] = useState([]); + + const fetchJettonMinters = async (address: string): Promise => { + const [minters, wallets] = await Promise.all([ + publicClient._api.jettonMasters({ admin_address: address }), + publicClient._api.jettonWallets({ owner_address: address }), + ]); + let mintersData = (minters.data?.jetton_masters || []) as JettonMinter[]; + const walletsData = (wallets.data?.jetton_wallets || []) as JettonWallet[]; + + mintersData = mintersData.map((minter) => { + const balance = walletsData.reduce((accum, wallet) => { + console.log(wallet.jetton, minter.address, wallet.jetton === minter.address, BigInt(wallet.balance)); + if (wallet.jetton === minter.address) { + return accum + BigInt(wallet.balance); + } + return accum; + }, 0n); + + return { + ...minter, + balance, + }; + }); + + setMinters(mintersData); + }; + + useEffect(() => { + if (userAddress) { + fetchJettonMinters(userAddress); + } else { + setMinters([]); + } + }, [userAddress]); + + const onManage = (address: string) => { + contractClient.setAddress(address); + changeSection('manage'); + }; + + if (!minters.length) { + return null; + } + + return ( + changeSection('create')}>Create new jetton} + > + + + + + + + + + + + + {minters.map((minter) => ( + + + + + + + + + ))} + +
SymbolNameTotal supplyBalanceAddress +
${minter.jetton_content.symbol}{minter.jetton_content.name}{minter.total_supply}{minter.balance?.toString() || '0'} + + {shortenAddress(minter.address)} + + + +
+
+ ); +}; diff --git a/apps/jetton/src/components/jetton-minters/styles.module.css b/apps/jetton/src/components/jetton-minters/styles.module.css new file mode 100644 index 0000000..b35482d --- /dev/null +++ b/apps/jetton/src/components/jetton-minters/styles.module.css @@ -0,0 +1,33 @@ +.table { + overflow-x: auto; +} + +.table, .table thead, .table tbody { + width: 100%; +} + +.table tr { + display: grid; + grid-template-columns: repeat(6, 1fr); + width: 100%; +} + +.table a { + color: var(--hover-color); + text-decoration: underline; +} + +.table th, .table td { + display: flex; + align-items: center; + padding: 8px; +} + +.table th { + display: flex; + align-items: center; + font-weight: bold; + white-space: nowrap; + border-top: 1px solid var(--stroke-primary); + border-bottom: 1px solid var(--stroke-primary); +} diff --git a/apps/jetton/src/components/manage-jetton/index.tsx b/apps/jetton/src/components/manage-jetton/index.tsx new file mode 100644 index 0000000..67e56a1 --- /dev/null +++ b/apps/jetton/src/components/manage-jetton/index.tsx @@ -0,0 +1,92 @@ +import { FC, FormEventHandler, useState } from 'react'; +import styles from './styles.module.css'; +import { AppSection } from '../section'; +import { contractClient, publicClient } from '../../ton-clients.ts'; +import { parseTon } from '@fotonjs/core'; + +type ActionTabs = 'mint' | 'transfer' | 'burn'; + +export interface ManageJettonProps {} + +export const ManageJetton: FC = () => { + const [tab, setTab] = useState('mint'); + + const [mintAmount, setMintAmount] = useState(''); + const [receiver, setReceiver] = useState(''); + + const [error, setError] = useState(); + const [loading, setLoading] = useState(false); + + const onMint: FormEventHandler = async (event) => { + event.preventDefault(); + + setError(undefined); + if (!mintAmount || !receiver) { + setError('Please, fill in all fields'); + return; + } + + setLoading(true); + const res = await contractClient.write({ + method: 'Mint', + value: parseTon('0.05'), + payload: { + receiver, + amount: BigInt(mintAmount), + } + }); + + if (res.data) { + await publicClient.waitForTransaction({ hash: res.data }); + } else if (res.error) { + alert(res.error.message); + } + setLoading(false); + }; + + return ( + +
+ + + {tab === 'mint' && ( +
+
+ + setMintAmount(event.currentTarget.value)} + /> +
+ +
+ + setReceiver(event.currentTarget.value)} + /> +
+ + {error &&

{error}

} + + +
+ )} +
+
+ ); +}; diff --git a/apps/jetton/src/components/manage-jetton/styles.module.css b/apps/jetton/src/components/manage-jetton/styles.module.css new file mode 100644 index 0000000..857dff3 --- /dev/null +++ b/apps/jetton/src/components/manage-jetton/styles.module.css @@ -0,0 +1,52 @@ +.wrapper { + position: relative; + width: 100%; + padding-bottom: 32px; +} + +.tabs { + display: flex; + gap: 16px; +} + +.tabs button.active { + border: 1px solid var(--focus-color); +} + +.form { + display: flex; + flex-direction: column; + margin: 16px 0 0; + gap: 16px; + padding-bottom: 32px; +} + +.field { + display: flex; + flex-direction: column; + gap: 6px; + border: none; + padding: 0; + margin: 0; +} + +.field input { + width: 100%; + padding: 16px; + border: none; + border-radius: 8px; + font-size: 16px; +} + +.form > button { + padding: 16px; + border-radius: 8px; + font-size: 16px; + font-weight: bold; + cursor: pointer; +} + +.error { + text-align: center; + color: #fa3636; +} diff --git a/apps/jetton/src/components/section/index.tsx b/apps/jetton/src/components/section/index.tsx new file mode 100644 index 0000000..ec344e7 --- /dev/null +++ b/apps/jetton/src/components/section/index.tsx @@ -0,0 +1,21 @@ +import { FC, ReactNode } from 'react'; +import styles from './styles.module.css'; + +export interface AppSectionProps { + title: string; + children: ReactNode; + headerItem?: ReactNode; +} + +export const AppSection: FC = ({ title, headerItem, children }) => { + return ( +
+
+

{title}

+ {headerItem} +
+ + {children} +
+ ); +}; diff --git a/apps/jetton/src/components/section/styles.module.css b/apps/jetton/src/components/section/styles.module.css new file mode 100644 index 0000000..2f99c9c --- /dev/null +++ b/apps/jetton/src/components/section/styles.module.css @@ -0,0 +1,10 @@ +.section { + margin-top: 24px; +} + +.header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 12px; +} diff --git a/apps/jetton/src/contract/contract.tact b/apps/jetton/src/contract/contract.tact new file mode 100644 index 0000000..b4174e8 --- /dev/null +++ b/apps/jetton/src/contract/contract.tact @@ -0,0 +1,44 @@ +import "./jetton"; + +message Mint { + amount: Int; + receiver: Address; +} + +contract SampleJetton with Jetton { + total_supply: Int as coins; + owner: Address; + content: Cell; + mintable: Bool; + + max_supply: Int as coins; // Extract parameter we set here. The Jetton Standards doesn't have this parameter. + + init(owner: Address, content: Cell, max_supply: Int) { + self.total_supply = 0; + self.owner = owner; + self.mintable = true; + self.content = content; + self.max_supply = max_supply; + } + + receive(msg: Mint) { // 0xfc708bd2 + let ctx: Context = context(); + require(ctx.sender == self.owner, "Not owner"); + require(self.mintable, "Not mintable"); + require(self.total_supply + msg.amount <= self.max_supply, "Max supply exceeded"); + self.mint(msg.receiver, msg.amount, self.owner); // (to, amount, response_destination) + } + + receive("Mint: 100") { // Public Minting + let ctx: Context = context(); + require(self.mintable, "Not mintable"); + require(self.total_supply + 100 <= self.max_supply, "Max supply exceeded"); + self.mint(ctx.sender, 100, self.owner); // 🔴 + } + + receive("Owner: MintClose") { + let ctx: Context = context(); + require(ctx.sender == self.owner, "Not owner"); + self.mintable = false; + } +} diff --git a/apps/jetton/src/contract/index.ts b/apps/jetton/src/contract/index.ts new file mode 100644 index 0000000..8895eaf --- /dev/null +++ b/apps/jetton/src/contract/index.ts @@ -0,0 +1,2 @@ +export { JettonDefaultWallet } from './jetton_JettonDefaultWallet.ts'; +export { SampleJetton } from './jetton_SampleJetton.ts'; diff --git a/apps/jetton/src/contract/jetton.tact b/apps/jetton/src/contract/jetton.tact new file mode 100644 index 0000000..4240d77 --- /dev/null +++ b/apps/jetton/src/contract/jetton.tact @@ -0,0 +1,256 @@ +import "@stdlib/ownable"; +import "./messages"; + +// ============================================================================================================ // +@interface("org.ton.jetton.master") +trait Jetton with Ownable { + + total_supply: Int; + mintable: Bool; + owner: Address; + content: Cell; + + receive(msg: TokenUpdateContent) { + self.requireOwner(); // Allow changing content only by owner + self.content = msg.content; // Update content + } + + receive(msg: TokenBurnNotification) { + self.requireSenderAsWalletOwner(msg.response_destination!!); // Check wallet + self.total_supply = self.total_supply - msg.amount; // Update supply + if (msg.response_destination != null) { // Cashback + send(SendParameters{ + to: msg.response_destination!!, + value: 0, + bounce: false, + mode: SendRemainingValue, + body: TokenExcesses{ query_id: msg.query_id }.toCell() + }); + } + } + + // https://github.com/ton-blockchain/TEPs/blob/master/text/0089-jetton-wallet-discovery.md + receive(msg: ProvideWalletAddress) { // 0x2c76b973 + require(context().value >= ton("0.0061"), "Insufficient gas"); + let init: StateInit = initOf JettonDefaultWallet(msg.owner_address, myAddress()); + if (msg.include_address) { + send(SendParameters{ + to: sender(), + value: 0, + mode: SendRemainingValue, + body: TakeWalletAddress{ + query_id: msg.query_id, + wallet_address: contractAddress(init), + owner_address: beginCell().storeBool(true).storeAddress(msg.owner_address).endCell().asSlice() + }.toCell() + }); + } else { + send(SendParameters{ + to: sender(), + value: 0, + mode: SendRemainingValue, + body: TakeWalletAddress { // 0xd1735400 + query_id: msg.query_id, + wallet_address: contractAddress(init), + owner_address: beginCell().storeBool(false).endCell().asSlice() + }.toCell() + }); + } + } + + // Private Methods // + // @to The Address receive the Jetton token after minting + // @amount The amount of Jetton token being minted + // @response_destination The previous owner address + fun mint(to: Address, amount: Int, response_destination: Address) { + require(self.mintable, "Can't Mint Anymore"); + self.total_supply = self.total_supply + amount; // Update total supply + + let winit: StateInit = self.getJettonWalletInit(to); // Create message + send(SendParameters{ + to: contractAddress(winit), + value: 0, + bounce: true, + mode: SendRemainingValue, + body: TokenTransferInternal{ + query_id: 0, + amount: amount, + from: myAddress(), + response_destination: response_destination, + forward_ton_amount: 0, + forward_payload: beginCell().endCell().asSlice() + }.toCell(), + code: winit.code, + data: winit.data + }); + } + + fun requireSenderAsWalletOwner(owner: Address) { + let ctx: Context = context(); + let winit: StateInit = self.getJettonWalletInit(owner); + require(contractAddress(winit) == ctx.sender, "Invalid sender"); + } + + virtual fun getJettonWalletInit(address: Address): StateInit { + return initOf JettonDefaultWallet(address, myAddress()); + } + + // ====== Get Methods ====== // + get fun get_jetton_data(): JettonData { + return JettonData{ + total_supply: self.total_supply, + mintable: self.mintable, + owner: self.owner, + content: self.content, + wallet_code: initOf JettonDefaultWallet(self.owner, myAddress()).code + }; + } + + get fun get_wallet_address(owner: Address): Address { + return contractAddress(initOf JettonDefaultWallet(owner, myAddress())); + } +} + +// ============================================================ // +@interface("org.ton.jetton.wallet") +contract JettonDefaultWallet { + const minTonsForStorage: Int = ton("0.019"); + const gasConsumption: Int = ton("0.013"); + + balance: Int as coins = 0; + owner: Address; + master: Address; + + init(owner: Address, master: Address) { + self.balance = 0; + self.owner = owner; + self.master = master; + } + + receive(msg: TokenTransfer) { // 0xf8a7ea5 + let ctx: Context = context(); // Check sender + require(ctx.sender == self.owner, "Invalid sender"); + + let final: Int = ctx.readForwardFee() * 2 + + 2 * self.gasConsumption + + self.minTonsForStorage + + msg.forward_ton_amount; // Gas checks, forward_ton = 0.152 + require(ctx.value > final, "Invalid value"); + + // Update balance + self.balance = self.balance - msg.amount; + require(self.balance >= 0, "Invalid balance"); + + let init: StateInit = initOf JettonDefaultWallet(msg.sender, self.master); + let wallet_address: Address = contractAddress(init); + send(SendParameters{ + to: wallet_address, + value: 0, + mode: SendRemainingValue, + bounce: false, + body: TokenTransferInternal{ // 0x178d4519 + query_id: msg.query_id, + amount: msg.amount, + from: self.owner, + response_destination: msg.response_destination, + forward_ton_amount: msg.forward_ton_amount, + forward_payload: msg.forward_payload + }.toCell(), + code: init.code, + data: init.data + }); + } + + receive(msg: TokenTransferInternal) { // 0x178d4519 + let ctx: Context = context(); + if (ctx.sender != self.master) { + let sinit: StateInit = initOf JettonDefaultWallet(msg.from, self.master); + require(contractAddress(sinit) == ctx.sender, "Invalid sender!"); + } + + // Update balance + self.balance = self.balance + msg.amount; + require(self.balance >= 0, "Invalid balance"); + + // Get value for gas + let msg_value: Int = self.msg_value(ctx.value); + let fwd_fee: Int = ctx.readForwardFee(); + if (msg.forward_ton_amount > 0) { + msg_value = msg_value - msg.forward_ton_amount - fwd_fee; + send(SendParameters{ + to: self.owner, + value: msg.forward_ton_amount, + mode: SendPayGasSeparately, + bounce: false, + body: TokenNotification { // 0x7362d09c -- Remind the new Owner + query_id: msg.query_id, + amount: msg.amount, + from: msg.from, + forward_payload: msg.forward_payload + }.toCell() + }); + } + + // 0xd53276db -- Cashback to the original Sender + if (msg.response_destination != null && msg_value > 0) { + send(SendParameters { + to: msg.response_destination!!, + value: msg_value, + bounce: false, + body: TokenExcesses { query_id: msg.query_id }.toCell(), + mode: SendPayGasSeparately + }); + } + } + + receive(msg: TokenBurn) { + let ctx: Context = context(); + require(ctx.sender == self.owner, "Invalid sender"); // Check sender + + self.balance = self.balance - msg.amount; // Update balance + require(self.balance >= 0, "Invalid balance"); + + let fwd_fee: Int = ctx.readForwardFee(); // Gas checks + require(ctx.value > fwd_fee + 2 * self.gasConsumption + self.minTonsForStorage, "Invalid value - Burn"); + + // Burn tokens + send(SendParameters{ + to: self.master, + value: 0, + mode: SendRemainingValue, + bounce: true, + body: TokenBurnNotification{ + query_id: msg.query_id, + amount: msg.amount, + sender: self.owner, + response_destination: msg.response_destination!! + }.toCell() + }); + } + + + fun msg_value(value: Int): Int { + let msg_value: Int = value; + let ton_balance_before_msg: Int = myBalance() - msg_value; + let storage_fee: Int = self.minTonsForStorage - min(ton_balance_before_msg, self.minTonsForStorage); + msg_value = msg_value - (storage_fee + self.gasConsumption); + return msg_value; + } + + bounced(msg: bounced) { + self.balance = self.balance + msg.amount; + } + + bounced(msg: bounced) { + self.balance = self.balance + msg.amount; + } + + get fun get_wallet_data(): JettonWalletData { + return JettonWalletData{ + balance: self.balance, + owner: self.owner, + master: self.master, + code: (initOf JettonDefaultWallet(self.owner, self.master)).code + }; + } +} diff --git a/apps/jetton/src/contract/jetton_JettonDefaultWallet.ts b/apps/jetton/src/contract/jetton_JettonDefaultWallet.ts new file mode 100644 index 0000000..db821d0 --- /dev/null +++ b/apps/jetton/src/contract/jetton_JettonDefaultWallet.ts @@ -0,0 +1,1096 @@ +// @ts-nocheck + +import { + Cell, + Slice, + Address, + Builder, + beginCell, + ComputeError, + TupleItem, + TupleReader, + Dictionary, + contractAddress, + ContractProvider, + Sender, + Contract, + ContractABI, + ABIType, + ABIGetter, + ABIReceiver, + TupleBuilder, + DictionaryValue +} from '@ton/core'; + +export type StateInit = { + $$type: 'StateInit'; + code: Cell; + data: Cell; +} + +export function storeStateInit(src: StateInit) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeRef(src.code); + b_0.storeRef(src.data); + }; +} + +export function loadStateInit(slice: Slice) { + let sc_0 = slice; + let _code = sc_0.loadRef(); + let _data = sc_0.loadRef(); + return { $$type: 'StateInit' as const, code: _code, data: _data }; +} + +function loadTupleStateInit(source: TupleReader) { + let _code = source.readCell(); + let _data = source.readCell(); + return { $$type: 'StateInit' as const, code: _code, data: _data }; +} + +function storeTupleStateInit(source: StateInit) { + let builder = new TupleBuilder(); + builder.writeCell(source.code); + builder.writeCell(source.data); + return builder.build(); +} + +function dictValueParserStateInit(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeStateInit(src)).endCell()); + }, + parse: (src) => { + return loadStateInit(src.loadRef().beginParse()); + } + } +} + +export type Context = { + $$type: 'Context'; + bounced: boolean; + sender: Address; + value: bigint; + raw: Cell; +} + +export function storeContext(src: Context) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeBit(src.bounced); + b_0.storeAddress(src.sender); + b_0.storeInt(src.value, 257); + b_0.storeRef(src.raw); + }; +} + +export function loadContext(slice: Slice) { + let sc_0 = slice; + let _bounced = sc_0.loadBit(); + let _sender = sc_0.loadAddress(); + let _value = sc_0.loadIntBig(257); + let _raw = sc_0.loadRef(); + return { $$type: 'Context' as const, bounced: _bounced, sender: _sender, value: _value, raw: _raw }; +} + +function loadTupleContext(source: TupleReader) { + let _bounced = source.readBoolean(); + let _sender = source.readAddress(); + let _value = source.readBigNumber(); + let _raw = source.readCell(); + return { $$type: 'Context' as const, bounced: _bounced, sender: _sender, value: _value, raw: _raw }; +} + +function storeTupleContext(source: Context) { + let builder = new TupleBuilder(); + builder.writeBoolean(source.bounced); + builder.writeAddress(source.sender); + builder.writeNumber(source.value); + builder.writeSlice(source.raw); + return builder.build(); +} + +function dictValueParserContext(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeContext(src)).endCell()); + }, + parse: (src) => { + return loadContext(src.loadRef().beginParse()); + } + } +} + +export type SendParameters = { + $$type: 'SendParameters'; + bounce: boolean; + to: Address; + value: bigint; + mode: bigint; + body: Cell | null; + code: Cell | null; + data: Cell | null; +} + +export function storeSendParameters(src: SendParameters) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeBit(src.bounce); + b_0.storeAddress(src.to); + b_0.storeInt(src.value, 257); + b_0.storeInt(src.mode, 257); + if (src.body !== null && src.body !== undefined) { b_0.storeBit(true).storeRef(src.body); } else { b_0.storeBit(false); } + if (src.code !== null && src.code !== undefined) { b_0.storeBit(true).storeRef(src.code); } else { b_0.storeBit(false); } + if (src.data !== null && src.data !== undefined) { b_0.storeBit(true).storeRef(src.data); } else { b_0.storeBit(false); } + }; +} + +export function loadSendParameters(slice: Slice) { + let sc_0 = slice; + let _bounce = sc_0.loadBit(); + let _to = sc_0.loadAddress(); + let _value = sc_0.loadIntBig(257); + let _mode = sc_0.loadIntBig(257); + let _body = sc_0.loadBit() ? sc_0.loadRef() : null; + let _code = sc_0.loadBit() ? sc_0.loadRef() : null; + let _data = sc_0.loadBit() ? sc_0.loadRef() : null; + return { $$type: 'SendParameters' as const, bounce: _bounce, to: _to, value: _value, mode: _mode, body: _body, code: _code, data: _data }; +} + +function loadTupleSendParameters(source: TupleReader) { + let _bounce = source.readBoolean(); + let _to = source.readAddress(); + let _value = source.readBigNumber(); + let _mode = source.readBigNumber(); + let _body = source.readCellOpt(); + let _code = source.readCellOpt(); + let _data = source.readCellOpt(); + return { $$type: 'SendParameters' as const, bounce: _bounce, to: _to, value: _value, mode: _mode, body: _body, code: _code, data: _data }; +} + +function storeTupleSendParameters(source: SendParameters) { + let builder = new TupleBuilder(); + builder.writeBoolean(source.bounce); + builder.writeAddress(source.to); + builder.writeNumber(source.value); + builder.writeNumber(source.mode); + builder.writeCell(source.body); + builder.writeCell(source.code); + builder.writeCell(source.data); + return builder.build(); +} + +function dictValueParserSendParameters(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeSendParameters(src)).endCell()); + }, + parse: (src) => { + return loadSendParameters(src.loadRef().beginParse()); + } + } +} + +export type ChangeOwner = { + $$type: 'ChangeOwner'; + queryId: bigint; + newOwner: Address; +} + +export function storeChangeOwner(src: ChangeOwner) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(2174598809, 32); + b_0.storeUint(src.queryId, 64); + b_0.storeAddress(src.newOwner); + }; +} + +export function loadChangeOwner(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 2174598809) { throw Error('Invalid prefix'); } + let _queryId = sc_0.loadUintBig(64); + let _newOwner = sc_0.loadAddress(); + return { $$type: 'ChangeOwner' as const, queryId: _queryId, newOwner: _newOwner }; +} + +function loadTupleChangeOwner(source: TupleReader) { + let _queryId = source.readBigNumber(); + let _newOwner = source.readAddress(); + return { $$type: 'ChangeOwner' as const, queryId: _queryId, newOwner: _newOwner }; +} + +function storeTupleChangeOwner(source: ChangeOwner) { + let builder = new TupleBuilder(); + builder.writeNumber(source.queryId); + builder.writeAddress(source.newOwner); + return builder.build(); +} + +function dictValueParserChangeOwner(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeChangeOwner(src)).endCell()); + }, + parse: (src) => { + return loadChangeOwner(src.loadRef().beginParse()); + } + } +} + +export type ChangeOwnerOk = { + $$type: 'ChangeOwnerOk'; + queryId: bigint; + newOwner: Address; +} + +export function storeChangeOwnerOk(src: ChangeOwnerOk) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(846932810, 32); + b_0.storeUint(src.queryId, 64); + b_0.storeAddress(src.newOwner); + }; +} + +export function loadChangeOwnerOk(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 846932810) { throw Error('Invalid prefix'); } + let _queryId = sc_0.loadUintBig(64); + let _newOwner = sc_0.loadAddress(); + return { $$type: 'ChangeOwnerOk' as const, queryId: _queryId, newOwner: _newOwner }; +} + +function loadTupleChangeOwnerOk(source: TupleReader) { + let _queryId = source.readBigNumber(); + let _newOwner = source.readAddress(); + return { $$type: 'ChangeOwnerOk' as const, queryId: _queryId, newOwner: _newOwner }; +} + +function storeTupleChangeOwnerOk(source: ChangeOwnerOk) { + let builder = new TupleBuilder(); + builder.writeNumber(source.queryId); + builder.writeAddress(source.newOwner); + return builder.build(); +} + +function dictValueParserChangeOwnerOk(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeChangeOwnerOk(src)).endCell()); + }, + parse: (src) => { + return loadChangeOwnerOk(src.loadRef().beginParse()); + } + } +} + +export type JettonData = { + $$type: 'JettonData'; + total_supply: bigint; + mintable: boolean; + owner: Address; + content: Cell; + wallet_code: Cell; +} + +export function storeJettonData(src: JettonData) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeInt(src.total_supply, 257); + b_0.storeBit(src.mintable); + b_0.storeAddress(src.owner); + b_0.storeRef(src.content); + b_0.storeRef(src.wallet_code); + }; +} + +export function loadJettonData(slice: Slice) { + let sc_0 = slice; + let _total_supply = sc_0.loadIntBig(257); + let _mintable = sc_0.loadBit(); + let _owner = sc_0.loadAddress(); + let _content = sc_0.loadRef(); + let _wallet_code = sc_0.loadRef(); + return { $$type: 'JettonData' as const, total_supply: _total_supply, mintable: _mintable, owner: _owner, content: _content, wallet_code: _wallet_code }; +} + +function loadTupleJettonData(source: TupleReader) { + let _total_supply = source.readBigNumber(); + let _mintable = source.readBoolean(); + let _owner = source.readAddress(); + let _content = source.readCell(); + let _wallet_code = source.readCell(); + return { $$type: 'JettonData' as const, total_supply: _total_supply, mintable: _mintable, owner: _owner, content: _content, wallet_code: _wallet_code }; +} + +function storeTupleJettonData(source: JettonData) { + let builder = new TupleBuilder(); + builder.writeNumber(source.total_supply); + builder.writeBoolean(source.mintable); + builder.writeAddress(source.owner); + builder.writeCell(source.content); + builder.writeCell(source.wallet_code); + return builder.build(); +} + +function dictValueParserJettonData(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeJettonData(src)).endCell()); + }, + parse: (src) => { + return loadJettonData(src.loadRef().beginParse()); + } + } +} + +export type JettonWalletData = { + $$type: 'JettonWalletData'; + balance: bigint; + owner: Address; + master: Address; + code: Cell; +} + +export function storeJettonWalletData(src: JettonWalletData) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeInt(src.balance, 257); + b_0.storeAddress(src.owner); + b_0.storeAddress(src.master); + b_0.storeRef(src.code); + }; +} + +export function loadJettonWalletData(slice: Slice) { + let sc_0 = slice; + let _balance = sc_0.loadIntBig(257); + let _owner = sc_0.loadAddress(); + let _master = sc_0.loadAddress(); + let _code = sc_0.loadRef(); + return { $$type: 'JettonWalletData' as const, balance: _balance, owner: _owner, master: _master, code: _code }; +} + +function loadTupleJettonWalletData(source: TupleReader) { + let _balance = source.readBigNumber(); + let _owner = source.readAddress(); + let _master = source.readAddress(); + let _code = source.readCell(); + return { $$type: 'JettonWalletData' as const, balance: _balance, owner: _owner, master: _master, code: _code }; +} + +function storeTupleJettonWalletData(source: JettonWalletData) { + let builder = new TupleBuilder(); + builder.writeNumber(source.balance); + builder.writeAddress(source.owner); + builder.writeAddress(source.master); + builder.writeCell(source.code); + return builder.build(); +} + +function dictValueParserJettonWalletData(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeJettonWalletData(src)).endCell()); + }, + parse: (src) => { + return loadJettonWalletData(src.loadRef().beginParse()); + } + } +} + +export type TokenTransfer = { + $$type: 'TokenTransfer'; + query_id: bigint; + amount: bigint; + sender: Address; + response_destination: Address | null; + custom_payload: Cell | null; + forward_ton_amount: bigint; + forward_payload: Cell; +} + +export function storeTokenTransfer(src: TokenTransfer) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(260734629, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.sender); + b_0.storeAddress(src.response_destination); + if (src.custom_payload !== null && src.custom_payload !== undefined) { b_0.storeBit(true).storeRef(src.custom_payload); } else { b_0.storeBit(false); } + b_0.storeCoins(src.forward_ton_amount); + b_0.storeBuilder(src.forward_payload.asBuilder()); + }; +} + +export function loadTokenTransfer(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 260734629) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _sender = sc_0.loadAddress(); + let _response_destination = sc_0.loadMaybeAddress(); + let _custom_payload = sc_0.loadBit() ? sc_0.loadRef() : null; + let _forward_ton_amount = sc_0.loadCoins(); + let _forward_payload = sc_0.asCell(); + return { $$type: 'TokenTransfer' as const, query_id: _query_id, amount: _amount, sender: _sender, response_destination: _response_destination, custom_payload: _custom_payload, forward_ton_amount: _forward_ton_amount, forward_payload: _forward_payload }; +} + +function loadTupleTokenTransfer(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _sender = source.readAddress(); + let _response_destination = source.readAddressOpt(); + let _custom_payload = source.readCellOpt(); + let _forward_ton_amount = source.readBigNumber(); + let _forward_payload = source.readCell(); + return { $$type: 'TokenTransfer' as const, query_id: _query_id, amount: _amount, sender: _sender, response_destination: _response_destination, custom_payload: _custom_payload, forward_ton_amount: _forward_ton_amount, forward_payload: _forward_payload }; +} + +function storeTupleTokenTransfer(source: TokenTransfer) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.sender); + builder.writeAddress(source.response_destination); + builder.writeCell(source.custom_payload); + builder.writeNumber(source.forward_ton_amount); + builder.writeSlice(source.forward_payload); + return builder.build(); +} + +function dictValueParserTokenTransfer(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenTransfer(src)).endCell()); + }, + parse: (src) => { + return loadTokenTransfer(src.loadRef().beginParse()); + } + } +} + +export type TokenTransferInternal = { + $$type: 'TokenTransferInternal'; + query_id: bigint; + amount: bigint; + from: Address; + response_destination: Address | null; + forward_ton_amount: bigint; + forward_payload: Cell; +} + +export function storeTokenTransferInternal(src: TokenTransferInternal) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(395134233, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.from); + b_0.storeAddress(src.response_destination); + b_0.storeCoins(src.forward_ton_amount); + b_0.storeBuilder(src.forward_payload.asBuilder()); + }; +} + +export function loadTokenTransferInternal(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 395134233) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _from = sc_0.loadAddress(); + let _response_destination = sc_0.loadMaybeAddress(); + let _forward_ton_amount = sc_0.loadCoins(); + let _forward_payload = sc_0.asCell(); + return { $$type: 'TokenTransferInternal' as const, query_id: _query_id, amount: _amount, from: _from, response_destination: _response_destination, forward_ton_amount: _forward_ton_amount, forward_payload: _forward_payload }; +} + +function loadTupleTokenTransferInternal(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _from = source.readAddress(); + let _response_destination = source.readAddressOpt(); + let _forward_ton_amount = source.readBigNumber(); + let _forward_payload = source.readCell(); + return { $$type: 'TokenTransferInternal' as const, query_id: _query_id, amount: _amount, from: _from, response_destination: _response_destination, forward_ton_amount: _forward_ton_amount, forward_payload: _forward_payload }; +} + +function storeTupleTokenTransferInternal(source: TokenTransferInternal) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.from); + builder.writeAddress(source.response_destination); + builder.writeNumber(source.forward_ton_amount); + builder.writeSlice(source.forward_payload); + return builder.build(); +} + +function dictValueParserTokenTransferInternal(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenTransferInternal(src)).endCell()); + }, + parse: (src) => { + return loadTokenTransferInternal(src.loadRef().beginParse()); + } + } +} + +export type TokenNotification = { + $$type: 'TokenNotification'; + query_id: bigint; + amount: bigint; + from: Address; + forward_payload: Cell; +} + +export function storeTokenNotification(src: TokenNotification) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(1935855772, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.from); + b_0.storeBuilder(src.forward_payload.asBuilder()); + }; +} + +export function loadTokenNotification(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 1935855772) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _from = sc_0.loadAddress(); + let _forward_payload = sc_0.asCell(); + return { $$type: 'TokenNotification' as const, query_id: _query_id, amount: _amount, from: _from, forward_payload: _forward_payload }; +} + +function loadTupleTokenNotification(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _from = source.readAddress(); + let _forward_payload = source.readCell(); + return { $$type: 'TokenNotification' as const, query_id: _query_id, amount: _amount, from: _from, forward_payload: _forward_payload }; +} + +function storeTupleTokenNotification(source: TokenNotification) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.from); + builder.writeSlice(source.forward_payload); + return builder.build(); +} + +function dictValueParserTokenNotification(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenNotification(src)).endCell()); + }, + parse: (src) => { + return loadTokenNotification(src.loadRef().beginParse()); + } + } +} + +export type TokenBurn = { + $$type: 'TokenBurn'; + query_id: bigint; + amount: bigint; + response_destination: Address | null; + custom_payload: Cell | null; +} + +export function storeTokenBurn(src: TokenBurn) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(1499400124, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.response_destination); + if (src.custom_payload !== null && src.custom_payload !== undefined) { b_0.storeBit(true).storeRef(src.custom_payload); } else { b_0.storeBit(false); } + }; +} + +export function loadTokenBurn(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 1499400124) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _response_destination = sc_0.loadMaybeAddress(); + let _custom_payload = sc_0.loadBit() ? sc_0.loadRef() : null; + return { $$type: 'TokenBurn' as const, query_id: _query_id, amount: _amount, response_destination: _response_destination, custom_payload: _custom_payload }; +} + +function loadTupleTokenBurn(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _response_destination = source.readAddressOpt(); + let _custom_payload = source.readCellOpt(); + return { $$type: 'TokenBurn' as const, query_id: _query_id, amount: _amount, response_destination: _response_destination, custom_payload: _custom_payload }; +} + +function storeTupleTokenBurn(source: TokenBurn) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.response_destination); + builder.writeCell(source.custom_payload); + return builder.build(); +} + +function dictValueParserTokenBurn(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenBurn(src)).endCell()); + }, + parse: (src) => { + return loadTokenBurn(src.loadRef().beginParse()); + } + } +} + +export type TokenBurnNotification = { + $$type: 'TokenBurnNotification'; + query_id: bigint; + amount: bigint; + sender: Address; + response_destination: Address | null; +} + +export function storeTokenBurnNotification(src: TokenBurnNotification) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(2078119902, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.sender); + b_0.storeAddress(src.response_destination); + }; +} + +export function loadTokenBurnNotification(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 2078119902) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _sender = sc_0.loadAddress(); + let _response_destination = sc_0.loadMaybeAddress(); + return { $$type: 'TokenBurnNotification' as const, query_id: _query_id, amount: _amount, sender: _sender, response_destination: _response_destination }; +} + +function loadTupleTokenBurnNotification(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _sender = source.readAddress(); + let _response_destination = source.readAddressOpt(); + return { $$type: 'TokenBurnNotification' as const, query_id: _query_id, amount: _amount, sender: _sender, response_destination: _response_destination }; +} + +function storeTupleTokenBurnNotification(source: TokenBurnNotification) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.sender); + builder.writeAddress(source.response_destination); + return builder.build(); +} + +function dictValueParserTokenBurnNotification(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenBurnNotification(src)).endCell()); + }, + parse: (src) => { + return loadTokenBurnNotification(src.loadRef().beginParse()); + } + } +} + +export type TokenExcesses = { + $$type: 'TokenExcesses'; + query_id: bigint; +} + +export function storeTokenExcesses(src: TokenExcesses) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3576854235, 32); + b_0.storeUint(src.query_id, 64); + }; +} + +export function loadTokenExcesses(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3576854235) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + return { $$type: 'TokenExcesses' as const, query_id: _query_id }; +} + +function loadTupleTokenExcesses(source: TupleReader) { + let _query_id = source.readBigNumber(); + return { $$type: 'TokenExcesses' as const, query_id: _query_id }; +} + +function storeTupleTokenExcesses(source: TokenExcesses) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + return builder.build(); +} + +function dictValueParserTokenExcesses(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenExcesses(src)).endCell()); + }, + parse: (src) => { + return loadTokenExcesses(src.loadRef().beginParse()); + } + } +} + +export type TokenUpdateContent = { + $$type: 'TokenUpdateContent'; + content: Cell; +} + +export function storeTokenUpdateContent(src: TokenUpdateContent) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(2937889386, 32); + b_0.storeRef(src.content); + }; +} + +export function loadTokenUpdateContent(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 2937889386) { throw Error('Invalid prefix'); } + let _content = sc_0.loadRef(); + return { $$type: 'TokenUpdateContent' as const, content: _content }; +} + +function loadTupleTokenUpdateContent(source: TupleReader) { + let _content = source.readCell(); + return { $$type: 'TokenUpdateContent' as const, content: _content }; +} + +function storeTupleTokenUpdateContent(source: TokenUpdateContent) { + let builder = new TupleBuilder(); + builder.writeCell(source.content); + return builder.build(); +} + +function dictValueParserTokenUpdateContent(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenUpdateContent(src)).endCell()); + }, + parse: (src) => { + return loadTokenUpdateContent(src.loadRef().beginParse()); + } + } +} + +export type ProvideWalletAddress = { + $$type: 'ProvideWalletAddress'; + query_id: bigint; + owner_address: Address; + include_address: boolean; +} + +export function storeProvideWalletAddress(src: ProvideWalletAddress) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(745978227, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeAddress(src.owner_address); + b_0.storeBit(src.include_address); + }; +} + +export function loadProvideWalletAddress(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 745978227) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _owner_address = sc_0.loadAddress(); + let _include_address = sc_0.loadBit(); + return { $$type: 'ProvideWalletAddress' as const, query_id: _query_id, owner_address: _owner_address, include_address: _include_address }; +} + +function loadTupleProvideWalletAddress(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _owner_address = source.readAddress(); + let _include_address = source.readBoolean(); + return { $$type: 'ProvideWalletAddress' as const, query_id: _query_id, owner_address: _owner_address, include_address: _include_address }; +} + +function storeTupleProvideWalletAddress(source: ProvideWalletAddress) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeAddress(source.owner_address); + builder.writeBoolean(source.include_address); + return builder.build(); +} + +function dictValueParserProvideWalletAddress(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeProvideWalletAddress(src)).endCell()); + }, + parse: (src) => { + return loadProvideWalletAddress(src.loadRef().beginParse()); + } + } +} + +export type TakeWalletAddress = { + $$type: 'TakeWalletAddress'; + query_id: bigint; + wallet_address: Address; + owner_address: Cell; +} + +export function storeTakeWalletAddress(src: TakeWalletAddress) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3513996288, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeAddress(src.wallet_address); + b_0.storeBuilder(src.owner_address.asBuilder()); + }; +} + +export function loadTakeWalletAddress(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3513996288) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _wallet_address = sc_0.loadAddress(); + let _owner_address = sc_0.asCell(); + return { $$type: 'TakeWalletAddress' as const, query_id: _query_id, wallet_address: _wallet_address, owner_address: _owner_address }; +} + +function loadTupleTakeWalletAddress(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _wallet_address = source.readAddress(); + let _owner_address = source.readCell(); + return { $$type: 'TakeWalletAddress' as const, query_id: _query_id, wallet_address: _wallet_address, owner_address: _owner_address }; +} + +function storeTupleTakeWalletAddress(source: TakeWalletAddress) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeAddress(source.wallet_address); + builder.writeSlice(source.owner_address); + return builder.build(); +} + +function dictValueParserTakeWalletAddress(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTakeWalletAddress(src)).endCell()); + }, + parse: (src) => { + return loadTakeWalletAddress(src.loadRef().beginParse()); + } + } +} + +export type Mint = { + $$type: 'Mint'; + amount: bigint; + receiver: Address; +} + +export function storeMint(src: Mint) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(4235234258, 32); + b_0.storeInt(src.amount, 257); + b_0.storeAddress(src.receiver); + }; +} + +export function loadMint(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 4235234258) { throw Error('Invalid prefix'); } + let _amount = sc_0.loadIntBig(257); + let _receiver = sc_0.loadAddress(); + return { $$type: 'Mint' as const, amount: _amount, receiver: _receiver }; +} + +function loadTupleMint(source: TupleReader) { + let _amount = source.readBigNumber(); + let _receiver = source.readAddress(); + return { $$type: 'Mint' as const, amount: _amount, receiver: _receiver }; +} + +function storeTupleMint(source: Mint) { + let builder = new TupleBuilder(); + builder.writeNumber(source.amount); + builder.writeAddress(source.receiver); + return builder.build(); +} + +function dictValueParserMint(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeMint(src)).endCell()); + }, + parse: (src) => { + return loadMint(src.loadRef().beginParse()); + } + } +} + +type JettonDefaultWallet_init_args = { + $$type: 'JettonDefaultWallet_init_args'; + owner: Address; + master: Address; +} + +function initJettonDefaultWallet_init_args(src: JettonDefaultWallet_init_args) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeAddress(src.owner); + b_0.storeAddress(src.master); + }; +} + +async function JettonDefaultWallet_init(owner: Address, master: Address) { + const __code = Cell.fromBase64('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'); + const __system = Cell.fromBase64('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'); + let builder = beginCell(); + builder.storeRef(__system); + builder.storeUint(0, 1); + initJettonDefaultWallet_init_args({ $$type: 'JettonDefaultWallet_init_args', owner, master })(builder); + const __data = builder.endCell(); + return { code: __code, data: __data }; +} + +const JettonDefaultWallet_errors: { [key: number]: { message: string } } = { + 2: { message: `Stack undeflow` }, + 3: { message: `Stack overflow` }, + 4: { message: `Integer overflow` }, + 5: { message: `Integer out of expected range` }, + 6: { message: `Invalid opcode` }, + 7: { message: `Type check error` }, + 8: { message: `Cell overflow` }, + 9: { message: `Cell underflow` }, + 10: { message: `Dictionary error` }, + 13: { message: `Out of gas error` }, + 32: { message: `Method ID not found` }, + 34: { message: `Action is invalid or not supported` }, + 37: { message: `Not enough TON` }, + 38: { message: `Not enough extra-currencies` }, + 128: { message: `Null reference exception` }, + 129: { message: `Invalid serialization prefix` }, + 130: { message: `Invalid incoming message` }, + 131: { message: `Constraints error` }, + 132: { message: `Access denied` }, + 133: { message: `Contract stopped` }, + 134: { message: `Invalid argument` }, + 135: { message: `Code of a contract was not found` }, + 136: { message: `Invalid address` }, + 137: { message: `Masterchain support is not enabled for this contract` }, + 3688: { message: `Not mintable` }, + 4429: { message: `Invalid sender` }, + 12241: { message: `Max supply exceeded` }, + 14534: { message: `Not owner` }, + 16059: { message: `Invalid value` }, + 18668: { message: `Can't Mint Anymore` }, + 23951: { message: `Insufficient gas` }, + 42708: { message: `Invalid sender!` }, + 43422: { message: `Invalid value - Burn` }, + 62972: { message: `Invalid balance` }, +} + +const JettonDefaultWallet_types: ABIType[] = [ + {"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]}, + {"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]}, + {"name":"ChangeOwner","header":2174598809,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"newOwner","type":{"kind":"simple","type":"address","optional":false}}]}, + {"name":"ChangeOwnerOk","header":846932810,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"newOwner","type":{"kind":"simple","type":"address","optional":false}}]}, + {"name":"JettonData","header":null,"fields":[{"name":"total_supply","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mintable","type":{"kind":"simple","type":"bool","optional":false}},{"name":"owner","type":{"kind":"simple","type":"address","optional":false}},{"name":"content","type":{"kind":"simple","type":"cell","optional":false}},{"name":"wallet_code","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"JettonWalletData","header":null,"fields":[{"name":"balance","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"owner","type":{"kind":"simple","type":"address","optional":false}},{"name":"master","type":{"kind":"simple","type":"address","optional":false}},{"name":"code","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"TokenTransfer","header":260734629,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"response_destination","type":{"kind":"simple","type":"address","optional":true}},{"name":"custom_payload","type":{"kind":"simple","type":"cell","optional":true}},{"name":"forward_ton_amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"forward_payload","type":{"kind":"simple","type":"slice","optional":false,"format":"remainder"}}]}, + {"name":"TokenTransferInternal","header":395134233,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"from","type":{"kind":"simple","type":"address","optional":false}},{"name":"response_destination","type":{"kind":"simple","type":"address","optional":true}},{"name":"forward_ton_amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"forward_payload","type":{"kind":"simple","type":"slice","optional":false,"format":"remainder"}}]}, + {"name":"TokenNotification","header":1935855772,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"from","type":{"kind":"simple","type":"address","optional":false}},{"name":"forward_payload","type":{"kind":"simple","type":"slice","optional":false,"format":"remainder"}}]}, + {"name":"TokenBurn","header":1499400124,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"response_destination","type":{"kind":"simple","type":"address","optional":true}},{"name":"custom_payload","type":{"kind":"simple","type":"cell","optional":true}}]}, + {"name":"TokenBurnNotification","header":2078119902,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"response_destination","type":{"kind":"simple","type":"address","optional":true}}]}, + {"name":"TokenExcesses","header":3576854235,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}}]}, + {"name":"TokenUpdateContent","header":2937889386,"fields":[{"name":"content","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"ProvideWalletAddress","header":745978227,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"owner_address","type":{"kind":"simple","type":"address","optional":false}},{"name":"include_address","type":{"kind":"simple","type":"bool","optional":false}}]}, + {"name":"TakeWalletAddress","header":3513996288,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"wallet_address","type":{"kind":"simple","type":"address","optional":false}},{"name":"owner_address","type":{"kind":"simple","type":"slice","optional":false,"format":"remainder"}}]}, + {"name":"Mint","header":4235234258,"fields":[{"name":"amount","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"receiver","type":{"kind":"simple","type":"address","optional":false}}]}, +] + +const JettonDefaultWallet_getters: ABIGetter[] = [ + {"name":"get_wallet_data","arguments":[],"returnType":{"kind":"simple","type":"JettonWalletData","optional":false}}, +] + +const JettonDefaultWallet_receivers: ABIReceiver[] = [ + {"receiver":"internal","message":{"kind":"typed","type":"TokenTransfer"}}, + {"receiver":"internal","message":{"kind":"typed","type":"TokenTransferInternal"}}, + {"receiver":"internal","message":{"kind":"typed","type":"TokenBurn"}}, +] + +export class JettonDefaultWallet implements Contract { + + static async init(owner: Address, master: Address) { + return await JettonDefaultWallet_init(owner, master); + } + + static async fromInit(owner: Address, master: Address) { + const init = await JettonDefaultWallet_init(owner, master); + const address = contractAddress(0, init); + return new JettonDefaultWallet(address, init); + } + + static fromAddress(address: Address) { + return new JettonDefaultWallet(address); + } + + readonly address: Address; + readonly init?: { code: Cell, data: Cell }; + readonly abi: ContractABI = { + types: JettonDefaultWallet_types, + getters: JettonDefaultWallet_getters, + receivers: JettonDefaultWallet_receivers, + errors: JettonDefaultWallet_errors, + }; + + private constructor(address: Address, init?: { code: Cell, data: Cell }) { + this.address = address; + this.init = init; + } + + async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: TokenTransfer | TokenTransferInternal | TokenBurn) { + + let body: Cell | null = null; + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenTransfer') { + body = beginCell().store(storeTokenTransfer(message)).endCell(); + } + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenTransferInternal') { + body = beginCell().store(storeTokenTransferInternal(message)).endCell(); + } + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenBurn') { + body = beginCell().store(storeTokenBurn(message)).endCell(); + } + if (body === null) { throw new Error('Invalid message type'); } + + await provider.internal(via, { ...args, body: body }); + + } + + async getGetWalletData(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('get_wallet_data', builder.build())).stack; + const result = loadTupleJettonWalletData(source); + return result; + } + +} diff --git a/apps/jetton/src/contract/jetton_SampleJetton.ts b/apps/jetton/src/contract/jetton_SampleJetton.ts new file mode 100644 index 0000000..52337d3 --- /dev/null +++ b/apps/jetton/src/contract/jetton_SampleJetton.ts @@ -0,0 +1,1127 @@ +// @ts-nocheck + +import { + Cell, + Slice, + Address, + Builder, + beginCell, + ComputeError, + TupleItem, + TupleReader, + Dictionary, + contractAddress, + ContractProvider, + Sender, + Contract, + ContractABI, + ABIType, + ABIGetter, + ABIReceiver, + TupleBuilder, + DictionaryValue +} from '@ton/core'; + +export type StateInit = { + $$type: 'StateInit'; + code: Cell; + data: Cell; +} + +export function storeStateInit(src: StateInit) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeRef(src.code); + b_0.storeRef(src.data); + }; +} + +export function loadStateInit(slice: Slice) { + let sc_0 = slice; + let _code = sc_0.loadRef(); + let _data = sc_0.loadRef(); + return { $$type: 'StateInit' as const, code: _code, data: _data }; +} + +function loadTupleStateInit(source: TupleReader) { + let _code = source.readCell(); + let _data = source.readCell(); + return { $$type: 'StateInit' as const, code: _code, data: _data }; +} + +function storeTupleStateInit(source: StateInit) { + let builder = new TupleBuilder(); + builder.writeCell(source.code); + builder.writeCell(source.data); + return builder.build(); +} + +function dictValueParserStateInit(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeStateInit(src)).endCell()); + }, + parse: (src) => { + return loadStateInit(src.loadRef().beginParse()); + } + } +} + +export type Context = { + $$type: 'Context'; + bounced: boolean; + sender: Address; + value: bigint; + raw: Cell; +} + +export function storeContext(src: Context) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeBit(src.bounced); + b_0.storeAddress(src.sender); + b_0.storeInt(src.value, 257); + b_0.storeRef(src.raw); + }; +} + +export function loadContext(slice: Slice) { + let sc_0 = slice; + let _bounced = sc_0.loadBit(); + let _sender = sc_0.loadAddress(); + let _value = sc_0.loadIntBig(257); + let _raw = sc_0.loadRef(); + return { $$type: 'Context' as const, bounced: _bounced, sender: _sender, value: _value, raw: _raw }; +} + +function loadTupleContext(source: TupleReader) { + let _bounced = source.readBoolean(); + let _sender = source.readAddress(); + let _value = source.readBigNumber(); + let _raw = source.readCell(); + return { $$type: 'Context' as const, bounced: _bounced, sender: _sender, value: _value, raw: _raw }; +} + +function storeTupleContext(source: Context) { + let builder = new TupleBuilder(); + builder.writeBoolean(source.bounced); + builder.writeAddress(source.sender); + builder.writeNumber(source.value); + builder.writeSlice(source.raw); + return builder.build(); +} + +function dictValueParserContext(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeContext(src)).endCell()); + }, + parse: (src) => { + return loadContext(src.loadRef().beginParse()); + } + } +} + +export type SendParameters = { + $$type: 'SendParameters'; + bounce: boolean; + to: Address; + value: bigint; + mode: bigint; + body: Cell | null; + code: Cell | null; + data: Cell | null; +} + +export function storeSendParameters(src: SendParameters) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeBit(src.bounce); + b_0.storeAddress(src.to); + b_0.storeInt(src.value, 257); + b_0.storeInt(src.mode, 257); + if (src.body !== null && src.body !== undefined) { b_0.storeBit(true).storeRef(src.body); } else { b_0.storeBit(false); } + if (src.code !== null && src.code !== undefined) { b_0.storeBit(true).storeRef(src.code); } else { b_0.storeBit(false); } + if (src.data !== null && src.data !== undefined) { b_0.storeBit(true).storeRef(src.data); } else { b_0.storeBit(false); } + }; +} + +export function loadSendParameters(slice: Slice) { + let sc_0 = slice; + let _bounce = sc_0.loadBit(); + let _to = sc_0.loadAddress(); + let _value = sc_0.loadIntBig(257); + let _mode = sc_0.loadIntBig(257); + let _body = sc_0.loadBit() ? sc_0.loadRef() : null; + let _code = sc_0.loadBit() ? sc_0.loadRef() : null; + let _data = sc_0.loadBit() ? sc_0.loadRef() : null; + return { $$type: 'SendParameters' as const, bounce: _bounce, to: _to, value: _value, mode: _mode, body: _body, code: _code, data: _data }; +} + +function loadTupleSendParameters(source: TupleReader) { + let _bounce = source.readBoolean(); + let _to = source.readAddress(); + let _value = source.readBigNumber(); + let _mode = source.readBigNumber(); + let _body = source.readCellOpt(); + let _code = source.readCellOpt(); + let _data = source.readCellOpt(); + return { $$type: 'SendParameters' as const, bounce: _bounce, to: _to, value: _value, mode: _mode, body: _body, code: _code, data: _data }; +} + +function storeTupleSendParameters(source: SendParameters) { + let builder = new TupleBuilder(); + builder.writeBoolean(source.bounce); + builder.writeAddress(source.to); + builder.writeNumber(source.value); + builder.writeNumber(source.mode); + builder.writeCell(source.body); + builder.writeCell(source.code); + builder.writeCell(source.data); + return builder.build(); +} + +function dictValueParserSendParameters(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeSendParameters(src)).endCell()); + }, + parse: (src) => { + return loadSendParameters(src.loadRef().beginParse()); + } + } +} + +export type ChangeOwner = { + $$type: 'ChangeOwner'; + queryId: bigint; + newOwner: Address; +} + +export function storeChangeOwner(src: ChangeOwner) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(2174598809, 32); + b_0.storeUint(src.queryId, 64); + b_0.storeAddress(src.newOwner); + }; +} + +export function loadChangeOwner(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 2174598809) { throw Error('Invalid prefix'); } + let _queryId = sc_0.loadUintBig(64); + let _newOwner = sc_0.loadAddress(); + return { $$type: 'ChangeOwner' as const, queryId: _queryId, newOwner: _newOwner }; +} + +function loadTupleChangeOwner(source: TupleReader) { + let _queryId = source.readBigNumber(); + let _newOwner = source.readAddress(); + return { $$type: 'ChangeOwner' as const, queryId: _queryId, newOwner: _newOwner }; +} + +function storeTupleChangeOwner(source: ChangeOwner) { + let builder = new TupleBuilder(); + builder.writeNumber(source.queryId); + builder.writeAddress(source.newOwner); + return builder.build(); +} + +function dictValueParserChangeOwner(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeChangeOwner(src)).endCell()); + }, + parse: (src) => { + return loadChangeOwner(src.loadRef().beginParse()); + } + } +} + +export type ChangeOwnerOk = { + $$type: 'ChangeOwnerOk'; + queryId: bigint; + newOwner: Address; +} + +export function storeChangeOwnerOk(src: ChangeOwnerOk) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(846932810, 32); + b_0.storeUint(src.queryId, 64); + b_0.storeAddress(src.newOwner); + }; +} + +export function loadChangeOwnerOk(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 846932810) { throw Error('Invalid prefix'); } + let _queryId = sc_0.loadUintBig(64); + let _newOwner = sc_0.loadAddress(); + return { $$type: 'ChangeOwnerOk' as const, queryId: _queryId, newOwner: _newOwner }; +} + +function loadTupleChangeOwnerOk(source: TupleReader) { + let _queryId = source.readBigNumber(); + let _newOwner = source.readAddress(); + return { $$type: 'ChangeOwnerOk' as const, queryId: _queryId, newOwner: _newOwner }; +} + +function storeTupleChangeOwnerOk(source: ChangeOwnerOk) { + let builder = new TupleBuilder(); + builder.writeNumber(source.queryId); + builder.writeAddress(source.newOwner); + return builder.build(); +} + +function dictValueParserChangeOwnerOk(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeChangeOwnerOk(src)).endCell()); + }, + parse: (src) => { + return loadChangeOwnerOk(src.loadRef().beginParse()); + } + } +} + +export type JettonData = { + $$type: 'JettonData'; + total_supply: bigint; + mintable: boolean; + owner: Address; + content: Cell; + wallet_code: Cell; +} + +export function storeJettonData(src: JettonData) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeInt(src.total_supply, 257); + b_0.storeBit(src.mintable); + b_0.storeAddress(src.owner); + b_0.storeRef(src.content); + b_0.storeRef(src.wallet_code); + }; +} + +export function loadJettonData(slice: Slice) { + let sc_0 = slice; + let _total_supply = sc_0.loadIntBig(257); + let _mintable = sc_0.loadBit(); + let _owner = sc_0.loadAddress(); + let _content = sc_0.loadRef(); + let _wallet_code = sc_0.loadRef(); + return { $$type: 'JettonData' as const, total_supply: _total_supply, mintable: _mintable, owner: _owner, content: _content, wallet_code: _wallet_code }; +} + +function loadTupleJettonData(source: TupleReader) { + let _total_supply = source.readBigNumber(); + let _mintable = source.readBoolean(); + let _owner = source.readAddress(); + let _content = source.readCell(); + let _wallet_code = source.readCell(); + return { $$type: 'JettonData' as const, total_supply: _total_supply, mintable: _mintable, owner: _owner, content: _content, wallet_code: _wallet_code }; +} + +function storeTupleJettonData(source: JettonData) { + let builder = new TupleBuilder(); + builder.writeNumber(source.total_supply); + builder.writeBoolean(source.mintable); + builder.writeAddress(source.owner); + builder.writeCell(source.content); + builder.writeCell(source.wallet_code); + return builder.build(); +} + +function dictValueParserJettonData(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeJettonData(src)).endCell()); + }, + parse: (src) => { + return loadJettonData(src.loadRef().beginParse()); + } + } +} + +export type JettonWalletData = { + $$type: 'JettonWalletData'; + balance: bigint; + owner: Address; + master: Address; + code: Cell; +} + +export function storeJettonWalletData(src: JettonWalletData) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeInt(src.balance, 257); + b_0.storeAddress(src.owner); + b_0.storeAddress(src.master); + b_0.storeRef(src.code); + }; +} + +export function loadJettonWalletData(slice: Slice) { + let sc_0 = slice; + let _balance = sc_0.loadIntBig(257); + let _owner = sc_0.loadAddress(); + let _master = sc_0.loadAddress(); + let _code = sc_0.loadRef(); + return { $$type: 'JettonWalletData' as const, balance: _balance, owner: _owner, master: _master, code: _code }; +} + +function loadTupleJettonWalletData(source: TupleReader) { + let _balance = source.readBigNumber(); + let _owner = source.readAddress(); + let _master = source.readAddress(); + let _code = source.readCell(); + return { $$type: 'JettonWalletData' as const, balance: _balance, owner: _owner, master: _master, code: _code }; +} + +function storeTupleJettonWalletData(source: JettonWalletData) { + let builder = new TupleBuilder(); + builder.writeNumber(source.balance); + builder.writeAddress(source.owner); + builder.writeAddress(source.master); + builder.writeCell(source.code); + return builder.build(); +} + +function dictValueParserJettonWalletData(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeJettonWalletData(src)).endCell()); + }, + parse: (src) => { + return loadJettonWalletData(src.loadRef().beginParse()); + } + } +} + +export type TokenTransfer = { + $$type: 'TokenTransfer'; + query_id: bigint; + amount: bigint; + sender: Address; + response_destination: Address | null; + custom_payload: Cell | null; + forward_ton_amount: bigint; + forward_payload: Cell; +} + +export function storeTokenTransfer(src: TokenTransfer) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(260734629, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.sender); + b_0.storeAddress(src.response_destination); + if (src.custom_payload !== null && src.custom_payload !== undefined) { b_0.storeBit(true).storeRef(src.custom_payload); } else { b_0.storeBit(false); } + b_0.storeCoins(src.forward_ton_amount); + b_0.storeBuilder(src.forward_payload.asBuilder()); + }; +} + +export function loadTokenTransfer(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 260734629) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _sender = sc_0.loadAddress(); + let _response_destination = sc_0.loadMaybeAddress(); + let _custom_payload = sc_0.loadBit() ? sc_0.loadRef() : null; + let _forward_ton_amount = sc_0.loadCoins(); + let _forward_payload = sc_0.asCell(); + return { $$type: 'TokenTransfer' as const, query_id: _query_id, amount: _amount, sender: _sender, response_destination: _response_destination, custom_payload: _custom_payload, forward_ton_amount: _forward_ton_amount, forward_payload: _forward_payload }; +} + +function loadTupleTokenTransfer(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _sender = source.readAddress(); + let _response_destination = source.readAddressOpt(); + let _custom_payload = source.readCellOpt(); + let _forward_ton_amount = source.readBigNumber(); + let _forward_payload = source.readCell(); + return { $$type: 'TokenTransfer' as const, query_id: _query_id, amount: _amount, sender: _sender, response_destination: _response_destination, custom_payload: _custom_payload, forward_ton_amount: _forward_ton_amount, forward_payload: _forward_payload }; +} + +function storeTupleTokenTransfer(source: TokenTransfer) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.sender); + builder.writeAddress(source.response_destination); + builder.writeCell(source.custom_payload); + builder.writeNumber(source.forward_ton_amount); + builder.writeSlice(source.forward_payload); + return builder.build(); +} + +function dictValueParserTokenTransfer(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenTransfer(src)).endCell()); + }, + parse: (src) => { + return loadTokenTransfer(src.loadRef().beginParse()); + } + } +} + +export type TokenTransferInternal = { + $$type: 'TokenTransferInternal'; + query_id: bigint; + amount: bigint; + from: Address; + response_destination: Address | null; + forward_ton_amount: bigint; + forward_payload: Cell; +} + +export function storeTokenTransferInternal(src: TokenTransferInternal) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(395134233, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.from); + b_0.storeAddress(src.response_destination); + b_0.storeCoins(src.forward_ton_amount); + b_0.storeBuilder(src.forward_payload.asBuilder()); + }; +} + +export function loadTokenTransferInternal(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 395134233) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _from = sc_0.loadAddress(); + let _response_destination = sc_0.loadMaybeAddress(); + let _forward_ton_amount = sc_0.loadCoins(); + let _forward_payload = sc_0.asCell(); + return { $$type: 'TokenTransferInternal' as const, query_id: _query_id, amount: _amount, from: _from, response_destination: _response_destination, forward_ton_amount: _forward_ton_amount, forward_payload: _forward_payload }; +} + +function loadTupleTokenTransferInternal(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _from = source.readAddress(); + let _response_destination = source.readAddressOpt(); + let _forward_ton_amount = source.readBigNumber(); + let _forward_payload = source.readCell(); + return { $$type: 'TokenTransferInternal' as const, query_id: _query_id, amount: _amount, from: _from, response_destination: _response_destination, forward_ton_amount: _forward_ton_amount, forward_payload: _forward_payload }; +} + +function storeTupleTokenTransferInternal(source: TokenTransferInternal) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.from); + builder.writeAddress(source.response_destination); + builder.writeNumber(source.forward_ton_amount); + builder.writeSlice(source.forward_payload); + return builder.build(); +} + +function dictValueParserTokenTransferInternal(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenTransferInternal(src)).endCell()); + }, + parse: (src) => { + return loadTokenTransferInternal(src.loadRef().beginParse()); + } + } +} + +export type TokenNotification = { + $$type: 'TokenNotification'; + query_id: bigint; + amount: bigint; + from: Address; + forward_payload: Cell; +} + +export function storeTokenNotification(src: TokenNotification) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(1935855772, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.from); + b_0.storeBuilder(src.forward_payload.asBuilder()); + }; +} + +export function loadTokenNotification(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 1935855772) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _from = sc_0.loadAddress(); + let _forward_payload = sc_0.asCell(); + return { $$type: 'TokenNotification' as const, query_id: _query_id, amount: _amount, from: _from, forward_payload: _forward_payload }; +} + +function loadTupleTokenNotification(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _from = source.readAddress(); + let _forward_payload = source.readCell(); + return { $$type: 'TokenNotification' as const, query_id: _query_id, amount: _amount, from: _from, forward_payload: _forward_payload }; +} + +function storeTupleTokenNotification(source: TokenNotification) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.from); + builder.writeSlice(source.forward_payload); + return builder.build(); +} + +function dictValueParserTokenNotification(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenNotification(src)).endCell()); + }, + parse: (src) => { + return loadTokenNotification(src.loadRef().beginParse()); + } + } +} + +export type TokenBurn = { + $$type: 'TokenBurn'; + query_id: bigint; + amount: bigint; + response_destination: Address | null; + custom_payload: Cell | null; +} + +export function storeTokenBurn(src: TokenBurn) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(1499400124, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.response_destination); + if (src.custom_payload !== null && src.custom_payload !== undefined) { b_0.storeBit(true).storeRef(src.custom_payload); } else { b_0.storeBit(false); } + }; +} + +export function loadTokenBurn(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 1499400124) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _response_destination = sc_0.loadMaybeAddress(); + let _custom_payload = sc_0.loadBit() ? sc_0.loadRef() : null; + return { $$type: 'TokenBurn' as const, query_id: _query_id, amount: _amount, response_destination: _response_destination, custom_payload: _custom_payload }; +} + +function loadTupleTokenBurn(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _response_destination = source.readAddressOpt(); + let _custom_payload = source.readCellOpt(); + return { $$type: 'TokenBurn' as const, query_id: _query_id, amount: _amount, response_destination: _response_destination, custom_payload: _custom_payload }; +} + +function storeTupleTokenBurn(source: TokenBurn) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.response_destination); + builder.writeCell(source.custom_payload); + return builder.build(); +} + +function dictValueParserTokenBurn(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenBurn(src)).endCell()); + }, + parse: (src) => { + return loadTokenBurn(src.loadRef().beginParse()); + } + } +} + +export type TokenBurnNotification = { + $$type: 'TokenBurnNotification'; + query_id: bigint; + amount: bigint; + sender: Address; + response_destination: Address | null; +} + +export function storeTokenBurnNotification(src: TokenBurnNotification) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(2078119902, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeCoins(src.amount); + b_0.storeAddress(src.sender); + b_0.storeAddress(src.response_destination); + }; +} + +export function loadTokenBurnNotification(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 2078119902) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _amount = sc_0.loadCoins(); + let _sender = sc_0.loadAddress(); + let _response_destination = sc_0.loadMaybeAddress(); + return { $$type: 'TokenBurnNotification' as const, query_id: _query_id, amount: _amount, sender: _sender, response_destination: _response_destination }; +} + +function loadTupleTokenBurnNotification(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _amount = source.readBigNumber(); + let _sender = source.readAddress(); + let _response_destination = source.readAddressOpt(); + return { $$type: 'TokenBurnNotification' as const, query_id: _query_id, amount: _amount, sender: _sender, response_destination: _response_destination }; +} + +function storeTupleTokenBurnNotification(source: TokenBurnNotification) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeNumber(source.amount); + builder.writeAddress(source.sender); + builder.writeAddress(source.response_destination); + return builder.build(); +} + +function dictValueParserTokenBurnNotification(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenBurnNotification(src)).endCell()); + }, + parse: (src) => { + return loadTokenBurnNotification(src.loadRef().beginParse()); + } + } +} + +export type TokenExcesses = { + $$type: 'TokenExcesses'; + query_id: bigint; +} + +export function storeTokenExcesses(src: TokenExcesses) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3576854235, 32); + b_0.storeUint(src.query_id, 64); + }; +} + +export function loadTokenExcesses(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3576854235) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + return { $$type: 'TokenExcesses' as const, query_id: _query_id }; +} + +function loadTupleTokenExcesses(source: TupleReader) { + let _query_id = source.readBigNumber(); + return { $$type: 'TokenExcesses' as const, query_id: _query_id }; +} + +function storeTupleTokenExcesses(source: TokenExcesses) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + return builder.build(); +} + +function dictValueParserTokenExcesses(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenExcesses(src)).endCell()); + }, + parse: (src) => { + return loadTokenExcesses(src.loadRef().beginParse()); + } + } +} + +export type TokenUpdateContent = { + $$type: 'TokenUpdateContent'; + content: Cell; +} + +export function storeTokenUpdateContent(src: TokenUpdateContent) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(2937889386, 32); + b_0.storeRef(src.content); + }; +} + +export function loadTokenUpdateContent(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 2937889386) { throw Error('Invalid prefix'); } + let _content = sc_0.loadRef(); + return { $$type: 'TokenUpdateContent' as const, content: _content }; +} + +function loadTupleTokenUpdateContent(source: TupleReader) { + let _content = source.readCell(); + return { $$type: 'TokenUpdateContent' as const, content: _content }; +} + +function storeTupleTokenUpdateContent(source: TokenUpdateContent) { + let builder = new TupleBuilder(); + builder.writeCell(source.content); + return builder.build(); +} + +function dictValueParserTokenUpdateContent(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTokenUpdateContent(src)).endCell()); + }, + parse: (src) => { + return loadTokenUpdateContent(src.loadRef().beginParse()); + } + } +} + +export type ProvideWalletAddress = { + $$type: 'ProvideWalletAddress'; + query_id: bigint; + owner_address: Address; + include_address: boolean; +} + +export function storeProvideWalletAddress(src: ProvideWalletAddress) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(745978227, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeAddress(src.owner_address); + b_0.storeBit(src.include_address); + }; +} + +export function loadProvideWalletAddress(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 745978227) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _owner_address = sc_0.loadAddress(); + let _include_address = sc_0.loadBit(); + return { $$type: 'ProvideWalletAddress' as const, query_id: _query_id, owner_address: _owner_address, include_address: _include_address }; +} + +function loadTupleProvideWalletAddress(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _owner_address = source.readAddress(); + let _include_address = source.readBoolean(); + return { $$type: 'ProvideWalletAddress' as const, query_id: _query_id, owner_address: _owner_address, include_address: _include_address }; +} + +function storeTupleProvideWalletAddress(source: ProvideWalletAddress) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeAddress(source.owner_address); + builder.writeBoolean(source.include_address); + return builder.build(); +} + +function dictValueParserProvideWalletAddress(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeProvideWalletAddress(src)).endCell()); + }, + parse: (src) => { + return loadProvideWalletAddress(src.loadRef().beginParse()); + } + } +} + +export type TakeWalletAddress = { + $$type: 'TakeWalletAddress'; + query_id: bigint; + wallet_address: Address; + owner_address: Cell; +} + +export function storeTakeWalletAddress(src: TakeWalletAddress) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(3513996288, 32); + b_0.storeUint(src.query_id, 64); + b_0.storeAddress(src.wallet_address); + b_0.storeBuilder(src.owner_address.asBuilder()); + }; +} + +export function loadTakeWalletAddress(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 3513996288) { throw Error('Invalid prefix'); } + let _query_id = sc_0.loadUintBig(64); + let _wallet_address = sc_0.loadAddress(); + let _owner_address = sc_0.asCell(); + return { $$type: 'TakeWalletAddress' as const, query_id: _query_id, wallet_address: _wallet_address, owner_address: _owner_address }; +} + +function loadTupleTakeWalletAddress(source: TupleReader) { + let _query_id = source.readBigNumber(); + let _wallet_address = source.readAddress(); + let _owner_address = source.readCell(); + return { $$type: 'TakeWalletAddress' as const, query_id: _query_id, wallet_address: _wallet_address, owner_address: _owner_address }; +} + +function storeTupleTakeWalletAddress(source: TakeWalletAddress) { + let builder = new TupleBuilder(); + builder.writeNumber(source.query_id); + builder.writeAddress(source.wallet_address); + builder.writeSlice(source.owner_address); + return builder.build(); +} + +function dictValueParserTakeWalletAddress(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeTakeWalletAddress(src)).endCell()); + }, + parse: (src) => { + return loadTakeWalletAddress(src.loadRef().beginParse()); + } + } +} + +export type Mint = { + $$type: 'Mint'; + amount: bigint; + receiver: Address; +} + +export function storeMint(src: Mint) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeUint(4235234258, 32); + b_0.storeInt(src.amount, 257); + b_0.storeAddress(src.receiver); + }; +} + +export function loadMint(slice: Slice) { + let sc_0 = slice; + if (sc_0.loadUint(32) !== 4235234258) { throw Error('Invalid prefix'); } + let _amount = sc_0.loadIntBig(257); + let _receiver = sc_0.loadAddress(); + return { $$type: 'Mint' as const, amount: _amount, receiver: _receiver }; +} + +function loadTupleMint(source: TupleReader) { + let _amount = source.readBigNumber(); + let _receiver = source.readAddress(); + return { $$type: 'Mint' as const, amount: _amount, receiver: _receiver }; +} + +function storeTupleMint(source: Mint) { + let builder = new TupleBuilder(); + builder.writeNumber(source.amount); + builder.writeAddress(source.receiver); + return builder.build(); +} + +function dictValueParserMint(): DictionaryValue { + return { + serialize: (src, buidler) => { + buidler.storeRef(beginCell().store(storeMint(src)).endCell()); + }, + parse: (src) => { + return loadMint(src.loadRef().beginParse()); + } + } +} + +type SampleJetton_init_args = { + $$type: 'SampleJetton_init_args'; + owner: Address; + content: Cell; + max_supply: bigint; +} + +function initSampleJetton_init_args(src: SampleJetton_init_args) { + return (builder: Builder) => { + let b_0 = builder; + b_0.storeAddress(src.owner); + b_0.storeRef(src.content); + b_0.storeInt(src.max_supply, 257); + }; +} + +async function SampleJetton_init(owner: Address, content: Cell, max_supply: bigint) { + const __code = Cell.fromBase64('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'); + const __system = Cell.fromBase64('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'); + let builder = beginCell(); + builder.storeRef(__system); + builder.storeUint(0, 1); + initSampleJetton_init_args({ $$type: 'SampleJetton_init_args', owner, content, max_supply })(builder); + const __data = builder.endCell(); + return { code: __code, data: __data }; +} + +const SampleJetton_errors: { [key: number]: { message: string } } = { + 2: { message: `Stack undeflow` }, + 3: { message: `Stack overflow` }, + 4: { message: `Integer overflow` }, + 5: { message: `Integer out of expected range` }, + 6: { message: `Invalid opcode` }, + 7: { message: `Type check error` }, + 8: { message: `Cell overflow` }, + 9: { message: `Cell underflow` }, + 10: { message: `Dictionary error` }, + 13: { message: `Out of gas error` }, + 32: { message: `Method ID not found` }, + 34: { message: `Action is invalid or not supported` }, + 37: { message: `Not enough TON` }, + 38: { message: `Not enough extra-currencies` }, + 128: { message: `Null reference exception` }, + 129: { message: `Invalid serialization prefix` }, + 130: { message: `Invalid incoming message` }, + 131: { message: `Constraints error` }, + 132: { message: `Access denied` }, + 133: { message: `Contract stopped` }, + 134: { message: `Invalid argument` }, + 135: { message: `Code of a contract was not found` }, + 136: { message: `Invalid address` }, + 137: { message: `Masterchain support is not enabled for this contract` }, + 3688: { message: `Not mintable` }, + 4429: { message: `Invalid sender` }, + 12241: { message: `Max supply exceeded` }, + 14534: { message: `Not owner` }, + 16059: { message: `Invalid value` }, + 18668: { message: `Can't Mint Anymore` }, + 23951: { message: `Insufficient gas` }, + 42708: { message: `Invalid sender!` }, + 43422: { message: `Invalid value - Burn` }, + 62972: { message: `Invalid balance` }, +} + +const SampleJetton_types: ABIType[] = [ + {"name":"StateInit","header":null,"fields":[{"name":"code","type":{"kind":"simple","type":"cell","optional":false}},{"name":"data","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"Context","header":null,"fields":[{"name":"bounced","type":{"kind":"simple","type":"bool","optional":false}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"raw","type":{"kind":"simple","type":"slice","optional":false}}]}, + {"name":"SendParameters","header":null,"fields":[{"name":"bounce","type":{"kind":"simple","type":"bool","optional":false}},{"name":"to","type":{"kind":"simple","type":"address","optional":false}},{"name":"value","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mode","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"body","type":{"kind":"simple","type":"cell","optional":true}},{"name":"code","type":{"kind":"simple","type":"cell","optional":true}},{"name":"data","type":{"kind":"simple","type":"cell","optional":true}}]}, + {"name":"ChangeOwner","header":2174598809,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"newOwner","type":{"kind":"simple","type":"address","optional":false}}]}, + {"name":"ChangeOwnerOk","header":846932810,"fields":[{"name":"queryId","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"newOwner","type":{"kind":"simple","type":"address","optional":false}}]}, + {"name":"JettonData","header":null,"fields":[{"name":"total_supply","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"mintable","type":{"kind":"simple","type":"bool","optional":false}},{"name":"owner","type":{"kind":"simple","type":"address","optional":false}},{"name":"content","type":{"kind":"simple","type":"cell","optional":false}},{"name":"wallet_code","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"JettonWalletData","header":null,"fields":[{"name":"balance","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"owner","type":{"kind":"simple","type":"address","optional":false}},{"name":"master","type":{"kind":"simple","type":"address","optional":false}},{"name":"code","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"TokenTransfer","header":260734629,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"response_destination","type":{"kind":"simple","type":"address","optional":true}},{"name":"custom_payload","type":{"kind":"simple","type":"cell","optional":true}},{"name":"forward_ton_amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"forward_payload","type":{"kind":"simple","type":"slice","optional":false,"format":"remainder"}}]}, + {"name":"TokenTransferInternal","header":395134233,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"from","type":{"kind":"simple","type":"address","optional":false}},{"name":"response_destination","type":{"kind":"simple","type":"address","optional":true}},{"name":"forward_ton_amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"forward_payload","type":{"kind":"simple","type":"slice","optional":false,"format":"remainder"}}]}, + {"name":"TokenNotification","header":1935855772,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"from","type":{"kind":"simple","type":"address","optional":false}},{"name":"forward_payload","type":{"kind":"simple","type":"slice","optional":false,"format":"remainder"}}]}, + {"name":"TokenBurn","header":1499400124,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"response_destination","type":{"kind":"simple","type":"address","optional":true}},{"name":"custom_payload","type":{"kind":"simple","type":"cell","optional":true}}]}, + {"name":"TokenBurnNotification","header":2078119902,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"amount","type":{"kind":"simple","type":"uint","optional":false,"format":"coins"}},{"name":"sender","type":{"kind":"simple","type":"address","optional":false}},{"name":"response_destination","type":{"kind":"simple","type":"address","optional":true}}]}, + {"name":"TokenExcesses","header":3576854235,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}}]}, + {"name":"TokenUpdateContent","header":2937889386,"fields":[{"name":"content","type":{"kind":"simple","type":"cell","optional":false}}]}, + {"name":"ProvideWalletAddress","header":745978227,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"owner_address","type":{"kind":"simple","type":"address","optional":false}},{"name":"include_address","type":{"kind":"simple","type":"bool","optional":false}}]}, + {"name":"TakeWalletAddress","header":3513996288,"fields":[{"name":"query_id","type":{"kind":"simple","type":"uint","optional":false,"format":64}},{"name":"wallet_address","type":{"kind":"simple","type":"address","optional":false}},{"name":"owner_address","type":{"kind":"simple","type":"slice","optional":false,"format":"remainder"}}]}, + {"name":"Mint","header":4235234258,"fields":[{"name":"amount","type":{"kind":"simple","type":"int","optional":false,"format":257}},{"name":"receiver","type":{"kind":"simple","type":"address","optional":false}}]}, +] + +const SampleJetton_getters: ABIGetter[] = [ + {"name":"get_jetton_data","arguments":[],"returnType":{"kind":"simple","type":"JettonData","optional":false}}, + {"name":"get_wallet_address","arguments":[{"name":"owner","type":{"kind":"simple","type":"address","optional":false}}],"returnType":{"kind":"simple","type":"address","optional":false}}, + {"name":"owner","arguments":[],"returnType":{"kind":"simple","type":"address","optional":false}}, +] + +const SampleJetton_receivers: ABIReceiver[] = [ + {"receiver":"internal","message":{"kind":"typed","type":"Mint"}}, + {"receiver":"internal","message":{"kind":"text","text":"Mint: 100"}}, + {"receiver":"internal","message":{"kind":"text","text":"Owner: MintClose"}}, + {"receiver":"internal","message":{"kind":"typed","type":"TokenUpdateContent"}}, + {"receiver":"internal","message":{"kind":"typed","type":"TokenBurnNotification"}}, + {"receiver":"internal","message":{"kind":"typed","type":"ProvideWalletAddress"}}, +] + +export class SampleJetton implements Contract { + + static async init(owner: Address, content: Cell, max_supply: bigint) { + return await SampleJetton_init(owner, content, max_supply); + } + + static async fromInit(owner: Address, content: Cell, max_supply: bigint) { + const init = await SampleJetton_init(owner, content, max_supply); + const address = contractAddress(0, init); + return new SampleJetton(address, init); + } + + static fromAddress(address: Address) { + return new SampleJetton(address); + } + + readonly address: Address; + readonly init?: { code: Cell, data: Cell }; + readonly abi: ContractABI = { + types: SampleJetton_types, + getters: SampleJetton_getters, + receivers: SampleJetton_receivers, + errors: SampleJetton_errors, + }; + + private constructor(address: Address, init?: { code: Cell, data: Cell }) { + this.address = address; + this.init = init; + } + + async send(provider: ContractProvider, via: Sender, args: { value: bigint, bounce?: boolean| null | undefined }, message: Mint | 'Mint: 100' | 'Owner: MintClose' | TokenUpdateContent | TokenBurnNotification | ProvideWalletAddress) { + + let body: Cell | null = null; + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'Mint') { + body = beginCell().store(storeMint(message)).endCell(); + } + if (message === 'Mint: 100') { + body = beginCell().storeUint(0, 32).storeStringTail(message).endCell(); + } + if (message === 'Owner: MintClose') { + body = beginCell().storeUint(0, 32).storeStringTail(message).endCell(); + } + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenUpdateContent') { + body = beginCell().store(storeTokenUpdateContent(message)).endCell(); + } + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'TokenBurnNotification') { + body = beginCell().store(storeTokenBurnNotification(message)).endCell(); + } + if (message && typeof message === 'object' && !(message instanceof Slice) && message.$$type === 'ProvideWalletAddress') { + body = beginCell().store(storeProvideWalletAddress(message)).endCell(); + } + if (body === null) { throw new Error('Invalid message type'); } + + await provider.internal(via, { ...args, body: body }); + + } + + async getGetJettonData(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('get_jetton_data', builder.build())).stack; + const result = loadTupleJettonData(source); + return result; + } + + async getGetWalletAddress(provider: ContractProvider, owner: Address) { + let builder = new TupleBuilder(); + builder.writeAddress(owner); + let source = (await provider.get('get_wallet_address', builder.build())).stack; + let result = source.readAddress(); + return result; + } + + async getOwner(provider: ContractProvider) { + let builder = new TupleBuilder(); + let source = (await provider.get('owner', builder.build())).stack; + let result = source.readAddress(); + return result; + } + +} diff --git a/apps/jetton/src/contract/messages.tact b/apps/jetton/src/contract/messages.tact new file mode 100644 index 0000000..5023308 --- /dev/null +++ b/apps/jetton/src/contract/messages.tact @@ -0,0 +1,77 @@ +struct JettonData { + total_supply: Int; + mintable: Bool; + owner: Address; + content: Cell; + wallet_code: Cell; +} + +struct JettonWalletData { + balance: Int; + owner: Address; + master: Address; + code: Cell; +} + +message(0xf8a7ea5) TokenTransfer { + query_id: Int as uint64; + amount: Int as coins; + sender: Address; + response_destination: Address?; + custom_payload: Cell?; + forward_ton_amount: Int as coins; + forward_payload: Slice as remaining; +} + +message(0x178d4519) TokenTransferInternal { + query_id: Int as uint64; + amount: Int as coins; + from: Address; + response_destination: Address?; + forward_ton_amount: Int as coins; + forward_payload: Slice as remaining; +} + +message(0x7362d09c) TokenNotification { + query_id: Int as uint64; + amount: Int as coins; + from: Address; + forward_payload: Slice as remaining; +} + +message(0x595f07bc) TokenBurn { + query_id: Int as uint64; + amount: Int as coins; + response_destination: Address?; + custom_payload: Cell?; +} + +message(0x7bdd97de) TokenBurnNotification { + query_id: Int as uint64; + amount: Int as coins; + sender: Address; + response_destination: Address?; +} + +message(0xd53276db) TokenExcesses { + query_id: Int as uint64; +} + +message TokenUpdateContent { + content: Cell; +} + +// ==== TEP89: Jetton Wallet Discovery ==== +message(0x2c76b973) ProvideWalletAddress { + query_id: Int as uint64; + owner_address: Address; + include_address: Bool; +} + +// take_wallet_address#d1735400 +// query_id:uint64 wallet_address:MsgAddress owner_address:(Maybe ^MsgAddress) = InternalMsgBody; +message(0xd1735400) TakeWalletAddress { + query_id: Int as uint64; + wallet_address: Address; + owner_address: Slice as remaining; +} diff --git a/apps/jetton/src/index.css b/apps/jetton/src/index.css new file mode 100644 index 0000000..7e3e5f9 --- /dev/null +++ b/apps/jetton/src/index.css @@ -0,0 +1,89 @@ +* { + box-sizing: border-box; +} + +:root { + --primary-color: rgba(255, 255, 255, 0.87); + --hover-color: #747bff; + --focus-color: #646cff; + --bg-color: #242424; + --bg-secondary: #1a1a1a; + --stroke-primary: #2d2d32; + + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: var(--primary-color); + background-color: var(--bg-color); + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + text-decoration: inherit; + color: var(--primary-color); + transition: color 0.15s; +} + +a:hover{ + color: var(--hover-color); +} + +body { + margin: 0; +} + +h1 { + font-size: 1.8em; + line-height: 1.1; +} + +h4 { + font-size: 18px; + margin: 0; +} + +@media (min-width: 768px) { + h1 { + font-size: 2.4em; + } + + h4 { + font-size: 28px; + } +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: var(--bg-secondary); + cursor: pointer; + transition: border-color 0.25s; + white-space: nowrap; +} +button:hover { + border-color: var(--focus-color); +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + --primary-color: #213547; + --bg-color: #ffffff; + --bg-secondary: #f9f9f9; + --stroke-primary: #dde3e6; + } +} diff --git a/apps/jetton/src/main.tsx b/apps/jetton/src/main.tsx new file mode 100644 index 0000000..f02e9ee --- /dev/null +++ b/apps/jetton/src/main.tsx @@ -0,0 +1,7 @@ +import { createRoot } from 'react-dom/client'; +import App from './App.tsx'; +import './index.css'; + +createRoot(document.getElementById('root')!).render( + +); diff --git a/apps/jetton/src/stores/use-contract.tsx b/apps/jetton/src/stores/use-contract.tsx new file mode 100644 index 0000000..4484c02 --- /dev/null +++ b/apps/jetton/src/stores/use-contract.tsx @@ -0,0 +1,106 @@ +import { useEffect, useState } from 'react'; +import { parseTon, getJettonDeployArguments } from '@fotonjs/core'; + +import { contractClient, publicClient } from '../ton-clients.ts'; + +const LS_KEY = 'jetton-contract-address'; + +export const useContract = (userAddress?: string) => { + const [loading, setLoading] = useState(false); + const [contractAddress, setContractAddress] = useState(localStorage.getItem(LS_KEY) || undefined); + const [counterOwner, setCounterOwner] = useState(undefined); + + const setAddress = (address: string) => { + localStorage.setItem(LS_KEY, address); + setContractAddress(address); + }; + + // Set contract address for the contractClient on initial render + useEffect(() => { + contractClient.setAddress(contractAddress); + }, []); + + // Subscribe to the counter state with interval + // useEffect(() => { + // getCounterAmount(); + // + // const interval = setInterval(getCounterAmount, 5000); + // return () => clearInterval(interval); + // }, [contractAddress]); + + // const getCounterAmount = async () => { + // if (!contractAddress) return; + // + // const res = await contractClient.read({ + // getter: 'owner', + // arguments: [], + // }); + // if (res.data) { + // setCounterOwner(res.data); + // } + // }; + + const onDeploy = async () => { + const data = getJettonDeployArguments({ + owner: userAddress!, + maxSupply: 21000000n, + content: { + name: 'Foton', + symbol: 'FTN', + description: 'Foton token', + }, + }); + + const res = await contractClient.deploy({ + value: parseTon('0.05'), + arguments: data, + payload: undefined, + }); + + if (res.data) { + setAddress(res.data.address); + } else { + alert(res.error.message); + } + }; + + const onMint = async () => { + if (!contractAddress) return; + + setLoading(true); + const res = await contractClient.write({ + method: 'Mint', + value: parseTon('0.05'), + payload: { + amount: 100n, + receiver: userAddress!, + }, + }); + if (res.data) { + await publicClient.waitForTransaction({ hash: res.data }); + } else { + alert(res.error?.message || ''); + } + setLoading(false); + }; + + const deployButton = ( + + ); + + const mintButton = ( + <> + + + ); + + return { + contractAddress, + deployButton, + mintButton, + }; +}; diff --git a/apps/jetton/src/stores/user-store.ts b/apps/jetton/src/stores/user-store.ts new file mode 100644 index 0000000..1e5ce52 --- /dev/null +++ b/apps/jetton/src/stores/user-store.ts @@ -0,0 +1,40 @@ +import { create } from 'zustand'; +import { walletClient } from '../ton-clients.ts'; + +export interface UserStore { + address: string | undefined; + loading: boolean; + connect: () => Promise; + disconnect: () => Promise; + monitorAuth: VoidFunction; + activeSection: 'create' | 'minters' | 'manage'; + changeSection: (section: 'create' | 'minters' | 'manage') => void; +} + +export const useUserStore = create()((set) => ({ + address: undefined, + loading: false, + activeSection: 'create', + connect: async () => { + set({ loading: true }); + await walletClient.connect(); + set({ loading: false }); + }, + disconnect: async () => { + set({ loading: true }); + await walletClient.disconnect(); + set({ loading: false, activeSection: 'create' }); + }, + monitorAuth: () => { + walletClient.connection.onStatusChange((wallet) => { + if (wallet) { + set({ address: wallet.account.address }); + } else { + set({ address: undefined }); + } + }); + }, + changeSection: (section) => { + set({ activeSection: section }); + }, +})); diff --git a/apps/jetton/src/ton-clients.ts b/apps/jetton/src/ton-clients.ts new file mode 100644 index 0000000..930450c --- /dev/null +++ b/apps/jetton/src/ton-clients.ts @@ -0,0 +1,20 @@ +import { createWalletClientUI, createPublicClient, createContractClient } from '@fotonjs/core'; +import { SampleJetton } from './contract'; +import { API_KEY } from './utils/constants.ts'; + +export const walletClient = createWalletClientUI({ + chain: 'testnet', + manifestUrl: 'https://counter.foton.sh/tonconnect-manifest.json', + restoreConnection: true, +}); + +export const publicClient = createPublicClient({ + api: 'testnet', + authToken: API_KEY || undefined, +}); + +export const contractClient = createContractClient({ + contract: SampleJetton, + publicClient, + walletClient, +}); diff --git a/apps/jetton/src/utils/constants.ts b/apps/jetton/src/utils/constants.ts new file mode 100644 index 0000000..d2bfbbe --- /dev/null +++ b/apps/jetton/src/utils/constants.ts @@ -0,0 +1,3 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck +export const API_KEY = import.meta.env.VITE_API_KEY; diff --git a/apps/jetton/src/utils/shortenAddress.ts b/apps/jetton/src/utils/shortenAddress.ts new file mode 100644 index 0000000..f0d02df --- /dev/null +++ b/apps/jetton/src/utils/shortenAddress.ts @@ -0,0 +1,4 @@ +export const shortenAddress = (address?: string) => { + if (!address) return ''; + return address.slice(0, 5) + '...' + (address || '').slice(-3); +}; diff --git a/apps/jetton/src/vite-env.d.ts b/apps/jetton/src/vite-env.d.ts new file mode 100644 index 0000000..73162f0 --- /dev/null +++ b/apps/jetton/src/vite-env.d.ts @@ -0,0 +1,9 @@ +/// + +interface ImportMetaEnv { + readonly VITE_API_KEY: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/apps/jetton/tact.config.json b/apps/jetton/tact.config.json new file mode 100644 index 0000000..a9d3cf8 --- /dev/null +++ b/apps/jetton/tact.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "http://raw.githubusercontent.com/tact-lang/tact/main/grammar/configSchema.json", + "projects": [ + { + "name": "jetton", + "path": "./src/contract/contract.tact", + "output": "./build/jetton" + } + ] +} diff --git a/apps/jetton/tsconfig.json b/apps/jetton/tsconfig.json new file mode 100644 index 0000000..a7fc6fb --- /dev/null +++ b/apps/jetton/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/apps/jetton/tsconfig.node.json b/apps/jetton/tsconfig.node.json new file mode 100644 index 0000000..97ede7e --- /dev/null +++ b/apps/jetton/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} diff --git a/apps/jetton/vite.config.ts b/apps/jetton/vite.config.ts new file mode 100644 index 0000000..af2d1ff --- /dev/null +++ b/apps/jetton/vite.config.ts @@ -0,0 +1,13 @@ +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react-swc'; +import { nodePolyfills } from 'vite-plugin-node-polyfills'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + nodePolyfills({ + include: ['buffer'], + }), + ], +}); diff --git a/packages/api/package.json b/packages/api/package.json index d9b2cdb..ba752fd 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -1,6 +1,6 @@ { "name": "@fotonjs/api", - "version": "0.0.3", + "version": "0.0.4", "description": "Foton API: comfortable public APIs to connect to the TON blockchain", "keywords": [ "TON", @@ -39,11 +39,11 @@ "prepublishOnly": "pnpm run build" }, "dependencies": { - "openapi-fetch": "^0.9.3", + "openapi-fetch": "^0.9.7", "openapi-typescript": "7.0.0-next.8", "typescript": "^5.4.5" }, "devDependencies": { - "tsup": "^8.0.2" + "tsup": "^8.1.0" } } diff --git a/packages/core/package.json b/packages/core/package.json index bdfafec..42a3c58 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@fotonjs/core", - "version": "0.0.5", + "version": "0.0.6", "description": "Foton: build TON dApps with ease", "keywords": [ "TON", @@ -42,11 +42,12 @@ "dependencies": { "@fotonjs/api": "workspace:^", "@ton/core": "^0.56.3", - "@tonconnect/sdk": "^3.0.2", - "@tonconnect/ui": "^2.0.2", + "@ton/crypto": "^3.2.0", + "@tonconnect/sdk": "^3.0.3", + "@tonconnect/ui": "^2.0.3", "typescript": "^5.4.5" }, "devDependencies": { - "tsup": "^8.0.2" + "tsup": "^8.1.0" } } diff --git a/packages/core/src/contract/abi/compose-payload.ts b/packages/core/src/contract/abi/compose-payload.ts index 0c65789..9c3aadf 100644 --- a/packages/core/src/contract/abi/compose-payload.ts +++ b/packages/core/src/contract/abi/compose-payload.ts @@ -59,7 +59,7 @@ const fieldTypeValidators: Record { @@ -114,7 +114,7 @@ const validateSchema = (schema: PayloadSchema, payload: Record, }; // TODO: simplify the function to allow it for external use – without the contract instance or method -export const composePayload = (contract: Contract, method: 'empty' | string, payload?: Record): string => { +export const composePayload = (contract: Contract, method: 'empty' | string, payload?: Record): string | undefined => { if (!contract.abi) { throw new Error('Contract class must have an ABI'); } diff --git a/packages/core/src/contract/deploy-contract.ts b/packages/core/src/contract/deploy-contract.ts index 9392d02..30534f7 100644 --- a/packages/core/src/contract/deploy-contract.ts +++ b/packages/core/src/contract/deploy-contract.ts @@ -37,6 +37,14 @@ export async function deployContract ( const contractAddress = fullContract.address.toString(); + let payload: string | undefined; + try { + payload = composePayload(fullContract, 'Deploy', options.payload); + // TODO: check for this errors and throw better (all except 'Deploy method doesn't exist') + } catch (_) { + payload = undefined; + } + try { const res = await this._walletClient.connection.sendTransaction({ network: getNetwork(this._walletClient._chain), @@ -47,7 +55,7 @@ export async function deployContract ( address: contractAddress, amount: options.value.toString(), stateInit: getStateInit(fullContract), - payload: composePayload(fullContract, 'Deploy', options.payload), + payload, } ], }); @@ -58,6 +66,7 @@ export async function deployContract ( txHash: bocToHash(res.boc), }); } catch (error) { + console.error('err', error); // TODO: add more error handlers for different scenarios return returnError('UserRejectedTransactionError'); } diff --git a/packages/core/src/contract/helper-types.ts b/packages/core/src/contract/helper-types.ts index 8335417..3f4ccac 100644 --- a/packages/core/src/contract/helper-types.ts +++ b/packages/core/src/contract/helper-types.ts @@ -18,6 +18,13 @@ export type GetExtendedContract = CONTRACT ex // Types for the contract methods (actions that write state, require fees) +// A helper method that transforms any Address type to string in a contract's payload +type MapMethodPayload = { + [K in keyof T]: T[K] extends Address + ? string + : T[K]; +}; + /** * Takes a contract and returns a union-type of the method arguments that a contract can run. * @@ -69,7 +76,7 @@ export type ContractMethodNames = export type ContractMethod = Exclude, string | null> extends { $$type: infer TYPE } // If receiver is a message ? TYPE extends KEY // find specific message to get the arguments - ? Omit, { $$type: TYPE }>, '$$type'> // store argument of the specific message without $$type + ? MapMethodPayload, { $$type: TYPE }>, '$$type'>> // store argument of the specific message without $$type, map Address to string : undefined : undefined; // else – receive is a string (str: String), no payload is required diff --git a/packages/core/src/contract/index.ts b/packages/core/src/contract/index.ts index 929f2f4..ae6fc18 100644 --- a/packages/core/src/contract/index.ts +++ b/packages/core/src/contract/index.ts @@ -16,3 +16,6 @@ export type { ContractGetters, ContractGetterReturn, } from './helper-types.js'; + +export { buildJettonOffChainMetadata, buildJettonOnchainMetadata } from './utils/build-jetton-metadata.js'; +export { getJettonDeployArguments } from './utils/get-jetton-deploy-arguments.js'; diff --git a/packages/core/src/contract/utils/build-jetton-metadata.ts b/packages/core/src/contract/utils/build-jetton-metadata.ts new file mode 100644 index 0000000..3458148 --- /dev/null +++ b/packages/core/src/contract/utils/build-jetton-metadata.ts @@ -0,0 +1,33 @@ +import { beginCell, Cell } from '@ton/core'; +import { composeDict } from './compose-dict.js'; + +const ONCHAIN_CONTENT_PREFIX = 0x00; +const OFFCHAIN_CONTENT_PREFIX = 0x01; +// const SNAKE_PREFIX = 0x00; + +/** Adapted from Jetton minter project: https://github.com/ton-blockchain/minter/blob/main/src/lib/jetton-minter.ts */ +export const buildJettonOffChainMetadata = (contentUri: string): Cell => { + return beginCell() + .storeInt(OFFCHAIN_CONTENT_PREFIX, 8) + .storeBuffer(Buffer.from(contentUri, "ascii")) + .endCell(); +}; + +export type JettonMetaDataKeys = "name" | "description" | "image" | "symbol"; + +// const jettonOnChainMetadataSpec: { +// [key in JettonMetaDataKeys]: "utf8" | "ascii" | undefined; +// } = { +// name: "utf8", +// description: "utf8", +// image: "ascii", +// symbol: "utf8", +// }; + +export const buildJettonOnchainMetadata = (data: Record): Cell => { + const dict = composeDict(data); + + const cell = beginCell().storeInt(ONCHAIN_CONTENT_PREFIX, 8).storeDict(dict).endCell(); + + return cell; +} diff --git a/packages/core/src/contract/utils/compose-dict.ts b/packages/core/src/contract/utils/compose-dict.ts new file mode 100644 index 0000000..ae48067 --- /dev/null +++ b/packages/core/src/contract/utils/compose-dict.ts @@ -0,0 +1,28 @@ +import { beginCell, Cell, Dictionary } from '@ton/core'; +import { sha256_sync } from '@ton/crypto' + +const textToSha256 = (str: string): bigint => { + return BigInt('0x' + sha256_sync(str).toString('hex')) +} + +const textToCell = (value: string): Cell => { + return beginCell().storeUint(0, 8).storeStringTail(value).endCell() +} + +const numberToCell = (value: bigint): Cell => { + return beginCell().storeUint(value, 64).endCell() +} + +export const composeDict = (info: Record): Dictionary => { + const dictionary = Dictionary.empty(Dictionary.Keys.BigUint(256), Dictionary.Values.Cell()); + + Object.entries(info).forEach(([key, value]) => { + if (typeof value === 'bigint') { + dictionary.set(textToSha256(key), numberToCell(value)); + return; + } + dictionary.set(textToSha256(key), textToCell(value)); + }); + + return dictionary; +}; diff --git a/packages/core/src/contract/utils/get-jetton-deploy-arguments.ts b/packages/core/src/contract/utils/get-jetton-deploy-arguments.ts new file mode 100644 index 0000000..a67cc9e --- /dev/null +++ b/packages/core/src/contract/utils/get-jetton-deploy-arguments.ts @@ -0,0 +1,31 @@ +import { Address, Cell } from '@ton/core'; +import { buildJettonOnchainMetadata } from './build-jetton-metadata.js'; + +export interface JettonMetadata { + name: string; + description: string; + symbol: string; + image: string; + imageData: string; + uri: string; + // TODO: add support for number type in dictionary + // decimals: number; + amount_style: 'n' | 'n-of-total' | '%'; + render_type: 'currency' | 'game'; +} + +export interface GetJettonDeployArgumentsOptions { + owner: string; + content: Partial, + maxSupply: bigint; +} + +export type GetJettonDeployArgumentsReturn = [owner: Address, content: Cell, max_supply: bigint]; + +export const getJettonDeployArguments = (options: GetJettonDeployArgumentsOptions): GetJettonDeployArgumentsReturn => { + const owner = Address.parse(options.owner); + const metatada = buildJettonOnchainMetadata(options.content); + const supply = BigInt(options.maxSupply); + + return [owner, metatada, supply]; +}; diff --git a/packages/core/src/contract/write-contract.ts b/packages/core/src/contract/write-contract.ts index aa4e2c5..cf48c0b 100644 --- a/packages/core/src/contract/write-contract.ts +++ b/packages/core/src/contract/write-contract.ts @@ -29,14 +29,14 @@ export async function writeContract =6.9.0'} dependencies: regenerator-runtime: 0.14.1 @@ -889,15 +953,6 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [aix] - requiresBuild: true - dev: true - optional: true - /@esbuild/aix-ppc64@0.20.2: resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} engines: {node: '>=12'} @@ -907,11 +962,11 @@ packages: dev: true optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} + /@esbuild/aix-ppc64@0.21.4: + resolution: {integrity: sha512-Zrm+B33R4LWPLjDEVnEqt2+SLTATlru1q/xYKVn8oVTbiRBGmK2VIMoIYGJDGyftnGaC788IuzGFAlb7IQ0Y8A==} engines: {node: '>=12'} - cpu: [arm64] - os: [android] + cpu: [ppc64] + os: [aix] requiresBuild: true dev: true optional: true @@ -925,10 +980,10 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} + /@esbuild/android-arm64@0.21.4: + resolution: {integrity: sha512-fYFnz+ObClJ3dNiITySBUx+oNalYUT18/AryMxfovLkYWbutXsct3Wz2ZWAcGGppp+RVVX5FiXeLYGi97umisA==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [android] requiresBuild: true dev: true @@ -943,10 +998,10 @@ packages: dev: true optional: true - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} + /@esbuild/android-arm@0.21.4: + resolution: {integrity: sha512-E7H/yTd8kGQfY4z9t3nRPk/hrhaCajfA3YSQSBrst8B+3uTcgsi8N+ZWYCaeIDsiVs6m65JPCaQN/DxBRclF3A==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm] os: [android] requiresBuild: true dev: true @@ -961,11 +1016,11 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} + /@esbuild/android-x64@0.21.4: + resolution: {integrity: sha512-mDqmlge3hFbEPbCWxp4fM6hqq7aZfLEHZAKGP9viq9wMUBVQx202aDIfc3l+d2cKhUJM741VrCXEzRFhPDKH3Q==} engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] + cpu: [x64] + os: [android] requiresBuild: true dev: true optional: true @@ -979,10 +1034,10 @@ packages: dev: true optional: true - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} + /@esbuild/darwin-arm64@0.21.4: + resolution: {integrity: sha512-72eaIrDZDSiWqpmCzVaBD58c8ea8cw/U0fq/PPOTqE3c53D0xVMRt2ooIABZ6/wj99Y+h4ksT/+I+srCDLU9TA==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm64] os: [darwin] requiresBuild: true dev: true @@ -997,11 +1052,11 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} + /@esbuild/darwin-x64@0.21.4: + resolution: {integrity: sha512-uBsuwRMehGmw1JC7Vecu/upOjTsMhgahmDkWhGLWxIgUn2x/Y4tIwUZngsmVb6XyPSTXJYS4YiASKPcm9Zitag==} engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] + cpu: [x64] + os: [darwin] requiresBuild: true dev: true optional: true @@ -1015,10 +1070,10 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} + /@esbuild/freebsd-arm64@0.21.4: + resolution: {integrity: sha512-8JfuSC6YMSAEIZIWNL3GtdUT5NhUA/CMUCpZdDRolUXNAXEE/Vbpe6qlGLpfThtY5NwXq8Hi4nJy4YfPh+TwAg==} engines: {node: '>=12'} - cpu: [x64] + cpu: [arm64] os: [freebsd] requiresBuild: true dev: true @@ -1033,11 +1088,11 @@ packages: dev: true optional: true - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} + /@esbuild/freebsd-x64@0.21.4: + resolution: {integrity: sha512-8d9y9eQhxv4ef7JmXny7591P/PYsDFc4+STaxC1GBv0tMyCdyWfXu2jBuqRsyhY8uL2HU8uPyscgE2KxCY9imQ==} engines: {node: '>=12'} - cpu: [arm64] - os: [linux] + cpu: [x64] + os: [freebsd] requiresBuild: true dev: true optional: true @@ -1051,10 +1106,10 @@ packages: dev: true optional: true - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} + /@esbuild/linux-arm64@0.21.4: + resolution: {integrity: sha512-/GLD2orjNU50v9PcxNpYZi+y8dJ7e7/LhQukN3S4jNDXCKkyyiyAz9zDw3siZ7Eh1tRcnCHAo/WcqKMzmi4eMQ==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: true @@ -1069,10 +1124,10 @@ packages: dev: true optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} + /@esbuild/linux-arm@0.21.4: + resolution: {integrity: sha512-2rqFFefpYmpMs+FWjkzSgXg5vViocqpq5a1PSRgT0AvSgxoXmGF17qfGAzKedg6wAwyM7UltrKVo9kxaJLMF/g==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm] os: [linux] requiresBuild: true dev: true @@ -1087,10 +1142,10 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} + /@esbuild/linux-ia32@0.21.4: + resolution: {integrity: sha512-pNftBl7m/tFG3t2m/tSjuYeWIffzwAZT9m08+9DPLizxVOsUl8DdFzn9HvJrTQwe3wvJnwTdl92AonY36w/25g==} engines: {node: '>=12'} - cpu: [loong64] + cpu: [ia32] os: [linux] requiresBuild: true dev: true @@ -1105,10 +1160,10 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} + /@esbuild/linux-loong64@0.21.4: + resolution: {integrity: sha512-cSD2gzCK5LuVX+hszzXQzlWya6c7hilO71L9h4KHwqI4qeqZ57bAtkgcC2YioXjsbfAv4lPn3qe3b00Zt+jIfQ==} engines: {node: '>=12'} - cpu: [mips64el] + cpu: [loong64] os: [linux] requiresBuild: true dev: true @@ -1123,10 +1178,10 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} + /@esbuild/linux-mips64el@0.21.4: + resolution: {integrity: sha512-qtzAd3BJh7UdbiXCrg6npWLYU0YpufsV9XlufKhMhYMJGJCdfX/G6+PNd0+v877X1JG5VmjBLUiFB0o8EUSicA==} engines: {node: '>=12'} - cpu: [ppc64] + cpu: [mips64el] os: [linux] requiresBuild: true dev: true @@ -1141,10 +1196,10 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} + /@esbuild/linux-ppc64@0.21.4: + resolution: {integrity: sha512-yB8AYzOTaL0D5+2a4xEy7OVvbcypvDR05MsB/VVPVA7nL4hc5w5Dyd/ddnayStDgJE59fAgNEOdLhBxjfx5+dg==} engines: {node: '>=12'} - cpu: [riscv64] + cpu: [ppc64] os: [linux] requiresBuild: true dev: true @@ -1159,10 +1214,10 @@ packages: dev: true optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} + /@esbuild/linux-riscv64@0.21.4: + resolution: {integrity: sha512-Y5AgOuVzPjQdgU59ramLoqSSiXddu7F3F+LI5hYy/d1UHN7K5oLzYBDZe23QmQJ9PIVUXwOdKJ/jZahPdxzm9w==} engines: {node: '>=12'} - cpu: [s390x] + cpu: [riscv64] os: [linux] requiresBuild: true dev: true @@ -1177,10 +1232,10 @@ packages: dev: true optional: true - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} + /@esbuild/linux-s390x@0.21.4: + resolution: {integrity: sha512-Iqc/l/FFwtt8FoTK9riYv9zQNms7B8u+vAI/rxKuN10HgQIXaPzKZc479lZ0x6+vKVQbu55GdpYpeNWzjOhgbA==} engines: {node: '>=12'} - cpu: [x64] + cpu: [s390x] os: [linux] requiresBuild: true dev: true @@ -1195,11 +1250,11 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} + /@esbuild/linux-x64@0.21.4: + resolution: {integrity: sha512-Td9jv782UMAFsuLZINfUpoF5mZIbAj+jv1YVtE58rFtfvoKRiKSkRGQfHTgKamLVT/fO7203bHa3wU122V/Bdg==} engines: {node: '>=12'} cpu: [x64] - os: [netbsd] + os: [linux] requiresBuild: true dev: true optional: true @@ -1213,11 +1268,11 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} + /@esbuild/netbsd-x64@0.21.4: + resolution: {integrity: sha512-Awn38oSXxsPMQxaV0Ipb7W/gxZtk5Tx3+W+rAPdZkyEhQ6968r9NvtkjhnhbEgWXYbgV+JEONJ6PcdBS+nlcpA==} engines: {node: '>=12'} cpu: [x64] - os: [openbsd] + os: [netbsd] requiresBuild: true dev: true optional: true @@ -1231,11 +1286,11 @@ packages: dev: true optional: true - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} + /@esbuild/openbsd-x64@0.21.4: + resolution: {integrity: sha512-IsUmQeCY0aU374R82fxIPu6vkOybWIMc3hVGZ3ChRwL9hA1TwY+tS0lgFWV5+F1+1ssuvvXt3HFqe8roCip8Hg==} engines: {node: '>=12'} cpu: [x64] - os: [sunos] + os: [openbsd] requiresBuild: true dev: true optional: true @@ -1249,11 +1304,11 @@ packages: dev: true optional: true - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} + /@esbuild/sunos-x64@0.21.4: + resolution: {integrity: sha512-hsKhgZ4teLUaDA6FG/QIu2q0rI6I36tZVfM4DBZv3BG0mkMIdEnMbhc4xwLvLJSS22uWmaVkFkqWgIS0gPIm+A==} engines: {node: '>=12'} - cpu: [arm64] - os: [win32] + cpu: [x64] + os: [sunos] requiresBuild: true dev: true optional: true @@ -1267,10 +1322,10 @@ packages: dev: true optional: true - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} + /@esbuild/win32-arm64@0.21.4: + resolution: {integrity: sha512-UUfMgMoXPoA/bvGUNfUBFLCh0gt9dxZYIx9W4rfJr7+hKe5jxxHmfOK8YSH4qsHLLN4Ck8JZ+v7Q5fIm1huErg==} engines: {node: '>=12'} - cpu: [ia32] + cpu: [arm64] os: [win32] requiresBuild: true dev: true @@ -1285,10 +1340,10 @@ packages: dev: true optional: true - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} + /@esbuild/win32-ia32@0.21.4: + resolution: {integrity: sha512-yIxbspZb5kGCAHWm8dexALQ9en1IYDfErzjSEq1KzXFniHv019VT3mNtTK7t8qdy4TwT6QYHI9sEZabONHg+aw==} engines: {node: '>=12'} - cpu: [x64] + cpu: [ia32] os: [win32] requiresBuild: true dev: true @@ -1303,6 +1358,15 @@ packages: dev: true optional: true + /@esbuild/win32-x64@0.21.4: + resolution: {integrity: sha512-sywLRD3UK/qRJt0oBwdpYLBibk7KiRfbswmWRDabuncQYSlf8aLEEUor/oP6KRz8KEG+HoiVLBhPRD5JWjS8Sg==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1318,6 +1382,11 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true + /@eslint-community/regexpp@4.10.1: + resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1387,7 +1456,7 @@ packages: dependencies: '@inquirer/type': 1.2.1 '@types/mute-stream': 0.0.4 - '@types/node': 20.12.11 + '@types/node': 20.14.1 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -1508,7 +1577,7 @@ packages: react: '>=16' dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.1 + '@types/react': 18.3.3 react: 18.3.1 dev: false @@ -1810,6 +1879,14 @@ packages: - supports-color dev: true + /@orbs-network/ton-access@2.3.3: + resolution: {integrity: sha512-b1miCPts7wBG9JKYgzXIRZQm/LMy5Uk1mNK8NzlcXHL3HRHJkkFbuYJGuj3IkWCiIicW3Ipp4sYnn3Fwo4oB0g==} + dependencies: + isomorphic-fetch: 3.0.0 + transitivePeerDependencies: + - encoding + dev: true + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -1863,16 +1940,16 @@ packages: uri-js: 4.4.1 dev: false - /@redocly/config@0.2.0: - resolution: {integrity: sha512-r0TqTPVXrxdvhpbOntWnJofOx0rC7u+A+tfC0KFwMtw38QCNb3pwodVjeLa7MT5Uu+fcPxfO119yLBj0QHvBuQ==} + /@redocly/config@0.5.0: + resolution: {integrity: sha512-oA1ezWPT2tSV9CLk0FtZlViaFKtp+id3iAVeKBme1DdP4xUCdxEdP8umB21iLKdc6leRd5uGa+T5Ox4nHBAXWg==} dev: false - /@redocly/openapi-core@1.11.0: - resolution: {integrity: sha512-VH10SAkDu+jVW9tDFJWWYroFxHVY9N5VS4gorXw0cK8L+LydUOQ4KiZaKbTsTF2piWmZCxngZI7sNPHMiJ4Ftg==} + /@redocly/openapi-core@1.14.0: + resolution: {integrity: sha512-sraF4PGVcc6t6CaYw5raO/GWeOaa6UjcEvH/+Qm7zp+q/fbWAMwbj+1QzaNvpMspCwF+xW6TddDcnXrCDmqYVA==} engines: {node: '>=14.19.0', npm: '>=7.0.0'} dependencies: '@redocly/ajv': 8.11.0 - '@redocly/config': 0.2.0 + '@redocly/config': 0.5.0 colorette: 1.4.0 js-levenshtein: 1.1.6 js-yaml: 4.1.0 @@ -1921,6 +1998,14 @@ packages: dev: true optional: true + /@rollup/rollup-android-arm-eabi@4.18.0: + resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-android-arm64@4.17.0: resolution: {integrity: sha512-+kjt6dvxnyTIAo7oHeYseYhDyZ7xRKTNl/FoQI96PHkJVxoChldJnne/LzYqpqidoK1/0kX0/q+5rrYqjpth6w==} cpu: [arm64] @@ -1929,6 +2014,14 @@ packages: dev: true optional: true + /@rollup/rollup-android-arm64@4.18.0: + resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-darwin-arm64@4.17.0: resolution: {integrity: sha512-Oj6Tp0unMpGTBjvNwbSRv3DopMNLu+mjBzhKTt2zLbDJ/45fB1pltr/rqrO4bE95LzuYwhYn127pop+x/pzf5w==} cpu: [arm64] @@ -1937,6 +2030,14 @@ packages: dev: true optional: true + /@rollup/rollup-darwin-arm64@4.18.0: + resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-darwin-x64@4.17.0: resolution: {integrity: sha512-3nJx0T+yptxMd+v93rBRxSPTAVCv8szu/fGZDJiKX7kvRe9sENj2ggXjCH/KK1xZEmJOhaNo0c9sGMgGdfkvEw==} cpu: [x64] @@ -1945,6 +2046,14 @@ packages: dev: true optional: true + /@rollup/rollup-darwin-x64@4.18.0: + resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.17.0: resolution: {integrity: sha512-Vb2e8p9b2lxxgqyOlBHmp6hJMu/HSU6g//6Tbr7x5V1DlPCHWLOm37nSIVK314f+IHzORyAQSqL7+9tELxX3zQ==} cpu: [arm] @@ -1953,6 +2062,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm-gnueabihf@4.18.0: + resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm-musleabihf@4.17.0: resolution: {integrity: sha512-Md60KsmC5ZIaRq/bYYDloklgU+XLEZwS2EXXVcSpiUw+13/ZASvSWQ/P92rQ9YDCL6EIoXxuQ829JkReqdYbGg==} cpu: [arm] @@ -1961,6 +2078,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm-musleabihf@4.18.0: + resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm64-gnu@4.17.0: resolution: {integrity: sha512-zL5rBFtJ+2EGnMRm2TqKjdjgFqlotSU+ZJEN37nV+fiD3I6Gy0dUh3jBWN0wSlcXVDEJYW7YBe+/2j0N9unb2w==} cpu: [arm64] @@ -1969,6 +2094,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm64-gnu@4.18.0: + resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-arm64-musl@4.17.0: resolution: {integrity: sha512-s2xAyNkJqUdtRVgNK4NK4P9QttS538JuX/kfVQOdZDI5FIKVAUVdLW7qhGfmaySJ1EvN/Bnj9oPm5go9u8navg==} cpu: [arm64] @@ -1977,6 +2110,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-arm64-musl@4.18.0: + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-powerpc64le-gnu@4.17.0: resolution: {integrity: sha512-7F99yzVT67B7IUNMjLD9QCFDCyHkyCJMS1dywZrGgVFJao4VJ9szrIEgH67cR+bXQgEaY01ur/WSL6B0jtcLyA==} cpu: [ppc64] @@ -1985,6 +2126,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-powerpc64le-gnu@4.18.0: + resolution: {integrity: sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-riscv64-gnu@4.17.0: resolution: {integrity: sha512-leFtyiXisfa3Sg9pgZJwRKITWnrQfhtqDjCamnZhkZuIsk1FXmYwKoTkp6lsCgimIcneFFkHKp/yGLxDesga4g==} cpu: [riscv64] @@ -1993,6 +2142,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-riscv64-gnu@4.18.0: + resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-s390x-gnu@4.17.0: resolution: {integrity: sha512-FtOgui6qMJ4jbSXTxElsy/60LEe/3U0rXkkz2G5CJ9rbHPAvjMvI+3qF0A0fwLQ5hW+/ZC6PbnS2KfRW9JkgDQ==} cpu: [s390x] @@ -2001,6 +2158,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-s390x-gnu@4.18.0: + resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-x64-gnu@4.17.0: resolution: {integrity: sha512-v6eiam/1w3HUfU/ZjzIDodencqgrSqzlNuNtiwH7PFJHYSo1ezL0/UIzmS2lpSJF1ORNaplXeKHYmmdt81vV2g==} cpu: [x64] @@ -2009,6 +2174,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-x64-gnu@4.18.0: + resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-linux-x64-musl@4.17.0: resolution: {integrity: sha512-OUhkSdpM5ofVlVU2k4CwVubYwiwu1a4jYWPpubzN7Vzao73GoPBowHcCfaRSFRz1SszJ3HIsk3dZYk4kzbqjgw==} cpu: [x64] @@ -2017,6 +2190,14 @@ packages: dev: true optional: true + /@rollup/rollup-linux-x64-musl@4.18.0: + resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-arm64-msvc@4.17.0: resolution: {integrity: sha512-uL7UYO/MNJPGL/yflybI+HI+n6+4vlfZmQZOCb4I+z/zy1wisHT3exh7oNQsnL6Eso0EUTEfgQ/PaGzzXf6XyQ==} cpu: [arm64] @@ -2025,6 +2206,14 @@ packages: dev: true optional: true + /@rollup/rollup-win32-arm64-msvc@4.18.0: + resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-ia32-msvc@4.17.0: resolution: {integrity: sha512-4WnSgaUiUmXILwFqREdOcqvSj6GD/7FrvSjhaDjmwakX9w4Z2F8JwiSP1AZZbuRkPqzi444UI5FPv33VKOWYFQ==} cpu: [ia32] @@ -2033,6 +2222,14 @@ packages: dev: true optional: true + /@rollup/rollup-win32-ia32-msvc@4.18.0: + resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@rollup/rollup-win32-x64-msvc@4.17.0: resolution: {integrity: sha512-ve+D8t1prRSRnF2S3pyDtTXDlvW1Pngbz76tjgYFQW1jxVSysmQCZfPoDAo4WP+Ano8zeYp85LsArZBI12HfwQ==} cpu: [x64] @@ -2041,6 +2238,19 @@ packages: dev: true optional: true + /@rollup/rollup-win32-x64-msvc@4.18.0: + resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@scarf/scarf@1.3.0: + resolution: {integrity: sha512-lHKK8M5CTcpFj2hZDB3wIjb0KAbEOgDmiJGDv1WBRfQgRm/a8/XMEkG/N1iM01xgbUDsPQwi42D+dFo1XPAKew==} + requiresBuild: true + dev: true + /@scure/base@1.1.6: resolution: {integrity: sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==} dev: false @@ -2530,6 +2740,15 @@ packages: dev: true optional: true + /@swc/core-darwin-arm64@1.5.24: + resolution: {integrity: sha512-M7oLOcC0sw+UTyAuL/9uyB9GeO4ZpaBbH76JSH6g1m0/yg7LYJZGRmplhDmwVSDAR5Fq4Sjoi1CksmmGkgihGA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@swc/core-darwin-x64@1.4.17: resolution: {integrity: sha512-WYRO9Fdzq4S/he8zjW5I95G1zcvyd9yyD3Tgi4/ic84P5XDlSMpBDpBLbr/dCPjmSg7aUXxNQqKqGkl6dQxYlA==} engines: {node: '>=10'} @@ -2539,6 +2758,15 @@ packages: dev: true optional: true + /@swc/core-darwin-x64@1.5.24: + resolution: {integrity: sha512-MfcFjGGYognpSBSos2pYUNYJSmqEhuw5ceGr6qAdME7ddbjGXliza4W6FggsM+JnWwpqa31+e7/R+GetW4WkaQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + /@swc/core-linux-arm-gnueabihf@1.4.17: resolution: {integrity: sha512-cgbvpWOvtMH0XFjvwppUCR+Y+nf6QPaGu6AQ5hqCP+5Lv2zO5PG0RfasC4zBIjF53xgwEaaWmGP5/361P30X8Q==} engines: {node: '>=10'} @@ -2548,6 +2776,15 @@ packages: dev: true optional: true + /@swc/core-linux-arm-gnueabihf@1.5.24: + resolution: {integrity: sha512-amI2pwtcWV3E/m/nf+AQtn1LWDzKLZyjCmWd3ms7QjEueWYrY8cU1Y4Wp7wNNsxIoPOi8zek1Uj2wwFD/pttNQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@swc/core-linux-arm64-gnu@1.4.17: resolution: {integrity: sha512-l7zHgaIY24cF9dyQ/FOWbmZDsEj2a9gRFbmgx2u19e3FzOPuOnaopFj0fRYXXKCmtdx+anD750iBIYnTR+pq/Q==} engines: {node: '>=10'} @@ -2557,8 +2794,26 @@ packages: dev: true optional: true - /@swc/core-linux-arm64-musl@1.4.17: - resolution: {integrity: sha512-qhH4gr9gAlVk8MBtzXbzTP3BJyqbAfUOATGkyUtohh85fPXQYuzVlbExix3FZXTwFHNidGHY8C+ocscI7uDaYw==} + /@swc/core-linux-arm64-gnu@1.5.24: + resolution: {integrity: sha512-sTSvmqMmgT1ynH/nP75Pc51s+iT4crZagHBiDOf5cq+kudUYjda9lWMs7xkXB/TUKFHPCRK0HGunl8bkwiIbuw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.4.17: + resolution: {integrity: sha512-qhH4gr9gAlVk8MBtzXbzTP3BJyqbAfUOATGkyUtohh85fPXQYuzVlbExix3FZXTwFHNidGHY8C+ocscI7uDaYw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@swc/core-linux-arm64-musl@1.5.24: + resolution: {integrity: sha512-vd2/hfOBGbrX21FxsFdXCUaffjkHvlZkeE2UMRajdXifwv79jqOHIJg3jXG1F3ZrhCghCzirFts4tAZgcG8XWg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] @@ -2575,6 +2830,15 @@ packages: dev: true optional: true + /@swc/core-linux-x64-gnu@1.5.24: + resolution: {integrity: sha512-Zrdzi7NqzQxm2BvAG5KyOSBEggQ7ayrxh599AqqevJmsUXJ8o2nMiWQOBvgCGp7ye+Biz3pvZn1EnRzAp+TpUg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@swc/core-linux-x64-musl@1.4.17: resolution: {integrity: sha512-zQNPXAXn3nmPqv54JVEN8k2JMEcMTQ6veVuU0p5O+A7KscJq+AGle/7ZQXzpXSfUCXlLMX4wvd+rwfGhh3J4cw==} engines: {node: '>=10'} @@ -2584,6 +2848,15 @@ packages: dev: true optional: true + /@swc/core-linux-x64-musl@1.5.24: + resolution: {integrity: sha512-1F8z9NRi52jdZQCGc5sflwYSctL6omxiVmIFVp8TC9nngjQKc00TtX/JC2Eo2HwvgupkFVl5YQJidAck9YtmJw==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + /@swc/core-win32-arm64-msvc@1.4.17: resolution: {integrity: sha512-z86n7EhOwyzxwm+DLE5NoLkxCTme2lq7QZlDjbQyfCxOt6isWz8rkW5QowTX8w9Rdmk34ncrjSLvnHOeLY17+w==} engines: {node: '>=10'} @@ -2593,6 +2866,15 @@ packages: dev: true optional: true + /@swc/core-win32-arm64-msvc@1.5.24: + resolution: {integrity: sha512-cKpP7KvS6Xr0jFSTBXY53HZX/YfomK5EMQYpCVDOvfsZeYHN20sQSKXfpVLvA/q2igVt1zzy1XJcOhpJcgiKLg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@swc/core-win32-ia32-msvc@1.4.17: resolution: {integrity: sha512-JBwuSTJIgiJJX6wtr4wmXbfvOswHFj223AumUrK544QV69k60FJ9q2adPW9Csk+a8wm1hLxq4HKa2K334UHJ/g==} engines: {node: '>=10'} @@ -2602,6 +2884,15 @@ packages: dev: true optional: true + /@swc/core-win32-ia32-msvc@1.5.24: + resolution: {integrity: sha512-IoPWfi0iwqjZuf7gE223+B97/ZwkKbu7qL5KzGP7g3hJrGSKAvv7eC5Y9r2iKKtLKyv5R/T6Ho0kFR/usi7rHw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@swc/core-win32-x64-msvc@1.4.17: resolution: {integrity: sha512-jFkOnGQamtVDBm3MF5Kq1lgW8vx4Rm1UvJWRUfg+0gx7Uc3Jp3QMFeMNw/rDNQYRDYPG3yunCC+2463ycd5+dg==} engines: {node: '>=10'} @@ -2611,6 +2902,15 @@ packages: dev: true optional: true + /@swc/core-win32-x64-msvc@1.5.24: + resolution: {integrity: sha512-zHgF2k1uVJL8KIW+PnVz1To4a3Cz9THbh2z2lbehaF/gKHugH4c3djBozU4das1v35KOqf5jWIEviBLql2wDLQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + /@swc/core@1.4.17: resolution: {integrity: sha512-tq+mdWvodMBNBBZbwFIMTVGYHe9N7zvEaycVVjfvAx20k1XozHbHhRv+9pEVFJjwRxLdXmtvFZd3QZHRAOpoNQ==} engines: {node: '>=10'} @@ -2636,6 +2936,31 @@ packages: '@swc/core-win32-x64-msvc': 1.4.17 dev: true + /@swc/core@1.5.24: + resolution: {integrity: sha512-Eph9zvO4xvqWZGVzTdtdEJ0Vqf0VIML/o/e4Qd2RLOqtfgnlRi7avmMu5C0oqciJ0tk+hqdUKVUZ4JPoPaiGvQ==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.7 + optionalDependencies: + '@swc/core-darwin-arm64': 1.5.24 + '@swc/core-darwin-x64': 1.5.24 + '@swc/core-linux-arm-gnueabihf': 1.5.24 + '@swc/core-linux-arm64-gnu': 1.5.24 + '@swc/core-linux-arm64-musl': 1.5.24 + '@swc/core-linux-x64-gnu': 1.5.24 + '@swc/core-linux-x64-musl': 1.5.24 + '@swc/core-win32-arm64-msvc': 1.5.24 + '@swc/core-win32-ia32-msvc': 1.5.24 + '@swc/core-win32-x64-msvc': 1.5.24 + dev: true + /@swc/counter@0.1.3: resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -2652,6 +2977,12 @@ packages: '@swc/counter': 0.1.3 dev: true + /@swc/types@0.1.7: + resolution: {integrity: sha512-scHWahbHF0eyj3JsxG9CFJgFdFNaVQCNAimBlT6PzS3n/HptxqREjsm4OH6AN3lYcffZYSPxXW8ua2BEHp0lJQ==} + dependencies: + '@swc/counter': 0.1.3 + dev: true + /@szmarczak/http-timer@5.0.1: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} @@ -2681,6 +3012,31 @@ packages: transitivePeerDependencies: - encoding - supports-color + dev: false + + /@tact-lang/compiler@1.3.0: + resolution: {integrity: sha512-JER8kAritfvLFLOfKnFfJ+A7vB9RZJFwfO4c0AzWBuzDJCyOp6ByIhNPkn+srpoDOEd7U0yMIyzq4RjCnRyTJw==} + hasBin: true + dependencies: + '@ipld/dag-pb': 2.1.18 + '@tact-lang/opcode': 0.0.14(@ton/core@0.56.3)(@ton/crypto@3.2.0) + '@ton/core': 0.56.3(@ton/crypto@3.2.0) + '@ton/crypto': 3.2.0 + blockstore-core: 1.0.5 + change-case: 4.1.2 + ipfs-unixfs-importer: 9.0.10 + meow: 13.2.0 + mkdirp: 2.1.6 + multiformats: 13.1.1 + ohm-js: 17.1.0 + path-normalize: 6.0.13 + prando: 6.0.1 + qs: 6.12.1 + zod: 3.23.8 + transitivePeerDependencies: + - encoding + - supports-color + dev: true /@tact-lang/opcode@0.0.14(@ton/core@0.49.2)(@ton/crypto@3.2.0): resolution: {integrity: sha512-8FKHK2jwvViRBReO2t40DCkHAP9KPTRWZof4kdsAUJFlyeWIC8SsRQSl9QkZxF+48WvjDduKNqN5Ltb80paufA==} @@ -2690,6 +3046,17 @@ packages: dependencies: '@ton/core': 0.49.2(@ton/crypto@3.2.0) '@ton/crypto': 3.2.0 + dev: false + + /@tact-lang/opcode@0.0.14(@ton/core@0.56.3)(@ton/crypto@3.2.0): + resolution: {integrity: sha512-8FKHK2jwvViRBReO2t40DCkHAP9KPTRWZof4kdsAUJFlyeWIC8SsRQSl9QkZxF+48WvjDduKNqN5Ltb80paufA==} + peerDependencies: + '@ton/core': '>=0.49.2' + '@ton/crypto': ^3.2.0 + dependencies: + '@ton/core': 0.56.3(@ton/crypto@3.2.0) + '@ton/crypto': 3.2.0 + dev: true /@tanstack/react-virtual@3.5.0(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-rtvo7KwuIvqK9zb0VZ5IL7fiJAEnG+0EiFZz8FUOs+2mhGqdGmjKIaT1XU7Zq0eFqL0jonLlhbayJI/J2SA/Bw==} @@ -2711,7 +3078,7 @@ packages: peerDependencies: react: ^18.2.0 dependencies: - mermaid: 10.9.0 + mermaid: 10.9.1 react: 18.3.1 unist-util-visit: 5.0.0 transitivePeerDependencies: @@ -2725,6 +3092,50 @@ packages: unist-util-visit: 5.0.0 dev: false + /@ton-community/func-js-bin@0.4.4-newops.1: + resolution: {integrity: sha512-TV4t6XhmItq4t+wv4pV30yEwb+YvdmsKo4Ig4B0zp4PLdI0r9iZHz4y5bBHcXmDQDRqulXzK6kTgfHvs2CIsaQ==} + dev: true + + /@ton-community/func-js@0.7.0: + resolution: {integrity: sha512-VYJsv6Pqz6+qh3HlZWReBG5W9RXutAdIFYDqmblPSCXfjBhx/QjON/3WoppzUVrqQQdD0BVIh4PR+xRHRCBNhw==} + hasBin: true + dependencies: + '@ton-community/func-js-bin': 0.4.4-newops.1 + arg: 5.0.2 + dev: true + + /@ton/blueprint@0.20.0(@ton/core@0.56.3)(@ton/crypto@3.2.0)(@ton/ton@13.11.2)(@types/node@20.14.1)(typescript@5.4.5): + resolution: {integrity: sha512-rZ5mE9wYgvpcYy6KEcyF7i5ysPO6+j3RO3jxQw8qYjPcMu+5zvhy80AUzQ3JLv2ClraqoIU8OYe1PFlDo9I3BA==} + hasBin: true + peerDependencies: + '@ton/core': '>=0.56.0' + '@ton/crypto': '>=3.2.0' + '@ton/ton': '>=13.11.0' + dependencies: + '@orbs-network/ton-access': 2.3.3 + '@tact-lang/compiler': 1.3.0 + '@ton-community/func-js': 0.7.0 + '@ton/core': 0.56.3(@ton/crypto@3.2.0) + '@ton/crypto': 3.2.0 + '@ton/ton': 13.11.2(@ton/core@0.56.3)(@ton/crypto@3.2.0) + '@tonconnect/sdk': 2.2.0 + arg: 5.0.2 + chalk: 4.1.2 + dotenv: 16.4.5 + inquirer: 8.2.6 + qrcode-terminal: 0.12.0 + ton-x: 2.1.0 + ts-node: 10.9.2(@types/node@20.14.1)(typescript@5.4.5) + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - debug + - encoding + - supports-color + - typescript + dev: true + /@ton/core@0.49.2(@ton/crypto@3.2.0): resolution: {integrity: sha512-jzW7ZGNkkkv131uvgX/4JgHBdtEnanT8i1fnZ6NOL7lxXjlVIKTuAfr1J2wJQAGHn0wLrbceAHix3jKX+4F5CA==} peerDependencies: @@ -2732,6 +3143,7 @@ packages: dependencies: '@ton/crypto': 3.2.0 symbol.inspect: 1.0.1 + dev: false /@ton/core@0.56.3(@ton/crypto@3.2.0): resolution: {integrity: sha512-HVkalfqw8zqLLPehtq0CNhu5KjVzc7IrbDwDHPjGoOSXmnqSobiWj8a5F+YuWnZnEbQKtrnMGNOOjVw4LG37rg==} @@ -2740,7 +3152,6 @@ packages: dependencies: '@ton/crypto': 3.2.0 symbol.inspect: 1.0.1 - dev: false /@ton/crypto-primitives@2.0.0: resolution: {integrity: sha512-wttiNClmGbI6Dfy/8oyNnsIV0b/qYkCJz4Gn4eP62lJZzMtVQ94Ko7nikDX1EfYHkLI1xpOitWpW+8ZuG6XtDg==} @@ -2754,12 +3165,43 @@ packages: jssha: 3.2.0 tweetnacl: 1.0.3 + /@ton/ton@13.11.2(@ton/core@0.56.3)(@ton/crypto@3.2.0): + resolution: {integrity: sha512-EPqW+ZTe0MmfqguJEIGMuAqTAFRKMEce95HlDx8h6CGn2y3jiMgV1/oO+WpDIOiX+1wnTu+xtajk8JTWr8nKRQ==} + peerDependencies: + '@ton/core': '>=0.56.0' + '@ton/crypto': '>=3.2.0' + dependencies: + '@ton/core': 0.56.3(@ton/crypto@3.2.0) + '@ton/crypto': 3.2.0 + axios: 1.7.2 + dataloader: 2.2.2 + symbol.inspect: 1.0.1 + teslabot: 1.5.0 + zod: 3.23.8 + transitivePeerDependencies: + - debug + dev: true + + /@tonconnect/isomorphic-eventsource@0.0.1: + resolution: {integrity: sha512-ODk48pMlqLSOvu3fM0R1sdlz/Cv2y4hSfwtXmLq9ky9+H7ZQfw/16ElpIJ69B4lUvHycxrueNgrRtF9PJHoGMw==} + dependencies: + eventsource: 2.0.2 + dev: true + /@tonconnect/isomorphic-eventsource@0.0.2: resolution: {integrity: sha512-B4UoIjPi0QkvIzZH5fV3BQLWrqSYABdrzZQSI9sJA9aA+iC0ohOzFwVVGXanlxeDAy1bcvPbb29f6sVUk0UnnQ==} dependencies: eventsource: 2.0.2 dev: false + /@tonconnect/isomorphic-fetch@0.0.2: + resolution: {integrity: sha512-DAyA4oL7MqbBo9k8+8E+YiWsGCYi6UMhDTcsZjhgzhESkBNG6b+NBkpb1KH4oi0xDZQoknFtY9XogJLuQtSMQQ==} + dependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: true + /@tonconnect/isomorphic-fetch@0.0.3: resolution: {integrity: sha512-jIg5nTrDwnite4fXao3dD83eCpTvInTjZon/rZZrIftIegh4XxyVb5G2mpMqXrVGk1e8SVXm3Kj5OtfMplQs0w==} dependencies: @@ -2773,10 +3215,19 @@ packages: dependencies: tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 - dev: false - /@tonconnect/sdk@3.0.2: - resolution: {integrity: sha512-TEPIoczYZhJcXu9pixYJimGlYKLWLSkgJZgC2vwHLObwuqoiOa06BTOlooaxoNFgZ0LOgIzt+QRs8tF8jyYsSw==} + /@tonconnect/sdk@2.2.0: + resolution: {integrity: sha512-8plnAXzaLhapUnt47ZqAOQSIQ8NHSvgTSR74QVJdPWqg8128smgGM4cDYewKdBfTD6Lup0odT1WMMrJu+rE4NQ==} + dependencies: + '@tonconnect/isomorphic-eventsource': 0.0.1 + '@tonconnect/isomorphic-fetch': 0.0.2 + '@tonconnect/protocol': 2.2.6 + transitivePeerDependencies: + - encoding + dev: true + + /@tonconnect/sdk@3.0.3: + resolution: {integrity: sha512-ElVre1DPixzQLgLtQIa8Wu5xS8nozlgblZTJhFFPrk82M2rZ+sawyF+LAVwt9wZRN7+htWnJrNz0+bBr4b3geA==} dependencies: '@tonconnect/isomorphic-eventsource': 0.0.2 '@tonconnect/isomorphic-fetch': 0.0.3 @@ -2785,26 +3236,26 @@ packages: - encoding dev: false - /@tonconnect/ui-react@2.0.2(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-nNsaB8DzQsVfBRtKli4KTC4Nj1WwJ+gHP4j9FOgjqNylf+VRYH5mpDkpRw/vRVwOYNMsZ4k8ZznreccWqFJRXg==} + /@tonconnect/ui-react@2.0.3(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-Pzxy0Ea9bTQbkF68Hbyb1erKnAzjT2DlP7HEh7lc9Xs2jU6ID1dg1XGB+hRvBMnl6dIhxflK5EiHE82v6iWnnQ==} peerDependencies: react: '>=17.0.0' react-dom: '>=17.0.0' dependencies: - '@tonconnect/ui': 2.0.2 + '@tonconnect/ui': 2.0.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: - encoding dev: false - /@tonconnect/ui@2.0.2: - resolution: {integrity: sha512-x/iI7yX8yMvs7HKZ1wm3Quz5yg8mJJwZQlg+DYHGBvqdx0JMqXbF8YOcvGdh/Lhmrq92ahE8QIwX+85cS80vjQ==} + /@tonconnect/ui@2.0.3: + resolution: {integrity: sha512-P2i+kZXJULlIIBBfHs8b3ONHEaDFgJ4jpP7eAtqubikjoYyk43qb8XyzKC67hEdS+pHzd+JCB2U+47LTJcdRzA==} dependencies: - '@tonconnect/sdk': 3.0.2 + '@tonconnect/sdk': 3.0.3 classnames: 2.5.1 deepmerge: 4.3.1 - ua-parser-js: 1.0.37 + ua-parser-js: 1.0.38 transitivePeerDependencies: - encoding dev: false @@ -2831,10 +3282,16 @@ packages: '@types/estree': 1.0.5 dev: false + /@types/bn.js@5.1.5: + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + dependencies: + '@types/node': 20.14.1 + dev: true + /@types/cli-progress@3.11.5: resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==} dependencies: - '@types/node': 20.12.11 + '@types/node': 20.14.1 /@types/d3-scale-chromatic@3.0.3: resolution: {integrity: sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==} @@ -2869,7 +3326,7 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.12.11 + '@types/node': 20.14.1 dev: false /@types/hast@2.3.10: @@ -2899,7 +3356,7 @@ packages: /@types/jsonfile@6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 20.12.11 + '@types/node': 20.14.1 dev: false /@types/katex@0.16.7: @@ -2915,8 +3372,8 @@ packages: '@types/unist': 2.0.10 dev: false - /@types/mdast@4.0.3: - resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==} + /@types/mdast@4.0.4: + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} dependencies: '@types/unist': 3.0.2 dev: false @@ -2936,26 +3393,26 @@ packages: /@types/mute-stream@0.0.4: resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} dependencies: - '@types/node': 20.12.11 + '@types/node': 20.14.1 dev: true - /@types/node@18.19.28: - resolution: {integrity: sha512-J5cOGD9n4x3YGgVuaND6khm5x07MMdAKkRyXnjVR6KFhLMNh2yONGiP7Z+4+tBOt5mK+GvDTiacTOVGGpqiecw==} + /@types/node@18.19.34: + resolution: {integrity: sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g==} dependencies: undici-types: 5.26.5 dev: false - /@types/node@20.12.11: - resolution: {integrity: sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==} - dependencies: - undici-types: 5.26.5 - /@types/node@20.12.2: resolution: {integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==} dependencies: undici-types: 5.26.5 dev: true + /@types/node@20.14.1: + resolution: {integrity: sha512-T2MzSGEu+ysB/FkWfqmhV3PLyQlowdptmmgD20C6QxsS8Fmv5SjpZ1ayXaEC0S21/h5UJ9iA6W/5vSNU5l00OA==} + dependencies: + undici-types: 5.26.5 + /@types/prop-types@15.7.12: resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -2966,7 +3423,7 @@ packages: /@types/react-dom@18.3.0: resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} dependencies: - '@types/react': 18.3.1 + '@types/react': 18.3.3 dev: true /@types/react@18.3.1: @@ -2975,6 +3432,12 @@ packages: '@types/prop-types': 15.7.12 csstype: 3.1.3 + /@types/react@18.3.3: + resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==} + dependencies: + '@types/prop-types': 15.7.12 + csstype: 3.1.3 + /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true @@ -2995,6 +3458,33 @@ packages: resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} dev: true + /@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.1 + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.12.0 + '@typescript-eslint/type-utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.12.0 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3024,6 +3514,27 @@ packages: - supports-color dev: true + /@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.12.0 + '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.12.0 + debug: 4.3.5 + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3045,6 +3556,14 @@ packages: - supports-color dev: true + /@typescript-eslint/scope-manager@7.12.0: + resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/visitor-keys': 7.12.0 + dev: true + /@typescript-eslint/scope-manager@7.7.1: resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3053,6 +3572,26 @@ packages: '@typescript-eslint/visitor-keys': 7.7.1 dev: true + /@typescript-eslint/type-utils@7.12.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.5 + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3073,11 +3612,38 @@ packages: - supports-color dev: true + /@typescript-eslint/types@7.12.0: + resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + /@typescript-eslint/types@7.7.1: resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} engines: {node: ^18.18.0 || >=20.0.0} dev: true + /@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.5): + resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/visitor-keys': 7.12.0 + debug: 4.3.5 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5): resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3100,6 +3666,22 @@ packages: - supports-color dev: true + /@typescript-eslint/utils@7.12.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 7.12.0 + '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3119,6 +3701,14 @@ packages: - typescript dev: true + /@typescript-eslint/visitor-keys@7.12.0: + resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.12.0 + eslint-visitor-keys: 3.4.3 + dev: true + /@typescript-eslint/visitor-keys@7.7.1: resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} engines: {node: ^18.18.0 || >=20.0.0} @@ -3130,8 +3720,8 @@ packages: /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vercel/analytics@1.2.2(next@14.2.3)(react@18.3.1): - resolution: {integrity: sha512-X0rctVWkQV1e5Y300ehVNqpOfSOufo7ieA5PIdna8yX/U7Vjz0GFsGf4qvAhxV02uQ2CVt7GYcrFfddXXK2Y4A==} + /@vercel/analytics@1.3.1(next@14.2.3)(react@18.3.1): + resolution: {integrity: sha512-xhSlYgAuJ6Q4WQGkzYTLmXwhYl39sWjoMA3nHxfkvG+WdBT25c563a7QhwwKivEOZtPJXifYHR1m2ihoisbWyA==} peerDependencies: next: '>= 13' react: ^18 || ^19 @@ -3152,7 +3742,18 @@ packages: vite: ^4 || ^5 dependencies: '@swc/core': 1.4.17 - vite: 5.2.10 + vite: 5.2.10(@types/node@20.14.1) + transitivePeerDependencies: + - '@swc/helpers' + dev: true + + /@vitejs/plugin-react-swc@3.7.0(vite@5.2.12): + resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} + peerDependencies: + vite: ^4 || ^5 + dependencies: + '@swc/core': 1.5.24 + vite: 5.2.12 transitivePeerDependencies: - '@swc/helpers' dev: true @@ -3317,6 +3918,10 @@ packages: /async@3.2.5: resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + /available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -3324,6 +3929,33 @@ packages: possible-typed-array-names: 1.0.0 dev: true + /axios@0.25.0: + resolution: {integrity: sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==} + dependencies: + follow-redirects: 1.15.6 + transitivePeerDependencies: + - debug + dev: true + + /axios@0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + transitivePeerDependencies: + - debug + dev: true + + /axios@1.7.2: + resolution: {integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==} + dependencies: + follow-redirects: 1.15.6 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: true + /bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} dev: false @@ -3339,6 +3971,14 @@ packages: engines: {node: '>=8'} dev: true + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + dev: true + /bl@5.1.0: resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} dependencies: @@ -3358,10 +3998,18 @@ packages: it-take: 1.0.2 multiformats: 9.9.0 + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: true + /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} dev: true + /bn.js@5.2.0: + resolution: {integrity: sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==} + dev: true + /bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} dev: true @@ -3387,6 +4035,13 @@ packages: dependencies: fill-range: 7.0.1 + /braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.1.1 + dev: true + /brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} dev: true @@ -3481,13 +4136,13 @@ packages: semver: 7.6.0 dev: true - /bundle-require@4.0.3(esbuild@0.19.12): - resolution: {integrity: sha512-2iscZ3fcthP2vka4Y7j277YJevwmsby/FpFDwjgw34Nl7dtCpt7zz/4TexmHMzY6KZEih7En9ImlbbgUNNQGtA==} + /bundle-require@4.2.1(esbuild@0.21.4): + resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' dependencies: - esbuild: 0.19.12 + esbuild: 0.21.4 load-tsconfig: 0.2.5 dev: true @@ -3542,8 +4197,8 @@ packages: pascal-case: 3.1.2 tslib: 2.6.2 - /caniuse-lite@1.0.30001616: - resolution: {integrity: sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw==} + /caniuse-lite@1.0.30001627: + resolution: {integrity: sha512-4zgNiB8nTyV/tHhwZrFs88ryjls/lHiqFhrxCW4qSTeuRByBVnPYpDInchOIySWknznucaf31Z4KYqjfbrecVw==} dev: false /capital-case@1.0.4: @@ -3616,12 +4271,16 @@ packages: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} dev: false + /chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + dev: true + /chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -3648,6 +4307,13 @@ packages: dependencies: escape-string-regexp: 4.0.0 + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + dev: true + /cli-progress@3.12.0: resolution: {integrity: sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==} engines: {node: '>=4'} @@ -3659,6 +4325,11 @@ packages: engines: {node: '>=6'} dev: true + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: true + /cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -3676,6 +4347,11 @@ packages: execa: 0.8.0 dev: false + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + /clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -3717,6 +4393,13 @@ packages: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} dev: false + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false @@ -4137,6 +4820,10 @@ packages: engines: {node: '>= 12'} dev: false + /dataloader@2.2.2: + resolution: {integrity: sha512-8YnDaaf7N3k/q5HnTJVuzSyLETjoZjVmHc4AeKAzOvKHEFQKcn64OKBfzHYtE9zGjctNM7V9I0MfnUVLpi7M5g==} + dev: true + /dayjs@1.11.11: resolution: {integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==} dev: false @@ -4153,6 +4840,17 @@ packages: ms: 2.1.2 supports-color: 8.1.1 + /debug@4.3.5: + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} dependencies: @@ -4175,6 +4873,12 @@ packages: engines: {node: '>=0.10.0'} dev: false + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + /defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -4203,6 +4907,11 @@ packages: robust-predicates: 3.0.2 dev: false + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -4267,8 +4976,8 @@ packages: engines: {node: '>=10'} dev: true - /dompurify@3.1.2: - resolution: {integrity: sha512-hLGGBI1tw5N8qTELr3blKjAML/LY4ANxksbS612UiJyDfyf/2D092Pvm+S7pmeTGJRqvlJkFzBoHBQKgQlOQVg==} + /dompurify@3.1.5: + resolution: {integrity: sha512-lwG+n5h8QNpxtyrJW/gJWckL+1/DQiYMX8f7t8Z2AZTPw1esVrqjI63i7Zc2Gz0aKzLVMYC1V1PL/ky+aY/NgA==} dev: false /dot-case@3.0.4: @@ -4277,6 +4986,11 @@ packages: no-case: 3.0.4 tslib: 2.6.2 + /dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dev: true + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: false @@ -4339,37 +5053,6 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 - dev: true - /esbuild@0.20.2: resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} engines: {node: '>=12'} @@ -4401,6 +5084,37 @@ packages: '@esbuild/win32-x64': 0.20.2 dev: true + /esbuild@0.21.4: + resolution: {integrity: sha512-sFMcNNrj+Q0ZDolrp5pDhH0nRPN9hLIM3fRPwgbLYJeSHHgnXSnbV3xYgSVuOeLWH9c73VwmEverVzupIv5xuA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.4 + '@esbuild/android-arm': 0.21.4 + '@esbuild/android-arm64': 0.21.4 + '@esbuild/android-x64': 0.21.4 + '@esbuild/darwin-arm64': 0.21.4 + '@esbuild/darwin-x64': 0.21.4 + '@esbuild/freebsd-arm64': 0.21.4 + '@esbuild/freebsd-x64': 0.21.4 + '@esbuild/linux-arm': 0.21.4 + '@esbuild/linux-arm64': 0.21.4 + '@esbuild/linux-ia32': 0.21.4 + '@esbuild/linux-loong64': 0.21.4 + '@esbuild/linux-mips64el': 0.21.4 + '@esbuild/linux-ppc64': 0.21.4 + '@esbuild/linux-riscv64': 0.21.4 + '@esbuild/linux-s390x': 0.21.4 + '@esbuild/linux-x64': 0.21.4 + '@esbuild/netbsd-x64': 0.21.4 + '@esbuild/openbsd-x64': 0.21.4 + '@esbuild/sunos-x64': 0.21.4 + '@esbuild/win32-arm64': 0.21.4 + '@esbuild/win32-ia32': 0.21.4 + '@esbuild/win32-x64': 0.21.4 + dev: true + /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} @@ -4431,6 +5145,14 @@ packages: eslint: 8.57.0 dev: true + /eslint-plugin-react-refresh@0.4.7(eslint@8.57.0): + resolution: {integrity: sha512-yrj+KInFmwuQS2UQcg1SF83ha1tuHC1jMQbRNyuWtlEzzKRDgAl7L4Yp4NlDUZTZNlWvHEzOtJhMi40R7JxcSw==} + peerDependencies: + eslint: '>=7' + dependencies: + eslint: 8.57.0 + dev: true + /eslint-scope@7.2.2: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4450,7 +5172,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/regexpp': 4.10.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.0 '@humanwhocodes/config-array': 0.11.14 @@ -4460,7 +5182,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -4579,6 +5301,14 @@ packages: engines: {node: '>=0.10.0'} dev: true + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + dev: true + /event-stream@3.3.4: resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} dependencies: @@ -4599,7 +5329,6 @@ packages: /eventsource@2.0.2: resolution: {integrity: sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==} engines: {node: '>=12.0.0'} - dev: false /evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} @@ -4647,6 +5376,15 @@ packages: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: false + /external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + dev: true + /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4724,6 +5462,13 @@ packages: dependencies: to-regex-range: 5.0.1 + /fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -4759,6 +5504,16 @@ packages: resolution: {integrity: sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==} dev: false + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -4778,6 +5533,15 @@ packages: engines: {node: '>= 14.17'} dev: true + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + /formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -4785,6 +5549,10 @@ packages: fetch-blob: 3.2.0 dev: false + /fp-ts@2.16.6: + resolution: {integrity: sha512-v7w209VPj4L6pPn/ftFRJu31Oa8QagwcVw7BZmLCUWU4AQoc954rX9ogSIahDf67Pg+GjPbkW/Kn9XWnlWJG0g==} + dev: true + /from@0.1.7: resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} dev: false @@ -4894,16 +5662,16 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.3.12: - resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} - engines: {node: '>=16 || 14 >=14.17'} + /glob@10.4.1: + resolution: {integrity: sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==} + engines: {node: '>=16 || 14 >=14.18'} hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.3.6 + jackspeak: 3.2.3 minimatch: 9.0.4 - minipass: 7.0.4 - path-scurry: 1.10.2 + minipass: 7.1.2 + path-scurry: 1.11.1 dev: true /glob@7.2.3: @@ -5251,6 +6019,13 @@ packages: resolution: {integrity: sha512-Ty8UblRWFEcfSuIaajM34LdPXIhbs1ajEX/BBPv24J+enSVaEVY63xQ6lTO9VRYS5LAoghIG0IDJ+p+IPzKUQQ==} engines: {node: '>=4'} + /iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: true + /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} @@ -5296,6 +6071,27 @@ packages: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} dev: false + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + /interface-blockstore@2.0.3: resolution: {integrity: sha512-OwVUnlNcx7H5HloK0Myv6c/C1q9cNG11HX6afdeU6q6kbuNj8jKCwVnmJHhC94LZaJ+9hvVOk4IUstb3Esg81w==} dependencies: @@ -5323,6 +6119,25 @@ packages: resolution: {integrity: sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==} dev: false + /io-ts-reporters@2.0.1(fp-ts@2.16.6)(io-ts@2.2.21): + resolution: {integrity: sha512-RVpLstYBsmTGgCW9wJ5KVyN/eRnRUDp87Flt4D1O3aJ7oAnd8csq8aXuu7ZeNK8qEDKmjUl9oUuzfwikaNAMKQ==} + peerDependencies: + fp-ts: ^2.10.5 + io-ts: ^2.2.16 + dependencies: + '@scarf/scarf': 1.3.0 + fp-ts: 2.16.6 + io-ts: 2.2.21(fp-ts@2.16.6) + dev: true + + /io-ts@2.2.21(fp-ts@2.16.6): + resolution: {integrity: sha512-zz2Z69v9ZIC3mMLYWIeoUcwWD6f+O7yP92FMVVaXEOSZH1jnVBmET/urd/uoarD1WGBY4rCj8TAyMPzsGNzMFQ==} + peerDependencies: + fp-ts: ^2.5.0 + dependencies: + fp-ts: 2.16.6 + dev: true + /ipfs-unixfs-importer@9.0.10: resolution: {integrity: sha512-W+tQTVcSmXtFh7FWYWwPBGXJ1xDgREbIyI1E5JzDcimZLIyT5gGMfxR3oKPxxWj+GKMpP5ilvMQrbsPzWcm3Fw==} engines: {node: '>=16.0.0', npm: '>=7.0.0'} @@ -5437,10 +6252,20 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: true + /is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: false + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + dev: true + /is-nan@1.3.2: resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} engines: {node: '>= 0.4'} @@ -5510,6 +6335,11 @@ packages: which-typed-array: 1.1.15 dev: true + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + dev: true + /is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -5523,13 +6353,22 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + /isomorphic-fetch@3.0.0: + resolution: {integrity: sha512-qvUtwJ3j6qwsF3jLxkZ72qCgjMysPzDfeV240JHiGZsANBYd+EEuu35v7dfrJ9Up0Ak07D7GGSkGhCHTqg/5wA==} + dependencies: + node-fetch: 2.7.0 + whatwg-fetch: 3.6.20 + transitivePeerDependencies: + - encoding + dev: true + /isomorphic-timers-promises@1.0.1: resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==} engines: {node: '>=10'} dev: true - /isows@1.0.3(ws@8.13.0): - resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} + /isows@1.0.4(ws@8.13.0): + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} peerDependencies: ws: '*' dependencies: @@ -5559,8 +6398,8 @@ packages: /it-take@1.0.2: resolution: {integrity: sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==} - /jackspeak@2.3.6: - resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + /jackspeak@3.2.3: + resolution: {integrity: sha512-htOzIMPbpLid/Gq9/zaz9SfExABxqRe1sSCdxntlO/aMD6u0issZQiY25n2GKQUtJ02j7z5sfptlAOMpWWOmvw==} engines: {node: '>=14'} dependencies: '@isaacs/cliui': 8.0.2 @@ -5743,6 +6582,18 @@ packages: lodash._reinterpolate: 3.0.0 dev: true + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + dev: true + /long@4.0.0: resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} @@ -5767,8 +6618,8 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} dev: true @@ -5812,7 +6663,7 @@ packages: /match-sorter@6.3.4: resolution: {integrity: sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==} dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.24.6 remove-accents: 0.5.0 dev: false @@ -6003,7 +6854,7 @@ packages: resolution: {integrity: sha512-/e2l/6+OdGp/FB+ctrJ9Avz71AN/GRH3oi/3KAx/kMnoUsD6q0woXlDT8lLEeViVKE7oZxE7RXzvO3T8kF2/sA==} dependencies: '@types/hast': 3.0.4 - '@types/mdast': 4.0.3 + '@types/mdast': 4.0.4 '@ungap/structured-clone': 1.2.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.0 @@ -6032,6 +6883,11 @@ packages: '@types/mdast': 3.0.15 dev: false + /meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + dev: true + /merge-options@3.0.4: resolution: {integrity: sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==} engines: {node: '>=10'} @@ -6046,8 +6902,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - /mermaid@10.9.0: - resolution: {integrity: sha512-swZju0hFox/B/qoLKK0rOxxgh8Cf7rJSfAUc1u8fezVihYMvrJAS45GzAxTVf4Q+xn9uMgitBcmWk7nWGXOs/g==} + /mermaid@10.9.1: + resolution: {integrity: sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA==} dependencies: '@braintree/sanitize-url': 6.0.4 '@types/d3-scale': 4.0.8 @@ -6058,7 +6914,7 @@ packages: d3-sankey: 0.12.3 dagre-d3-es: 7.0.10 dayjs: 1.11.11 - dompurify: 3.1.2 + dompurify: 3.1.5 elkjs: 0.9.3 katex: 0.16.10 khroma: 2.1.0 @@ -6426,7 +7282,7 @@ packages: resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.5 decode-named-character-reference: 1.0.2 micromark-core-commonmark: 1.1.0 micromark-factory-space: 1.1.0 @@ -6461,6 +7317,18 @@ packages: brorand: 1.1.0 dev: true + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -6504,8 +7372,8 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} dev: true @@ -6522,6 +7390,10 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + /multiformats@13.1.1: + resolution: {integrity: sha512-JiptvwMmlxlzIlLLwhCi/srf/nk409UL0eUBr0kioRJq15hqqKyg68iftrBvhCRjR6Rw4fkNnSc4ZJXJDuta/Q==} + dev: true + /multiformats@9.9.0: resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} @@ -6529,6 +7401,10 @@ packages: resolution: {integrity: sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==} engines: {node: '>=8.0.0'} + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: true + /mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -6616,7 +7492,7 @@ packages: '@next/env': 14.2.3 '@swc/helpers': 0.5.5 busboy: 1.6.0 - caniuse-lite: 1.0.30001616 + caniuse-lite: 1.0.30001627 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.3.1 @@ -6661,7 +7537,7 @@ packages: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 - zod: 3.23.4 + zod: 3.23.8 dev: false /nextra@2.13.4(next@14.2.3)(react-dom@18.3.1)(react@18.3.1): @@ -6700,7 +7576,7 @@ packages: title: 3.5.3 unist-util-remove: 4.0.0 unist-util-visit: 5.0.0 - zod: 3.23.4 + zod: 3.23.8 transitivePeerDependencies: - supports-color dev: false @@ -6812,6 +7688,14 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: false + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + dev: true + /object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -6883,6 +7767,12 @@ packages: /ohm-js@16.5.0: resolution: {integrity: sha512-OXuB3g1cdP6vCyaGziLmihLkBrtfH9H9jmYp5nRqad093KVzkUSi062IVv5l+3SB/HIbMyDvBqhgR3Q3S+EEnw==} engines: {node: '>=0.12.1'} + dev: false + + /ohm-js@17.1.0: + resolution: {integrity: sha512-xc3B5dgAjTBQGHaH7B58M2Pmv6WvzrJ/3/7LeUzXNg0/sY3jQPdSd/S2SstppaleO77rifR1tyhdfFGNIwxf2Q==} + engines: {node: '>=0.12.1'} + dev: true /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -6897,14 +7787,14 @@ packages: mimic-fn: 2.1.0 dev: true - /openapi-fetch@0.9.3: - resolution: {integrity: sha512-tC1NDn71vJHeCzu+lYdrnIpgRt4GxR0B4eSwXNb15ypWpZcpaEOwHFkoz8FcfG5Fvqkz2P0Fl9zQF1JJwBjuvA==} + /openapi-fetch@0.9.7: + resolution: {integrity: sha512-NMp/GEmWSGO0b2d731IdGXcMP2PF85Rk1q+oy2Mx/DYMdP3pgTZTRamKxgZpkHhM4iOVsyD1iP5HKL9Fr6CH2Q==} dependencies: - openapi-typescript-helpers: 0.0.7 + openapi-typescript-helpers: 0.0.8 dev: false - /openapi-typescript-helpers@0.0.7: - resolution: {integrity: sha512-7nwlAtdA1fULipibFRBWE/rnF114q6ejRYzNvhdA/x+qTWAZhXGLc/368dlwMlyJDvCQMCnADjpzb5BS5ZmNSA==} + /openapi-typescript-helpers@0.0.8: + resolution: {integrity: sha512-1eNjQtbfNi5Z/kFhagDIaIRj6qqDzhjNJKz8cmMW0CVdGwT6e1GLbAfgI0d28VTJa1A8jz82jm/4dG8qNoNS8g==} dev: false /openapi-typescript@7.0.0-next.8(typescript@5.4.5): @@ -6913,7 +7803,7 @@ packages: peerDependencies: typescript: ^5.x dependencies: - '@redocly/openapi-core': 1.11.0 + '@redocly/openapi-core': 1.14.0 ansi-colors: 4.1.3 supports-color: 9.4.0 typescript: 5.4.5 @@ -6934,10 +7824,30 @@ packages: word-wrap: 1.2.5 dev: true + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + /os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} dev: true + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: true + /p-cancelable@3.0.0: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} @@ -7082,12 +7992,12 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-scurry@1.10.2: - resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} - engines: {node: '>=16 || 14 >=14.17'} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 + lru-cache: 10.2.2 + minipass: 7.1.2 dev: true /path-type@4.0.0: @@ -7121,6 +8031,11 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} + dev: false /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -7169,7 +8084,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 dev: false @@ -7219,13 +8134,17 @@ packages: '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 '@types/long': 4.0.2 - '@types/node': 20.12.11 + '@types/node': 20.14.1 long: 4.0.0 /protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} dev: false + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + /ps-tree@1.2.0: resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} engines: {node: '>= 0.10'} @@ -7257,6 +8176,11 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + /qrcode-terminal@0.12.0: + resolution: {integrity: sha512-EXtzRZmC+YGmGlDFbXKxQiMZNwCLEO6BANKXG4iCtSIM0yqc/pappSx3RIKr4r0uh5JsBckOXeKrB3Iz7mdQpQ==} + hasBin: true + dev: true + /qs@6.12.1: resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} engines: {node: '>=0.6'} @@ -7495,6 +8419,14 @@ packages: lowercase-keys: 3.0.0 dev: true + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + dev: true + /retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} @@ -7548,6 +8480,37 @@ packages: fsevents: 2.3.3 dev: true + /rollup@4.18.0: + resolution: {integrity: sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.18.0 + '@rollup/rollup-android-arm64': 4.18.0 + '@rollup/rollup-darwin-arm64': 4.18.0 + '@rollup/rollup-darwin-x64': 4.18.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.18.0 + '@rollup/rollup-linux-arm-musleabihf': 4.18.0 + '@rollup/rollup-linux-arm64-gnu': 4.18.0 + '@rollup/rollup-linux-arm64-musl': 4.18.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.18.0 + '@rollup/rollup-linux-riscv64-gnu': 4.18.0 + '@rollup/rollup-linux-s390x-gnu': 4.18.0 + '@rollup/rollup-linux-x64-gnu': 4.18.0 + '@rollup/rollup-linux-x64-musl': 4.18.0 + '@rollup/rollup-win32-arm64-msvc': 4.18.0 + '@rollup/rollup-win32-ia32-msvc': 4.18.0 + '@rollup/rollup-win32-x64-msvc': 4.18.0 + fsevents: 2.3.3 + dev: true + + /run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + dev: true + /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: @@ -7557,6 +8520,12 @@ packages: resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} dev: false + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: true + /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -7573,7 +8542,6 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false /scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} @@ -7603,6 +8571,12 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + engines: {node: '>=10'} + hasBin: true + dev: true + /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} dependencies: @@ -7900,6 +8874,13 @@ packages: engines: {node: '>=6'} dev: true + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: true + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -7943,7 +8924,7 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 10.3.12 + glob: 10.4.1 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -7989,6 +8970,10 @@ packages: /symbol.inspect@1.0.1: resolution: {integrity: sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==} + /teslabot@1.5.0: + resolution: {integrity: sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==} + dev: true + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -8008,7 +8993,6 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: false /timers-browserify@2.0.12: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} @@ -8032,12 +9016,74 @@ packages: engines: {node: '>=0.10.0'} dev: false + /tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + dependencies: + os-tmpdir: 1.0.2 + dev: true + /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 + /ton-crypto-primitives@2.0.0: + resolution: {integrity: sha512-K+qKjpS0h9sPW6oExcpxnzuQ7nEgHEiDKwIqE/jWD25o8iFGe3FWj1gKxFNbKE9wwYKc5IV8FwrU+raF0KO5nQ==} + dependencies: + jssha: 3.2.0 + dev: true + + /ton-crypto@2.1.0: + resolution: {integrity: sha512-PZnmCOShfgq9tCRM8E7hG8nCkpkOyZvDLPXmZN92ZEBrfTT0NKKf0imndkxG5DkgWMjc6IKfgpnEaJDH9qN6ZQ==} + dependencies: + jssha: 3.2.0 + ton-crypto-primitives: 2.0.0 + tweetnacl: 1.0.3 + dev: true + + /ton-crypto@3.2.0: + resolution: {integrity: sha512-fltdBNQ45gARMuGMEOjPZWPJ5eSql8p3CA0Dj7tPv5lhU5ziT8SxXLAzDraR9HJ8YpjBHLVvYyhMLRiEwxgtMQ==} + dependencies: + jssha: 3.2.0 + ton-crypto-primitives: 2.0.0 + tweetnacl: 1.0.3 + dev: true + + /ton-x@2.1.0: + resolution: {integrity: sha512-AJx4kRaRqPdTCQO8ik8E0aICg4NutUgTxnepbjoc7Emi3bMKoANiketmOFK07+vFX9QQO2NoJnqM8kgSsposhw==} + dependencies: + '@types/bn.js': 5.1.5 + axios: 0.27.2 + bn.js: 5.2.1 + fp-ts: 2.16.6 + io-ts: 2.2.21(fp-ts@2.16.6) + teslabot: 1.5.0 + ton: 9.8.0 + ton-crypto: 3.2.0 + transitivePeerDependencies: + - debug + dev: true + + /ton@9.8.0: + resolution: {integrity: sha512-aH/7ODiEulPRZracSfQ4KeaV6iDmzjn14+YMsZ9x0sNlzhtP4blMIFXPJFp4BOc4INb5vTrfA0u+JtOoXlBO0A==} + dependencies: + axios: 0.25.0 + bn.js: 5.2.0 + dataloader: 2.2.2 + ethjs-unit: 0.1.6 + fp-ts: 2.16.6 + io-ts: 2.2.21(fp-ts@2.16.6) + io-ts-reporters: 2.0.1(fp-ts@2.16.6)(io-ts@2.2.21) + symbol.inspect: 1.0.1 + teslabot: 1.5.0 + ton-crypto: 2.1.0 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - debug + dev: true + /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -8109,6 +9155,37 @@ packages: yn: 3.1.1 dev: true + /ts-node@10.9.2(@types/node@20.14.1)(typescript@5.4.5): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.14.1 + acorn: 8.11.3 + acorn-walk: 8.3.2 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + dev: true + /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true @@ -8116,8 +9193,8 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@8.0.2(typescript@5.4.5): - resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} + /tsup@8.1.0(typescript@5.4.5): + resolution: {integrity: sha512-UFdfCAXukax+U6KzeTNO2kAARHcWxmKsnvSPXUcfA1D+kU05XDccCrkffCQpFaWDsZfV0jMyTsxU39VfCp6EOg==} engines: {node: '>=18'} hasBin: true peerDependencies: @@ -8135,17 +9212,17 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.3(esbuild@0.19.12) + bundle-require: 4.2.1(esbuild@0.21.4) cac: 6.7.14 chokidar: 3.6.0 - debug: 4.3.4(supports-color@8.1.1) - esbuild: 0.19.12 + debug: 4.3.5 + esbuild: 0.21.4 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 postcss-load-config: 4.0.2 resolve-from: 5.0.0 - rollup: 4.17.0 + rollup: 4.18.0 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 @@ -8167,7 +9244,6 @@ packages: /tweetnacl-util@0.15.1: resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} - dev: false /tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} @@ -8204,8 +9280,8 @@ packages: engines: {node: '>=14.17'} hasBin: true - /ua-parser-js@1.0.37: - resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + /ua-parser-js@1.0.38: + resolution: {integrity: sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==} dev: false /uint8arrays@3.1.1: @@ -8380,6 +9456,14 @@ packages: qs: 6.12.1 dev: true + /use-sync-external-store@1.2.0(react@18.3.1): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.3.1 + dev: false + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -8472,8 +9556,8 @@ packages: vfile-message: 4.0.2 dev: false - /viem@2.9.28(typescript@5.4.5): - resolution: {integrity: sha512-/1iTg8yQlCNJ+7wSmdsBNB/vhjWqFJtTH6XZXHjGXrZnlBxAtHR5ZAr5TvTJc/2nhVIVE4BkCe5JCrIiSuZodg==} + /viem@2.13.5(typescript@5.4.5): + resolution: {integrity: sha512-jXkFh52GwBLJJE/OWkPZdXwiO3zpgTL7ebhpMcQkaa7F7xEhYeGBjqs26zn6rjlUYP43JjoAf/VnpmbYTQvR6Q==} peerDependencies: typescript: '>=5.0.4' peerDependenciesMeta: @@ -8486,7 +9570,7 @@ packages: '@scure/bip32': 1.3.2 '@scure/bip39': 1.2.1 abitype: 1.0.0(typescript@5.4.5) - isows: 1.0.3(ws@8.13.0) + isows: 1.0.4(ws@8.13.0) typescript: 5.4.5 ws: 8.13.0 transitivePeerDependencies: @@ -8502,12 +9586,24 @@ packages: dependencies: '@rollup/plugin-inject': 5.0.5 node-stdlib-browser: 1.2.0 - vite: 5.2.10 + vite: 5.2.10(@types/node@20.14.1) + transitivePeerDependencies: + - rollup + dev: true + + /vite-plugin-node-polyfills@0.21.0(vite@5.2.12): + resolution: {integrity: sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + '@rollup/plugin-inject': 5.0.5 + node-stdlib-browser: 1.2.0 + vite: 5.2.12 transitivePeerDependencies: - rollup dev: true - /vite@5.2.10: + /vite@5.2.10(@types/node@20.14.1): resolution: {integrity: sha512-PAzgUZbP7msvQvqdSD+ErD5qGnSFiGOoWmV5yAKUEI0kdhjbH6nMWVyZQC/hSc4aXwc0oJ9aEdIiF9Oje0JFCw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -8535,6 +9631,7 @@ packages: terser: optional: true dependencies: + '@types/node': 20.14.1 esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.17.0 @@ -8542,6 +9639,41 @@ packages: fsevents: 2.3.3 dev: true + /vite@5.2.12: + resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.20.2 + postcss: 8.4.38 + rollup: 4.18.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + /vm-browserify@1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true @@ -8554,6 +9686,12 @@ packages: resolution: {integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==} dev: false + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + /web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} dev: false @@ -8579,6 +9717,10 @@ packages: hasBin: true dev: false + /whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + dev: true + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: @@ -8728,6 +9870,30 @@ packages: /zod@3.23.4: resolution: {integrity: sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw==} + dev: false + + /zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + /zustand@4.5.2(@types/react@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==} + engines: {node: '>=12.7.0'} + peerDependencies: + '@types/react': '>=16.8' + immer: '>=9.0.6' + react: '>=16.8' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + dependencies: + '@types/react': 18.3.1 + react: 18.3.1 + use-sync-external-store: 1.2.0(react@18.3.1) + dev: false /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -8740,7 +9906,7 @@ packages: dependencies: '@types/fs-extra': 11.0.4 '@types/minimist': 1.2.5 - '@types/node': 18.19.28 + '@types/node': 18.19.34 '@types/ps-tree': 1.1.6 '@types/which': 3.0.3 chalk: 5.3.0