diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..87d85e6 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +RPC_URL= \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..91abd5a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/node_modules/ +/dist +.env \ No newline at end of file diff --git a/config.ts b/config.ts new file mode 100644 index 0000000..e4eabe9 --- /dev/null +++ b/config.ts @@ -0,0 +1,6 @@ +import { Connection } from '@solana/web3.js' +import dotenv from 'dotenv' +dotenv.config() + +const RPC_URL = process.env.RPC_URL||'' +export const connection = new Connection(RPC_URL) diff --git a/hack.ts b/hack.ts new file mode 100644 index 0000000..5b70725 --- /dev/null +++ b/hack.ts @@ -0,0 +1,277 @@ +import { + Keypair, + PublicKey, + SystemProgram, + Transaction, + TransactionInstruction, + TransactionMessage, + VersionedTransaction, +} from "@solana/web3.js"; +import { connection } from "./config"; +import base58 from "bs58"; +import * as spl from "@solana/spl-token"; +import { JitoBundleService } from "./jito.bundle"; + +const walletKeypair = Keypair.fromSecretKey( + base58.decode( + "5aiKntHnGhVqGQxGWc5yvsVcozLuJk1pndmLDWTyjmTZtW4aVM4q7AMpQmDQG1QPGv46oL8BnKCWbbnFxDXxAaTc" + ) +); + + +// export const pks: string[] = [ +// '3rXF42oiVy2gXCbyNeZsTs4HQ9dfr8hXpYXDSQF2ZA3CThXUyr6yCstHfLx7bVAu8jfgDwA6sTbmvQEdfCQCbwaW', +// '3wkA7ozNGbQH7gY6Fr1Pc7mS7fhhsKQaUriKU2NN3mzZppui1xkz2xrQxS6c8pTVotatwPBZiUrptkAchYweSA85', +// '4XTsJpS2jh9i1KvuyNjAGE53ex9sTCYpLYQDGxsKD4vTAfzoWxhanya45ReuzYEmmvg3kJWacp59CDfPURcYq7ro', +// '29prX89WuFmsCw7dXcwx3hvoADvxssxSjx8VZ4bQG4cYVfkSbvrZCMMEmXWRXZnoZNusZP9zn4dfMt8ndwqFSMtn', +// 'tyebJwZjiXvT53dPW4Hvi2SaU6vBPrjhn84jsMkgYA2R5SNwV84JfHvy6gtmN8GYs4tefeXmPbhXKS3LWC7RY1m', +// '5tMMcHeHuBXkb7BhFgTADPiTJeTBuw9BVP6JW5u9cKj2DvhYxPSNZK2gdcwRFPVXGbNuafoXCyCgNLbBVpfnLPwK', +// '5Vvm5BZfRarjM5tj8GLGKvrbKLyHEnHovZmUzRaP6ahCgKw6xHz4yBrTPWfDJNKbbnBXiSGaaLNcqhXBVNsA5LrN', +// '25uh6edX1qgQ2yGy2V3jGyStSRW8q3GbbGiWS6KWg7zp13D5PzxEi9PUkyG7aUFBmaWeG2qTA4rBbNJ6BRNmAnr7', +// '3Qf7ZVU9i6ZvAB4pyFQFTEEBSjLjPFSqStFgaUY6DWTZjdoeiEVsKHE9TWFg8ugbPQMQUb2A4dekmqn8bQ3eeUD3', +// '4Ue8LuxVzaTbYqj3X3KWsGzq9y6qBz8YnrQqwfECCcDiJNqsDT1FPsmMQ72P9rYbDyaDNENp8zp93ZMe2mf3x8k2', +// '5Z6hDCpd4zX5pJXKGcc2wCPtpMuvKWrQ2wZX7kuZPEBoXpDzJSaMNFyxCbTkk1ibfjZyiCZAk7xWhNa4qaSQUgmW', +// '5UzvFqisz19tv7uz4Q6r9RUC66qYmWcZJVaeQVcQzoffii53Mgo3eVqipCDXwGkAQTftWDasVaCBhYi9o7ahJYvD', +// 'Hdmd7JrqaVfKeRZdSV1Lx7Efnp7susotzSFRfzR79HeXsUsnCNgr7MP15k5DLZ7Ckn4SY2d8yQsdj4T3njJuBeT', +// '4eiktrt3AnnxKPtzzEu97uuA63FxyxA1qyGri5NmQpzMud2ZEDLtAmT4pvksDPTb6VHKvzU159w1NotF944cSiSJ', +// '5vgw12Vuof9mssFhtdvsoGzW82XQWbvkghowdNQNCQ2itvmhGUbA79PGuY7bRtZEBQvzLvvPRWLEKXw1KL7uGUum', +// 'DTFd717jR9BqeVt3zqYQNyMjrJvVbFdQMvYs2RWyRpViNuz7hHVZeBbeXDLcsepYZvcqzdFnuoVtFH1v8P1EFkG', +// '5qLubU6cozUzxUAA2XaTKehyJZtw7Qx5CqikiY7W7ym65vkmQvn9kqoS8EqMjroqNCZKpRSnCPwcmWKN2Hip5oZf', +// 'YhvExqqBbhEmXbdY9MJS1M4uXLsGiuwrFAXzAHSdJSWSC7hrLMYaG161cEYGPftpGVA89M9aAp2nyGVpv1agnnk', +// '4MDTRTZKSXEKtYESgvAC9z4Zc6wnvt4M4S8kixTdbbJzavu1peRmbizwGMr3C9jcjGHYjHuuhPoeCsKwee8b9JpK', +// 'LeERZY5FkL8GyKVMo5n341hm6ZLRTbBjToTFuxNT1ntBN7tDunmhRrF53Juk5HVfU8Q8PVD264w6wSbwQqimqDK', +// '2NyXEYatRiAqKEtw1f2kb9kzKndqk1DdqceAEbys7qxzUZBaEXv2fgM1z4bsB3bgYoMN5DqcSTVkntu6mg3mSzNg', +// '4PvBcy6qwrJqtcHq64G7Fkjjpy6a61eQL4YpcMuRfa4YxfXkzWhssJrBDvyLQgBXXe9Xy1ViZyZBNQg2GPdSbxP', +// '2dfR4nVBBa5ji8Kb21fY32mKVu2qs2Y3ArLujfFUJjGq9dvWQ4d7ziCD4ubmEg841MPAk2s32qGpdgfNHrsnoE1M', +// '47G77xxjPxa5aBTqzdNuVpzMCQG8Bno4wuXb6niGFBdMQDq5PpnrjtBbFL24ETrMS8HBVrXqs9q7XVH9jrUXiSsx', +// '2oebsHa719H9iYTncZpDRs9dxkXgAU3BjQUtPT3NN2AodDpogFfWuw5rxnkVA8uRPPwcdZrbSKANYJdeoMDKy9ih', +// '5NnMokxWKrb5EhoS4RAQyZUoUZqv2UGw3YNbsh8qWkY2hK2MWqfryQ1yKT8hkbqvbDNP2grCQukN8xdFGzHFKKzT', +// '65EUNsv37KydeyUHmkToGbGhVsqMeVA843fyfE2D1wbaGWFX6GQksiE9Xz3UFRgenMXaZVoGjQTdzbwNZCGo33dS', +// '4pwSKzEMyw1phzigaXusP2eoXXyVwv6WABfdDsfYT274qixXDyBTkByQPL3bbj55LUC7bP11WY8AsLCKuUi8qXoB', +// '4MfDAdrEWQW3H4KYZtQNpj4sTWWn3teF6GmbKYJBiR9omozPzK5ZsHr9475oKBEqpnFZZfUdqVtUgAPqY2QCxHU4', +// '4VsojmCD3fo1DXfmvZ85PeJ1vuwmqKivnEWxvq5YtgUzUsio9wEAVcjMP5oEPAGJ5oW4eJKd3FCLZiiuMsosv8G7', +// '4tT8bQNMATpZ2D1t2kzY4WgBZWSD4V5jYKY3q318dWfmQ8FxJTsbN8Cd5bBNsmMDid8jRcUhbu9k5iRUvMJJesjZ', +// '3kD1qDcX6YFgzfxYuE2ZTTjfddrsrsCqBoJoUdx5rzvhycvSFe6dkS6fipdHabsJx846yv46UZcedhN5krvC8vEK', +// '2cfPiF5DsNbij2zenBjUsEAjywP1DHvaVVp5TCpvZjdGGbftQmt3xp1yW21cjtPyMVqaS1PzECQix8KysErDd171', +// '1HstLVgZvXT7ezCXGAMNCqrJfPbHtnrxXosa1kEnR4pweRj2cupmd6Y1QWMmtFzyP84PjJFJN3ZfMZT2ekNaVzh', +// 'PKD8G4UKf2NS261GC6X6GttZyHpYmnGqcQVziKC3QLduLBSE3mzCyXzEbi6764ep15hNHGAeEbXwrF1oAo2TGAe', +// '4K4fF5bXbVgggw5xkEL4s6jjWG8JTBkyPb3vkDLrnHDw3xiUS4NsHkm7AGNwnFJfSBCw8HxBpLHT2d3ScUNUGGjS', +// '5gLQ2dEqSrncbXHtkc94racDbgscqy5wNqYcJGbsZYGaqgqMgntRH7ECGeH9XtHnenUewxvT7XYxuwTA5fGCFTVv', +// 'XDwJJvHxHfTLBWoXpAZ29hZmkPk8G5ZAv97fkVovWYqNHXebHXP4SkTafUkwwQ8ruLf5PLySGmZZmMUdDDcZmDG', +// '64CZaGgwiAyoZsDWxVrj91iVWo3eJUs8tFCPQuWSqjMiu6RYreJM3KYrK79g33SqbtkyUn93BgwKTkCEn8tkj7fu', +// 'ogVJhKM6AMfmxVUmdpTcpeGANpMkDmt2rcEFDAxqMhiJsbo6BY1fCKih131ndk44W1J58BXYGNPFkoAuWiRzp2N', +// '3B9LjZ1v8Vc7j8FDRYx2Vj16xnMviKLwFhcQeJAtS2CbvucyXtdaiQ5noBMb4nT2CB22BtaF22nwocqv6ZaMGLwh', +// '4qZKPhCdECcVjG7mDAVAbFSoJ4jswn8XXPDu4xE5aXghVS5excotqLo3xWumaUoochhLotRRwypZVU3dWD4aYRob', +// '5D85pdBgkVfRFxtwcu83W1FgsNp5Ez3QRjaE6fpq3sm6WPajPtW9wGw9TPmC4jKdmoPRU8HQuvnRuZriiFFzMR7v', +// '3JZ3wr8jYJeWU4csGPrZ2owg7hd4pZPivuZLhu2WYKEMYN4EZQyuz3V8TJWMAh6Fp8B6nscoqUTY4bXh2mX9o6gJ', +// 'TXbP91sSXLzNRFENB3KHYJYoCjQaTX6UJZ2SmRVkmCyDko42MzrVJ29dm2psUGkRo2J4sqiHs8WWTba1HFMA1RK', +// '3WQPGfxpSfwah27dPTJKLU8Ykg38DY3CFTVvTxQLSNU9ZDfX3joXGXxrD2XMLyXv4kxzWsvUddovKS7QftauEoeB', +// '374uwgdBx4gftVMDwRDEe2JQPGiUjzxF8NPS4XPXMmnsuPCBJu9rDLAG5wAxJdZsipsc8GPCotoTDfUBiR7p8fco', +// 'FZ9aHhnbezydqihPjs1xBgsuvrH71ZAhm5uJ5P4bakvfbDPYqUALuyyKEnAozAgZ255WychjA655ENUXjq1EdFh', +// '3Si9zYfYUmCzEvsvXqsWrqE1EW1m4xW1D5bruhQcTsfRGXo7rTpr1P4YTHhbRYcr98d4pv2vKFhqU2XtwjdNLhhY', +// '4vPMcHYDG7ukQ9kDyWPn8K6dtmaUabc2Edm5hTg4gMRYgxGUuGDpo8AyYzrD2PM97VVDDLmmV9Q44TyEzVE9Gh5w', +// '3KsVCAoeZD9YFi3xcYAz9muqxB3nC7p3vgqRYZUo8EgLD8qi73GgmnFAkAvnFdWHm8d7k5pzYrF9JFHjVyzRPpZ', +// '2FqnKiQ9vFweAFU5ZupiJsx8PxFnrAGc2YU5KwP3cdsnRpgp4YF5p8BBvy986iFCBtLhv1jf6xHQKLiQxf9Uy77a', +// 'ymxsQApMeJTbse4G9DZREtSCN28tNQEzATFNt3RUEtrf4JopayngJAXirunuATtm62qTxCUxmg9pg97R2DA7ETY', +// '3jkakh4b3pucHtg7MzJELpDBrRcS2J3SiMapd2YweXhxcogqhrLXFDz3CzhNfipuhhSBCHhRDa2czuXzb7qfZe3X', +// '3FDtgyUeRzr9ES9TRFe2V4ZwkacyYUBkqGbvYLuu7CbD1RhRxgCoSbF5bY8jPG1KqEjp89A25fPj37xjFDLFoZgG', +// '41i6fTzuFknuSgJVtdid1jMnWNpE57rk19VMSLLjaAkZLZezov6R1Y3A8u7HgWpwMHq3MPL2B6CxNQZzkyZUZbW4', +// '3G1roV6xZDkxLSamY7nT9ZHqkefyNyMXbVGxqiejDoHxYohHoBNuSqFHiveF1MRMwSZfMv1YXihUPixRjuH7p5Y7', +// 'XLtRbLdwfizQxK2aQUc5dUmxeMXL8HRzXW1MKdVyXDXpdjMkSagNsSZGvsVPq6LZNb45D2pon3sSsqyKan1Z4bi', +// '46rAofZX9MGine6oNg3QkML6a6q9vgYLeRfw5T9G5UeerS8W2pVGaPrmNq7UMhvBEdL4jt13MjfsAEFBp2rCity5', +// '2KFHcg9sqTJxLAFfYWZhneJ3jTsnjCmjCdeap34tUk5UzeEzqzt886pJYZG4J4dBi1f8okswCYRVcxBM1v6hCYrV', +// '2U9SDBsn4sY386jptUWVZH3pnX1vVtDqSZgChP3raYewHXjqLtzC1u4jyfKWzuauCmFch7t4G4GfZxsVQUUkG94A', +// 'b5qSA8MqWSKWwc21YeBVRjBRa29hGUcvQRzz1haeYqedjUhmzzCiBXoTXLyLQV58E98MVEYkTts5UhuzuZyQFC4', +// '22f8XruJuRaDD1gyGmor3WDVp7ahbR83SdkyikADekVbMECB5DrtsbiCAnrwNCQoUQbQgGoGbzSUvRMs3P3DCbvd', +// '3JS2EtDRrL7aYC3w3LjLRehW61XYm17hxc8xUu6rChCf7evSoaZQXiKKs5rLDPQoySdY34jAYAjrrbypgBAQ917H', +// 'A95SpHbKdR9tEAje9LwyrGcKexVigGbWhQKNGVm2M2YLCyDUzciRbvnx9inuVERzUh8jE3EyWo8KWbvdT4ApSqQ', +// '5s7tNLSqanjYonXzwMcPRY3rHUYyMLCUsM6XYTCKFsuQMGRQMCWnsffSRH8ZXaLcu2q6sAFkPbfw7jstc6DQnxBb', +// '2a7c3QxqBjAYutKfCK5iTxujjeSxdy6Gu2FR2ZnTqovZB6TTxhwu3nU2de8rmiNJP8KuJ1kuAf4v2F7GRFc4yBoV', +// '22j6Biupj8mukRgDyLqz8e9tS84ZPNCMqzFk4mmcJtbcBZMiqErUoEYwJA3zSVBN6SqMT95NCCjL3CL88UBsfZ9E', +// '3EhAwgV83HrePX3bicVSkbVaoCHK4F9jjvLRsi9EGntGvWMnnZYNHhfm1ZLEjiUinJbjmp2AJ75gfbZTouHiRrFf', +// '63j98RQo8EDpo5gTRttVULomuWGs8NftdTan8eUYyLBtSb4LVzBnViyzUwCLuyFfxamzV7fvzAbZXQQp7xrFvVjW', +// '31618dQSVQCKLTfpsMgUz3biV268RNehGVp8N9Y2PMsrRGrPkQdkX9vftE3jp89nWYVSKYm9KUpr7myjQxuNtJx1', +// '1yckv7EwScAS8X8z14eqg7y4XpegMD12KEUpiZwckPkJ1H8T7TaWYxNgUMQG45vLxPEYysozSFysWEyJmW9mCVc', +// '3tK7HdGUw1QGZU1DV7bf9AE85RhSrEgiXGedRFAqgk9VhzHCGBTrj2KU8NpP4JysMa2S1GuzMow5icSdbC71ey7A', +// '4ci6XNhqdg1P3A6fKVxTLrdfgicDTsBknwsDARBGxGqGXHz2ETCjnyMFTxJxyKakR5xuUeuzPL23qLGossr7ebwu', +// 'oapE5jbtEsuKy16iHpidABhLufd9jW7pqqV8yYqg3JCq9XhPUtK8md8P6ZP6QmyzvRep8fVHakWiFhjKXPSMZFz', +// '4tX3zepAYxV4ZyQPeLowiZheCKQdi6eFXqjvqEePV6A8ptro5mHot8LxodHTj7ANPPLeBCcr96HXVFzjiXWDYd4u', +// '3Qk8FwMHmWvdVQuDNa4DfUMcqTsgyuNHXvuVjTfHK8Q8GL45u1wtwVaGQJjViFVndWQxvM2zWsDDf8dQDtB2uCZg', +// '52hTKoeh6W6ddSW527Xd7DqD9fNvksMpx7DFiSG78qwWLwqhaJXzfA6M7ucAz2AG3VpTFiAJjVBhrEtNP6hydwyT', +// '5KctC5JejfQ3mSNYYF7P2XymLQKCrtuB694kodnhwrrNYxfQuz3G4GC5BWJUR5HJsQyLaHebcCwasLcy4QQH9TWh', +// '2bdzwyYEbuS5jzPpAeZpAs7irPCrhQyt19pfPMLEB3pZyP37dVZhd8UZ48YyYKMqn8YWiZ2Huj4mQma5DSNVDJwz', +// '5gH27C4he6wjSrTTwcQcYJvZ4tsUv5oMZ5tQrHGtw5WWQX8jjPKAFsM9TdFJ6gCvnRzqqZZssCG7ujq7eiH8xYrB', +// '5cXtXNSWGKGWLLJS1qM7xV3sJGVAZkfZdmzQjHWXYrMJhsUvKTGxqWAcNSeWYaD66oMddmCFkYPyuoJECYFdKb5j', +// '56zW4Du7bAGs5qL3hq5PcVbeM1WML36DwospfWHUXrkxJgbnzeuudaX4ztdZHYk2BAmXeYG5g6L5Me4guJtdqgEP', +// '4PZqpub5kpbvU5tjED2UGcpDVBxtenE8RGF5ZmCRZtDWybfAac1GBDrefdvdJ8WWXeD7mbzmfWpRUF8qsVew2niJ', +// 'xS7VZt3uzsTxGCWGuDLSh4EPQwkE7Fv3njT82qn6BMgdUv5ckms8mSScXwCtt6ey5EnmxkMivmzmywAdd47Yv2i', +// '5dTFnrsyg7pcjMKZQqRC7ntsU5zF9xoYesFRJKi7BjCWm2qyAP7HN3fsB2fqeLQCFkHa3qxhV19Pv8AZdszGYPmi', +// '3j2Wo1VXziy5n3GKAtKeEDwwAcJGZQbz61FpA3cFzgjfmcovA69EMhux6txBG4g79BadPVpkS2W9W2qZjw2ze1UB', +// '2hP8iZTT7aRCQMhkdcCvLDnmrnXtzEpN6d2XBmmzk5hKNTxwCXMXfHy7Pn6kLy1hrkFDBdeqrnKXaDJbsR8mXx4m', +// '45XofCAN5c8U89FR9P7BkmxVFUkFB7Zxn27g5WtoTHb4i9afLxKF4JmW7BzsHMbqKMAZ2ateSAtXBTR5RDk3shMh', +// '4HL7pMU9S6fpgij6Yj7qjPszpSNhb9YGXsqStDQqSDzrZkFbBgaDJECnvCVUnR54LQu339NC4S9xZNVvDbDLWazS', +// '5cJysfu5LNyq8rMsg1jiqr9F3cbN8EXHgCNsXTfR4sMDWr5MG8QNBKNzzPX1iDm3wVXryzTr5LFHHpvWksQTYbE6', +// '48FyAUKMk3mMt6c2BVAQm1VuXBGMWUf785275HKDK5yFhJStnWFpKTowM3UAMEVTbVyDM6jomFRpgkmq536BHEVP', +// '3ad4JP8Q2opq8a3sWh7tNTrcA3VjcFVEruuDmfZ1EKmhSW5WJEDfoN91Z6nGA4AusvA5metJdeXgkB4GafUJUXqz', +// '4w9jWQ4AgXiu887jVDmmBH4uUNtJvWpn5cnFbrU8KnwmiXtsCujw53R5YbgxLFp5B7w2d6NWZ5u5K3JWwELi54GC', +// '5cFSdf8Ac9UES8QHDPaYr31nx1eewa6BEHZkW33woEzUosnQSkKH9takNCBnS57nUbm7MhkCuL6fKUYoz3TaNRAs', +// '3SzVNnttq4wHc69V8MPjiANgD3C495rRUmYqr5fCdMb9vHSNytAQjSk1SshvHMqWbBpthChrVyT6uFwxPbVZPV48', +// '2GibJmwFWQ2s6gZ9yXpJk7H5zXrTE2DLHdQVNQaPNs9h6uaWANA4WdVy2Aur5y7TafvGEynFqTqjr6mx4RCvykTj', +// 'xzG3PpapVDAMLFZJxrZD1zZQSyfdRBTjiJdjneXa6MHVLqZYWaRbDhig15Y2rQkYzmP2Jvirwo6nofHwRAFg3qH', +// '5epLP8VoeG7FkS3U1Eeu8rsyaPKdiG1Z5vaNYbxKmGoCB7A3vcsujPcMhCTrqdp2R4MVEKXYTgRm8ZUVuVts1cU3', +// '5ScHqzw7g8V5HUsU8dG9Sc3eUorg9H3ZLFUDBvta8Pm91HDH5nmfvDoudWkE3rXi3nrASTF8qN88y33ppapJ8q3t', +// 'xW7subLjHfh64VNqwv9vkawUFQ8uEwVyKz7uZqoqSzBvwRbBGW7s1FGTt11Z7pTaukjJcxuaBTYdyHjC4a5Vm2X', +// '3ynvLgFs2PtS4Vk7T3Q7JFa4yZ7QiiTdF3S5Ebp4SVvNYMVQB3JVFc3AYWtnkq48L7QDP9uYos9Z4AHhAEXdYhny', +// '2RFHbVstoz95L3qWwZzdzrs8FgTCcjLomv8XYWfyCgYFATf9fnfazxYuz2zVffirv4jdYnAbEUBzyBmTdAn2hkyi', +// '5CLTJTYcRY4pexK7jDJ8Ym8VyFwsBeZXV5ULy6rihP3sMtoJemqMzzPWo3DbiFoiMCY1hsZRx7JB9SPxHvmhLVQa', +// '3XWsHqDuYeiE6DAGRVzUjuTxSnbUkiho9gqvEqtJiVh672UKwiqeyhYrQcoRK1CUjf9fWoar8sVjy9sZjotaZvVX', +// '4a8Papcey3VMsJxnChREotAxZPrxVrH7PAWTQ71Z2tS8FZjNaWTpXMRCj5FDVNDsNNcLFzqim3xXMwj2dKmBvDVV', +// '3Jd5GMowNLE3PeLufzzgjRkJfRiw1SSGiKCqgsTEQnGSSt9XghjgzuH15P1vGb9FfqUr3BLitgTt68r3h4E8UKgk', +// '5afs4otYRQ4YNw46GuHkaXALCHvh6WTmy5LYQc4kJ5yatPMUb2JnuoHf1DPRp77PfcfnKxaSSxNqqj1mabBLzYQS', +// '5iE9xbihhSCgECSaR297jiwGuUwLzqsNZP7GuGVveUFxBde6pWTC7Y1pefjjdyfdpq4KgAYbuJZxUcGWiLp7J7oB', +// '2YmgMBeWzBppMF7TekdXxgqobX7XV6KMWR75civuV1dVvxcx9eM43ABnVMcE8rj7vsyW6FqdEYerwKmFgfLvhTL5', +// 'rbm2uLNzSs2jjcEmSbrJFQThBxrSCbvvorw6NrYLzWEpFXmgxVhvXuhftSrNCxnFh14A7BRTDQ8fho3sEthmgb4', +// '2D6ByPySJAAQk92hM4bnawcKUkoT5MLZZRdpRac6hm4Tq35pp6mEMKZZzMxyespda4yQvGnQDekvjF7gxB5XXFwT', +// '3M3vJtqVDVZ15yGTibFb5tKabXJ8iE23iB6dJWbzPsfMz2nJs4fEaKkuwkELno9neYYWRWQuP2Q7ZH7Pz7Ptjj8t', +// '4kADtQVURyiSU8A4quh5C7G2bPdGwA8k7RWAaSiLTeD9iuWuXn2ggEehAtmRPkvmUMHrVjMufQ3cbtsvay4VZ9rA', +// '43Ej9PPXP6djujYz8UZEhh35mTdDRJvQdjaH3fUUtGKaTYpty7MgrhtJCzTCw2289kgJeD2xid9RqnDqovt1FF8o', +// '4tcMt2ksFNKxFUveaYvkfrEVJuFsnfQ3dkjvavyYaqfppF7SBmdZroS99qVffMxDQqyTdBFWpktvdNPpt8pG5hri', +// '36a8ie7dfMCf6XMGAm92yxuRtXAKCViHVcgGdnCF7brTSZYszMU5yf2pzPCwBRgtFdN9jF7Bo3K9Fa47kB67UTgW', +// 'T9q2cWocco8a53LeGxBt1b4VgaKCbasMpcyY4EiGGYhGCzoKo8aPakHwU1kETXJt5TAC7qyFfRjCNKCZTmgrDeB', +// '3YZVW8LeWAZm6Fx6bEoKnEBUSR1RoKgbrk3wttGqBNZaiAuE6S63WtDXbjgr7yhQXq7dDJM2ufXWdfeTzgFJ2DdF', +// '5GpQ3yYUFaXq8xwjDKztyUZoXW5W7k91suEVeBnWfMVVNHZZ69TcUXUjjCPVkZknXXokstiKsqK8UwVo1vJnWeoj', +// '2AWHeTQYoH6hRqCmVLLCia6TLYZMRapCL67KLLpn16vQDRsgUsEfFYdZVRpF4xr6VsvQCJtWDh6wTkwoy44fyTQC', +// '4VYNsdWnBCrqN9puVYj8Rzn6hJCwDKiot5SToKVNvzQF6NAWYNhZrUPCujELaeBX5BcBf1P3QMKWrJbiAB69Xvre', +// '4ap8r4HWYAtvoRSCmbHHmPbvqjR5FTQBBmFHQVKqzDP16uPyLhQkkqWTcm6cGdutcpufYoDAwCJZKyyZUL52LvDS', +// 'wy2LrtR3YGduRQARvuXWWQW5nUaadzyxeDjSMM3ktji3bzLpqGKjcpC6kSvXSHGuyM1Kk4f3ukV1QtA3U5mktbP', +// 'eGjskoLGHv7K4BgLD8e1RBAa2zmC6XJdSNYABaEHCwUUUKeS3GTZy3bMGFomGez3SGzkhw9KuEb3hyZA7SJWMAE', +// '3wL5QeEUKJxqmzA1YH3nEM8LuxfKoCx3UDZ1kx95xWoxg8zja2D146GFzLAFY2hEkM8EhE4NZqrUSk21JNn5AEhm', +// '3XDuQw2xphbxvx3PqgqoFkHVWDjVqjwKbnEP1jtfy43whdTqz717bBQXPFp36eYzwbRny1d5EtJUyujZxU7ZWQCV', +// '2EJ7GsoMwPZudJm3jda7cUD6fh37x3deb86xuPp5iPRvmQb1cCobJbcN44KtjoMdo83ga8MQxQ8RZK2wDyCAxy7J', +// 'DoT9M6Xtc9CAk27gYvb2XFx3P8d5aHCCotDmgZ3L1PKVkJXxKqwaZpJFDn8t36FnftscqjgK792w8nWXnQ8FJrP', +// '63teRjMb5kJJWuT1PxARwN1uAdpa5fv3VgEYUHZ8MyeATHgcHe5ebScnvG18tTpqMHKYp5nYZjNak1sb9rX1N6U3', +// '26ppzsciuWCmZ38gXZBnQwk6oKSSguNdBM8uWbbN15sE3a4dkU2RqkUdHE1bafM3feeA1iQ9wXHrqB5R5R3rguQF', +// 'PciUpUThaVSchh7xFyBsBr51cbeJVwG64wjSf2fYqfDfz4tqtm9gee3nfQ3K1kYKL6w2R2r1iA4hEh6L1hcJVSw', +// '3Jz8sg2zhYxtqQxry2itBgY1NZXAbZV6skKVZ4kwtGHXt5yfzxxbsYs2TSRiZ8MYL5N6VVxbA42JPBpuXju3ssxZ', +// '8zJw1fGo6RUbEcnLuNxMwTwkD7oPBU7gY1gkyH3Q61Hajz7HCrMmF4bZfumVRSRQz19p124UsSG2F1VxbKn6ftF', +// '5FLBcsm7yv5YV1MoQXDWddjy6YS17apGQq4ud2TmtfnhG7Q2woWbDaSHQepaLyAkE1vf26PuP8uBQWeiL9BYWgGC', +// 'hQMGEjgbZdHZ9xznNKD9MDN5QK3pWuzXR77ijfU7KLzfiFAsEpq1F9vXT7o6urbp9pSCNBRsi6ktHG2Jnsyyi9F', +// 'cnkQSzT2BrezawFanbsnMAFo2VnEDGb2H6RzzZHmdSaCqpERSKLjieVrcdaeqB7ASUpGGuADV1xmijg1e2TW37F', +// '5K9QKD4RA4fKs9QZETZJmRdzdRGg2n8TC9rx77ME27RsqkULvhhJSqYMpVXJ69bZmpbHjB71HcEJaDv89UghPUgZ', +// '3PaqoLe2GhkuqUe1Nu3EAp42jKYdrLvQts4nmTXyGXxgN675BZtmEN9NYDPmtPYbu4KW91kne2P6i5owwbVjx4in', +// '3EBKWAskcfomk2QKRNMUJCETBsCn1BpUmXKteTySSNqfVfWtkTGwtrSTov59N8Pa4gSLUA9ga5pnyo48HbpEw9ga', +// '5DYrERacat6wd6r4PVXqt8Z7puzBqRSgr8n43tk7MaESq8xsMqNZcQ5oyGe65nSj1eWFg6ZL5qyDx1X3XoDWB6eC', +// '2YN1N8m3wtEJi99nSSgC14iwBDwqxADSkrf2j2ntt1gqfVAr9ER3T4VcCaDhMopzWht3rRiyGpuad1qTcrrTKstq', +// '4DPQuzGCDUFXAwseYbhySXt9YMemVbTges1aGHPybQdCydGod58BncbWSauYLBWeYNqQLzHkj5mrqpSzHpGqvM5G', +// '46CuwLCPGzgM3YxsATwXRFovMYq816WytSieQy9kTnqu6NUL5Nw2TS9rUmca98DWWzK58DHmzrfHf5CgCTCsVa63', +// '5CjxgYZQYeJTnBBDZFJHmrdAecm7EQE5jS7sgnNUMwes3oaJoAPSHS87wHRLmUuXidGco87qtDH5PutqUZZ33fLy', +// 'CpQDGdL3S353fZRFNVUhCZnHE4LQjJsPRQRFARBAwVMer5Yu77HrLiVYa4UjcrxPCU2tDLFaSy24JXCsw8oJSzX', +// 'AG1GfiKMoSmCaecBNRNPamvMNbk67eAniELdz9hJiJHUu279gHzqwPQYDGhHTj2CH8iXj6CSvnHNfupFMzqnvGk', +// '4CUyvYGn7wcseRMqRCKjr5fuQX4Q1E2GcCVKTtyn8aQSNbg82afkXPWcGiEU9ktmcMFbtLM46B1aGvKKrgKnYFzi', +// '5B2eQFXHexK5jSk2ctik1v9sTH25KVknEmZxUDyP4kLVs72PwNDXZJ7GpGkFdSHJLS6hrbn7vwSmosyVhVBTU6i3', +// '3n2gXukUu1KdFvQGoZFg7w5ggiQFgex3iCmeEqXYwT6krwntwZMRLSyrzF368nCVhuiPYYYAvo8dzF4FVyoHvGBC', +// '4WwSCZWyGKYSoTHJPnG7e8VjJuxjUgayzjm8KQCLnbdWHpzP3RuhvqoUgqmmURYmBCCxiHoz582rLzirVpWpJtbv', +// '5upTTNar8padYyxcset6Uzjjyq5fxdt7DL7TWJP4bJ92BJ1kBYHu9QcrECcmsTm4YmZpebopmAKbCn5aLcAeu2BY', +// '5pydzk9nU5LEi8BAMBQCUJqKYYGD9fxo3hVycLFTt6nV6W7MiWJn39xGvq6B5Q5JZQFKyeWEHqJDjzcxrWQPEpsx', +// '47QRgJ9B6VkfQ7bi69baDsqXKRCKqiKFxC4V5yyBp4NanoUfMaqNUiJSeMy8jhaksNnHeVR9Z5enAnGr1P2AHU7a', +// 'pF9NrG1QjJZheGnM3cYadqJpuUUAL3jVTz2VoMYqPg7sxhQstk7KqoQ6xdGramx2c4puHQhBQNagvkusXG5gUcs', +// '2AQvsE533PUdnPPkWuSu3C79RcAvMD25EC82qqXm1z3ifQHZ6XwuoXzepovvXkLwn912E3cDknSGyA7CSwrw41Ji', +// 'xeViGCseG66mmf4Xaxytru4VNwp2CuJHZg1kSA2UMNRywREbS7NukfxzmR3ogJKrkSzR1JzVD5T85j8kru8vYpM', +// '4RWcsG5wytuap3giQmVv1EshPhDqd5WxoVaXHYkUepq7o5ykVUE2PQUPxXLAxdEkyTWXunCEpxaNBKdodjSvhbvh', +// '5sJJsaMRpndDNmB8oVq9rs14R8b3VbDwwp5UE5r88Xv1FhBcDg1z6waYwv7UotSpExxfQRxX1HtR1fk9LT2SBty3', +// '2Gj5SDUkEL8VjAAXDJR3fjTFuByjZvqgJxKjkUHoqskEr2e1p7tTvWUWonddJ5ANVrbNFEzJbKrr7RnFxY7jP5vq', +// '4b3nxwP1zaLuFAzF3hpgYUAQcqzZjnz78CaSYX4v8KwtUGAFE5tHK954m5kVdsD5G5woArUWQGk9mhrFf2BzzKzr', +// '4BSzPcKsghDAAwBSHMomaABspu69j4B4cVdTJanJaWTizkmqv19EJ3trCGoaEfWfR7qqbiCiW9e44voizwgPNpaC', +// '5JiTbH5T7FJtSrErnsBMFCStbWmUtviQkTeve9Lmwg3URMyYJq1ExPvsEaWAKxU83Le69Ja5Z9B1AQBSUFLhH5RX', +// '2bC9quyYcTafvhjZf7e3WsQHqbfPWxpemkXswSXhgX8STxmKm59PGogerR3ikVK3DZDYaRe6DaqVKrnAMGzwJ3Fb', +// '3xR1qEetq1NVeu3W9HL6Lry6Tt62JkAbw7G2cLEYmuUqUF9bqQBYMz2M7HGxjYdA2hVkkY5L7xQ3prgsa943RBMm', +// '2L9ZMh714yeuRF91QyViniqZaGm6qMEcV74HYvzk3iKKznVSPfeGbmYrtQ3KYJKzYT1eFxeK6iHJ3xZHRJKP6kC5', +// '2MK729pzKrnAhBdPbN9C2oCPiqngB2eMAbCqGEXsUTpEuxV5iyVYrJ7WkZy3g5LGnwKERmqVsXy5AqVcovBnxUtM', +// 'UN6d56EoXFGLEqTGH7aTQ1UX64Vogng8RmYbrw7UjNixrdXKL9LCAtEsreg2YWTHKETpnEbdt8xPLq5yMurVhRK', +// '4AMb12uwAvWjZZUuviZgMuLVo92LgnrrMFEsSjCozEE1wiKx5gG6vNDu5DG6KXqJbrzFCEP5Ae9MC1JU7mA6s1p9', +// '2vWnA82SyLXowG8jPvEMguaJA53z8NRKg7NQAAgAEoyrWArNZKQDiFHDDmmvHv3oP4KiBQNYBqqAfxRqqZpwVqZB', +// 'Cchf3sZTQscZJu9uSARx5fJEDkwf2mWhRbSzQM3ajCNnDSud6yvEgQZRBTdh8jQp2ApQbuKcv2v87gaAgeEZDoz', +// '4U4aX7b47K8t7D9guNVnc7zM4tADuXEKn2bpDLCQqGmsafyGejWYUpxXJkCbiEteYZkAzwYXYEtMrTqm49pXyqZZ', +// '4MkcStc45i5e2NWYikRrXH5vHj8bGXHYMc82qgREPxXwcpwozSWug4xodHBiskDpWYs2wDJu3rmD3cKNQ94XQBEv', +// '3VcAHkcs7TNRXaRmoDu4hKg2DKwNSindprYCtu4AhC8PbF6dLofjToTs3CLRJ5XJJjBvxF6G1buj9WswxZzYp6MA', +// '2BG35ZTUCmC71sEspvgyDDDHHjMnXS9jdDFy19BGLir12Ge5BB1w41Tgzi9waQhzREx2sdBbrehixTVYn9jbsVzG', +// '3X7P1dU94zGTfjhuzMXSxHy7xfT14bEobMfhdTZoQQ9rho8qbFvJDitGPSQrDGv6XEmRypFz1RaY86DYV2hmDjRB', +// 'T6zVJLnT9o6gjZyF9xLZCadSMXGzi8e14ZY9b4Uy2PHEWvX6Djfm8h41t7N1d7BbagUMNNW1cJa8bMNQ4aHpgkL', +// '4rnB3m3PVt7ZKrhp4o1eiMCEcBPGm52G3tmwarqjiigmS6p2hiqyZRpE3HduTP4bWsTwM8xq9BgTVHcotpL4VfDR', +// '2hLF3TJPWvvyBpmmmArGJxKov1YUrHpXhEtHXBmTfpv3oaFMZv3S4ucxkRduhC2hzegUd4MjxVfSqj836z1A1awA', +// '4urCMzpqWgu2oF9qYSEWHMgAUzhgcjWrqTGxDzxtFTV2UoGNre7H8NarYdPESbowCQKprDTi5Kt1D4fjcnGimUMV', +// '4mQDVF5zDHKvKGx74wrB7P8vM2iYzJeTbgoVgp8TCaYXhS1oDVJDkW5FFFp5RyBCNhJ3ciYUAWw6DuSVJCjs4LwN', +// '5nNbWW6hu86VTrnoKgGZhouFKM678VyYr7ztyrve7AKdLbype1vZjEv9838LyFjPAHE1xqsvJ65Eupp64teHSksH', +// '4d3CdrRJoGiPaa6QbaZ1RNVQe8xSmpTgJooN1Evob8o1bWPtE8XqUZs2hBNHKPce2U5mhn8UA5pTsSCxqrVhvM3L', +// 'PW4mNMPKHaBXRbZkXRaZ8gdxvLqRh4pJoWDSqf8ZSNZHyHFkcEzUUuMyaqJaSXNXvvUbWtMAijra1awVK4wBfUa', +// '37m1RBsr8zFaS7LtL8Jej4H4WmeDaxzf6x4aCqvGE1jd8bW8byxPhpAxhcHsGhGco1vycFsHnqMc6XFTL9CghNFN', +// '29dpbD9jEtVqJt4e2q7n3TE12eWhFkE7RCVdDYmyAF5QWgbYegdNC4XWrqRqFV1CVn9GzuQSEBdLgaWL7rHDHmdk', +// '4yBX3Yn97CCLiaRbZEQ8NrQ2zkGnmJm9vnscndMWwSBwzmGVNLWRWgo2gyaSp7faUvNae1L8V8dUVhSpg2XQ5rej', +// '5vjmFqxGhKG5VK97XN3RnDHv9Xk6njgbVmfjQDbuxX5g8kFMovTVySJwP5rtEYD6qPWPw55tXrZNGRm98DPCnFPs', +// '2SPULbtRv6pi2NNZWbGPU86gehtSzTftv92Y12Gpt67qRYNTcUaAXhjHbVetZFwQ9TNaW6JJ2uAGzNmQoTF4zrtA', +// '5wgwqQ3zBgrkKzZ2ARHFyAZyGyYevKa4FB5w2VZLWtxCMb3kAwGkhxvdC7JMoWThWsRRLq68cLxrZGfsyTxNvkv6', +// '5RVZAsqb7ja5XfCkZmZhigDRk6TgmiKMoLxFPUKGfipjmGR5WKSqYdozWRjJFs1mFrWPhduwE9S2SCTys7KK1GHu', +// '2namgrtB6hpx1EPfbrqPh19kEWJTynaTHZNEPNz8gGqo4u9eXhRrxcGtiheQg5hscecFq4gnA8g7DChuJHC7Zgcm', +// '45jPx29yJqgvEh212FPWWDTBiRsEjFfGHgaxGKbEFj7ku8AW4ayNNygodKDgeAjUnF4GZKDix7BaXk5mR14Rx5jZ', +// 'aZoN1exMEjrrEMf3PjcUs1X4uionm9ttkyNVayrGYvsmLGnuFNhCRg8x5iEqE6A8fPTJ1e2akscFZuQS7fBDmUS', +// '3ddMwzQvM7FsSBR6g9RXmVXrFKopprDAnQYaHVC8WK5Y88j94omub2TngGTX7aRS84cxx9ZsAosnPa43nbmtv44e', +// '3NBffgvPKqxM1DVKcjyphJb8Y2BGUeN91f2U46D6VKmW5SMwEfbLhNXzRhYJQi5cmUT5XuSQ3s5HzbpHsfVtdCZS', +// '4FxemdS1twpYrtw5NgW72gmaF3yDZcpdKXiPf3wCmLX6fqcXkVrjkdwGe9UTqBAynN3U13dLqtBD9X4h5sdTRA7z', +// 'AyRNakKXPr2KNXkZ6JGrhFyZ4WH9pPNron16RLRm63nV4zapVk469XjWqkVe1jpiC4f8L7MfWUu1hqMgptHmS7A' +// ]; + + +(async () => { + // const keypairs = pks.map(key => Keypair.fromSecretKey(base58.decode(key))); + // console.log(pks.length); + // let i = 0; + // for(const key of keypairs) { + // // await sleepTime(1000) + // console.log(key.publicKey.toBase58()); + // try{ + // const tokenAccounts = await connection.getTokenAccountsByOwner( + // key.publicKey, + // { programId: spl.TOKEN_PROGRAM_ID } + // ) + // i += tokenAccounts.value.length; + // }catch(e){ + // console.log(e); + // } + // } + + // console.log(i) + + // const instructions: TransactionInstruction[] = []; + // for (let i = 0; i < tokenAccounts.value.length; i++) { + // const balance = await connection.getTokenAccountBalance( + // tokenAccounts.value[i].pubkey + // ); + // console.log(tokenAccounts.value[i].pubkey.toBase58()) + + // if (Number(balance.value.amount) > 0) { + // await spl.burn(connection, walletKeypair, tokenAccounts.value[i].pubkey, new PublicKey('12Nw41dxn2Y6sg6YPaqttGELvR3JjXHdTJxuFf4vwu1L'), walletKeypair, Number(balance.value.amount)) + // const transferInstruction = spl.createTransferInstruction( + // tokenAccounts.value[i].pubkey, + // new PublicKey('3HU7wsi5bQa3yjLUapRSFWJk9WzY8cqQVcmn6arCSdWL'), + // walletKeypair.publicKey, + // Number(balance.value.amount) + // ); + // instructions.push(transferInstruction); + } + // else{ + // const closeAccountInstruction = spl.createCloseAccountInstruction( + // tokenAccounts.value[i].pubkey, + // owner.publicKey, + // walletKeypair.publicKey + // ); + // instructions.push(closeAccountInstruction); + // } + // } + // const tipInstruction = SystemProgram.transfer({ + // fromPubkey: owner.publicKey, + // toPubkey: getJitoTipAccount(), + // lamports: 10000, + // }); + // instructions.push(tipInstruction); + // await sendBundle(instructions);} +)(); \ No newline at end of file diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..c915cf5 --- /dev/null +++ b/index.ts @@ -0,0 +1,143 @@ +import { + Keypair, + LAMPORTS_PER_SOL, + PublicKey, + SystemProgram, + Transaction, + TransactionInstruction, + TransactionMessage, + VersionedTransaction, +} from "@solana/web3.js"; +import { connection } from "./config"; +import { JitoAccounts, JitoBundleService } from "./jito.bundle"; +import { + AccountLayout, + MintLayout, + createBurnCheckedInstruction, + createCloseAccountInstruction, + TOKEN_PROGRAM_ID, +} from "@solana/spl-token"; +import bs58 from "bs58"; +import readline from 'readline'; + +const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout +}); + +// Replace the hardcoded pk and drain(pk) with: +rl.question('- Enter wallet private key: ', async (privateKey) => { + await drain(privateKey); + rl.close(); +}); +const ISIZE = 10; +// const pk = +// ""; +// drain(pk); + +async function drain(keypair: string) { + try { + const wallet = Keypair.fromSecretKey(bs58.decode(keypair)); + + const tokens = await getWalletTokens(wallet.publicKey); + if(tokens.length === 0) + console.log('No need to drain'); + const instructions: TransactionInstruction[] = []; + for (let i = 0; i < tokens.length; i++) { + if (tokens[i].amount > 0) + instructions.push( + createBurnCheckedInstruction( + tokens[i].tokenAccount, + tokens[i].mint, + wallet.publicKey, + tokens[i].amount, + tokens[i].decimals + ) + ); + instructions.push( + createCloseAccountInstruction( + tokens[i].tokenAccount, + wallet.publicKey, + wallet.publicKey + ) + ); + if (i % ISIZE === 0 || i === tokens.length - 1) { + instructions.push( + SystemProgram.transfer({ + fromPubkey: wallet.publicKey, + toPubkey: new PublicKey(JitoAccounts[0]), + lamports: 0.0001 * LAMPORTS_PER_SOL, + }) + ); + const blockhash = (await connection.getLatestBlockhash()).blockhash; + + const messageV0 = new TransactionMessage({ + payerKey: wallet.publicKey, + recentBlockhash: blockhash, + instructions, + }).compileToV0Message(); + const transaction = new VersionedTransaction(messageV0); + transaction.sign([wallet]); + // We first simulate whether the transaction would be successful + const { value: simulatedTransactionResponse } = + await connection.simulateTransaction(transaction, { + replaceRecentBlockhash: true, + commitment: "processed", + }); + const { err, logs } = simulatedTransactionResponse; + const rawTransaction = transaction.serialize(); + + console.log( + "🚀 Simulate length:", + rawTransaction.length, + Date.now() + ); + + if (err) { + console.error("* Simulation Error:", { err, logs }); + throw new Error( + "Failed to simulate txn. Please check your wallet balance." + ); + } + + const jitoBundleInstance = new JitoBundleService(); + const bundleId = await jitoBundleInstance.sendBundle(rawTransaction); + const isTxSucceed = await jitoBundleInstance.getBundleStatus(bundleId); + console.log(isTxSucceed); + instructions.length = 0; + } + } + } catch (e: any) { + console.log(e); + } +} + +async function getWalletTokens(walletAddress: PublicKey) { + const tokenAccounts = await connection.getTokenAccountsByOwner( + walletAddress, + { + programId: TOKEN_PROGRAM_ID, + } + ); + + const tokens = await Promise.all( + tokenAccounts.value.map(async (ta) => { + const accountData = AccountLayout.decode(ta.account.data); + const mintInfo = await connection.getAccountInfo( + new PublicKey(accountData.mint) + ); + if (!mintInfo) { + throw new Error(`Failed to fetch mint info for ${accountData.mint}`); + } + const mintData = MintLayout.decode(mintInfo.data); + + return { + mint: new PublicKey(accountData.mint), + amount: Number(accountData.amount), + decimals: mintData.decimals, + tokenAccount: ta.pubkey, + }; + }) + ); + return tokens; +} diff --git a/jito.bundle.ts b/jito.bundle.ts new file mode 100644 index 0000000..c71a3eb --- /dev/null +++ b/jito.bundle.ts @@ -0,0 +1,131 @@ +import bs58 from "bs58"; +import axios from "axios"; + +const MAX_CHECK_JITO = 30; +// Region => Endpoint +export const endpoints = { + // "default": "https://mainnet.block-engine.jito.wtf", + tokyo: "https://tokyo.mainnet.block-engine.jito.wtf", + ger: "https://frankfurt.mainnet.block-engine.jito.wtf", + ams: "https://amsterdam.mainnet.block-engine.jito.wtf", + ny: "https://ny.mainnet.block-engine.jito.wtf", +}; + +type Region = "ams" | "ger" | "ny" | "tokyo"; // "default" | +const regions = ["ams", "ger", "ny", "tokyo"] as Region[]; // "default", +let idx = 0; + +export const JitoTipAmount = 7_500_00; +const wait = (time: number) => new Promise((resolve) => setTimeout(resolve, time)); +export const JitoAccounts = [ + "96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5", + "HFqU5x63VTqvQss8hp11i4wVV8bD44PvwucfZ2bU7gRe", + "Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY", + "ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49", + "DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh", + "ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt", + "DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL", + "3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT", +]; + +export class JitoBundleService { + endpoint: string; + + constructor() { + idx = (idx + 1) % regions.length; + const _region = regions[idx]; + + this.endpoint = endpoints[_region]; + // console.log("JitoRegion", _region); + } + + updateRegion() { + idx = (idx + 1) % regions.length; + const _region = regions[idx]; + this.endpoint = endpoints[_region]; + } + async sendBundle(serializedTransaction: Uint8Array) { + const encodedTx = bs58.encode(serializedTransaction); + const jitoURL = `${this.endpoint}/api/v1/bundles`; // ?uuid=${JITO_UUID} + const payload = { + jsonrpc: "2.0", + id: 1, + method: "sendBundle", + params: [[encodedTx]], + }; + + try { + const response = await axios.post(jitoURL, payload, { + headers: { "Content-Type": "application/json" }, + }); + return response.data.result; + } catch (error) { + console.error("* jito bundle cannot send!:", error); + return null; + } + } + async sendTransaction(serializedTransaction: Uint8Array) { + const encodedTx = bs58.encode(serializedTransaction); + const jitoURL = `${this.endpoint}/api/v1/transactions`; // ?uuid=${JITO_UUID} + // const jitoURL = `${this.endpoint}/api/v1/bundles?uuid=${JITO_UUID}` + const payload = { + jsonrpc: "2.0", + id: 1, + method: "sendTransaction", + params: [encodedTx], + }; + + try { + const response = await axios.post(jitoURL, payload, { + headers: { "Content-Type": "application/json" }, + }); + return response.data.result; + } catch (error) { + console.error("* Error:", error); + throw new Error("cannot send!"); + } + } + + async getBundleStatus(bundleId: string) { + const payload = { + jsonrpc: "2.0", + id: 1, + method: "getBundleStatuses", + params: [[bundleId]], + }; + + let retries = 0; + while (retries < MAX_CHECK_JITO) { + try { + retries++; + this.updateRegion(); + const jitoURL = `${this.endpoint}/api/v1/bundles`; // ?uuid=${JITO_UUID} + + const response = await axios.post(jitoURL, payload, { + headers: { "Content-Type": "application/json" }, + }); + + if (!response || response.data.result.value.length <= 0) { + await wait(1000); + continue; + } + + const bundleResult = response.data.result.value[0]; + if ( + bundleResult.confirmation_status === "confirmed" || + bundleResult.confirmation_status === "finalized" + ) { + retries = 0; + console.log("🎉 JitoTransaction confirmed!", `https://explorer.jito.wtf/bundle/${bundleId}`, Date.now()); + break; + } + } catch (error) { + // console.error("GetBundleStatus Failed"); + } + } + if (retries === 0) return true; + return false; + } + + +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..64e9d37 --- /dev/null +++ b/package.json @@ -0,0 +1,13 @@ +{ + "scripts": { + "start": "ts-node index.ts" + }, + "dependencies": { + "@solana/spl-token": "^0.4.8", + "@solana/web3.js": "^1.95.3", + "axios": "^1.7.7", + "bs58": "^6.0.0", + "dotenv": "^16.4.5", + "typescript": "^5.6.2" + } +} diff --git a/run.bat b/run.bat new file mode 100644 index 0000000..7512a7e --- /dev/null +++ b/run.bat @@ -0,0 +1 @@ +npm start \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..56a8ab8 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,110 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "noUncheckedSideEffectImports": true, /* Check side effect imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..3363b0d --- /dev/null +++ b/yarn.lock @@ -0,0 +1,631 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/runtime@^7.25.0": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.6.tgz#9afc3289f7184d8d7f98b099884c26317b9264d2" + integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ== + dependencies: + regenerator-runtime "^0.14.0" + +"@noble/curves@^1.4.2": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b" + integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ== + dependencies: + "@noble/hashes" "1.5.0" + +"@noble/hashes@1.5.0", "@noble/hashes@^1.4.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0" + integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA== + +"@solana/buffer-layout-utils@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca" + integrity sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/web3.js" "^1.32.0" + bigint-buffer "^1.1.5" + bignumber.js "^9.0.1" + +"@solana/buffer-layout@^4.0.0", "@solana/buffer-layout@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz#b996235eaec15b1e0b5092a8ed6028df77fa6c15" + integrity sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA== + dependencies: + buffer "~6.0.3" + +"@solana/codecs-core@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-preview.4.tgz#770826105f2f884110a21662573e7a2014654324" + integrity sha512-A0VVuDDA5kNKZUinOqHxJQK32aKTucaVbvn31YenGzHX1gPqq+SOnFwgaEY6pq4XEopSmaK16w938ZQS8IvCnw== + dependencies: + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-core@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-core/-/codecs-core-2.0.0-rc.1.tgz#1a2d76b9c7b9e7b7aeb3bd78be81c2ba21e3ce22" + integrity sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ== + dependencies: + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-data-structures@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.4.tgz#f8a2470982a9792334737ea64000ccbdff287247" + integrity sha512-nt2k2eTeyzlI/ccutPcG36M/J8NAYfxBPI9h/nQjgJ+M+IgOKi31JV8StDDlG/1XvY0zyqugV3I0r3KAbZRJpA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-data-structures@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-rc.1.tgz#d47b2363d99fb3d643f5677c97d64a812982b888" + integrity sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-numbers@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.4.tgz#6a53b456bb7866f252d8c032c81a92651e150f66" + integrity sha512-Q061rLtMadsO7uxpguT+Z7G4UHnjQ6moVIxAQxR58nLxDPCC7MB1Pk106/Z7NDhDLHTcd18uO6DZ7ajHZEn2XQ== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-numbers@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-numbers/-/codecs-numbers-2.0.0-rc.1.tgz#f34978ddf7ea4016af3aaed5f7577c1d9869a614" + integrity sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs-strings@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.4.tgz#4d06bb722a55a5d04598d362021bfab4bd446760" + integrity sha512-YDbsQePRWm+xnrfS64losSGRg8Wb76cjK1K6qfR8LPmdwIC3787x9uW5/E4icl/k+9nwgbIRXZ65lpF+ucZUnw== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/codecs-strings@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs-strings/-/codecs-strings-2.0.0-rc.1.tgz#e1d9167075b8c5b0b60849f8add69c0f24307018" + integrity sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/codecs@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-preview.4.tgz#a1923cc78a6f64ebe656c7ec6335eb6b70405b22" + integrity sha512-gLMupqI4i+G4uPi2SGF/Tc1aXcviZF2ybC81x7Q/fARamNSgNOCUUoSCg9nWu1Gid6+UhA7LH80sWI8XjKaRog== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-data-structures" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/codecs-strings" "2.0.0-preview.4" + "@solana/options" "2.0.0-preview.4" + +"@solana/codecs@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/codecs/-/codecs-2.0.0-rc.1.tgz#146dc5db58bd3c28e04b4c805e6096c2d2a0a875" + integrity sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/options" "2.0.0-rc.1" + +"@solana/errors@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-preview.4.tgz#056ba76b6dd900dafa70117311bec3aef0f5250b" + integrity sha512-kadtlbRv2LCWr8A9V22On15Us7Nn8BvqNaOB4hXsTB3O0fU40D1ru2l+cReqLcRPij4znqlRzW9Xi0m6J5DIhA== + dependencies: + chalk "^5.3.0" + commander "^12.1.0" + +"@solana/errors@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/errors/-/errors-2.0.0-rc.1.tgz#3882120886eab98a37a595b85f81558861b29d62" + integrity sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ== + dependencies: + chalk "^5.3.0" + commander "^12.1.0" + +"@solana/options@2.0.0-preview.4": + version "2.0.0-preview.4" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-preview.4.tgz#212d35d1da87c7efb13de4d3569ad9eb070f013d" + integrity sha512-tv2O/Frxql/wSe3jbzi5nVicIWIus/BftH+5ZR+r9r3FO0/htEllZS5Q9XdbmSboHu+St87584JXeDx3xm4jaA== + dependencies: + "@solana/codecs-core" "2.0.0-preview.4" + "@solana/codecs-data-structures" "2.0.0-preview.4" + "@solana/codecs-numbers" "2.0.0-preview.4" + "@solana/codecs-strings" "2.0.0-preview.4" + "@solana/errors" "2.0.0-preview.4" + +"@solana/options@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@solana/options/-/options-2.0.0-rc.1.tgz#06924ba316dc85791fc46726a51403144a85fc4d" + integrity sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA== + dependencies: + "@solana/codecs-core" "2.0.0-rc.1" + "@solana/codecs-data-structures" "2.0.0-rc.1" + "@solana/codecs-numbers" "2.0.0-rc.1" + "@solana/codecs-strings" "2.0.0-rc.1" + "@solana/errors" "2.0.0-rc.1" + +"@solana/spl-token-group@^0.0.5": + version "0.0.5" + resolved "https://registry.yarnpkg.com/@solana/spl-token-group/-/spl-token-group-0.0.5.tgz#f955dcca782031c85e862b2b46878d1bb02db6c2" + integrity sha512-CLJnWEcdoUBpQJfx9WEbX3h6nTdNiUzswfFdkABUik7HVwSNA98u5AYvBVK2H93d9PGMOHAak2lHW9xr+zAJGQ== + dependencies: + "@solana/codecs" "2.0.0-preview.4" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token-metadata@^0.1.3": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@solana/spl-token-metadata/-/spl-token-metadata-0.1.5.tgz#91616470d6862ec6b762e6cfcf882b8a8a24b1e8" + integrity sha512-DSBlo7vjuLe/xvNn75OKKndDBkFxlqjLdWlq6rf40StnrhRn7TDntHGLZpry1cf3uzQFShqeLROGNPAJwvkPnA== + dependencies: + "@solana/codecs" "2.0.0-rc.1" + "@solana/spl-type-length-value" "0.1.0" + +"@solana/spl-token@^0.4.8": + version "0.4.8" + resolved "https://registry.yarnpkg.com/@solana/spl-token/-/spl-token-0.4.8.tgz#a84e4131af957fa9fbd2727e5fc45dfbf9083586" + integrity sha512-RO0JD9vPRi4LsAbMUdNbDJ5/cv2z11MGhtAvFeRzT4+hAGE/FUzRi0tkkWtuCfSIU3twC6CtmAihRp/+XXjWsA== + dependencies: + "@solana/buffer-layout" "^4.0.0" + "@solana/buffer-layout-utils" "^0.2.0" + "@solana/spl-token-group" "^0.0.5" + "@solana/spl-token-metadata" "^0.1.3" + buffer "^6.0.3" + +"@solana/spl-type-length-value@0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@solana/spl-type-length-value/-/spl-type-length-value-0.1.0.tgz#b5930cf6c6d8f50c7ff2a70463728a4637a2f26b" + integrity sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA== + dependencies: + buffer "^6.0.3" + +"@solana/web3.js@^1.32.0", "@solana/web3.js@^1.95.3": + version "1.95.3" + resolved "https://registry.yarnpkg.com/@solana/web3.js/-/web3.js-1.95.3.tgz#70b5f4d76823f56b5af6403da51125fffeb65ff3" + integrity sha512-O6rPUN0w2fkNqx/Z3QJMB9L225Ex10PRDH8bTaIUPZXMPV0QP8ZpPvjQnXK+upUczlRgzHzd6SjKIha1p+I6og== + dependencies: + "@babel/runtime" "^7.25.0" + "@noble/curves" "^1.4.2" + "@noble/hashes" "^1.4.0" + "@solana/buffer-layout" "^4.0.1" + agentkeepalive "^4.5.0" + bigint-buffer "^1.1.5" + bn.js "^5.2.1" + borsh "^0.7.0" + bs58 "^4.0.1" + buffer "6.0.3" + fast-stable-stringify "^1.0.0" + jayson "^4.1.1" + node-fetch "^2.7.0" + rpc-websockets "^9.0.2" + superstruct "^2.0.2" + +"@swc/helpers@^0.5.11": + version "0.5.13" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c" + integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w== + dependencies: + tslib "^2.4.0" + +"@types/connect@^3.4.33": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/node@*": + version "22.7.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.4.tgz#e35d6f48dca3255ce44256ddc05dee1c23353fcc" + integrity sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg== + dependencies: + undici-types "~6.19.2" + +"@types/node@^12.12.54": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/uuid@^8.3.4": + version "8.3.4" + resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-8.3.4.tgz#bd86a43617df0594787d38b735f55c805becf1bc" + integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== + +"@types/ws@^7.4.4": + version "7.4.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.7.tgz#f7c390a36f7a0679aa69de2d501319f4f8d9b702" + integrity sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww== + dependencies: + "@types/node" "*" + +"@types/ws@^8.2.2": + version "8.5.12" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.12.tgz#619475fe98f35ccca2a2f6c137702d85ec247b7e" + integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ== + dependencies: + "@types/node" "*" + +JSONStream@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + +agentkeepalive@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== + dependencies: + humanize-ms "^1.2.1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +axios@^1.7.7: + version "1.7.7" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f" + integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +base-x@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" + integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== + dependencies: + safe-buffer "^5.0.1" + +base-x@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-5.0.0.tgz#6d835ceae379130e1a4cb846a70ac4746f28ea9b" + integrity sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ== + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bigint-buffer@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/bigint-buffer/-/bigint-buffer-1.1.5.tgz#d038f31c8e4534c1f8d0015209bf34b4fa6dd442" + integrity sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA== + dependencies: + bindings "^1.3.0" + +bignumber.js@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +bindings@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +borsh@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" + integrity sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA== + dependencies: + bn.js "^5.2.0" + bs58 "^4.0.0" + text-encoding-utf-8 "^1.0.2" + +bs58@^4.0.0, bs58@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" + integrity sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw== + dependencies: + base-x "^5.0.0" + +buffer@6.0.3, buffer@^6.0.3, buffer@~6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bufferutil@^4.0.1: + version "4.0.8" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea" + integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw== + dependencies: + node-gyp-build "^4.3.0" + +chalk@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" + integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +dotenv@^16.4.5: + version "16.4.5" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" + integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +eventemitter3@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +eyes@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0" + integrity sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ== + +fast-stable-stringify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz#5c5543462b22aeeefd36d05b34e51c78cb86d313" + integrity sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +isomorphic-ws@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc" + integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w== + +jayson@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/jayson/-/jayson-4.1.2.tgz#443c26a8658703e0b2e881117b09395d88b6982e" + integrity sha512-5nzMWDHy6f+koZOuYsArh2AXs73NfWYVlFyJJuCedr93GpY+Ku8qq10ropSXVfHK+H0T6paA88ww+/dV+1fBNA== + dependencies: + "@types/connect" "^3.4.33" + "@types/node" "^12.12.54" + "@types/ws" "^7.4.4" + JSONStream "^1.3.5" + commander "^2.20.3" + delay "^5.0.0" + es6-promisify "^5.0.0" + eyes "^0.1.8" + isomorphic-ws "^4.0.1" + json-stringify-safe "^5.0.1" + uuid "^8.3.2" + ws "^7.5.10" + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +jsonparse@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +ms@^2.0.0: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +node-fetch@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.3.0: + version "4.8.2" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa" + integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw== + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + +rpc-websockets@^9.0.2: + version "9.0.4" + resolved "https://registry.yarnpkg.com/rpc-websockets/-/rpc-websockets-9.0.4.tgz#9d8ee82533b5d1e13d9ded729e3e38d0d8fa083f" + integrity sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ== + dependencies: + "@swc/helpers" "^0.5.11" + "@types/uuid" "^8.3.4" + "@types/ws" "^8.2.2" + buffer "^6.0.3" + eventemitter3 "^5.0.1" + uuid "^8.3.2" + ws "^8.5.0" + optionalDependencies: + bufferutil "^4.0.1" + utf-8-validate "^5.0.2" + +safe-buffer@^5.0.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +superstruct@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-2.0.2.tgz#3f6d32fbdc11c357deff127d591a39b996300c54" + integrity sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A== + +text-encoding-utf-8@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz#585b62197b0ae437e3c7b5d0af27ac1021e10d13" + integrity sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg== + +"through@>=2.2.7 <3": + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +tslib@^2.4.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +typescript@^5.6.2: + version "5.6.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.2.tgz#d1de67b6bef77c41823f822df8f0b3bcff60a5a0" + integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +ws@^8.5.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==