@ape.swap/bonds-sdk 5.1.25 → 5.1.27-test.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/displayHelpers.d.ts +0 -1
- package/dist/utils/displayHelpers.js +1 -13
- package/dist/utils/displayHelpers.js.map +1 -1
- package/dist/views/Bonds/components/BondRows/BondRow.js +1 -1
- package/dist/views/Bonds/components/BondRows/BondRow.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.d.ts +2 -1
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.js +23 -2
- package/dist/views/Bonds/components/BonusComponents/BonusComponent.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusContainer.d.ts +2 -1
- package/dist/views/Bonds/components/BonusComponents/BonusContainer.js +2 -2
- package/dist/views/Bonds/components/BonusComponents/BonusContainer.js.map +1 -1
- package/dist/views/Bonds/components/BonusComponents/BonusTable.d.ts +2 -1
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js +48 -2
- package/dist/views/Bonds/components/BonusComponents/BonusTable.js.map +1 -1
- package/dist/views/Bonds/components/BuyAgainRow/index.js +29 -30
- package/dist/views/Bonds/components/BuyAgainRow/index.js.map +1 -1
- package/dist/views/BuyBond/BuyComponent.js +6 -3
- package/dist/views/BuyBond/BuyComponent.js.map +1 -1
- package/dist/views/BuyBond/BuyComponentSolana.js +3 -2
- package/dist/views/BuyBond/BuyComponentSolana.js.map +1 -1
- package/dist/views/BuyBond/components/BondCards/BondCards.js +2 -2
- package/dist/views/BuyBond/components/BondCards/BondCards.js.map +1 -1
- package/dist/views/RakuraiComponent/RakuraiComponent.js +1 -1
- package/dist/views/RakuraiComponent/RakuraiComponent.js.map +1 -1
- package/dist/views/SingleBond/SoldOutBuyBondPlaceholder.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuyComponentSolana.js","sources":["../../../src/views/BuyBond/BuyComponentSolana.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport { BigNumber } from 'bignumber.js'\nimport useModal from '../../hooks/useModal'\nimport { ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport useBondsData from '../../state/bonds/useBondsData'\nimport useTokenFromZapList from '../../hooks/useTokenFromZapList'\nimport { usePopups } from '../../state/popups/usePopups'\nimport {\n formatNumber,\n formatUSDNumber,\n getMaxBuy,\n getPayoutAmount,\n getPrincipalAmount,\n} from '../../utils/displayHelpers'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { useSlippage } from '../../state/slippage/useSlippage'\nimport { getSymbol } from '../../utils/getNativeTicker'\nimport BondModalHeader from './components/BondModalHeader'\nimport BondCards from './components/BondCards/BondCards'\nimport Estimations from './components/Estimations'\nimport ProjectDescription from './components/ProjectDescription'\nimport NoBonusModal from './components/NoBonusModal/NoBonusModal'\nimport useJupiterSolanaQuote from '../../state/zap/useJupiterSolanaQuote'\nimport useSortedZapList from '../../hooks/useSortedZapList'\n\n// Solana\nimport ConnectSolanaWalletButton from '../../components/ConnectSolanaWalletButton/ConnectSolanaWalletButton'\nimport {\n PublicKey,\n SystemProgram,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n Keypair,\n Transaction,\n Connection,\n TransactionInstruction,\n} from '@solana/web3.js'\nimport { createJupiterApiClient } from '@jup-ag/api'\nimport { derivePda } from '../../utils/derivePda'\nimport {\n getAssociatedTokenAddress,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountInstruction,\n getAccount,\n} from '@solana/spl-token'\nimport { getBondIssuanceAccountSolana } from '../../utils/getSolanaAccount'\nimport { getU64Codec } from '@solana/kit'\nimport { DEPOSIT_DISCRIMINATOR, MPL_CORE_PROGRAM_ID, PROGRAM_ID } from '../../constants/solanaConstants'\nimport { Buffer } from 'buffer'\nimport { BondsData } from '../../types/bonds'\nimport { BondIssuanceAccount } from '../../types'\nimport { getRPC } from '../../config/constants/networks'\nimport { reportError } from '../../utils/reportError'\nimport SafeHTMLComponent from '../../components/SafeHTMLComponent'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport track from '../../utils/track'\nimport { remove0xPrefix } from '../../utils/remove0xPrefix'\nimport { MCBuyComponentStyles } from '../../utils/campaignStyles'\nimport useSOLAccount from '../../hooks/accounts/useSOLAccount'\nimport { useSendReferenceId } from '../../hooks/useSendReferenceId'\nimport LifiModal from '../LifiModal/LifiModal'\nimport { getAtaWithCreateInstruction, getTokenProgramForMint } from '../../utils/solanaAtaHelper'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Text from '../../components/uikit-sdk/Text'\nimport TooltipBubble from '../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../components/uikit-sdk/Svg'\nimport Button from '../../components/uikit-sdk/Button/Button'\n\nexport interface BuyComponentSolanaProps {\n onDismiss?: () => void // this is only the modal\n bondAddress?: string\n bondChain?: number\n setBillId?: (id: string) => void\n isProjectView?: boolean\n}\n\nconst BuyComponentSolana: React.FC<BuyComponentSolanaProps> = ({\n onDismiss,\n bondAddress,\n bondChain,\n isProjectView,\n setBillId,\n}) => {\n const SDKConfig = useSDKConfig()\n\n // Hooks\n const { publicKey: accountSolana, signTransaction } = useSOLAccount()\n const { data: bonds } = useBondsData()\n const { addToastError, addToastSuccess } = usePopups()\n const { solSlippage: slippage } = useSlippage()\n const sendReferenceId = useSendReferenceId()\n\n const bondData: BondsData | undefined = bonds?.find(\n (bond) => bond?.contractAddress?.[bond?.chainId]?.toLowerCase() === bondAddress?.toLowerCase(),\n )\n\n // Tier Gating\n const trueBondPriceData = findHighestTrueBondPrice('0', bondData?.trueBondPrices)\n\n // State\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString, setInputTokenString] = useState(bondData?.lpToken?.address?.[bondData.chainId])\n\n // On-chain Data\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const isZap = inputTokenString?.toLowerCase() !== bondData?.lpToken?.address?.[bondData?.chainId]?.toLowerCase()\n\n const [\n fetchingZapQuote,\n jupiterQuote,\n zapDepositAmount,\n zapError,\n isDirectRoute,\n minimumDepositAmount,\n wrapAndUnwrapSol,\n ] = useJupiterSolanaQuote(inputValue, inputToken, bondData, accountSolana?.toBase58(), true, slippage)\n\n const { sortedZapList, isFetched: zapListFetched } = useSortedZapList(bondChain, bondData?.lpToken)\n const enrichedTokenData = sortedZapList.find((item) =>\n item.token === 'NATIVE' || inputToken === 'NATIVE'\n ? item.token === inputToken\n : item?.token?.address?.[bondChain as ChainId]?.toLowerCase() ===\n inputToken?.address?.[bondChain as ChainId]?.toLowerCase(),\n )\n const inputCurrencyBalance = enrichedTokenData?.balance\n const inputTokenPrice = enrichedTokenData?.price\n\n // Estimations - use zapDepositAmount if swapping\n const depositAmount = isZap ? zapDepositAmount : inputValue\n const youSpendString = `${formatNumber(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} = \n $${formatUSDNumber((parseFloat(inputValue) * (inputTokenPrice ?? 0)).toString())}`\n\n const exceedsRealMaxBuy = getMaxBuy(bondData, true).lte(getPayoutAmount(bondData, depositAmount, '0'))\n const exceedsSafeMaxBuy = getMaxBuy(bondData, false)\n .times(isZap ? 0.995 : 0.9995)\n .lte(getPayoutAmount(bondData, depositAmount, '0'))\n const exceedsBalance = new BigNumber(inputCurrencyBalance ?? '0').lt(inputValue)\n\n // Loading State - include zap loading\n const [loadingTx, setLoadingTx] = useState(false)\n const load = loadingTx || (fetchingZapQuote && !!inputValue)\n\n // State Handlers\n const handleCurrencySelect = useCallback((newInputToken: string) => {\n setInputValue('')\n setInputTokenString(newInputToken)\n }, [])\n\n const handleMaxButton = () => {\n const balance = new BigNumber(inputCurrencyBalance ?? '0')\n const principalDecimals = bondData?.lpToken?.decimals?.[bondData?.chainId] ?? 18\n const maxBuyAmount = getMaxBuy(bondData, SDKConfig.showLowValueBonds)\n\n if (!isZap) {\n const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), '0')\n if (maxPossibleUserPurchase > maxBuyAmount.toNumber()) {\n console.log('user balance exceeds max buy limit, setting to max buy')\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), '0')\n setInputValue(new BigNumber(principalForMaxBuy).toFixed(principalDecimals))\n } else {\n console.log('balance is ok, can be used')\n setInputValue(balance.toFixed(principalDecimals))\n }\n } else {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), '0')\n const principalForMaxBuyUSD = new BigNumber(principalForMaxBuy).times(bondData?.principalTokenPrice ?? 0)\n const maxBuyAmountInSelectedToken = principalForMaxBuyUSD.div(inputTokenPrice ?? 0)\n const decimals =\n enrichedTokenData?.token === 'NATIVE' ? 18 : (enrichedTokenData?.token.decimals[bondData?.chainId!] ?? 18)\n\n if (balance.gte(maxBuyAmountInSelectedToken)) {\n setInputValue(maxBuyAmountInSelectedToken.toFixed(decimals))\n } else {\n setInputValue(balance.toFixed(decimals))\n }\n }\n }\n\n const handleBuyCallback = async () => {\n if (!accountSolana || !bondData || !inputValue || !inputToken || !bondData) return\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n try {\n setLoadingTx(true)\n\n const connection = new Connection(getRPC(ChainId.SOL), 'confirmed')\n\n // Convert input value\n const depositAmount = new BigNumber(\n new BigNumber(inputValue).times(new BigNumber(10).pow(bondData.lpToken.decimals[ChainId.SOL]!)),\n )\n const amountBigInt = BigInt(depositAmount.toFixed(0))\n\n const user = accountSolana\n\n const trueBondPriceWithoutFee = bondData?.trueBondPrices?.[0]?.trueBondPrice\n\n const maxPrice = new BigNumber(trueBondPriceWithoutFee ?? '0')\n .times((100 + slippage) / 100)\n .dividedBy(new BigNumber(1e6))\n .toFixed(0)\n\n // Static addresses\n const bondIssuancePda = new PublicKey(bondData.contractAddress[bondData.chainId]!)\n const principalMint = new PublicKey(bondData.lpToken.address[bondData.chainId]!)\n const payoutMint = new PublicKey(bondData.earnToken.address[bondData.chainId]!)\n const collection = new PublicKey(bondData.billNnftAddress[bondData.chainId]!)\n\n // Detect token programs for both mints (supports Token-2022)\n const [principalTokenProgram, payoutTokenProgram] = await Promise.all([\n getTokenProgramForMint(connection, principalMint),\n getTokenProgramForMint(connection, payoutMint),\n ])\n\n // Fetch Bond Issuance Account\n const bondIssuanceAccounts = (await getBondIssuanceAccountSolana([\n bondIssuancePda.toBase58(),\n ])) as BondIssuanceAccount[]\n if (!bondIssuanceAccounts) return\n const bondIssuanceAccount = bondIssuanceAccounts[0]\n const feeRecipient = new PublicKey(bondIssuanceAccount.feePrincipalRecipient)\n const partnerRecipient = new PublicKey(bondIssuanceAccount.partnerPrincipalRecipient)\n const feePayoutRecipient = new PublicKey(bondIssuanceAccount.feePayoutRecipient) // ADDED\n\n // Derive PDAs\n const bondTermPda = derivePda('bond_term', bondIssuancePda, PROGRAM_ID)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n\n // Create NFT mint\n const nftMint = Keypair.generate()\n\n const [bondPda] = PublicKey.findProgramAddressSync(\n [Buffer.from('bond'), bondIssuancePda.toBuffer(), nftMint.publicKey.toBuffer()],\n PROGRAM_ID,\n )\n\n // ATAs - use correct token program for each mint\n const userPrincipalAta = await getAssociatedTokenAddress(principalMint, user, true, principalTokenProgram)\n const treasuryAta = await getAssociatedTokenAddress(payoutMint, bondIssuancePda, true, payoutTokenProgram)\n const feePrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n feeRecipient,\n true,\n principalTokenProgram,\n )\n const partnerPrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n partnerRecipient,\n true,\n principalTokenProgram,\n )\n\n const { address: feePayoutRecipientAta, createInstruction: createPayoutFeeRecipientAtaIx } =\n await getAtaWithCreateInstruction(connection, payoutMint, feePayoutRecipient, user)\n\n // Encode args\n const u64Codec = getU64Codec()\n const amountEncoded = Buffer.from(u64Codec.encode(amountBigInt))\n const maxPriceEncoded = Buffer.from(u64Codec.encode(BigInt(maxPrice)))\n const instructionData = Buffer.concat([DEPOSIT_DISCRIMINATOR, amountEncoded, maxPriceEncoded])\n\n // Instruction\n const keys = [\n { pubkey: bondPda, isSigner: false, isWritable: true },\n { pubkey: nftMint.publicKey, isSigner: true, isWritable: true },\n { pubkey: user, isSigner: true, isWritable: true },\n { pubkey: bondPricingPda, isSigner: false, isWritable: true },\n { pubkey: bondTermPda, isSigner: false, isWritable: true },\n { pubkey: bondIssuancePda, isSigner: false, isWritable: true },\n { pubkey: collection, isSigner: false, isWritable: true },\n { pubkey: userPrincipalAta, isSigner: false, isWritable: true },\n { pubkey: feePrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: partnerPrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: feePayoutRecipientAta, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: principalMint, isSigner: false, isWritable: false },\n { pubkey: payoutMint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: principalTokenProgram, isSigner: false, isWritable: false }, // principal_token_program (dynamic)\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // payout_token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: MPL_CORE_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },\n ]\n\n const instruction = new TransactionInstruction({\n keys,\n programId: PROGRAM_ID,\n data: instructionData,\n })\n\n // Create tx (prepend payout fee recipient ATA creation if needed)\n const transaction = new Transaction()\n if (createPayoutFeeRecipientAtaIx) transaction.add(createPayoutFeeRecipientAtaIx)\n transaction.add(instruction)\n transaction.feePayer = user\n\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n transaction.recentBlockhash = blockhash\n // Sign tx\n transaction.partialSign(nftMint)\n const signedTx = await signTransaction?.(transaction)!\n\n // Sends tx, generates hash\n const txId = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n // awaits hash confirmation on chain - commitment \"confirmed\"\n await connection.confirmTransaction(\n {\n signature: txId,\n blockhash,\n lastValidBlockHeight,\n },\n 'confirmed',\n )\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'lp-buy',\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, txId)\n\n // waits 3 seconds before triggering after-purchase flow\n await new Promise((resolve) => setTimeout(resolve, 3000))\n\n addToastSuccess(txId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n } catch (error: any) {\n console.error('Error during bond purchase:', error)\n addToastError(error?.message || 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error.message,\n extraInfo: { type: 'solanaBuyBond', error: error.message },\n chainId: bondChain,\n account: accountSolana.toString(),\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n // Helper: Build Jupiter swap instructions from API response\n const buildSwapInstructions = (swapResult: any) => {\n const swapInstruction = new TransactionInstruction({\n programId: new PublicKey(swapResult.swapInstruction.programId),\n keys: swapResult.swapInstruction.accounts.map((key: any) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n data: Buffer.from(swapResult.swapInstruction.data, 'base64'),\n })\n\n const setupInstructions = (swapResult.setupInstructions || []).map(\n (ix: any) =>\n new TransactionInstruction({\n programId: new PublicKey(ix.programId),\n keys: ix.accounts.map((key: any) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n data: Buffer.from(ix.data, 'base64'),\n }),\n )\n\n return { setupInstructions, swapInstruction }\n }\n\n // Helper: Build bond instruction with specified amount\n const buildBondInstruction = (amount: bigint, maxPriceEncoded: Buffer, bondKeys: any[]) => {\n const u64Codec = getU64Codec()\n const amountEncoded = Buffer.from(u64Codec.encode(amount))\n const instructionData = Buffer.concat([DEPOSIT_DISCRIMINATOR, amountEncoded, maxPriceEncoded])\n\n return new TransactionInstruction({\n keys: bondKeys,\n programId: PROGRAM_ID,\n data: instructionData,\n })\n }\n\n // Helper: Ensure user's principal token account exists\n const ensureUserPrincipalAtaExists = async (\n connection: Connection,\n payer: PublicKey,\n principalMint: PublicKey,\n user: PublicKey,\n tokenProgram: PublicKey,\n ): Promise<{ ataAddress: PublicKey; createInstruction: TransactionInstruction | null }> => {\n const userPrincipalAta = await getAssociatedTokenAddress(principalMint, user, true, tokenProgram)\n\n try {\n // Check if account exists\n await getAccount(connection, userPrincipalAta, undefined, tokenProgram)\n return { ataAddress: userPrincipalAta, createInstruction: null }\n } catch {\n // Account doesn't exist, return instruction to create it\n const createAtaIx = createAssociatedTokenAccountInstruction(\n payer, // fee payer\n userPrincipalAta, // ATA to create\n user, // owner of ATA\n principalMint, // mint\n tokenProgram, // token program\n )\n return { ataAddress: userPrincipalAta, createInstruction: createAtaIx }\n }\n }\n\n // Helper: Track zap events\n const trackZapEvents = (txType: 'single-tx' | 'two-tx') => {\n track({\n event: 'zap',\n chain: bondChain,\n data: {\n cat: 'bond',\n token1: getSymbol(inputToken),\n token2: bondData?.lpToken.symbol ?? '',\n amount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: `zap-buy-${txType}`,\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n }\n\n const handleZapCallback = async () => {\n if (loadingTx || !accountSolana || !bondData || !jupiterQuote || !signTransaction) return\n\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n try {\n setLoadingTx(true)\n const connection = new Connection(getRPC(ChainId.SOL), 'confirmed')\n const jupiterApi = createJupiterApiClient()\n\n // STEP 1: Calculate bond parameters and prepare accounts\n const trueBondPriceWithoutFee = bondData?.trueBondPrices?.[0]?.trueBondPrice\n const maxPrice = new BigNumber(trueBondPriceWithoutFee ?? '0')\n .times((100 + slippage) / 100)\n .dividedBy(new BigNumber(1e6))\n .toFixed(0)\n console.log(isDirectRoute ? 'Using direct route' : 'Using multi-hop route')\n const depositAmountForBond = isDirectRoute ? minimumDepositAmount : zapDepositAmount\n\n const bondDepositAmount = new BigNumber(depositAmountForBond).times(\n new BigNumber(10).pow(bondData.lpToken.decimals[ChainId.SOL]!),\n )\n const amountBigInt = BigInt(bondDepositAmount.toFixed(0))\n\n const bondIssuancePda = new PublicKey(bondData.contractAddress[bondData.chainId]!)\n const principalMint = new PublicKey(bondData.lpToken.address[bondData.chainId]!)\n const payoutMint = new PublicKey(bondData.earnToken.address[bondData.chainId]!)\n const collection = new PublicKey(bondData.billNnftAddress[bondData.chainId]!)\n\n // Detect token programs for both mints (supports Token-2022)\n const [principalTokenProgram, payoutTokenProgram] = await Promise.all([\n getTokenProgramForMint(connection, principalMint),\n getTokenProgramForMint(connection, payoutMint),\n ])\n\n const bondIssuanceAccounts = (await getBondIssuanceAccountSolana([\n bondIssuancePda.toBase58(),\n ])) as BondIssuanceAccount[]\n if (!bondIssuanceAccounts) throw new Error('Failed to fetch bond issuance account')\n\n const bondIssuanceAccount = bondIssuanceAccounts[0]\n const feeRecipient = new PublicKey(bondIssuanceAccount.feePrincipalRecipient)\n const partnerRecipient = new PublicKey(bondIssuanceAccount.partnerPrincipalRecipient)\n const feePayoutRecipient = new PublicKey(bondIssuanceAccount.feePayoutRecipient)\n\n const bondTermPda = derivePda('bond_term', bondIssuancePda, PROGRAM_ID)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n\n const nftMint = Keypair.generate()\n const [bondPda] = PublicKey.findProgramAddressSync(\n [Buffer.from('bond'), bondIssuancePda.toBuffer(), nftMint.publicKey.toBuffer()],\n PROGRAM_ID,\n )\n\n // Ensure user's USDC account exists, get creation instruction if needed\n const { ataAddress: userPrincipalAta, createInstruction: createPrincipalAtaIx } =\n await ensureUserPrincipalAtaExists(\n connection,\n accountSolana,\n principalMint,\n accountSolana,\n principalTokenProgram,\n )\n const treasuryAta = await getAssociatedTokenAddress(payoutMint, bondIssuancePda, true, payoutTokenProgram)\n const feePrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n feeRecipient,\n true,\n principalTokenProgram,\n )\n const partnerPrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n partnerRecipient,\n true,\n principalTokenProgram,\n )\n const { address: feePayoutRecipientAta, createInstruction: createPayoutFeeRecipientAtaIx } =\n await getAtaWithCreateInstruction(connection, payoutMint, feePayoutRecipient, accountSolana)\n\n const u64Codec = getU64Codec()\n const maxPriceEncoded = Buffer.from(u64Codec.encode(BigInt(maxPrice)))\n\n const bondKeys = [\n { pubkey: bondPda, isSigner: false, isWritable: true },\n { pubkey: nftMint.publicKey, isSigner: true, isWritable: true },\n { pubkey: accountSolana, isSigner: true, isWritable: true },\n { pubkey: bondPricingPda, isSigner: false, isWritable: true },\n { pubkey: bondTermPda, isSigner: false, isWritable: true },\n { pubkey: bondIssuancePda, isSigner: false, isWritable: true },\n { pubkey: collection, isSigner: false, isWritable: true },\n { pubkey: userPrincipalAta, isSigner: false, isWritable: true },\n { pubkey: feePrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: partnerPrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: feePayoutRecipientAta, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: principalMint, isSigner: false, isWritable: false },\n { pubkey: payoutMint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: principalTokenProgram, isSigner: false, isWritable: false }, // principal_token_program (dynamic)\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // payout_token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: MPL_CORE_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },\n ]\n\n // Build initial bond instruction (for single-tx attempt)\n const bondInstruction = buildBondInstruction(amountBigInt, maxPriceEncoded, bondKeys)\n\n // STEP 2: Get Jupiter swap instructions\n const swapResult = await jupiterApi.swapInstructionsPost({\n swapRequest: {\n quoteResponse: jupiterQuote,\n userPublicKey: accountSolana.toBase58(),\n wrapAndUnwrapSol: wrapAndUnwrapSol,\n dynamicComputeUnitLimit: true,\n prioritizationFeeLamports: {\n priorityLevelWithMaxLamports: {\n maxLamports: 4000000,\n priorityLevel: 'veryHigh',\n },\n },\n },\n })\n\n console.log('=== TRANSACTION SIZE ANALYSIS ===')\n console.log('Route used:', jupiterQuote.routePlan?.map((r) => r.swapInfo.label).join(' -> '))\n console.log('Swap accounts:', swapResult.swapInstruction.accounts.length)\n console.log('Setup instructions count:', swapResult.setupInstructions?.length || 0)\n\n let totalAccounts = swapResult.swapInstruction.accounts.length\n swapResult.setupInstructions?.forEach((ix, i) => {\n console.log(` Setup ${i}: ${ix.accounts.length} accounts`)\n totalAccounts += ix.accounts.length\n })\n\n console.log('Bond instruction accounts:', 20)\n console.log('Total accounts:', totalAccounts + 20)\n console.log('=== END ANALYSIS ===')\n\n // STEP 3: TRY SINGLE TRANSACTION (if direct route)\n if (isDirectRoute) {\n try {\n // Build swap instructions\n const { setupInstructions, swapInstruction } = buildSwapInstructions(swapResult)\n const setupIxs = [\n ...(createPrincipalAtaIx ? [createPrincipalAtaIx] : []),\n ...(createPayoutFeeRecipientAtaIx ? [createPayoutFeeRecipientAtaIx] : []),\n ...setupInstructions,\n ]\n const allInstructions = [...setupIxs, swapInstruction, bondInstruction]\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n\n const combinedTx = new Transaction()\n combinedTx.add(...allInstructions)\n combinedTx.recentBlockhash = blockhash\n combinedTx.feePayer = accountSolana\n combinedTx.partialSign(nftMint)\n\n // Check size - account for signatures\n const messageSize = combinedTx.serializeMessage().length\n const numSignatures = combinedTx.signatures.length // Should be 2: nftMint + accountSolana\n const signatureOverhead = 1 + numSignatures * 64 // 1 byte for count + 64 bytes per signature\n const estimatedTxSize = messageSize + signatureOverhead\n\n console.log(`Combined transaction size: ${estimatedTxSize} bytes (limit: 1232 bytes)`)\n\n if (estimatedTxSize > 1232) {\n console.log('Transaction too large, falling back to two transactions')\n throw new Error('TRANSACTION_TOO_LARGE')\n }\n\n // Execute single transaction!\n console.log('Transaction fits. Executing combined swap + bond')\n const signedTx = await signTransaction(combinedTx)\n const txId = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction({ signature: txId, blockhash, lastValidBlockHeight }, 'confirmed')\n\n console.log('SINGLE transaction confirmed:', txId)\n\n // Track success\n trackZapEvents('single-tx')\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, txId)\n\n await new Promise((resolve) => setTimeout(resolve, 3000))\n addToastSuccess(txId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n return\n } catch (singleTxError: any) {\n if (singleTxError.message !== 'TRANSACTION_TOO_LARGE') {\n throw singleTxError\n }\n console.log('Falling back to two separate transactions...')\n }\n }\n\n // STEP 4: FALLBACK - TWO SEPARATE TRANSACTIONS\n console.log('Executing TWO separate transactions...')\n\n // Execute swap first\n const { setupInstructions, swapInstruction } = buildSwapInstructions(swapResult)\n const swapSetupIxs = [...(createPrincipalAtaIx ? [createPrincipalAtaIx] : []), ...setupInstructions]\n const swapTx = new Transaction().add(...swapSetupIxs, swapInstruction)\n swapTx.feePayer = accountSolana\n const { blockhash: swapBlockhash, lastValidBlockHeight: swapLastValid } =\n await connection.getLatestBlockhash('confirmed')\n swapTx.recentBlockhash = swapBlockhash\n\n const signedSwapTx = await signTransaction(swapTx)\n const swapTxId = await connection.sendRawTransaction(signedSwapTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction(\n { signature: swapTxId, blockhash: swapBlockhash, lastValidBlockHeight: swapLastValid },\n 'confirmed',\n )\n console.log('Swap transaction confirmed:', swapTxId)\n\n // QUERY ACTUAL BALANCE RECEIVED FROM SWAP\n const principalTokenBalance = await connection.getTokenAccountBalance(userPrincipalAta)\n const actualAmount = BigInt(principalTokenBalance.value.amount)\n\n // REBUILD BOND INSTRUCTION WITH ACTUAL AMOUNT\n const actualBondInstruction = buildBondInstruction(actualAmount, maxPriceEncoded, bondKeys)\n\n const bondTx = new Transaction()\n if (createPayoutFeeRecipientAtaIx) bondTx.add(createPayoutFeeRecipientAtaIx)\n bondTx.add(actualBondInstruction)\n bondTx.feePayer = accountSolana\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n bondTx.recentBlockhash = blockhash\n bondTx.partialSign(nftMint)\n\n const signedBondTx = await signTransaction(bondTx)\n const bondTxId = await connection.sendRawTransaction(signedBondTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction({ signature: bondTxId, blockhash, lastValidBlockHeight }, 'confirmed')\n console.log('Bond transaction confirmed:', bondTxId)\n\n // Track both transactions\n trackZapEvents('two-tx')\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, bondTxId)\n\n await new Promise((resolve) => setTimeout(resolve, 3000))\n addToastSuccess(bondTxId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n } catch (error: any) {\n console.error('Error during zap + bond purchase:', error)\n addToastError(error?.message || 'Unknown error during swap and bond')\n\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error.message,\n extraInfo: {\n type: 'solanaJupiterZapBuyBond',\n error: error.message,\n isDirectRoute,\n quote: jupiterQuote,\n },\n chainId: bondChain,\n account: accountSolana.toString(),\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleBothPurchases = () => {\n if (loadingTx) return // Prevent duplicate calls\n setLoadingTx(true)\n if (isZap) {\n handleZapCallback().finally(() => setLoadingTx(false))\n } else {\n handleBuyCallback().finally(() => setLoadingTx(false))\n }\n }\n\n const handleOpenModal = () => {\n const bonus = trueBondPriceData?.bonusWithFee ?? 0\n if (bonus <= 0) {\n openNoBonusModal()\n } else {\n handleBothPurchases()\n }\n }\n\n // Modals\n const [onOpenLifiModal] = useModal(\n <LifiModal bondChain={1151111081099710} principalToken={bondData?.lpToken?.address?.[bondData?.chainId]} />,\n true,\n false,\n 'LifiModal',\n )\n\n const [openNoBonusModal] = useModal(\n <NoBonusModal onAcknowledge={handleBothPurchases} showcaseTokenName={bondData?.showcaseTokenName} />,\n true,\n true,\n 'NoBonusModal',\n )\n // Effects\n const [hasChecked, setHasChecked] = useState(false)\n useEffect(() => {\n if (zapListFetched && !hasChecked) {\n if (parseFloat(inputCurrencyBalance ?? '0') < 0.0001) {\n setInputTokenString(\n sortedZapList[0].token === 'NATIVE' ? 'NATIVE' : sortedZapList[0].token.address[bondChain as ChainId],\n )\n }\n setHasChecked(true)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [inputCurrencyBalance, zapListFetched])\n\n return bondData ? (\n <Flex className=\"modal-content\" sx={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}>\n <Flex className=\"modaltable-container\">\n <BondModalHeader bondData={bondData} onDismiss={onDismiss} />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex sx={{ width: '100%', display: isProjectView ? ['flex', 'flex', 'flex', 'none'] : 'flex' }}>\n <BondCards bondData={bondData} isDoingMaxBuy={exceedsSafeMaxBuy && !exceedsRealMaxBuy} />\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n bondData={bondData}\n youSpendString={youSpendString}\n isZap={isZap}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={handleMaxButton}\n handleCurrencySelect={handleCurrencySelect}\n bondChainId={bondData?.chainId}\n enableZap={true}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance ?? undefined}\n selectedTokenPrice={inputTokenPrice}\n />\n {bondData?.warningCard && (\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n justifyContent: 'center',\n mt: '10px',\n borderRadius: 'normal',\n p: '2px 10px',\n }}\n >\n <Text sx={{ fontSize: '12px', fontWeight: 400, display: 'flex', alignItems: 'center', gap: '10px' }}>\n <SafeHTMLComponent html={bondData?.warningCard} />\n {bondData?.chainId === ChainId.SONIC && bondData?.earnToken.symbol.toLowerCase() === 'moon' && (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Text sx={{ textTransform: 'none' }}>\n Open the 'cog' icon menu in the top right and set the Slippage Tolerance to 5% or more.\n </Text>\n }\n width=\"315px\"\n placement=\"topRight\"\n transformTip=\"translate(9%, -10%)\"\n >\n <Svg icon=\"questionCircle\" width={14} color=\"textDisabledButton\" />\n </TooltipBubble>\n )}\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container\">\n <Flex className=\"button-container buy\">\n {!accountSolana ? (\n <ConnectSolanaWalletButton />\n ) : (\n <Flex sx={{ width: '100%', gap: '10px', flexDirection: ['column', 'column', 'column', 'row'] }}>\n <Button\n variant=\"secondary\"\n onClick={() => onOpenLifiModal()}\n sx={{ width: ['100%', '100%', '100%', '35%'], fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n bridge to sol\n </Button>\n <Button\n className=\"action-button\"\n load={load}\n disabled={\n load ||\n bondData?.soldOut ||\n !accountSolana ||\n !inputValue ||\n parseFloat(inputValue) === 0 ||\n fetchingZapQuote ||\n zapError ||\n exceedsRealMaxBuy ||\n exceedsBalance ||\n (isZap && !jupiterQuote) ||\n SDKConfig.blockSales\n }\n onClick={handleOpenModal}\n sx={{ width: ['100%', '100%', '100%', '65%'], fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n {SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : exceedsRealMaxBuy\n ? 'Exceeds Max Buy. Reduce amount'\n : exceedsBalance\n ? 'Insufficient balance'\n : zapError\n ? 'Swap quote failed'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : 'buy'}\n </Button>\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\n\nexport default BuyComponentSolana\n"],"names":["_jsx","_jsxs","ConnectSolanaWalletButton","_Fragment"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4EA,MAAM,kBAAkB,GAAsC,CAAC,EAC7D,SAAS,EACT,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,GACV,KAAI;AACH,IAAA,MAAM,SAAS,GAAG,YAAY,EAAE;;IAGhC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,aAAa,EAAE;IACrE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE;IACtC,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,GAAG,SAAS,EAAE;IACtD,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,WAAW,EAAE;AAC/C,IAAA,MAAM,eAAe,GAAG,kBAAkB,EAAE;AAE5C,IAAA,MAAM,QAAQ,GAA0B,KAAK,EAAE,IAAI,CACjD,CAAC,IAAI,KAAK,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,WAAW,EAAE,CAC/F;;IAGD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC;;IAGjF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;IAChD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;;AAGxG,IAAA,MAAM,UAAU,GAAG,mBAAmB,CAAC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC;IAC9F,MAAM,KAAK,GAAG,gBAAgB,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE;AAEhH,IAAA,MAAM,CACJ,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EACjB,GAAG,qBAAqB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC;AAEtG,IAAA,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;AACnG,IAAA,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAChD,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,UAAU,KAAK;AACxC,UAAE,IAAI,CAAC,KAAK,KAAK;AACjB,UAAE,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,SAAoB,CAAC,EAAE,WAAW,EAAE;YAC3D,UAAU,EAAE,OAAO,GAAG,SAAoB,CAAC,EAAE,WAAW,EAAE,CAC/D;AACD,IAAA,MAAM,oBAAoB,GAAG,iBAAiB,EAAE,OAAO;AACvD,IAAA,MAAM,eAAe,GAAG,iBAAiB,EAAE,KAAK;;IAGhD,MAAM,aAAa,GAAG,KAAK,GAAG,gBAAgB,GAAG,UAAU;AAC3D,IAAA,MAAM,cAAc,GAAG,CAAA,EAAG,YAAY,CAAC,UAAU,CAAC,CAAA,CAAA,EAAI,SAAS,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;AAC7E,iBAAA,EAAA,eAAe,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;IAEhG,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;AACtG,IAAA,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,EAAE,KAAK;SAChD,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,MAAM;SAC5B,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC;AACrD,IAAA,MAAM,cAAc,GAAG,IAAI,SAAS,CAAC,oBAAoB,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC;;IAGhF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,SAAS,KAAK,gBAAgB,IAAI,CAAC,CAAC,UAAU,CAAC;;AAG5D,IAAA,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,aAAqB,KAAI;QACjE,aAAa,CAAC,EAAE,CAAC;QACjB,mBAAmB,CAAC,aAAa,CAAC;IACpC,CAAC,EAAE,EAAE,CAAC;IAEN,MAAM,eAAe,GAAG,MAAK;QAC3B,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,oBAAoB,IAAI,GAAG,CAAC;AAC1D,QAAA,MAAM,iBAAiB,GAAG,QAAQ,EAAE,OAAO,EAAE,QAAQ,GAAG,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE;QAChF,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,iBAAiB,CAAC;QAErE,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,uBAAuB,GAAG,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC;AAClF,YAAA,IAAI,uBAAuB,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE;AACrD,gBAAA,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC;AACrE,gBAAA,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC;AACrF,gBAAA,aAAa,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC7E;iBAAO;AACL,gBAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;gBACzC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YACnD;QACF;aAAO;AACL,YAAA,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC;AACrF,YAAA,MAAM,qBAAqB,GAAG,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,mBAAmB,IAAI,CAAC,CAAC;YACzG,MAAM,2BAA2B,GAAG,qBAAqB,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,CAAC;AACnF,YAAA,MAAM,QAAQ,GACZ,iBAAiB,EAAE,KAAK,KAAK,QAAQ,GAAG,EAAE,IAAI,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAQ,CAAC,IAAI,EAAE,CAAC;AAE5G,YAAA,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE;gBAC5C,aAAa,CAAC,2BAA2B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC9D;iBAAO;gBACL,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1C;QACF;AACF,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,YAAW;AACnC,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ;YAAE;AAC5E,QAAA,KAAK,CAAC;AACJ,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE;gBACJ,GAAG,EAAE,QAAQ,EAAE,QAAQ;AACvB,gBAAA,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM;gBAChC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC;AACvD,aAAA;AACF,SAAA,CAAC;AACF,QAAA,IAAI;YACF,YAAY,CAAC,IAAI,CAAC;AAElB,YAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;;AAGnE,YAAA,MAAM,aAAa,GAAG,IAAI,SAAS,CACjC,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,CAAC,CAChG;YACD,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAErD,MAAM,IAAI,GAAG,aAAa;YAE1B,MAAM,uBAAuB,GAAG,QAAQ,EAAE,cAAc,GAAG,CAAC,CAAC,EAAE,aAAa;YAE5E,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,uBAAuB,IAAI,GAAG;iBAC1D,KAAK,CAAC,CAAC,GAAG,GAAG,QAAQ,IAAI,GAAG;AAC5B,iBAAA,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;iBAC5B,OAAO,CAAC,CAAC,CAAC;;AAGb,YAAA,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;AAClF,YAAA,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;AAChF,YAAA,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;AAC/E,YAAA,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;;YAG7E,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACpE,gBAAA,sBAAsB,CAAC,UAAU,EAAE,aAAa,CAAC;AACjD,gBAAA,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC;AAC/C,aAAA,CAAC;;AAGF,YAAA,MAAM,oBAAoB,IAAI,MAAM,4BAA4B,CAAC;gBAC/D,eAAe,CAAC,QAAQ,EAAE;AAC3B,aAAA,CAAC,CAA0B;AAC5B,YAAA,IAAI,CAAC,oBAAoB;gBAAE;AAC3B,YAAA,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,qBAAqB,CAAC;YAC7E,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,yBAAyB,CAAC;YACrF,MAAM,kBAAkB,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAA;;YAGhF,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC;YACvE,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,CAAC;;AAG7E,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE;AAElC,YAAA,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,sBAAsB,CAChD,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAC/E,UAAU,CACX;;AAGD,YAAA,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC;AAC1G,YAAA,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC;AAC1G,YAAA,MAAM,wBAAwB,GAAG,MAAM,yBAAyB,CAC9D,aAAa,EACb,YAAY,EACZ,IAAI,EACJ,qBAAqB,CACtB;AACD,YAAA,MAAM,4BAA4B,GAAG,MAAM,yBAAyB,CAClE,aAAa,EACb,gBAAgB,EAChB,IAAI,EACJ,qBAAqB,CACtB;YAED,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,GACxF,MAAM,2BAA2B,CAAC,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,IAAI,CAAC;;AAGrF,YAAA,MAAM,QAAQ,GAAG,WAAW,EAAE;AAC9B,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAChE,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtE,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;;AAG9F,YAAA,MAAM,IAAI,GAAG;gBACX,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;AACtD,gBAAA,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC/D,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;gBAClD,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC7D,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC1D,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC9D,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBACzD,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC/D,EAAE,MAAM,EAAE,wBAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBACvE,EAAE,MAAM,EAAE,4BAA4B,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC3E,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBACpE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC1D,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;gBAC7D,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AAC1D,gBAAA,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AACvE,gBAAA,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AACrE,gBAAA,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;gBAClE,EAAE,MAAM,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;gBAC3E,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;gBACnE,EAAE,MAAM,EAAE,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;aAC3E;AAED,YAAA,MAAM,WAAW,GAAG,IAAI,sBAAsB,CAAC;gBAC7C,IAAI;AACJ,gBAAA,SAAS,EAAE,UAAU;AACrB,gBAAA,IAAI,EAAE,eAAe;AACtB,aAAA,CAAC;;AAGF,YAAA,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE;AACrC,YAAA,IAAI,6BAA6B;AAAE,gBAAA,WAAW,CAAC,GAAG,CAAC,6BAA6B,CAAC;AACjF,YAAA,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC;AAC5B,YAAA,WAAW,CAAC,QAAQ,GAAG,IAAI;AAE3B,YAAA,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAC5F,YAAA,WAAW,CAAC,eAAe,GAAG,SAAS;;AAEvC,YAAA,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC;YAChC,MAAM,QAAQ,GAAG,MAAM,eAAe,GAAG,WAAW,CAAE;;YAGtD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;AACrE,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,mBAAmB,EAAE,WAAW;AACjC,aAAA,CAAC;;YAGF,MAAM,UAAU,CAAC,kBAAkB,CACjC;AACE,gBAAA,SAAS,EAAE,IAAI;gBACf,SAAS;gBACT,oBAAoB;aACrB,EACD,WAAW,CACZ;AAED,YAAA,KAAK,CAAC;AACJ,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,IAAI,EAAE;AACJ,oBAAA,GAAG,EAAE,QAAQ;AACb,oBAAA,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE;AAC9B,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;AAC9C,oBAAA,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE;AAC3C,oBAAA,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACtE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC;AAC3D,iBAAA;AACF,aAAA,CAAC;AAEF,YAAA,MAAM,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAE,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;;AAGrF,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAEzD,YAAA,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC;YAChC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC3C;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC;AACnD,YAAA,aAAa,CAAC,KAAK,EAAE,OAAO,IAAI,eAAe,CAAC;AAChD,YAAA,WAAW,CAAC;AACV,gBAAA,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK;gBAC9B,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;AAC1D,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;AAClC,aAAA,CAAC;QACJ;gBAAU;YACR,YAAY,CAAC,KAAK,CAAC;QACrB;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,qBAAqB,GAAG,CAAC,UAAe,KAAI;AAChD,QAAA,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAAC;YACjD,SAAS,EAAE,IAAI,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,SAAS,CAAC;AAC9D,YAAA,IAAI,EAAE,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAQ,MAAM;AAC3D,gBAAA,MAAM,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;gBACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU;AAC3B,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC;AAC7D,SAAA,CAAC;AAEF,QAAA,MAAM,iBAAiB,GAAG,CAAC,UAAU,CAAC,iBAAiB,IAAI,EAAE,EAAE,GAAG,CAChE,CAAC,EAAO,KACN,IAAI,sBAAsB,CAAC;AACzB,YAAA,SAAS,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC;AACtC,YAAA,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAQ,MAAM;AACnC,gBAAA,MAAM,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;gBACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,UAAU,EAAE,GAAG,CAAC,UAAU;AAC3B,aAAA,CAAC,CAAC;YACH,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;AACrC,SAAA,CAAC,CACL;AAED,QAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE;AAC/C,IAAA,CAAC;;IAGD,MAAM,oBAAoB,GAAG,CAAC,MAAc,EAAE,eAAuB,EAAE,QAAe,KAAI;AACxF,QAAA,MAAM,QAAQ,GAAG,WAAW,EAAE;AAC9B,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1D,QAAA,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;QAE9F,OAAO,IAAI,sBAAsB,CAAC;AAChC,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,IAAI,EAAE,eAAe;AACtB,SAAA,CAAC;AACJ,IAAA,CAAC;;AAGD,IAAA,MAAM,4BAA4B,GAAG,OACnC,UAAsB,EACtB,KAAgB,EAChB,aAAwB,EACxB,IAAe,EACf,YAAuB,KACiE;AACxF,QAAA,MAAM,gBAAgB,GAAG,MAAM,yBAAyB,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC;AAEjG,QAAA,IAAI;;YAEF,MAAM,UAAU,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,CAAC;YACvE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,IAAI,EAAE;QAClE;AAAE,QAAA,MAAM;;AAEN,YAAA,MAAM,WAAW,GAAG,uCAAuC,CACzD,KAAK;AACL,YAAA,gBAAgB;AAChB,YAAA,IAAI;AACJ,YAAA,aAAa;AACb,YAAA,YAAY,CACb;YACD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE;QACzE;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,cAAc,GAAG,CAAC,MAA8B,KAAI;AACxD,QAAA,KAAK,CAAC;AACJ,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE;AACJ,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC;AAC7B,gBAAA,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;gBACtC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC;AACxD,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,KAAK,CAAC;AACJ,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE;gBACJ,GAAG,EAAE,CAAA,QAAA,EAAW,MAAM,CAAA,CAAE;AACxB,gBAAA,IAAI,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE;AAC9B,gBAAA,UAAU,EAAE,UAAU;AACtB,gBAAA,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;AAC9C,gBAAA,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE;AAC3C,gBAAA,OAAO,EAAE,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACtE,SAAS,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC;AAC3D,aAAA;AACF,SAAA,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,iBAAiB,GAAG,YAAW;AACnC,QAAA,IAAI,SAAS,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe;YAAE;AAEnF,QAAA,KAAK,CAAC;AACJ,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,IAAI,EAAE;gBACJ,GAAG,EAAE,QAAQ,EAAE,QAAQ;AACvB,gBAAA,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM;gBAChC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,eAAe,IAAI,CAAC,CAAC;AACvD,aAAA;AACF,SAAA,CAAC;AAEF,QAAA,IAAI;YACF,YAAY,CAAC,IAAI,CAAC;AAClB,YAAA,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;AACnE,YAAA,MAAM,UAAU,GAAG,sBAAsB,EAAE;;YAG3C,MAAM,uBAAuB,GAAG,QAAQ,EAAE,cAAc,GAAG,CAAC,CAAC,EAAE,aAAa;YAC5E,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,uBAAuB,IAAI,GAAG;iBAC1D,KAAK,CAAC,CAAC,GAAG,GAAG,QAAQ,IAAI,GAAG;AAC5B,iBAAA,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC;iBAC5B,OAAO,CAAC,CAAC,CAAC;AACb,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,oBAAoB,GAAG,uBAAuB,CAAC;YAC3E,MAAM,oBAAoB,GAAG,aAAa,GAAG,oBAAoB,GAAG,gBAAgB;AAEpF,YAAA,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,oBAAoB,CAAC,CAAC,KAAK,CACjE,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,CAC/D;YACD,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAEzD,YAAA,MAAM,eAAe,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;AAClF,YAAA,MAAM,aAAa,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;AAChF,YAAA,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;AAC/E,YAAA,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAC;;YAG7E,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;AACpE,gBAAA,sBAAsB,CAAC,UAAU,EAAE,aAAa,CAAC;AACjD,gBAAA,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC;AAC/C,aAAA,CAAC;AAEF,YAAA,MAAM,oBAAoB,IAAI,MAAM,4BAA4B,CAAC;gBAC/D,eAAe,CAAC,QAAQ,EAAE;AAC3B,aAAA,CAAC,CAA0B;AAC5B,YAAA,IAAI,CAAC,oBAAoB;AAAE,gBAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC;AAEnF,YAAA,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,qBAAqB,CAAC;YAC7E,MAAM,gBAAgB,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,yBAAyB,CAAC;YACrF,MAAM,kBAAkB,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;YAEhF,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC;YACvE,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,CAAC;AAE7E,YAAA,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE;AAClC,YAAA,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,sBAAsB,CAChD,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAC/E,UAAU,CACX;;YAGD,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,GAC7E,MAAM,4BAA4B,CAChC,UAAU,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,qBAAqB,CACtB;AACH,YAAA,MAAM,WAAW,GAAG,MAAM,yBAAyB,CAAC,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC;AAC1G,YAAA,MAAM,wBAAwB,GAAG,MAAM,yBAAyB,CAC9D,aAAa,EACb,YAAY,EACZ,IAAI,EACJ,qBAAqB,CACtB;AACD,YAAA,MAAM,4BAA4B,GAAG,MAAM,yBAAyB,CAClE,aAAa,EACb,gBAAgB,EAChB,IAAI,EACJ,qBAAqB,CACtB;YACD,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,GACxF,MAAM,2BAA2B,CAAC,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,CAAC;AAE9F,YAAA,MAAM,QAAQ,GAAG,WAAW,EAAE;AAC9B,YAAA,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEtE,YAAA,MAAM,QAAQ,GAAG;gBACf,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;AACtD,gBAAA,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC/D,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC3D,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC7D,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC1D,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC9D,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBACzD,EAAE,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC/D,EAAE,MAAM,EAAE,wBAAwB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBACvE,EAAE,MAAM,EAAE,4BAA4B,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC3E,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBACpE,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;gBAC1D,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;gBAC7D,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AAC1D,gBAAA,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AACvE,gBAAA,EAAE,MAAM,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;AACrE,gBAAA,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;gBAClE,EAAE,MAAM,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;gBAC3E,EAAE,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;gBACnE,EAAE,MAAM,EAAE,0BAA0B,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE;aAC3E;;YAGD,MAAM,eAAe,GAAG,oBAAoB,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC;;AAGrF,YAAA,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC;AACvD,gBAAA,WAAW,EAAE;AACX,oBAAA,aAAa,EAAE,YAAY;AAC3B,oBAAA,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE;AACvC,oBAAA,gBAAgB,EAAE,gBAAgB;AAClC,oBAAA,uBAAuB,EAAE,IAAI;AAC7B,oBAAA,yBAAyB,EAAE;AACzB,wBAAA,4BAA4B,EAAE;AAC5B,4BAAA,WAAW,EAAE,OAAO;AACpB,4BAAA,aAAa,EAAE,UAAU;AAC1B,yBAAA;AACF,qBAAA;AACF,iBAAA;AACF,aAAA,CAAC;AAEF,YAAA,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC;AAChD,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC7F,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;AACzE,YAAA,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,UAAU,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,CAAC;YAEnF,IAAI,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM;YAC9D,UAAU,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;AAC9C,gBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,QAAA,EAAW,CAAC,CAAA,EAAA,EAAK,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAA,SAAA,CAAW,CAAC;AAC3D,gBAAA,aAAa,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM;AACrC,YAAA,CAAC,CAAC;AAEF,YAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,aAAa,GAAG,EAAE,CAAC;AAClD,YAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;;YAGnC,IAAI,aAAa,EAAE;AACjB,gBAAA,IAAI;;oBAEF,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,qBAAqB,CAAC,UAAU,CAAC;AAChF,oBAAA,MAAM,QAAQ,GAAG;AACf,wBAAA,IAAI,oBAAoB,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC;AACvD,wBAAA,IAAI,6BAA6B,GAAG,CAAC,6BAA6B,CAAC,GAAG,EAAE,CAAC;AACzE,wBAAA,GAAG,iBAAiB;qBACrB;oBACD,MAAM,eAAe,GAAG,CAAC,GAAG,QAAQ,EAAE,eAAe,EAAE,eAAe,CAAC;AACvE,oBAAA,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAE5F,oBAAA,MAAM,UAAU,GAAG,IAAI,WAAW,EAAE;AACpC,oBAAA,UAAU,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;AAClC,oBAAA,UAAU,CAAC,eAAe,GAAG,SAAS;AACtC,oBAAA,UAAU,CAAC,QAAQ,GAAG,aAAa;AACnC,oBAAA,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC;;oBAG/B,MAAM,WAAW,GAAG,UAAU,CAAC,gBAAgB,EAAE,CAAC,MAAM;oBACxD,MAAM,aAAa,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAA;oBAClD,MAAM,iBAAiB,GAAG,CAAC,GAAG,aAAa,GAAG,EAAE,CAAA;AAChD,oBAAA,MAAM,eAAe,GAAG,WAAW,GAAG,iBAAiB;AAEvD,oBAAA,OAAO,CAAC,GAAG,CAAC,8BAA8B,eAAe,CAAA,0BAAA,CAA4B,CAAC;AAEtF,oBAAA,IAAI,eAAe,GAAG,IAAI,EAAE;AAC1B,wBAAA,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC;AACtE,wBAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC;oBAC1C;;AAGA,oBAAA,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC;AAC/D,oBAAA,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC;oBAClD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;AACrE,wBAAA,aAAa,EAAE,KAAK;AACpB,wBAAA,mBAAmB,EAAE,WAAW;AACjC,qBAAA,CAAC;AAEF,oBAAA,MAAM,UAAU,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,WAAW,CAAC;AAEtG,oBAAA,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC;;oBAGlD,cAAc,CAAC,WAAW,CAAC;AAC3B,oBAAA,MAAM,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAE,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;AAErF,oBAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD,oBAAA,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC;oBAChC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACzC;gBACF;gBAAE,OAAO,aAAkB,EAAE;AAC3B,oBAAA,IAAI,aAAa,CAAC,OAAO,KAAK,uBAAuB,EAAE;AACrD,wBAAA,MAAM,aAAa;oBACrB;AACA,oBAAA,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC;gBAC7D;YACF;;AAGA,YAAA,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC;;YAGrD,MAAM,EAAE,iBAAiB,EAAE,eAAe,EAAE,GAAG,qBAAqB,CAAC,UAAU,CAAC;YAChF,MAAM,YAAY,GAAG,CAAC,IAAI,oBAAoB,GAAG,CAAC,oBAAoB,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,iBAAiB,CAAC;AACpG,YAAA,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,YAAY,EAAE,eAAe,CAAC;AACtE,YAAA,MAAM,CAAC,QAAQ,GAAG,aAAa;AAC/B,YAAA,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,GACrE,MAAM,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAClD,YAAA,MAAM,CAAC,eAAe,GAAG,aAAa;AAEtC,YAAA,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAC7E,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,mBAAmB,EAAE,WAAW;AACjC,aAAA,CAAC;YAEF,MAAM,UAAU,CAAC,kBAAkB,CACjC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,EACtF,WAAW,CACZ;AACD,YAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,QAAQ,CAAC;;YAGpD,MAAM,qBAAqB,GAAG,MAAM,UAAU,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;YACvF,MAAM,YAAY,GAAG,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC;;YAG/D,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC;AAE3F,YAAA,MAAM,MAAM,GAAG,IAAI,WAAW,EAAE;AAChC,YAAA,IAAI,6BAA6B;AAAE,gBAAA,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC;AAC5E,YAAA,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC;AACjC,YAAA,MAAM,CAAC,QAAQ,GAAG,aAAa;AAC/B,YAAA,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC;AAC5F,YAAA,MAAM,CAAC,eAAe,GAAG,SAAS;AAClC,YAAA,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AAE3B,YAAA,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC;YAClD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE;AAC7E,gBAAA,aAAa,EAAE,KAAK;AACpB,gBAAA,mBAAmB,EAAE,WAAW;AACjC,aAAA,CAAC;AAEF,YAAA,MAAM,UAAU,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,WAAW,CAAC;AAC1G,YAAA,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,QAAQ,CAAC;;YAGpD,cAAc,CAAC,QAAQ,CAAC;AACxB,YAAA,MAAM,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAE,EAAE,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;AAEzF,YAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzD,YAAA,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC;YACpC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC3C;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC;AACzD,YAAA,aAAa,CAAC,KAAK,EAAE,OAAO,IAAI,oCAAoC,CAAC;AAErE,YAAA,WAAW,CAAC;AACV,gBAAA,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK;gBAC9B,KAAK,EAAE,KAAK,CAAC,OAAO;AACpB,gBAAA,SAAS,EAAE;AACT,oBAAA,IAAI,EAAE,yBAAyB;oBAC/B,KAAK,EAAE,KAAK,CAAC,OAAO;oBACpB,aAAa;AACb,oBAAA,KAAK,EAAE,YAAY;AACpB,iBAAA;AACD,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,OAAO,EAAE,aAAa,CAAC,QAAQ,EAAE;AAClC,aAAA,CAAC;QACJ;gBAAU;YACR,YAAY,CAAC,KAAK,CAAC;QACrB;AACF,IAAA,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAK;AAC/B,QAAA,IAAI,SAAS;AAAE,YAAA,OAAM;QACrB,YAAY,CAAC,IAAI,CAAC;QAClB,IAAI,KAAK,EAAE;AACT,YAAA,iBAAiB,EAAE,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QACxD;aAAO;AACL,YAAA,iBAAiB,EAAE,CAAC,OAAO,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QACxD;AACF,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,MAAK;AAC3B,QAAA,MAAM,KAAK,GAAG,iBAAiB,EAAE,YAAY,IAAI,CAAC;AAClD,QAAA,IAAI,KAAK,IAAI,CAAC,EAAE;AACd,YAAA,gBAAgB,EAAE;QACpB;aAAO;AACL,YAAA,mBAAmB,EAAE;QACvB;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,CAAC,eAAe,CAAC,GAAG,QAAQ,CAChCA,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAA,CAAI,EAC3G,IAAI,EACJ,KAAK,EACL,WAAW,CACZ;IAED,MAAM,CAAC,gBAAgB,CAAC,GAAG,QAAQ,CACjCA,GAAA,CAAC,YAAY,EAAA,EAAC,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EAAA,CAAI,EACpG,IAAI,EACJ,IAAI,EACJ,cAAc,CACf;;IAED,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnD,SAAS,CAAC,MAAK;AACb,QAAA,IAAI,cAAc,IAAI,CAAC,UAAU,EAAE;YACjC,IAAI,UAAU,CAAC,oBAAoB,IAAI,GAAG,CAAC,GAAG,MAAM,EAAE;AACpD,gBAAA,mBAAmB,CACjB,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAoB,CAAC,CACtG;YACH;YACA,aAAa,CAAC,IAAI,CAAC;QACrB;;AAEF,IAAA,CAAC,EAAE,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC;IAE1C,OAAO,QAAQ,IACbA,GAAA,CAAC,IAAI,IAAC,SAAS,EAAC,eAAe,EAAC,EAAE,EAAE,EAAE,GAAG,oBAAoB,CAAC,QAAQ,EAAE,iBAAsC,CAAC,EAAE,EAAA,QAAA,EAC/GC,IAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAA,QAAA,EAAA,CACpCD,IAAC,eAAe,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAA,CAAI,EAC7DA,IAAC,kBAAkB,EAAA,EAAC,WAAW,EAAE,QAAQ,CAAC,gBAAgB,EAAE,aAAa,EAAA,IAAA,EAAA,CAAG,EAC5EA,IAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,YAC7FA,GAAA,CAAC,SAAS,IAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,IAAI,CAAC,iBAAiB,EAAA,CAAI,GACpF,EACPA,GAAA,CAAC,WAAW,EAAA,EACV,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,KAAK,EACZ,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ,EAAA,CAClB,EACFA,IAAC,kBAAkB,EAAA,EACjB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,aAAa,EAAE,UAAU,EACzB,cAAc,EAAE,eAAe,EAC/B,oBAAoB,EAAE,oBAAoB,EAC1C,WAAW,EAAE,QAAQ,EAAE,OAAO,EAC9B,SAAS,EAAE,IAAI,EACf,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EACrC,YAAY,EAAE,oBAAoB,IAAI,SAAS,EAC/C,kBAAkB,EAAE,eAAe,GACnC,EACD,QAAQ,EAAE,WAAW,KACpBA,GAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAE;AACF,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,UAAU,EAAE,WAAW;AACvB,wBAAA,cAAc,EAAE,QAAQ;AACxB,wBAAA,EAAE,EAAE,MAAM;AACV,wBAAA,YAAY,EAAE,QAAQ;AACtB,wBAAA,CAAC,EAAE,UAAU;qBACd,EAAA,QAAA,EAEDC,IAAA,CAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,aACjGD,GAAA,CAAC,iBAAiB,EAAA,EAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAA,CAAI,EACjD,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,KAAK,IAAI,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,KACzFA,GAAA,CAAC,aAAa,EAAA,EACZ,SAAS,EAAC,gBAAgB,EAC1B,IAAI,EACFA,GAAA,CAAC,IAAI,IAAC,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,yFAAA,EAAA,CAE5B,EAET,KAAK,EAAC,OAAO,EACb,SAAS,EAAC,UAAU,EACpB,YAAY,EAAC,qBAAqB,YAElCA,GAAA,CAAC,GAAG,EAAA,EAAC,IAAI,EAAC,gBAAgB,EAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAC,oBAAoB,EAAA,CAAG,EAAA,CACrD,CACjB,CAAA,EAAA,CACI,EAAA,CACF,CACR,EACDA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,uCAAuC,EAAA,QAAA,EACrDA,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,sBAAsB,EAAA,QAAA,EACnC,CAAC,aAAa,IACbA,GAAA,CAACE,mBAAyB,EAAA,EAAA,CAAG,KAE7BD,KAAC,IAAI,EAAA,EAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAA,QAAA,EAAA,CAC5FD,GAAA,CAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,MAAM,eAAe,EAAE,EAChC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAAA,eAAA,EAAA,CAGnF,EACTA,IAAC,MAAM,EAAA,EACL,SAAS,EAAC,eAAe,EACzB,IAAI,EAAE,IAAI,EACV,QAAQ,EACN,IAAI;AACJ,wCAAA,QAAQ,EAAE,OAAO;AACjB,wCAAA,CAAC,aAAa;AACd,wCAAA,CAAC,UAAU;AACX,wCAAA,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;wCAC5B,gBAAgB;wCAChB,QAAQ;wCACR,iBAAiB;wCACjB,cAAc;AACd,yCAAC,KAAK,IAAI,CAAC,YAAY,CAAC;AACxB,wCAAA,SAAS,CAAC,UAAU,EAEtB,OAAO,EAAE,eAAe,EACxB,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAA,QAAA,EAEzF,SAAS,CAAC;AACT,0CAAE;AACF,0CAAE;AACA,8CAAE;AACF,8CAAE;AACA,kDAAE;AACF,kDAAE;AACA,sDAAE;sDACA,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK;AAC1C,0DAAE;AACF,0DAAE,KAAK,EAAA,CACV,CAAA,EAAA,CACJ,CACR,GACI,EAAA,CACF,CAAA,EAAA,CACF,EAAA,CACF,KAEPA,GAAA,CAAAG,QAAA,EAAA,EAAA,CAAK,CACN;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"BuyComponentSolana.js","sources":["../../../src/views/BuyBond/BuyComponentSolana.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react'\nimport { BigNumber } from 'bignumber.js'\nimport useModal from '../../hooks/useModal'\nimport { ChainId, MarketingCampaign } from '@ape.swap/apeswap-lists'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport useBondsData from '../../state/bonds/useBondsData'\nimport useTokenFromZapList from '../../hooks/useTokenFromZapList'\nimport { usePopups } from '../../state/popups/usePopups'\nimport { formatUSDNumber, getMaxBuy, getPayoutAmount, getPrincipalAmount } from '../../utils/displayHelpers'\nimport { useSDKConfig } from '../../state/useSDKConfig'\nimport { useSlippage } from '../../state/slippage/useSlippage'\nimport { getSymbol } from '../../utils/getNativeTicker'\nimport BondModalHeader from './components/BondModalHeader'\nimport BondCards from './components/BondCards/BondCards'\nimport Estimations from './components/Estimations'\nimport ProjectDescription from './components/ProjectDescription'\nimport NoBonusModal from './components/NoBonusModal/NoBonusModal'\nimport useJupiterSolanaQuote from '../../state/zap/useJupiterSolanaQuote'\nimport useSortedZapList from '../../hooks/useSortedZapList'\n\n// Solana\nimport ConnectSolanaWalletButton from '../../components/ConnectSolanaWalletButton/ConnectSolanaWalletButton'\nimport {\n PublicKey,\n SystemProgram,\n SYSVAR_INSTRUCTIONS_PUBKEY,\n Keypair,\n Transaction,\n Connection,\n TransactionInstruction,\n} from '@solana/web3.js'\nimport { createJupiterApiClient } from '@jup-ag/api'\nimport { derivePda } from '../../utils/derivePda'\nimport {\n getAssociatedTokenAddress,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n createAssociatedTokenAccountInstruction,\n getAccount,\n} from '@solana/spl-token'\nimport { getBondIssuanceAccountSolana } from '../../utils/getSolanaAccount'\nimport { getU64Codec } from '@solana/kit'\nimport { DEPOSIT_DISCRIMINATOR, MPL_CORE_PROGRAM_ID, PROGRAM_ID } from '../../constants/solanaConstants'\nimport { Buffer } from 'buffer'\nimport { BondsData } from '../../types/bonds'\nimport { BondIssuanceAccount } from '../../types'\nimport { getRPC } from '../../config/constants/networks'\nimport { reportError } from '../../utils/reportError'\nimport SafeHTMLComponent from '../../components/SafeHTMLComponent'\nimport { findHighestTrueBondPrice } from '../../utils/bondPriceHelpers'\nimport track from '../../utils/track'\nimport { remove0xPrefix } from '../../utils/remove0xPrefix'\nimport { MCBuyComponentStyles } from '../../utils/campaignStyles'\nimport useSOLAccount from '../../hooks/accounts/useSOLAccount'\nimport { useSendReferenceId } from '../../hooks/useSendReferenceId'\nimport LifiModal from '../LifiModal/LifiModal'\nimport { getAtaWithCreateInstruction, getTokenProgramForMint } from '../../utils/solanaAtaHelper'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport Text from '../../components/uikit-sdk/Text'\nimport TooltipBubble from '../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../components/uikit-sdk/Svg'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport { formatNumberSI } from '../../utils/formatNumber'\n\nexport interface BuyComponentSolanaProps {\n onDismiss?: () => void // this is only the modal\n bondAddress?: string\n bondChain?: number\n setBillId?: (id: string) => void\n isProjectView?: boolean\n}\n\nconst BuyComponentSolana: React.FC<BuyComponentSolanaProps> = ({\n onDismiss,\n bondAddress,\n bondChain,\n isProjectView,\n setBillId,\n}) => {\n const SDKConfig = useSDKConfig()\n\n // Hooks\n const { publicKey: accountSolana, signTransaction } = useSOLAccount()\n const { data: bonds } = useBondsData()\n const { addToastError, addToastSuccess } = usePopups()\n const { solSlippage: slippage } = useSlippage()\n const sendReferenceId = useSendReferenceId()\n\n const bondData: BondsData | undefined = bonds?.find(\n (bond) => bond?.contractAddress?.[bond?.chainId]?.toLowerCase() === bondAddress?.toLowerCase(),\n )\n\n // Tier Gating\n const trueBondPriceData = findHighestTrueBondPrice('0', bondData?.trueBondPrices)\n\n // State\n const [inputValue, setInputValue] = useState('')\n const [inputTokenString, setInputTokenString] = useState(bondData?.lpToken?.address?.[bondData.chainId])\n\n // On-chain Data\n const inputToken = useTokenFromZapList(inputTokenString, bondData?.chainId, bondData?.lpToken)\n const isZap = inputTokenString?.toLowerCase() !== bondData?.lpToken?.address?.[bondData?.chainId]?.toLowerCase()\n\n const [\n fetchingZapQuote,\n jupiterQuote,\n zapDepositAmount,\n zapError,\n isDirectRoute,\n minimumDepositAmount,\n wrapAndUnwrapSol,\n ] = useJupiterSolanaQuote(inputValue, inputToken, bondData, accountSolana?.toBase58(), true, slippage)\n\n const { sortedZapList, isFetched: zapListFetched } = useSortedZapList(bondChain, bondData?.lpToken)\n const enrichedTokenData = sortedZapList.find((item) =>\n item.token === 'NATIVE' || inputToken === 'NATIVE'\n ? item.token === inputToken\n : item?.token?.address?.[bondChain as ChainId]?.toLowerCase() ===\n inputToken?.address?.[bondChain as ChainId]?.toLowerCase(),\n )\n const inputCurrencyBalance = enrichedTokenData?.balance\n const inputTokenPrice = enrichedTokenData?.price\n\n // Estimations - use zapDepositAmount if swapping\n const depositAmount = isZap ? zapDepositAmount : inputValue\n const youSpendString = `${formatNumberSI(inputValue)} ${getSymbol(inputToken, bondData?.chainId)} = \n $${formatUSDNumber((parseFloat(inputValue) * (inputTokenPrice ?? 0)).toString())}`\n\n const exceedsRealMaxBuy = getMaxBuy(bondData, true).lte(getPayoutAmount(bondData, depositAmount, '0'))\n const exceedsSafeMaxBuy = getMaxBuy(bondData, false)\n .times(isZap ? 0.995 : 0.9995)\n .lte(getPayoutAmount(bondData, depositAmount, '0'))\n const exceedsBalance = new BigNumber(inputCurrencyBalance ?? '0').lt(inputValue)\n\n // Loading State - include zap loading\n const [loadingTx, setLoadingTx] = useState(false)\n const load = loadingTx || (fetchingZapQuote && !!inputValue)\n\n // State Handlers\n const handleCurrencySelect = useCallback((newInputToken: string) => {\n setInputValue('')\n setInputTokenString(newInputToken)\n }, [])\n\n const handleMaxButton = () => {\n const balance = new BigNumber(inputCurrencyBalance ?? '0')\n const principalDecimals = bondData?.lpToken?.decimals?.[bondData?.chainId] ?? 18\n const maxBuyAmount = getMaxBuy(bondData, SDKConfig.showLowValueBonds)\n\n if (!isZap) {\n const maxPossibleUserPurchase = getPayoutAmount(bondData, balance.toString(), '0')\n if (maxPossibleUserPurchase > maxBuyAmount.toNumber()) {\n console.log('user balance exceeds max buy limit, setting to max buy')\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), '0')\n setInputValue(new BigNumber(principalForMaxBuy).toFixed(principalDecimals))\n } else {\n console.log('balance is ok, can be used')\n setInputValue(balance.toFixed(principalDecimals))\n }\n } else {\n const principalForMaxBuy = getPrincipalAmount(bondData, maxBuyAmount.toString(), '0')\n const principalForMaxBuyUSD = new BigNumber(principalForMaxBuy).times(bondData?.principalTokenPrice ?? 0)\n const maxBuyAmountInSelectedToken = principalForMaxBuyUSD.div(inputTokenPrice ?? 0)\n const decimals =\n enrichedTokenData?.token === 'NATIVE' ? 18 : (enrichedTokenData?.token.decimals[bondData?.chainId!] ?? 18)\n\n if (balance.gte(maxBuyAmountInSelectedToken)) {\n setInputValue(maxBuyAmountInSelectedToken.toFixed(decimals))\n } else {\n setInputValue(balance.toFixed(decimals))\n }\n }\n }\n\n const handleBuyCallback = async () => {\n if (!accountSolana || !bondData || !inputValue || !inputToken || !bondData) return\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n try {\n setLoadingTx(true)\n\n const connection = new Connection(getRPC(ChainId.SOL), 'confirmed')\n\n // Convert input value\n const depositAmount = new BigNumber(\n new BigNumber(inputValue).times(new BigNumber(10).pow(bondData.lpToken.decimals[ChainId.SOL]!)),\n )\n const amountBigInt = BigInt(depositAmount.toFixed(0))\n\n const user = accountSolana\n\n const trueBondPriceWithoutFee = bondData?.trueBondPrices?.[0]?.trueBondPrice\n\n const maxPrice = new BigNumber(trueBondPriceWithoutFee ?? '0')\n .times((100 + slippage) / 100)\n .dividedBy(new BigNumber(1e6))\n .toFixed(0)\n\n // Static addresses\n const bondIssuancePda = new PublicKey(bondData.contractAddress[bondData.chainId]!)\n const principalMint = new PublicKey(bondData.lpToken.address[bondData.chainId]!)\n const payoutMint = new PublicKey(bondData.earnToken.address[bondData.chainId]!)\n const collection = new PublicKey(bondData.billNnftAddress[bondData.chainId]!)\n\n // Detect token programs for both mints (supports Token-2022)\n const [principalTokenProgram, payoutTokenProgram] = await Promise.all([\n getTokenProgramForMint(connection, principalMint),\n getTokenProgramForMint(connection, payoutMint),\n ])\n\n // Fetch Bond Issuance Account\n const bondIssuanceAccounts = (await getBondIssuanceAccountSolana([\n bondIssuancePda.toBase58(),\n ])) as BondIssuanceAccount[]\n if (!bondIssuanceAccounts) return\n const bondIssuanceAccount = bondIssuanceAccounts[0]\n const feeRecipient = new PublicKey(bondIssuanceAccount.feePrincipalRecipient)\n const partnerRecipient = new PublicKey(bondIssuanceAccount.partnerPrincipalRecipient)\n const feePayoutRecipient = new PublicKey(bondIssuanceAccount.feePayoutRecipient) // ADDED\n\n // Derive PDAs\n const bondTermPda = derivePda('bond_term', bondIssuancePda, PROGRAM_ID)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n\n // Create NFT mint\n const nftMint = Keypair.generate()\n\n const [bondPda] = PublicKey.findProgramAddressSync(\n [Buffer.from('bond'), bondIssuancePda.toBuffer(), nftMint.publicKey.toBuffer()],\n PROGRAM_ID,\n )\n\n // ATAs - use correct token program for each mint\n const userPrincipalAta = await getAssociatedTokenAddress(principalMint, user, true, principalTokenProgram)\n const treasuryAta = await getAssociatedTokenAddress(payoutMint, bondIssuancePda, true, payoutTokenProgram)\n const feePrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n feeRecipient,\n true,\n principalTokenProgram,\n )\n const partnerPrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n partnerRecipient,\n true,\n principalTokenProgram,\n )\n\n const { address: feePayoutRecipientAta, createInstruction: createPayoutFeeRecipientAtaIx } =\n await getAtaWithCreateInstruction(connection, payoutMint, feePayoutRecipient, user)\n\n // Encode args\n const u64Codec = getU64Codec()\n const amountEncoded = Buffer.from(u64Codec.encode(amountBigInt))\n const maxPriceEncoded = Buffer.from(u64Codec.encode(BigInt(maxPrice)))\n const instructionData = Buffer.concat([DEPOSIT_DISCRIMINATOR, amountEncoded, maxPriceEncoded])\n\n // Instruction\n const keys = [\n { pubkey: bondPda, isSigner: false, isWritable: true },\n { pubkey: nftMint.publicKey, isSigner: true, isWritable: true },\n { pubkey: user, isSigner: true, isWritable: true },\n { pubkey: bondPricingPda, isSigner: false, isWritable: true },\n { pubkey: bondTermPda, isSigner: false, isWritable: true },\n { pubkey: bondIssuancePda, isSigner: false, isWritable: true },\n { pubkey: collection, isSigner: false, isWritable: true },\n { pubkey: userPrincipalAta, isSigner: false, isWritable: true },\n { pubkey: feePrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: partnerPrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: feePayoutRecipientAta, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: principalMint, isSigner: false, isWritable: false },\n { pubkey: payoutMint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: principalTokenProgram, isSigner: false, isWritable: false }, // principal_token_program (dynamic)\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // payout_token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: MPL_CORE_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },\n ]\n\n const instruction = new TransactionInstruction({\n keys,\n programId: PROGRAM_ID,\n data: instructionData,\n })\n\n // Create tx (prepend payout fee recipient ATA creation if needed)\n const transaction = new Transaction()\n if (createPayoutFeeRecipientAtaIx) transaction.add(createPayoutFeeRecipientAtaIx)\n transaction.add(instruction)\n transaction.feePayer = user\n\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n transaction.recentBlockhash = blockhash\n // Sign tx\n transaction.partialSign(nftMint)\n const signedTx = await signTransaction?.(transaction)!\n\n // Sends tx, generates hash\n const txId = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n // awaits hash confirmation on chain - commitment \"confirmed\"\n await connection.confirmTransaction(\n {\n signature: txId,\n blockhash,\n lastValidBlockHeight,\n },\n 'confirmed',\n )\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: 'lp-buy',\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, txId)\n\n // waits 3 seconds before triggering after-purchase flow\n await new Promise((resolve) => setTimeout(resolve, 3000))\n\n addToastSuccess(txId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n } catch (error: any) {\n console.error('Error during bond purchase:', error)\n addToastError(error?.message || 'Unknown error')\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error.message,\n extraInfo: { type: 'solanaBuyBond', error: error.message },\n chainId: bondChain,\n account: accountSolana.toString(),\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n // Helper: Build Jupiter swap instructions from API response\n const buildSwapInstructions = (swapResult: any) => {\n const swapInstruction = new TransactionInstruction({\n programId: new PublicKey(swapResult.swapInstruction.programId),\n keys: swapResult.swapInstruction.accounts.map((key: any) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n data: Buffer.from(swapResult.swapInstruction.data, 'base64'),\n })\n\n const setupInstructions = (swapResult.setupInstructions || []).map(\n (ix: any) =>\n new TransactionInstruction({\n programId: new PublicKey(ix.programId),\n keys: ix.accounts.map((key: any) => ({\n pubkey: new PublicKey(key.pubkey),\n isSigner: key.isSigner,\n isWritable: key.isWritable,\n })),\n data: Buffer.from(ix.data, 'base64'),\n }),\n )\n\n return { setupInstructions, swapInstruction }\n }\n\n // Helper: Build bond instruction with specified amount\n const buildBondInstruction = (amount: bigint, maxPriceEncoded: Buffer, bondKeys: any[]) => {\n const u64Codec = getU64Codec()\n const amountEncoded = Buffer.from(u64Codec.encode(amount))\n const instructionData = Buffer.concat([DEPOSIT_DISCRIMINATOR, amountEncoded, maxPriceEncoded])\n\n return new TransactionInstruction({\n keys: bondKeys,\n programId: PROGRAM_ID,\n data: instructionData,\n })\n }\n\n // Helper: Ensure user's principal token account exists\n const ensureUserPrincipalAtaExists = async (\n connection: Connection,\n payer: PublicKey,\n principalMint: PublicKey,\n user: PublicKey,\n tokenProgram: PublicKey,\n ): Promise<{ ataAddress: PublicKey; createInstruction: TransactionInstruction | null }> => {\n const userPrincipalAta = await getAssociatedTokenAddress(principalMint, user, true, tokenProgram)\n\n try {\n // Check if account exists\n await getAccount(connection, userPrincipalAta, undefined, tokenProgram)\n return { ataAddress: userPrincipalAta, createInstruction: null }\n } catch {\n // Account doesn't exist, return instruction to create it\n const createAtaIx = createAssociatedTokenAccountInstruction(\n payer, // fee payer\n userPrincipalAta, // ATA to create\n user, // owner of ATA\n principalMint, // mint\n tokenProgram, // token program\n )\n return { ataAddress: userPrincipalAta, createInstruction: createAtaIx }\n }\n }\n\n // Helper: Track zap events\n const trackZapEvents = (txType: 'single-tx' | 'two-tx') => {\n track({\n event: 'zap',\n chain: bondChain,\n data: {\n cat: 'bond',\n token1: getSymbol(inputToken),\n token2: bondData?.lpToken.symbol ?? '',\n amount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n track({\n event: 'bond',\n chain: bondChain,\n data: {\n cat: `zap-buy-${txType}`,\n type: bondData?.billType ?? '',\n typedValue: inputValue,\n principalToken: bondData?.lpToken.symbol ?? '',\n earnToken: bondData?.earnToken.symbol ?? '',\n address: remove0xPrefix(bondData?.contractAddress?.[bondData.chainId]),\n usdAmount: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n }\n\n const handleZapCallback = async () => {\n if (loadingTx || !accountSolana || !bondData || !jupiterQuote || !signTransaction) return\n\n track({\n event: 'buyBondClick',\n chain: bondChain,\n data: {\n cat: bondData?.billType,\n bond: bondData?.earnToken.symbol,\n value: parseFloat(inputValue) * (inputTokenPrice ?? 0),\n },\n })\n\n try {\n setLoadingTx(true)\n const connection = new Connection(getRPC(ChainId.SOL), 'confirmed')\n const jupiterApi = createJupiterApiClient()\n\n // STEP 1: Calculate bond parameters and prepare accounts\n const trueBondPriceWithoutFee = bondData?.trueBondPrices?.[0]?.trueBondPrice\n const maxPrice = new BigNumber(trueBondPriceWithoutFee ?? '0')\n .times((100 + slippage) / 100)\n .dividedBy(new BigNumber(1e6))\n .toFixed(0)\n console.log(isDirectRoute ? 'Using direct route' : 'Using multi-hop route')\n const depositAmountForBond = isDirectRoute ? minimumDepositAmount : zapDepositAmount\n\n const bondDepositAmount = new BigNumber(depositAmountForBond).times(\n new BigNumber(10).pow(bondData.lpToken.decimals[ChainId.SOL]!),\n )\n const amountBigInt = BigInt(bondDepositAmount.toFixed(0))\n\n const bondIssuancePda = new PublicKey(bondData.contractAddress[bondData.chainId]!)\n const principalMint = new PublicKey(bondData.lpToken.address[bondData.chainId]!)\n const payoutMint = new PublicKey(bondData.earnToken.address[bondData.chainId]!)\n const collection = new PublicKey(bondData.billNnftAddress[bondData.chainId]!)\n\n // Detect token programs for both mints (supports Token-2022)\n const [principalTokenProgram, payoutTokenProgram] = await Promise.all([\n getTokenProgramForMint(connection, principalMint),\n getTokenProgramForMint(connection, payoutMint),\n ])\n\n const bondIssuanceAccounts = (await getBondIssuanceAccountSolana([\n bondIssuancePda.toBase58(),\n ])) as BondIssuanceAccount[]\n if (!bondIssuanceAccounts) throw new Error('Failed to fetch bond issuance account')\n\n const bondIssuanceAccount = bondIssuanceAccounts[0]\n const feeRecipient = new PublicKey(bondIssuanceAccount.feePrincipalRecipient)\n const partnerRecipient = new PublicKey(bondIssuanceAccount.partnerPrincipalRecipient)\n const feePayoutRecipient = new PublicKey(bondIssuanceAccount.feePayoutRecipient)\n\n const bondTermPda = derivePda('bond_term', bondIssuancePda, PROGRAM_ID)\n const bondPricingPda = derivePda('bond_pricing', bondIssuancePda, PROGRAM_ID)\n\n const nftMint = Keypair.generate()\n const [bondPda] = PublicKey.findProgramAddressSync(\n [Buffer.from('bond'), bondIssuancePda.toBuffer(), nftMint.publicKey.toBuffer()],\n PROGRAM_ID,\n )\n\n // Ensure user's USDC account exists, get creation instruction if needed\n const { ataAddress: userPrincipalAta, createInstruction: createPrincipalAtaIx } =\n await ensureUserPrincipalAtaExists(\n connection,\n accountSolana,\n principalMint,\n accountSolana,\n principalTokenProgram,\n )\n const treasuryAta = await getAssociatedTokenAddress(payoutMint, bondIssuancePda, true, payoutTokenProgram)\n const feePrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n feeRecipient,\n true,\n principalTokenProgram,\n )\n const partnerPrincipalRecipientAta = await getAssociatedTokenAddress(\n principalMint,\n partnerRecipient,\n true,\n principalTokenProgram,\n )\n const { address: feePayoutRecipientAta, createInstruction: createPayoutFeeRecipientAtaIx } =\n await getAtaWithCreateInstruction(connection, payoutMint, feePayoutRecipient, accountSolana)\n\n const u64Codec = getU64Codec()\n const maxPriceEncoded = Buffer.from(u64Codec.encode(BigInt(maxPrice)))\n\n const bondKeys = [\n { pubkey: bondPda, isSigner: false, isWritable: true },\n { pubkey: nftMint.publicKey, isSigner: true, isWritable: true },\n { pubkey: accountSolana, isSigner: true, isWritable: true },\n { pubkey: bondPricingPda, isSigner: false, isWritable: true },\n { pubkey: bondTermPda, isSigner: false, isWritable: true },\n { pubkey: bondIssuancePda, isSigner: false, isWritable: true },\n { pubkey: collection, isSigner: false, isWritable: true },\n { pubkey: userPrincipalAta, isSigner: false, isWritable: true },\n { pubkey: feePrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: partnerPrincipalRecipientAta, isSigner: false, isWritable: true },\n { pubkey: feePayoutRecipientAta, isSigner: false, isWritable: true },\n { pubkey: treasuryAta, isSigner: false, isWritable: true },\n { pubkey: principalMint, isSigner: false, isWritable: false },\n { pubkey: payoutMint, isSigner: false, isWritable: false },\n { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: principalTokenProgram, isSigner: false, isWritable: false }, // principal_token_program (dynamic)\n { pubkey: payoutTokenProgram, isSigner: false, isWritable: false }, // payout_token_program (dynamic)\n { pubkey: ASSOCIATED_TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: MPL_CORE_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_INSTRUCTIONS_PUBKEY, isSigner: false, isWritable: false },\n ]\n\n // Build initial bond instruction (for single-tx attempt)\n const bondInstruction = buildBondInstruction(amountBigInt, maxPriceEncoded, bondKeys)\n\n // STEP 2: Get Jupiter swap instructions\n const swapResult = await jupiterApi.swapInstructionsPost({\n swapRequest: {\n quoteResponse: jupiterQuote,\n userPublicKey: accountSolana.toBase58(),\n wrapAndUnwrapSol: wrapAndUnwrapSol,\n dynamicComputeUnitLimit: true,\n prioritizationFeeLamports: {\n priorityLevelWithMaxLamports: {\n maxLamports: 4000000,\n priorityLevel: 'veryHigh',\n },\n },\n },\n })\n\n console.log('=== TRANSACTION SIZE ANALYSIS ===')\n console.log('Route used:', jupiterQuote.routePlan?.map((r) => r.swapInfo.label).join(' -> '))\n console.log('Swap accounts:', swapResult.swapInstruction.accounts.length)\n console.log('Setup instructions count:', swapResult.setupInstructions?.length || 0)\n\n let totalAccounts = swapResult.swapInstruction.accounts.length\n swapResult.setupInstructions?.forEach((ix, i) => {\n console.log(` Setup ${i}: ${ix.accounts.length} accounts`)\n totalAccounts += ix.accounts.length\n })\n\n console.log('Bond instruction accounts:', 20)\n console.log('Total accounts:', totalAccounts + 20)\n console.log('=== END ANALYSIS ===')\n\n // STEP 3: TRY SINGLE TRANSACTION (if direct route)\n if (isDirectRoute) {\n try {\n // Build swap instructions\n const { setupInstructions, swapInstruction } = buildSwapInstructions(swapResult)\n const setupIxs = [\n ...(createPrincipalAtaIx ? [createPrincipalAtaIx] : []),\n ...(createPayoutFeeRecipientAtaIx ? [createPayoutFeeRecipientAtaIx] : []),\n ...setupInstructions,\n ]\n const allInstructions = [...setupIxs, swapInstruction, bondInstruction]\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n\n const combinedTx = new Transaction()\n combinedTx.add(...allInstructions)\n combinedTx.recentBlockhash = blockhash\n combinedTx.feePayer = accountSolana\n combinedTx.partialSign(nftMint)\n\n // Check size - account for signatures\n const messageSize = combinedTx.serializeMessage().length\n const numSignatures = combinedTx.signatures.length // Should be 2: nftMint + accountSolana\n const signatureOverhead = 1 + numSignatures * 64 // 1 byte for count + 64 bytes per signature\n const estimatedTxSize = messageSize + signatureOverhead\n\n console.log(`Combined transaction size: ${estimatedTxSize} bytes (limit: 1232 bytes)`)\n\n if (estimatedTxSize > 1232) {\n console.log('Transaction too large, falling back to two transactions')\n throw new Error('TRANSACTION_TOO_LARGE')\n }\n\n // Execute single transaction!\n console.log('Transaction fits. Executing combined swap + bond')\n const signedTx = await signTransaction(combinedTx)\n const txId = await connection.sendRawTransaction(signedTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction({ signature: txId, blockhash, lastValidBlockHeight }, 'confirmed')\n\n console.log('SINGLE transaction confirmed:', txId)\n\n // Track success\n trackZapEvents('single-tx')\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, txId)\n\n await new Promise((resolve) => setTimeout(resolve, 3000))\n addToastSuccess(txId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n return\n } catch (singleTxError: any) {\n if (singleTxError.message !== 'TRANSACTION_TOO_LARGE') {\n throw singleTxError\n }\n console.log('Falling back to two separate transactions...')\n }\n }\n\n // STEP 4: FALLBACK - TWO SEPARATE TRANSACTIONS\n console.log('Executing TWO separate transactions...')\n\n // Execute swap first\n const { setupInstructions, swapInstruction } = buildSwapInstructions(swapResult)\n const swapSetupIxs = [...(createPrincipalAtaIx ? [createPrincipalAtaIx] : []), ...setupInstructions]\n const swapTx = new Transaction().add(...swapSetupIxs, swapInstruction)\n swapTx.feePayer = accountSolana\n const { blockhash: swapBlockhash, lastValidBlockHeight: swapLastValid } =\n await connection.getLatestBlockhash('confirmed')\n swapTx.recentBlockhash = swapBlockhash\n\n const signedSwapTx = await signTransaction(swapTx)\n const swapTxId = await connection.sendRawTransaction(signedSwapTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction(\n { signature: swapTxId, blockhash: swapBlockhash, lastValidBlockHeight: swapLastValid },\n 'confirmed',\n )\n console.log('Swap transaction confirmed:', swapTxId)\n\n // QUERY ACTUAL BALANCE RECEIVED FROM SWAP\n const principalTokenBalance = await connection.getTokenAccountBalance(userPrincipalAta)\n const actualAmount = BigInt(principalTokenBalance.value.amount)\n\n // REBUILD BOND INSTRUCTION WITH ACTUAL AMOUNT\n const actualBondInstruction = buildBondInstruction(actualAmount, maxPriceEncoded, bondKeys)\n\n const bondTx = new Transaction()\n if (createPayoutFeeRecipientAtaIx) bondTx.add(createPayoutFeeRecipientAtaIx)\n bondTx.add(actualBondInstruction)\n bondTx.feePayer = accountSolana\n const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash('confirmed')\n bondTx.recentBlockhash = blockhash\n bondTx.partialSign(nftMint)\n\n const signedBondTx = await signTransaction(bondTx)\n const bondTxId = await connection.sendRawTransaction(signedBondTx.serialize(), {\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n\n await connection.confirmTransaction({ signature: bondTxId, blockhash, lastValidBlockHeight }, 'confirmed')\n console.log('Bond transaction confirmed:', bondTxId)\n\n // Track both transactions\n trackZapEvents('two-tx')\n await sendReferenceId(bondData.contractAddress[bondData.chainId]!, ChainId.SOL, bondTxId)\n\n await new Promise((resolve) => setTimeout(resolve, 3000))\n addToastSuccess(bondTxId, bondChain)\n setBillId?.(nftMint.publicKey.toString())\n } catch (error: any) {\n console.error('Error during zap + bond purchase:', error)\n addToastError(error?.message || 'Unknown error during swap and bond')\n\n reportError({\n apiUrl: SDKConfig?.urls?.apiV2,\n error: error.message,\n extraInfo: {\n type: 'solanaJupiterZapBuyBond',\n error: error.message,\n isDirectRoute,\n quote: jupiterQuote,\n },\n chainId: bondChain,\n account: accountSolana.toString(),\n })\n } finally {\n setLoadingTx(false)\n }\n }\n\n const handleBothPurchases = () => {\n if (loadingTx) return // Prevent duplicate calls\n setLoadingTx(true)\n if (isZap) {\n handleZapCallback().finally(() => setLoadingTx(false))\n } else {\n handleBuyCallback().finally(() => setLoadingTx(false))\n }\n }\n\n const handleOpenModal = () => {\n const bonus = trueBondPriceData?.bonusWithFee ?? 0\n if (bonus <= 0) {\n openNoBonusModal()\n } else {\n handleBothPurchases()\n }\n }\n\n // Modals\n const [onOpenLifiModal] = useModal(\n <LifiModal bondChain={1151111081099710} principalToken={bondData?.lpToken?.address?.[bondData?.chainId]} />,\n true,\n false,\n 'LifiModal',\n )\n\n const [openNoBonusModal] = useModal(\n <NoBonusModal onAcknowledge={handleBothPurchases} showcaseTokenName={bondData?.showcaseTokenName} />,\n true,\n true,\n 'NoBonusModal',\n )\n // Effects\n const [hasChecked, setHasChecked] = useState(false)\n useEffect(() => {\n if (zapListFetched && !hasChecked) {\n if (parseFloat(inputCurrencyBalance ?? '0') < 0.0001) {\n setInputTokenString(\n sortedZapList[0].token === 'NATIVE' ? 'NATIVE' : sortedZapList[0].token.address[bondChain as ChainId],\n )\n }\n setHasChecked(true)\n }\n /* eslint-disable react-hooks/exhaustive-deps */\n }, [inputCurrencyBalance, zapListFetched])\n\n return bondData ? (\n <Flex className=\"modal-content\" sx={{ ...MCBuyComponentStyles[bondData?.marketingCampaign as MarketingCampaign] }}>\n <Flex className=\"modaltable-container\">\n <BondModalHeader bondData={bondData} onDismiss={onDismiss} />\n <ProjectDescription description={bondData.shortDescription} isProjectView />\n <Flex sx={{ width: '100%', display: isProjectView ? ['flex', 'flex', 'flex', 'none'] : 'flex' }}>\n <BondCards bondData={bondData} isDoingMaxBuy={exceedsSafeMaxBuy && !exceedsRealMaxBuy} />\n </Flex>\n <Estimations\n depositAmount={depositAmount}\n bondData={bondData}\n youSpendString={youSpendString}\n isZap={isZap}\n fetchingZapQuote={fetchingZapQuote}\n zapError={zapError}\n />\n <TokenSelectorPanel\n typedValue={inputValue}\n setTypedValue={setInputValue}\n selectedToken={inputToken}\n handleValueBtn={handleMaxButton}\n handleCurrencySelect={handleCurrencySelect}\n bondChainId={bondData?.chainId}\n enableZap={true}\n bondPrincipalToken={bondData?.lpToken}\n tokenBalance={inputCurrencyBalance ?? undefined}\n selectedTokenPrice={inputTokenPrice}\n />\n {bondData?.warningCard && (\n <Flex\n sx={{\n width: '100%',\n background: '#DE62F366',\n justifyContent: 'center',\n mt: '10px',\n borderRadius: 'normal',\n p: '2px 10px',\n }}\n >\n <Text sx={{ fontSize: '12px', fontWeight: 400, display: 'flex', alignItems: 'center', gap: '10px' }}>\n <SafeHTMLComponent html={bondData?.warningCard} />\n {bondData?.chainId === ChainId.SONIC && bondData?.earnToken.symbol.toLowerCase() === 'moon' && (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={\n <Text sx={{ textTransform: 'none' }}>\n Open the 'cog' icon menu in the top right and set the Slippage Tolerance to 5% or more.\n </Text>\n }\n width=\"315px\"\n placement=\"topRight\"\n transformTip=\"translate(9%, -10%)\"\n >\n <Svg icon=\"questionCircle\" width={14} color=\"textDisabledButton\" />\n </TooltipBubble>\n )}\n </Text>\n </Flex>\n )}\n <Flex className=\"modaltable-container button-container\">\n <Flex className=\"button-container buy\">\n {!accountSolana ? (\n <ConnectSolanaWalletButton />\n ) : (\n <Flex sx={{ width: '100%', gap: '10px', flexDirection: ['column', 'column', 'column', 'row'] }}>\n <Button\n variant=\"secondary\"\n onClick={() => onOpenLifiModal()}\n sx={{ width: ['100%', '100%', '100%', '35%'], fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n bridge to sol\n </Button>\n <Button\n className=\"action-button\"\n load={load}\n disabled={\n load ||\n bondData?.soldOut ||\n !accountSolana ||\n !inputValue ||\n parseFloat(inputValue) === 0 ||\n fetchingZapQuote ||\n zapError ||\n exceedsRealMaxBuy ||\n exceedsBalance ||\n (isZap && !jupiterQuote) ||\n SDKConfig.blockSales\n }\n onClick={handleOpenModal}\n sx={{ width: ['100%', '100%', '100%', '65%'], fontSize: ['14px', '14px', '14px', '16px'] }}\n >\n {SDKConfig.blockSales\n ? 'Complete KYC to Buy'\n : exceedsRealMaxBuy\n ? 'Exceeds Max Buy. Reduce amount'\n : exceedsBalance\n ? 'Insufficient balance'\n : zapError\n ? 'Swap quote failed'\n : !inputValue || parseFloat(inputValue) === 0\n ? 'Insert amount'\n : 'buy'}\n </Button>\n </Flex>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n ) : (\n <></>\n )\n}\n\nexport default BuyComponentSolana\n"],"names":["_jsx","_jsxs","ConnectSolanaWalletButton","_Fragment"],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ const BondCards = ({ bondData, isDoingMaxBuy }) => {
|
|
|
29
29
|
background: MCColorMapping.white3[bondData.marketingCampaign],
|
|
30
30
|
}, children: [jsxs(Flex, { className: "bond-card-title", children: [SDKConfig.namingPreference, jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: TooltipText.Discount }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)", children: jsx("div", { className: "bond-card-tooltip", children: jsx(Svg, { icon: "questionCircle", width: "12px" }) }) })] }), jsx(BonusComponent, { trueBondPrices: SDKConfig.namingPreference !== 'Discount' ? bondData.trueBondPrices : undefined, minTier: bondData.minTier, tooltipPosition: isMobile ? 'bottomRight' : 'bottomLeft', bonus: SDKConfig.namingPreference === 'Discount'
|
|
31
31
|
? `${bondData?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`
|
|
32
|
-
: undefined })] }), jsxs("div", { className: "bond-card-block", sx: {
|
|
32
|
+
: undefined, isIREET: bondData.earnToken.symbol === 'iREET' })] }), jsxs("div", { className: "bond-card-block", sx: {
|
|
33
33
|
borderRadius: ['0px', '0px', '0px', 'normal'],
|
|
34
34
|
'&:first-of-type': {
|
|
35
35
|
borderTopRightRadius: 'normal',
|
|
@@ -58,7 +58,7 @@ const BondCards = ({ bondData, isDoingMaxBuy }) => {
|
|
|
58
58
|
top: '0px',
|
|
59
59
|
right: '0px',
|
|
60
60
|
transform: ['translate(50%,-50%)', 'translate(50%,-50%)', 'translate(50%,-50%)', 'translate(-50%,-50%)'],
|
|
61
|
-
}, children: jsx(Svg, { icon: "success", width: isMobile ? 16 : 20 }) })), jsxs("div", { className: "bond-card-title", children: ["Max Buy", jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: TooltipText.MaxBuy(bondData?.earnToken?.symbol) }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)", children: jsx("div", { className: "bond-card-tooltip", children: jsx(Svg, { icon: "questionCircle", width: "12px" }) }) })] }), jsxs(Flex, { className: "bond-card-content", sx: { alignItems: 'center' }, children: [jsx("div", { style: { paddingRight: '3px' }, children: jsx(TokenImage, { symbol: bondData.showcaseTokenName ?? bondData.earnToken.symbol, size: 22, chain: bondData.chainId }) }), formatNumberSI(getMaxBuy(bondData, SDKConfig.showLowValueBonds), 0)] })] }), jsxs("div", { className: "bond-card-block", sx: {
|
|
61
|
+
}, children: jsx(Svg, { icon: "success", width: isMobile ? 16 : 20 }) })), jsxs("div", { className: "bond-card-title", children: ["Max Buy", jsx(TooltipBubble, { className: "tooltip-bubble", body: jsx(Flex, { children: TooltipText.MaxBuy(bondData?.earnToken?.symbol) }), width: "230px", placement: "bottomLeft", transformTip: "translate(-5%, -5%)", children: jsx("div", { className: "bond-card-tooltip", children: jsx(Svg, { icon: "questionCircle", width: "12px" }) }) })] }), jsxs(Flex, { className: "bond-card-content", sx: { alignItems: 'center' }, children: [jsx("div", { style: { paddingRight: '3px' }, children: jsx(TokenImage, { symbol: bondData.showcaseTokenName ?? bondData.earnToken.symbol, size: 22, chain: bondData.chainId }) }), formatNumberSI(getMaxBuy(bondData, SDKConfig.showLowValueBonds).toString(), 0)] })] }), jsxs("div", { className: "bond-card-block", sx: {
|
|
62
62
|
borderRadius: ['0px', '0px', '0px', 'normal'],
|
|
63
63
|
'&:first-of-type': {
|
|
64
64
|
borderTopRightRadius: 'normal',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BondCards.js","sources":["../../../../../src/views/BuyBond/components/BondCards/BondCards.tsx"],"sourcesContent":["import React from 'react'\nimport { TooltipText } from '../../../../config/constants/tooltips'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\nimport {\n getMaxBuy,\n getRemainingTokensString,\n getVestingTermsString,\n getVestingTermsTooltipString,\n remainingPercentage,\n} from '../../../../utils/displayHelpers'\nimport { BondsData } from '../../../../types/bonds'\nimport BonusComponent from '../../../Bonds/components/BonusComponents/BonusComponent'\nimport { useIsMobile } from '../../../../hooks/useIsMobile'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport ProgressBar from '../../../../components/ProgressBar/ProgressBar'\nimport ProgressBarWrapper from '../../../../components/ProgressBar/ProgressBarWrapper'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { MCColorMapping } from '../../../../utils/campaignStyles'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../../../components/uikit-sdk/Svg'\n\nconst BondCards = ({ bondData, isDoingMaxBuy }: { bondData: BondsData; isDoingMaxBuy?: boolean }) => {\n const isMobile = useIsMobile()\n const SDKConfig = useSDKConfig()\n\n return (\n <div className=\"bonds-cards\">\n <div\n className=\"bond-card-block\"\n sx={{\n borderRadius: ['0px', '0px', '0px', 'normal'],\n '&:first-of-type': {\n borderTopRightRadius: 'normal',\n borderTopLeftRadius: 'normal',\n },\n '&:last-of-type': {\n borderBottomRightRadius: 'normal',\n borderBottomLeftRadius: 'normal',\n },\n background: MCColorMapping.white3[bondData.marketingCampaign!],\n }}\n >\n <Flex className=\"bond-card-title\">\n {SDKConfig.namingPreference}\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Discount}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, -5%)\"\n >\n <div className=\"bond-card-tooltip\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </div>\n </TooltipBubble>\n </Flex>\n <BonusComponent\n trueBondPrices={SDKConfig.namingPreference !== 'Discount' ? bondData.trueBondPrices : undefined}\n minTier={bondData.minTier}\n tooltipPosition={isMobile ? 'bottomRight' : 'bottomLeft'}\n bonus={\n SDKConfig.namingPreference === 'Discount'\n ? `${bondData?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n />\n </div>\n <div\n className=\"bond-card-block\"\n sx={{\n borderRadius: ['0px', '0px', '0px', 'normal'],\n '&:first-of-type': {\n borderTopRightRadius: 'normal',\n borderTopLeftRadius: 'normal',\n },\n\n '&:last-of-type': {\n borderBottomRightRadius: 'normal',\n borderBottomLeftRadius: 'normal',\n },\n background: MCColorMapping.white3[bondData.marketingCampaign!],\n }}\n >\n <div className=\"bond-card-title\">\n Terms\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Terms}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, -5%)\"\n >\n <div className=\"bond-card-tooltip\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </div>\n </TooltipBubble>\n </div>\n <div className=\"bond-card-content\">\n {getVestingTermsString(bondData)}\n {bondData.vestingCliff && (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{getVestingTermsTooltipString(bondData)}</Flex>}\n width=\"180px\"\n placement=\"bottomRight\"\n transformTip=\"translate(13%, 0%)\"\n >\n <Flex sx={{ opacity: 0.6, ml: '6px' }}>\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n )}\n </div>\n </div>\n <div\n className=\"bond-card-block\"\n sx={{\n borderRadius: ['0px', '0px', '0px', 'normal'],\n '&:first-of-type': {\n borderTopRightRadius: 'normal',\n borderTopLeftRadius: 'normal',\n },\n '&:last-of-type': {\n borderBottomRightRadius: 'normal',\n borderBottomLeftRadius: 'normal',\n },\n background: MCColorMapping.white3[bondData.marketingCampaign!],\n border: isDoingMaxBuy && '2px solid green !important',\n position: 'relative',\n }}\n >\n {isDoingMaxBuy && (\n <Flex\n sx={{\n position: 'absolute',\n top: '0px',\n right: '0px',\n transform: ['translate(50%,-50%)', 'translate(50%,-50%)', 'translate(50%,-50%)', 'translate(-50%,-50%)'],\n }}\n >\n <Svg icon=\"success\" width={isMobile ? 16 : 20} />\n </Flex>\n )}\n <div className=\"bond-card-title\">\n Max Buy\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.MaxBuy(bondData?.earnToken?.symbol)}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, -5%)\"\n >\n <div className=\"bond-card-tooltip\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </div>\n </TooltipBubble>\n </div>\n <Flex className=\"bond-card-content\" sx={{ alignItems: 'center' }}>\n <div style={{ paddingRight: '3px' }}>\n <TokenImage\n symbol={bondData.showcaseTokenName ?? bondData.earnToken.symbol}\n size={22}\n chain={bondData.chainId}\n />\n </div>\n {formatNumberSI(getMaxBuy(bondData, SDKConfig.showLowValueBonds), 0)}\n </Flex>\n </div>\n <div\n className=\"bond-card-block\"\n sx={{\n borderRadius: ['0px', '0px', '0px', 'normal'],\n '&:first-of-type': {\n borderTopRightRadius: 'normal',\n borderTopLeftRadius: 'normal',\n },\n\n '&:last-of-type': {\n borderBottomRightRadius: 'normal',\n borderBottomLeftRadius: 'normal',\n },\n background: MCColorMapping.white3[bondData.marketingCampaign!],\n }}\n >\n <Flex className=\"bond-card-title\">\n Tokens Remaining\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.TokensRemaining}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, -5%)\"\n >\n <div className=\"bond-card-tooltip\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </div>\n </TooltipBubble>\n </Flex>\n <ProgressBarWrapper\n title={''}\n value={<ProgressBar value={remainingPercentage(bondData)} />}\n style={{\n width: '127px',\n height: '25px',\n flexDirection: 'column',\n justifyContent: 'center',\n }}\n showTooltip={true}\n toolTip={getRemainingTokensString(bondData, SDKConfig.showLowValueBonds)}\n />\n </div>\n </div>\n )\n}\n\nexport default BondCards\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BondCards.js","sources":["../../../../../src/views/BuyBond/components/BondCards/BondCards.tsx"],"sourcesContent":["import React from 'react'\nimport { TooltipText } from '../../../../config/constants/tooltips'\nimport TokenImage from '../../../../components/uikit-sdk/TokenImage'\nimport {\n getMaxBuy,\n getRemainingTokensString,\n getVestingTermsString,\n getVestingTermsTooltipString,\n remainingPercentage,\n} from '../../../../utils/displayHelpers'\nimport { BondsData } from '../../../../types/bonds'\nimport BonusComponent from '../../../Bonds/components/BonusComponents/BonusComponent'\nimport { useIsMobile } from '../../../../hooks/useIsMobile'\nimport { formatNumberSI } from '../../../../utils/formatNumber'\nimport ProgressBar from '../../../../components/ProgressBar/ProgressBar'\nimport ProgressBarWrapper from '../../../../components/ProgressBar/ProgressBarWrapper'\nimport { useSDKConfig } from '../../../../state/useSDKConfig'\nimport { MCColorMapping } from '../../../../utils/campaignStyles'\nimport Flex from '../../../../components/uikit-sdk/Flex'\nimport TooltipBubble from '../../../../components/uikit-sdk/TooltipBubble'\nimport Svg from '../../../../components/uikit-sdk/Svg'\n\nconst BondCards = ({ bondData, isDoingMaxBuy }: { bondData: BondsData; isDoingMaxBuy?: boolean }) => {\n const isMobile = useIsMobile()\n const SDKConfig = useSDKConfig()\n\n return (\n <div className=\"bonds-cards\">\n <div\n className=\"bond-card-block\"\n sx={{\n borderRadius: ['0px', '0px', '0px', 'normal'],\n '&:first-of-type': {\n borderTopRightRadius: 'normal',\n borderTopLeftRadius: 'normal',\n },\n '&:last-of-type': {\n borderBottomRightRadius: 'normal',\n borderBottomLeftRadius: 'normal',\n },\n background: MCColorMapping.white3[bondData.marketingCampaign!],\n }}\n >\n <Flex className=\"bond-card-title\">\n {SDKConfig.namingPreference}\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Discount}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, -5%)\"\n >\n <div className=\"bond-card-tooltip\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </div>\n </TooltipBubble>\n </Flex>\n <BonusComponent\n trueBondPrices={SDKConfig.namingPreference !== 'Discount' ? bondData.trueBondPrices : undefined}\n minTier={bondData.minTier}\n tooltipPosition={isMobile ? 'bottomRight' : 'bottomLeft'}\n bonus={\n SDKConfig.namingPreference === 'Discount'\n ? `${bondData?.trueBondPrices?.[0]?.discountWithFee?.toFixed(2)}%`\n : undefined\n }\n isIREET={bondData.earnToken.symbol === 'iREET'}\n />\n </div>\n <div\n className=\"bond-card-block\"\n sx={{\n borderRadius: ['0px', '0px', '0px', 'normal'],\n '&:first-of-type': {\n borderTopRightRadius: 'normal',\n borderTopLeftRadius: 'normal',\n },\n\n '&:last-of-type': {\n borderBottomRightRadius: 'normal',\n borderBottomLeftRadius: 'normal',\n },\n background: MCColorMapping.white3[bondData.marketingCampaign!],\n }}\n >\n <div className=\"bond-card-title\">\n Terms\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.Terms}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, -5%)\"\n >\n <div className=\"bond-card-tooltip\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </div>\n </TooltipBubble>\n </div>\n <div className=\"bond-card-content\">\n {getVestingTermsString(bondData)}\n {bondData.vestingCliff && (\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{getVestingTermsTooltipString(bondData)}</Flex>}\n width=\"180px\"\n placement=\"bottomRight\"\n transformTip=\"translate(13%, 0%)\"\n >\n <Flex sx={{ opacity: 0.6, ml: '6px' }}>\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </Flex>\n </TooltipBubble>\n )}\n </div>\n </div>\n <div\n className=\"bond-card-block\"\n sx={{\n borderRadius: ['0px', '0px', '0px', 'normal'],\n '&:first-of-type': {\n borderTopRightRadius: 'normal',\n borderTopLeftRadius: 'normal',\n },\n '&:last-of-type': {\n borderBottomRightRadius: 'normal',\n borderBottomLeftRadius: 'normal',\n },\n background: MCColorMapping.white3[bondData.marketingCampaign!],\n border: isDoingMaxBuy && '2px solid green !important',\n position: 'relative',\n }}\n >\n {isDoingMaxBuy && (\n <Flex\n sx={{\n position: 'absolute',\n top: '0px',\n right: '0px',\n transform: ['translate(50%,-50%)', 'translate(50%,-50%)', 'translate(50%,-50%)', 'translate(-50%,-50%)'],\n }}\n >\n <Svg icon=\"success\" width={isMobile ? 16 : 20} />\n </Flex>\n )}\n <div className=\"bond-card-title\">\n Max Buy\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.MaxBuy(bondData?.earnToken?.symbol)}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, -5%)\"\n >\n <div className=\"bond-card-tooltip\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </div>\n </TooltipBubble>\n </div>\n <Flex className=\"bond-card-content\" sx={{ alignItems: 'center' }}>\n <div style={{ paddingRight: '3px' }}>\n <TokenImage\n symbol={bondData.showcaseTokenName ?? bondData.earnToken.symbol}\n size={22}\n chain={bondData.chainId}\n />\n </div>\n {formatNumberSI(getMaxBuy(bondData, SDKConfig.showLowValueBonds).toString(), 0)}\n </Flex>\n </div>\n <div\n className=\"bond-card-block\"\n sx={{\n borderRadius: ['0px', '0px', '0px', 'normal'],\n '&:first-of-type': {\n borderTopRightRadius: 'normal',\n borderTopLeftRadius: 'normal',\n },\n\n '&:last-of-type': {\n borderBottomRightRadius: 'normal',\n borderBottomLeftRadius: 'normal',\n },\n background: MCColorMapping.white3[bondData.marketingCampaign!],\n }}\n >\n <Flex className=\"bond-card-title\">\n Tokens Remaining\n <TooltipBubble\n className=\"tooltip-bubble\"\n body={<Flex>{TooltipText.TokensRemaining}</Flex>}\n width=\"230px\"\n placement=\"bottomLeft\"\n transformTip=\"translate(-5%, -5%)\"\n >\n <div className=\"bond-card-tooltip\">\n <Svg icon=\"questionCircle\" width=\"12px\" />\n </div>\n </TooltipBubble>\n </Flex>\n <ProgressBarWrapper\n title={''}\n value={<ProgressBar value={remainingPercentage(bondData)} />}\n style={{\n width: '127px',\n height: '25px',\n flexDirection: 'column',\n justifyContent: 'center',\n }}\n showTooltip={true}\n toolTip={getRemainingTokensString(bondData, SDKConfig.showLowValueBonds)}\n />\n </div>\n </div>\n )\n}\n\nexport default BondCards\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -138,7 +138,7 @@ const RakuraiComponent = () => {
|
|
|
138
138
|
height: '200px',
|
|
139
139
|
width: '100%',
|
|
140
140
|
p: ['10px', '10px', '10px', '10px 20px'],
|
|
141
|
-
backgroundImage: 'url(https://ape.bond/images/
|
|
141
|
+
backgroundImage: 'url(https://ape.bond/images/rakurai/bgrakurai.png)',
|
|
142
142
|
backgroundSize: 'cover',
|
|
143
143
|
borderRadius: '16px',
|
|
144
144
|
mb: '10px',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RakuraiComponent.js","sources":["../../../src/views/RakuraiComponent/RakuraiComponent.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useConnection, useWallet } from '@solana/wallet-adapter-react'\nimport { useWalletModal } from '@solana/wallet-adapter-react-ui'\nimport { LAMPORTS_PER_SOL } from '@solana/web3.js'\nimport { liquidStake, liquidUnstake, liquidUnstakeJupiter, updateCampaign } from '@rakurai/rakurai-stake-sdk'\nimport { useRakuraiStats, RAISOL_TOKEN } from './useRakuraiStats'\nimport { useIsMobile } from '../../hooks/useIsMobile'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { useTokenPrice } from '../../state/tokenPrices/useTokenPrice'\nimport { usePopups } from '../../state/popups/usePopups'\nimport useSolanaStakeBalances from './useSolanaStakeBalances'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport TokenImage from '../../components/uikit-sdk/TokenImage'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport TabNavigation from '../../components/TabNavigation'\n\ntype StakeTab = 'Stake SOL' | 'Unstake'\nconst TABS: StakeTab[] = ['Stake SOL', 'Unstake']\nconst REFERRAL_CODE = '2kzDPgGG8'\n\nconst RakuraiComponent = () => {\n const { data } = useRakuraiStats()\n const isMobile = useIsMobile()\n const [activeTab, setActiveTab] = useState<StakeTab>('Stake SOL')\n const [typedValue, setTypedValue] = useState<string>('')\n const [isLoading, setIsLoading] = useState<boolean>(false)\n const [unstakeMethod, setUnstakeMethod] = useState<'immediate' | 'epoch'>('immediate')\n const SOLPrice = useTokenPrice('so11111111111111111111111111111111111111112', ChainId.SOL) ?? 0\n const raiSOLPrice = SOLPrice / (data?.price ?? 0)\n\n const { publicKey, signTransaction, connected } = useWallet()\n const { connection } = useConnection()\n const { setVisible: openSolanaWalletModal } = useWalletModal()\n const { solBalance, raiSolBalance, refetch } = useSolanaStakeBalances()\n\n const isStake = activeTab === 'Stake SOL'\n const receiveAmount = isStake\n ? parseFloat(typedValue) / (data?.price ?? 0)\n : parseFloat(typedValue) * (data?.price ?? 0)\n const currentBalance = isStake ? solBalance : raiSolBalance\n\n const { addToastError, addToastSuccess } = usePopups()\n\n const handleTabSwitch = (tab: StakeTab) => {\n setActiveTab(tab)\n setTypedValue('')\n }\n\n const handleStake = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const tx = await liquidStake({ pubkey: publicKey.toBase58(), amount: amountLamports })\n const signedTx = await signTransaction(tx as any)\n const txSig = await connection.sendRawTransaction((signedTx as any).serialize())\n setTypedValue('')\n addToastSuccess(txSig, ChainId.SOL, 'SOL staked successfully')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: true,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: stake failed', err)\n addToastError(err?.message ?? 'Stake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n const handleUnstakeJupiter = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const tx = await liquidUnstakeJupiter({ pubkey: publicKey.toBase58(), amount: amountLamports })\n const signedTx = await signTransaction(tx as any)\n const txSig = await connection.sendRawTransaction((signedTx as any).serialize())\n setTypedValue('')\n addToastSuccess(txSig, ChainId.SOL, 'raiSOL unstaked successfully (Jupiter)')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: false,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: unstake failed', err)\n addToastError(err?.message ?? 'Unstake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n const handleUnstakeEpoch = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const { transaction, stakeAccountKeypair } = await liquidUnstake({\n pubkey: publicKey.toBase58(),\n amount: amountLamports,\n })\n const signedTx = await signTransaction(transaction)\n signedTx.partialSign(stakeAccountKeypair)\n const txSig = await connection.sendRawTransaction(signedTx.serialize())\n setTypedValue('')\n console.log(txSig)\n addToastSuccess(txSig, ChainId.SOL, 'raiSOL unstaked successfully (after epoch)')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: false,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: epoch unstake failed', err)\n addToastError(err?.message ?? 'Epoch unstake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n <Flex\n sx={{\n height: '200px',\n width: '100%',\n p: ['10px', '10px', '10px', '10px 20px'],\n backgroundImage: 'url(https://ape.bond/images/CampaignComponent/rakurai/bgrakurai.png)',\n backgroundSize: 'cover',\n borderRadius: '16px',\n mb: '10px',\n }}\n >\n <Flex\n sx={{\n width: ['50%'],\n flexDirection: 'column',\n display: ['none', 'none', 'none', 'flex'],\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ flexDirection: 'column', gap: '20px' }}>\n <Flex\n sx={{\n alignItems: 'center',\n gap: '5px',\n fontSize: '18px',\n fontWeight: 700,\n color: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n }}\n >\n <TokenImage symbol={'raiSOL'} size={24} />\n raiSol Liquid Staking\n </Flex>\n <span\n sx={{\n fontSize: '14px',\n fontWeight: 500,\n color: 'textDisabledButton',\n mr: ['unset', 'unset', 'unset', '15px'],\n }}\n >\n {`APY ${data?.apy.toFixed(2)}% - Delegate to Rakurai and earn maximized yield that auto-recompounds every epoch, all while keeping full custody of your SOL.`}\n <span\n sx={{ color: 'primaryButton', ml: '3px', cursor: 'pointer', ':hover': { textDecoration: 'underlined' } }}\n onClick={() => window.open('https://rakurai.io/stake', '_blank')}\n >\n {'Learn More >'}\n </span>\n </span>\n </Flex>\n\n <Flex sx={{ flexDirection: 'column', fontSize: '10px', color: 'grey', fontWeight: 300, pb: '10px' }}>\n Powered by\n <img\n alt={'rakuraiCampaign'}\n src={'https://ape.bond/images/rakurai/rakurai.png'}\n style={{ width: '117px', height: '25px' }}\n />\n </Flex>\n </Flex>\n <Flex sx={{ width: ['100%', '100%', '100%', '50%'], flexDirection: 'column' }}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex sx={{ fontSize: '12px', lineHeight: '22px', display: ['flex', 'flex', 'flex', 'none'], gap: '5px' }}>\n <TokenImage symbol={'raiSOL'} size={24} />\n raiSol Liquid Staking\n </Flex>\n <Flex\n sx={{\n mb: '7px',\n mr: '10px',\n justifyContent: 'center',\n '& > div:first-of-type': {\n fontSize: ['12px', '12px', '12px', '14px'],\n fontWeight: 500,\n color: 'textDisabledButton',\n },\n }}\n >\n <TabNavigation\n tabs={TABS}\n activeTab={activeTab}\n setActiveTab={handleTabSwitch}\n lineColor={'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)'}\n />\n </Flex>\n </Flex>\n <Flex\n sx={{\n width: '100%',\n '& > div:first-of-type': {\n width: '100%',\n },\n }}\n >\n <TokenSelectorPanel\n selectedToken={isStake ? 'NATIVE' : RAISOL_TOKEN}\n typedValue={typedValue}\n setTypedValue={setTypedValue}\n handleValueBtn={(val) => setTypedValue(val)}\n handleCurrencySelect={() => null}\n tokenBalance={currentBalance}\n selectedTokenPrice={isStake ? SOLPrice : raiSOLPrice}\n // account={solanaAddress}\n enableZap={false}\n bondChainId={ChainId.SOL}\n />\n </Flex>\n <Flex\n sx={{\n fontSize: '12px',\n fontWeight: 500,\n gap: '5px',\n my: '5px',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ gap: '5px', alignItems: 'center', height: '21px' }}>\n You Get:\n <TokenImage symbol={isStake ? `raiSOL` : `SOL`} size={20} />\n {formatNumberSI(receiveAmount)} {isStake ? `raiSOL` : `SOL`}\n {isStake && (\n <Flex sx={{ color: 'success', fontWeight: 600, opacity: 0.8 }}>+{data?.apy?.toFixed(2)}% APY</Flex>\n )}\n </Flex>\n {isStake ? (\n <Flex sx={{ gap: '5px', alignItems: 'center' }}>\n <Flex sx={{ display: ['flex', 'flex', 'flex', 'none'] }}>Staked:</Flex>\n <Flex sx={{ display: ['none', 'none', 'none', 'flex'] }}>Staled Amount:</Flex>\n <TokenImage symbol={isStake ? `raiSOL` : `SOL`} size={20} />\n {formatNumberSI(raiSolBalance)} {isStake ? `raiSOL` : `SOL`}\n </Flex>\n ) : (\n <Flex sx={{ gap: '5px', alignItems: 'center' }}>\n {(['immediate', 'epoch'] as const).map((method) => {\n const label =\n method === 'immediate'\n ? isMobile\n ? 'Immediate (Jup)'\n : 'Immediate (Jupiter)'\n : isMobile\n ? 'After Epoch'\n : 'After Epoch Ends'\n const isSelected = unstakeMethod === method\n return (\n <Flex\n key={method}\n onClick={() => setUnstakeMethod(method)}\n sx={{\n cursor: 'pointer',\n fontSize: '10px',\n fontWeight: 500,\n padding: '2px 7px',\n borderRadius: '8px',\n border: isSelected ? '1px solid transparent' : '1px solid rgba(255,255,255,0.15)',\n background: isSelected\n ? 'linear-gradient(#16213e, #16213e) padding-box, linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) border-box'\n : 'transparent',\n color: isSelected ? 'white' : 'textDisabledButton',\n whiteSpace: 'nowrap',\n }}\n >\n {label}\n </Flex>\n )\n })}\n </Flex>\n )}\n </Flex>\n {/* CTA button */}\n <Flex sx={{ width: '100%', height: '28px' }}>\n {!connected ? (\n <Button\n sx={{\n width: '100%',\n fontSize: '12px !important',\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n border: 'none !important',\n '&:hover': {\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) !important',\n color: 'black',\n },\n }}\n onClick={() => openSolanaWalletModal(true)}\n >\n Connect Solana Wallet\n </Button>\n ) : (\n <Button\n sx={{\n width: '100%',\n fontSize: '12px !important',\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n border: 'none !important',\n '&:hover': {\n background:\n !(isLoading || !typedValue || parseFloat(typedValue) <= 0) &&\n 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) !important',\n color: 'black',\n },\n }}\n load={isLoading}\n disabled={isLoading || !typedValue || parseFloat(typedValue) <= 0}\n onClick={\n isStake ? handleStake : unstakeMethod === 'immediate' ? handleUnstakeJupiter : handleUnstakeEpoch\n }\n >\n {isStake ? 'Stake' : 'Unstake'}\n </Button>\n )}\n </Flex>\n </Flex>\n </Flex>\n )\n}\n\nexport default RakuraiComponent\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RakuraiComponent.js","sources":["../../../src/views/RakuraiComponent/RakuraiComponent.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport { useConnection, useWallet } from '@solana/wallet-adapter-react'\nimport { useWalletModal } from '@solana/wallet-adapter-react-ui'\nimport { LAMPORTS_PER_SOL } from '@solana/web3.js'\nimport { liquidStake, liquidUnstake, liquidUnstakeJupiter, updateCampaign } from '@rakurai/rakurai-stake-sdk'\nimport { useRakuraiStats, RAISOL_TOKEN } from './useRakuraiStats'\nimport { useIsMobile } from '../../hooks/useIsMobile'\nimport { ChainId } from '@ape.swap/apeswap-lists'\nimport { useTokenPrice } from '../../state/tokenPrices/useTokenPrice'\nimport { usePopups } from '../../state/popups/usePopups'\nimport useSolanaStakeBalances from './useSolanaStakeBalances'\nimport Flex from '../../components/uikit-sdk/Flex'\nimport TokenImage from '../../components/uikit-sdk/TokenImage'\nimport TokenSelectorPanel from '../../components/TokenSelectorPanel'\nimport { formatNumberSI } from '../../utils/formatNumber'\nimport Button from '../../components/uikit-sdk/Button/Button'\nimport TabNavigation from '../../components/TabNavigation'\n\ntype StakeTab = 'Stake SOL' | 'Unstake'\nconst TABS: StakeTab[] = ['Stake SOL', 'Unstake']\nconst REFERRAL_CODE = '2kzDPgGG8'\n\nconst RakuraiComponent = () => {\n const { data } = useRakuraiStats()\n const isMobile = useIsMobile()\n const [activeTab, setActiveTab] = useState<StakeTab>('Stake SOL')\n const [typedValue, setTypedValue] = useState<string>('')\n const [isLoading, setIsLoading] = useState<boolean>(false)\n const [unstakeMethod, setUnstakeMethod] = useState<'immediate' | 'epoch'>('immediate')\n const SOLPrice = useTokenPrice('so11111111111111111111111111111111111111112', ChainId.SOL) ?? 0\n const raiSOLPrice = SOLPrice / (data?.price ?? 0)\n\n const { publicKey, signTransaction, connected } = useWallet()\n const { connection } = useConnection()\n const { setVisible: openSolanaWalletModal } = useWalletModal()\n const { solBalance, raiSolBalance, refetch } = useSolanaStakeBalances()\n\n const isStake = activeTab === 'Stake SOL'\n const receiveAmount = isStake\n ? parseFloat(typedValue) / (data?.price ?? 0)\n : parseFloat(typedValue) * (data?.price ?? 0)\n const currentBalance = isStake ? solBalance : raiSolBalance\n\n const { addToastError, addToastSuccess } = usePopups()\n\n const handleTabSwitch = (tab: StakeTab) => {\n setActiveTab(tab)\n setTypedValue('')\n }\n\n const handleStake = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const tx = await liquidStake({ pubkey: publicKey.toBase58(), amount: amountLamports })\n const signedTx = await signTransaction(tx as any)\n const txSig = await connection.sendRawTransaction((signedTx as any).serialize())\n setTypedValue('')\n addToastSuccess(txSig, ChainId.SOL, 'SOL staked successfully')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: true,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: stake failed', err)\n addToastError(err?.message ?? 'Stake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n const handleUnstakeJupiter = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const tx = await liquidUnstakeJupiter({ pubkey: publicKey.toBase58(), amount: amountLamports })\n const signedTx = await signTransaction(tx as any)\n const txSig = await connection.sendRawTransaction((signedTx as any).serialize())\n setTypedValue('')\n addToastSuccess(txSig, ChainId.SOL, 'raiSOL unstaked successfully (Jupiter)')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: false,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: unstake failed', err)\n addToastError(err?.message ?? 'Unstake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n const handleUnstakeEpoch = async () => {\n if (!publicKey || !signTransaction) return\n setIsLoading(true)\n try {\n const amountLamports = Math.floor(parseFloat(typedValue) * LAMPORTS_PER_SOL)\n const { transaction, stakeAccountKeypair } = await liquidUnstake({\n pubkey: publicKey.toBase58(),\n amount: amountLamports,\n })\n const signedTx = await signTransaction(transaction)\n signedTx.partialSign(stakeAccountKeypair)\n const txSig = await connection.sendRawTransaction(signedTx.serialize())\n setTypedValue('')\n console.log(txSig)\n addToastSuccess(txSig, ChainId.SOL, 'raiSOL unstaked successfully (after epoch)')\n await updateCampaign({\n address: publicKey.toBase58(),\n amount: amountLamports,\n txn_sig: txSig,\n is_stake: false,\n referral_code: REFERRAL_CODE,\n })\n await new Promise((resolve) => setTimeout(resolve, 2000))\n refetch()\n } catch (err: any) {\n console.error('RakuraiCampaign: epoch unstake failed', err)\n addToastError(err?.message ?? 'Epoch unstake failed')\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n <Flex\n sx={{\n height: '200px',\n width: '100%',\n p: ['10px', '10px', '10px', '10px 20px'],\n backgroundImage: 'url(https://ape.bond/images/rakurai/bgrakurai.png)',\n backgroundSize: 'cover',\n borderRadius: '16px',\n mb: '10px',\n }}\n >\n <Flex\n sx={{\n width: ['50%'],\n flexDirection: 'column',\n display: ['none', 'none', 'none', 'flex'],\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ flexDirection: 'column', gap: '20px' }}>\n <Flex\n sx={{\n alignItems: 'center',\n gap: '5px',\n fontSize: '18px',\n fontWeight: 700,\n color: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n }}\n >\n <TokenImage symbol={'raiSOL'} size={24} />\n raiSol Liquid Staking\n </Flex>\n <span\n sx={{\n fontSize: '14px',\n fontWeight: 500,\n color: 'textDisabledButton',\n mr: ['unset', 'unset', 'unset', '15px'],\n }}\n >\n {`APY ${data?.apy.toFixed(2)}% - Delegate to Rakurai and earn maximized yield that auto-recompounds every epoch, all while keeping full custody of your SOL.`}\n <span\n sx={{ color: 'primaryButton', ml: '3px', cursor: 'pointer', ':hover': { textDecoration: 'underlined' } }}\n onClick={() => window.open('https://rakurai.io/stake', '_blank')}\n >\n {'Learn More >'}\n </span>\n </span>\n </Flex>\n\n <Flex sx={{ flexDirection: 'column', fontSize: '10px', color: 'grey', fontWeight: 300, pb: '10px' }}>\n Powered by\n <img\n alt={'rakuraiCampaign'}\n src={'https://ape.bond/images/rakurai/rakurai.png'}\n style={{ width: '117px', height: '25px' }}\n />\n </Flex>\n </Flex>\n <Flex sx={{ width: ['100%', '100%', '100%', '50%'], flexDirection: 'column' }}>\n <Flex sx={{ width: '100%', justifyContent: 'space-between' }}>\n <Flex sx={{ fontSize: '12px', lineHeight: '22px', display: ['flex', 'flex', 'flex', 'none'], gap: '5px' }}>\n <TokenImage symbol={'raiSOL'} size={24} />\n raiSol Liquid Staking\n </Flex>\n <Flex\n sx={{\n mb: '7px',\n mr: '10px',\n justifyContent: 'center',\n '& > div:first-of-type': {\n fontSize: ['12px', '12px', '12px', '14px'],\n fontWeight: 500,\n color: 'textDisabledButton',\n },\n }}\n >\n <TabNavigation\n tabs={TABS}\n activeTab={activeTab}\n setActiveTab={handleTabSwitch}\n lineColor={'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)'}\n />\n </Flex>\n </Flex>\n <Flex\n sx={{\n width: '100%',\n '& > div:first-of-type': {\n width: '100%',\n },\n }}\n >\n <TokenSelectorPanel\n selectedToken={isStake ? 'NATIVE' : RAISOL_TOKEN}\n typedValue={typedValue}\n setTypedValue={setTypedValue}\n handleValueBtn={(val) => setTypedValue(val)}\n handleCurrencySelect={() => null}\n tokenBalance={currentBalance}\n selectedTokenPrice={isStake ? SOLPrice : raiSOLPrice}\n // account={solanaAddress}\n enableZap={false}\n bondChainId={ChainId.SOL}\n />\n </Flex>\n <Flex\n sx={{\n fontSize: '12px',\n fontWeight: 500,\n gap: '5px',\n my: '5px',\n alignItems: 'center',\n justifyContent: 'space-between',\n }}\n >\n <Flex sx={{ gap: '5px', alignItems: 'center', height: '21px' }}>\n You Get:\n <TokenImage symbol={isStake ? `raiSOL` : `SOL`} size={20} />\n {formatNumberSI(receiveAmount)} {isStake ? `raiSOL` : `SOL`}\n {isStake && (\n <Flex sx={{ color: 'success', fontWeight: 600, opacity: 0.8 }}>+{data?.apy?.toFixed(2)}% APY</Flex>\n )}\n </Flex>\n {isStake ? (\n <Flex sx={{ gap: '5px', alignItems: 'center' }}>\n <Flex sx={{ display: ['flex', 'flex', 'flex', 'none'] }}>Staked:</Flex>\n <Flex sx={{ display: ['none', 'none', 'none', 'flex'] }}>Staled Amount:</Flex>\n <TokenImage symbol={isStake ? `raiSOL` : `SOL`} size={20} />\n {formatNumberSI(raiSolBalance)} {isStake ? `raiSOL` : `SOL`}\n </Flex>\n ) : (\n <Flex sx={{ gap: '5px', alignItems: 'center' }}>\n {(['immediate', 'epoch'] as const).map((method) => {\n const label =\n method === 'immediate'\n ? isMobile\n ? 'Immediate (Jup)'\n : 'Immediate (Jupiter)'\n : isMobile\n ? 'After Epoch'\n : 'After Epoch Ends'\n const isSelected = unstakeMethod === method\n return (\n <Flex\n key={method}\n onClick={() => setUnstakeMethod(method)}\n sx={{\n cursor: 'pointer',\n fontSize: '10px',\n fontWeight: 500,\n padding: '2px 7px',\n borderRadius: '8px',\n border: isSelected ? '1px solid transparent' : '1px solid rgba(255,255,255,0.15)',\n background: isSelected\n ? 'linear-gradient(#16213e, #16213e) padding-box, linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) border-box'\n : 'transparent',\n color: isSelected ? 'white' : 'textDisabledButton',\n whiteSpace: 'nowrap',\n }}\n >\n {label}\n </Flex>\n )\n })}\n </Flex>\n )}\n </Flex>\n {/* CTA button */}\n <Flex sx={{ width: '100%', height: '28px' }}>\n {!connected ? (\n <Button\n sx={{\n width: '100%',\n fontSize: '12px !important',\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n border: 'none !important',\n '&:hover': {\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) !important',\n color: 'black',\n },\n }}\n onClick={() => openSolanaWalletModal(true)}\n >\n Connect Solana Wallet\n </Button>\n ) : (\n <Button\n sx={{\n width: '100%',\n fontSize: '12px !important',\n background: 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%)',\n border: 'none !important',\n '&:hover': {\n background:\n !(isLoading || !typedValue || parseFloat(typedValue) <= 0) &&\n 'linear-gradient(83.85deg, #024eff .22%, #3ce844 102.21%) !important',\n color: 'black',\n },\n }}\n load={isLoading}\n disabled={isLoading || !typedValue || parseFloat(typedValue) <= 0}\n onClick={\n isStake ? handleStake : unstakeMethod === 'immediate' ? handleUnstakeJupiter : handleUnstakeEpoch\n }\n >\n {isStake ? 'Stake' : 'Unstake'}\n </Button>\n )}\n </Flex>\n </Flex>\n </Flex>\n )\n}\n\nexport default RakuraiComponent\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|