add create refereal account instruction to listing (#323)

* add create refereal account instruction to listing

* existing account check
This commit is contained in:
Adrian Brzeziński 2023-11-22 17:52:34 +01:00 committed by GitHub
parent d66abc1c67
commit 0c88638868
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 80 additions and 19 deletions

View File

@ -5,7 +5,11 @@ import { ChangeEvent, useCallback, useMemo, useState } from 'react'
import mangoStore, { CLUSTER } from '@store/mangoStore'
import { Token } from 'types/jupiter'
import { handleGetRoutes } from '@components/swap/useQuoteRoutes'
import { JUPITER_PRICE_API_MAINNET, USDC_MINT } from 'utils/constants'
import {
JUPITER_PRICE_API_MAINNET,
JUPITER_REFERRAL_PK,
USDC_MINT,
} from 'utils/constants'
import { AccountMeta, PublicKey, SYSVAR_RENT_PUBKEY } from '@solana/web3.js'
import { useWallet } from '@solana/wallet-adapter-react'
import { OPENBOOK_PROGRAM_ID, toNative } from '@blockworks-foundation/mango-v4'
@ -48,6 +52,7 @@ import {
LISTING_PRESETS_PYTH,
} from '@blockworks-foundation/mango-v4-settings/lib/helpers/listingTools'
import Checkbox from '@components/forms/Checkbox'
import { ReferralProvider } from '@jup-ag/referral-sdk'
type FormErrors = Partial<Record<keyof TokenListForm, string>>
@ -457,13 +462,10 @@ const ListToken = ({ goBack }: { goBack: () => void }) => {
})
return
}
const mint = new PublicKey(advForm.mintPk)
const [mintInfoPk] = PublicKey.findProgramAddressSync(
[
Buffer.from('MintInfo'),
group!.publicKey.toBuffer(),
new PublicKey(advForm.mintPk).toBuffer(),
],
[Buffer.from('MintInfo'), group!.publicKey.toBuffer(), mint.toBuffer()],
client.programId,
)
@ -509,7 +511,7 @@ const ListToken = ({ goBack }: { goBack: () => void }) => {
.accounts({
admin: MANGO_DAO_WALLET,
group: group!.publicKey,
mint: new PublicKey(advForm.mintPk),
mint: mint,
oracle: new PublicKey(advForm.oraclePk),
payer: MANGO_DAO_WALLET,
rent: SYSVAR_RENT_PUBKEY,
@ -568,7 +570,7 @@ const ListToken = ({ goBack }: { goBack: () => void }) => {
const trustlessIx = await client!.program.methods
.tokenRegisterTrustless(Number(advForm.tokenIndex), advForm.name)
.accounts({
mint: new PublicKey(advForm.mintPk),
mint: mint,
payer: MANGO_DAO_FAST_LISTING_WALLET,
rent: SYSVAR_RENT_PUBKEY,
oracle: new PublicKey(advForm.oraclePk),
@ -597,6 +599,22 @@ const ListToken = ({ goBack }: { goBack: () => void }) => {
if (listingTier !== 'UNTRUSTED') {
proposalTx.push(registerMarketix)
}
const rp = new ReferralProvider(connection)
const tx = await rp.initializeReferralTokenAccount({
payerPubKey:
listingTier === 'UNTRUSTED'
? MANGO_DAO_FAST_LISTING_WALLET
: MANGO_DAO_WALLET,
referralAccountPubKey: JUPITER_REFERRAL_PK,
mint: mint,
})
const isExistingAccount =
(await connection.getBalance(tx.referralTokenAccountPubKey)) > 1
if (!isExistingAccount) {
proposalTx.push(...tx.tx.instructions)
}
const walletSigner = wallet as never
setCreatingProposal(true)

View File

@ -28,6 +28,7 @@
"@blockworks-foundation/mangolana": "0.0.1-beta.15",
"@headlessui/react": "1.6.6",
"@heroicons/react": "2.0.18",
"@jup-ag/referral-sdk": "0.1.5",
"@metaplex-foundation/js": "0.19.4",
"@project-serum/anchor": "0.25.0",
"@pythnetwork/client": "2.15.0",

View File

@ -167,6 +167,10 @@ export const CUSTOM_TOKEN_ICONS: { [key: string]: boolean } = {
export const DEFAULT_FAVORITE_MKTS = ['SOL-PERP', 'ETH-PERP', 'BTC-PERP']
export const JUPITER_REFERRAL_PK = new PublicKey(
'EV4qhLE2yPKdUPdQ74EWJUn21xT3eGQxG3DRR1g9NNFc',
)
export const WHITE_LIST_API = 'https://api.mngo.cloud/whitelist/v1/'
export const DAILY_SECONDS = 86400
export const DAILY_MILLISECONDS = 86400000

View File

@ -24,6 +24,13 @@
dependencies:
regenerator-runtime "^0.14.0"
"@babel/runtime@^7.23.2":
version "7.23.4"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.4.tgz#36fa1d2b36db873d25ec631dcc4923fdc1cf2e2e"
integrity sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==
dependencies:
regenerator-runtime "^0.14.0"
"@blockworks-foundation/mango-feeds@0.1.7":
version "0.1.7"
resolved "https://registry.yarnpkg.com/@blockworks-foundation/mango-feeds/-/mango-feeds-0.1.7.tgz#07283e4f6b52ce2e631b866f7675b395dcc15f9e"
@ -124,7 +131,7 @@
eventemitter3 "^4.0.7"
uuid "^8.3.2"
"@coral-xyz/anchor@^0.26.0", "@coral-xyz/anchor@^0.27.0", "@coral-xyz/anchor@^0.28.0", "@coral-xyz/anchor@^0.28.1-beta.2":
"@coral-xyz/anchor@0.28.1-beta.2", "@coral-xyz/anchor@^0.26.0", "@coral-xyz/anchor@^0.27.0", "@coral-xyz/anchor@^0.28.0", "@coral-xyz/anchor@^0.28.1-beta.2":
version "0.27.0"
resolved "https://registry.yarnpkg.com/@coral-xyz/anchor/-/anchor-0.27.0.tgz#621e5ef123d05811b97e49973b4ed7ede27c705c"
integrity sha512-+P/vPdORawvg3A9Wj02iquxb4T0C5m4P6aZBVYysKl4Amk+r6aMPZkUhilBkD6E4Nuxnoajv3CFykUfkGE0n5g==
@ -655,6 +662,16 @@
"@json-rpc-tools/types" "^1.7.6"
"@pedrouid/environment" "^1.0.1"
"@jup-ag/referral-sdk@0.1.5":
version "0.1.5"
resolved "https://registry.yarnpkg.com/@jup-ag/referral-sdk/-/referral-sdk-0.1.5.tgz#02a8bc901154659e75a5f31ae9a3e3edd28cd6cd"
integrity sha512-0R/NuBkIj2otpLnatacZqIwVAwL+OIheSlT+a2atAaNuf2WceL4lKZ/EZWm1AVTFhmFd/07HHN9PJ2fma9AMPA==
dependencies:
"@coral-xyz/anchor" "0.28.1-beta.2"
"@solana/spl-token" "0.3.8"
"@solana/web3.js" "^1.77.3"
lodash "^4.17.21"
"@keystonehq/bc-ur-registry-sol@^0.3.1":
version "0.3.1"
resolved "https://registry.yarnpkg.com/@keystonehq/bc-ur-registry-sol/-/bc-ur-registry-sol-0.3.1.tgz#5319c7c4a22cc83bbacfa6fe09aaa6fb21363f24"
@ -1031,7 +1048,7 @@
dependencies:
"@noble/hashes" "1.3.1"
"@noble/curves@^1.0.0", "@noble/curves@^1.1.0":
"@noble/curves@^1.0.0", "@noble/curves@^1.1.0", "@noble/curves@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35"
integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==
@ -1554,6 +1571,15 @@
"@solana/buffer-layout-utils" "^0.2.0"
buffer "^6.0.3"
"@solana/spl-token@0.3.8", "@solana/spl-token@^0.3.5", "@solana/spl-token@^0.3.6", "@solana/spl-token@^0.3.8":
version "0.3.8"
resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.8.tgz#8e9515ea876e40a4cc1040af865f61fc51d27edf"
integrity sha512-ogwGDcunP9Lkj+9CODOWMiVJEdRtqHAtX2rWF62KxnnSWtMZtV9rDhTrZFshiyJmxDnRL/1nKE1yJHg4jjs3gg==
dependencies:
"@solana/buffer-layout" "^4.0.0"
"@solana/buffer-layout-utils" "^0.2.0"
buffer "^6.0.3"
"@solana/spl-token@^0.1.6", "@solana/spl-token@^0.1.8":
version "0.1.8"
resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.1.8.tgz#f06e746341ef8d04165e21fc7f555492a2a0faa6"
@ -1566,15 +1592,6 @@
buffer-layout "^1.2.0"
dotenv "10.0.0"
"@solana/spl-token@^0.3.5", "@solana/spl-token@^0.3.6", "@solana/spl-token@^0.3.8":
version "0.3.8"
resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.3.8.tgz#8e9515ea876e40a4cc1040af865f61fc51d27edf"
integrity sha512-ogwGDcunP9Lkj+9CODOWMiVJEdRtqHAtX2rWF62KxnnSWtMZtV9rDhTrZFshiyJmxDnRL/1nKE1yJHg4jjs3gg==
dependencies:
"@solana/buffer-layout" "^4.0.0"
"@solana/buffer-layout-utils" "^0.2.0"
buffer "^6.0.3"
"@solana/wallet-adapter-alpha@^0.1.10":
version "0.1.10"
resolved "https://registry.yarnpkg.com/@solana/wallet-adapter-alpha/-/wallet-adapter-alpha-0.1.10.tgz#497ac17634dac4de17eba643768df9b30a13129a"
@ -2055,6 +2072,27 @@
rpc-websockets "^7.5.1"
superstruct "^0.14.2"
"@solana/web3.js@^1.77.3":
version "1.87.6"
resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.87.6.tgz#6744cfc5f4fc81e0f58241c0a92648a7320bb3bf"
integrity sha512-LkqsEBgTZztFiccZZXnawWa8qNCATEqE97/d0vIwjTclmVlc8pBpD1DmjfVHtZ1HS5fZorFlVhXfpwnCNDZfyg==
dependencies:
"@babel/runtime" "^7.23.2"
"@noble/curves" "^1.2.0"
"@noble/hashes" "^1.3.1"
"@solana/buffer-layout" "^4.0.0"
agentkeepalive "^4.3.0"
bigint-buffer "^1.1.5"
bn.js "^5.2.1"
borsh "^0.7.0"
bs58 "^4.0.1"
buffer "6.0.3"
fast-stable-stringify "^1.0.0"
jayson "^4.1.0"
node-fetch "^2.6.12"
rpc-websockets "^7.5.1"
superstruct "^0.14.2"
"@solflare-wallet/metamask-sdk@^1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@solflare-wallet/metamask-sdk/-/metamask-sdk-1.0.2.tgz#03a49956e00481d8a7c06aaa2177635e2fd642bd"