├── .env.example ├── .github ├── bot-token.png ├── discord-bot-permissions.png ├── discord-scope.png ├── heroku-scheduler.png └── workflows │ └── run.yml.example ├── .gitignore ├── README.md ├── app.json ├── checkSales.ts ├── package.json ├── tsconfig.json └── yarn.lock /.env.example: -------------------------------------------------------------------------------- 1 | CONTRACT_ADDRESS=0x196c4C7291D47BCDBbf37ab7ec9AE7ECB21Aef52 2 | COLLECTION_SLUG=picassopunks 3 | DISCORD_BOT_TOKEN=SBI1MDI0NzUyNDQ3NzgyOTEz.YF36LQ.Sw-rczOfalK0lVzuW8vBjjcnsy0 4 | DISCORD_CHANNEL_ID=123456789101112130 5 | -------------------------------------------------------------------------------- /.github/bot-token.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xEssential/opensea-discord-bot/58b6adc7a47cc5a2e36db669c34cfb8aa0fba72a/.github/bot-token.png -------------------------------------------------------------------------------- /.github/discord-bot-permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xEssential/opensea-discord-bot/58b6adc7a47cc5a2e36db669c34cfb8aa0fba72a/.github/discord-bot-permissions.png -------------------------------------------------------------------------------- /.github/discord-scope.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xEssential/opensea-discord-bot/58b6adc7a47cc5a2e36db669c34cfb8aa0fba72a/.github/discord-scope.png -------------------------------------------------------------------------------- /.github/heroku-scheduler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0xEssential/opensea-discord-bot/58b6adc7a47cc5a2e36db669c34cfb8aa0fba72a/.github/heroku-scheduler.png -------------------------------------------------------------------------------- /.github/workflows/run.yml.example: -------------------------------------------------------------------------------- 1 | name: Run 2 | 3 | on: 4 | workflow_dispatch: 5 | schedule: 6 | - cron: '0 * * * *' 7 | 8 | jobs: 9 | run: 10 | strategy: 11 | matrix: 12 | channel: ["XXXXXXXXXXXXXXXXXXX"] 13 | runs-on: ubuntu-latest 14 | steps: 15 | 16 | - uses: actions/checkout@v2 17 | 18 | - uses: mskelton/setup-yarn@v1 19 | 20 | - run: yarn ts-node ./checkSales.ts 21 | env: 22 | CONTRACT_ADDRESS: '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d' 23 | COLLECTION_SLUG: boredapeyachtclub 24 | DISCORD_BOT_TOKEN: ${{ secrets.DISCORD_BOT_TOKEN }} 25 | DISCORD_CHANNEL_ID: ${{ matrix.channel }} 26 | 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules 3 | .DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Discord Bot for OpenSea 2 | 3 | Need help? [Join us on Discord](https://discord.gg/BheNSUfcvm)! 4 | 5 | Non-developers should also consider using [Boto for their Discord sales bot needs](https://medium.com/boto-corp/opensea-nfts-to-discord-bot-no-code-eeec8340112d?source=friends_link&sk=df690bf11c6c5efa91a98a31a23e36f9). 6 | 7 | This project includes a script that can be used to routinely hit the OpenSea API, check for recent sales on a collection, and post embeds into a Discord channel with information about the sale. 8 | 9 | Please don't abuse the OpenSea API by running this more frequently than once per hour. Ideally you should request an API key from OpenSea, and in a perfect world you would instead use Webhooks from OpenSea. 10 | 11 | ## Prerequisites 12 | 13 | This script can easily be deployed to Heroku and run on a job schedule, so you'll need a free Heroku account from https://heroku.com. The script can be run locally or from any server that offers a NodeJS runtime. 14 | 15 | You'll also need a Discord bot who has the ability to post in a channel in your Discord server. 16 | 17 | First, you need a Discord server where you have permission to add a Bot. It's free and easy to create your own Discord server. 18 | 19 | Once you have a server you can use, grab the channel ID following the instructions at this Discord support article. You'll enable developer mode, which will allow you to easily copy the channel ID from the Discord app - https://support.discord.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID-. 20 | 21 | Next, create a New Application on the Discord developer portal by clicking the button in the top right corner at https://discord.com/developers/applications. 22 | 23 | Give your application a name. 24 | 25 | Click into the Bot menu item. You can name your bot and give it an avatar, but the only requirement is that you copy the Bot token: 26 | 27 | ![Discord bot token screenshot](./.github/bot-token.png) 28 | 29 | Click into the OAuth2 menu item. Give your application the bot scope: 30 | 31 | ![Discord scopes screenshot](./.github/discord-scope.png) 32 | 33 | Then, in the next section, give your bot the Send Messages permission under Text Permissions: 34 | 35 | ![Discord bot permissions screenshot](./.github/discord-bot-permissions.png) 36 | 37 | Now you're ready to authenticate your bot to your server - copy the OAuth URL from the scopes box and open it in your browser. You'll be asked to give permission to the bot to enter your server. 38 | 39 | Once the bot is in your server, ensure you have the following two values and you are ready to deploy or run your script: 40 | 41 | - **botToken** i.e `SBI1MDI0NzUyNDQ3NzgyOTEz.YF36LQ.Sw-rczOfalK0lVzuW8vBjjcnsy0` 42 | - **channelId** i.e. `814900494928445450` 43 | 44 | ## Run locally 45 | 46 | You can run this script locally by pulling the repo to your local machine. 47 | 48 | First, install the dependencies with `npm` or `yarn`. 49 | 50 | Then copy the `.env.example` file to `.env` and replace the example values with your own. Or set them in your environment manually. 51 | 52 | The contract address for the NFT collection: 53 | ``` 54 | CONTRACT_ADDRESS=0x196c4C7291D47BCDBbf37ab7ec9AE7ECB21Aef52 55 | ``` 56 | 57 | The collection slug as found in the OS URL `https://opensea.io/collection/picassopunks`: 58 | ``` 59 | COLLECTION_SLUG=picassopunks 60 | ``` 61 | 62 | The Id of the discord channel to post sales to: 63 | ``` 64 | DISCORD_CHANNEL_ID=123456789101112130 65 | ``` 66 | 67 | You can also send to multiple channels by adding multiple IDs: 68 | ``` 69 | DISCORD_CHANNEL_ID=123456789101112130;123456789101738273;123456783649182736 70 | ``` 71 | 72 | The token from the discord bot you created above: 73 | ``` 74 | DISCORD_BOT_TOKEN=SBI1MDI0NzUyNDQ3NzgyOTEz.YF36LQ.Sw-rczOfalK0lVzuW8vBjjcnsy0 75 | ``` 76 | 77 | Your OpenSEA API token: 78 | ``` 79 | OPENSEA_TOKEN=some-key-here 80 | ``` 81 | 82 | If you don't have one yet, [request for an API token](https://docs.opensea.io/reference/request-an-api-key). 83 | 84 | Then just run the code! 85 | ``` 86 | $ yarn ts-node ./checkSales.ts 87 | // or 88 | $ ts-node ./checkSales.ts 89 | ``` 90 | 91 | ## Deploy to Heroku 92 | 93 | The easiest way to run this script on a chron scheduler is to deploy it to Heroku with this button: 94 | 95 | [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) 96 | 97 | Heroku will require that you input the ENV vars that are necessary to run the script, and will run the `checkSales.ts` script after a successful deploy. 98 | 99 | The `scheduler` add-on is included in the `app.json` but **you still must schedule the script to run** and we recommend running it hourly. This way the script will run every hour and will check the OpenSea API for sales in the last hour. 100 | 101 | To set up the script to run on a schedule, once your Heroku app finishes deploying, click "Manage App", and then navigate to the Heroku Scheduler addon. Create a new job, run it every, and enter 102 | 103 | ```bash 104 | yarn ts-node checkSales.ts 105 | ``` 106 | 107 | as the Run Command. 108 | -------------------------------------------------------------------------------- /app.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "OpenSea Discord Bot", 3 | "description": "A TS script to hit the OpenSea API for collection sales and send messages to Discord", 4 | "keywords": [ 5 | "ethereum", 6 | "nft", 7 | "discord" 8 | ], 9 | "repository": "https://github.com/sbauch/opensea-discord-bot", 10 | "env": { 11 | "CONTRACT_ADDRESS": { 12 | "description": "The address of your token contract" 13 | }, 14 | "COLLECTION_SLUG": { 15 | "description": "The OpenSea slug for your collection" 16 | }, 17 | "DISCORD_BOT_TOKEN": { 18 | "description": "The auth token for a Discord bot", 19 | "required": true 20 | }, 21 | "DISCORD_CHANNEL_ID": { 22 | "description": "Your Discord channel ID (snowflake), i.e. 694927656805859499, where your Bot has access and will post", 23 | "required": false 24 | }, 25 | "SECONDS": { 26 | "description": "How many seconds should we look back for sales on OpenSea. i.e. 3600 for one hour. Running more frequently may get you banned from the OpenSea API", 27 | "required": false 28 | } 29 | }, 30 | "image": "heroku/nodejs", 31 | "addons": ["scheduler"], 32 | "formation": [], 33 | "buildpacks": [ 34 | { 35 | "url": "heroku/nodejs" 36 | } 37 | ] 38 | } 39 | -------------------------------------------------------------------------------- /checkSales.ts: -------------------------------------------------------------------------------- 1 | import 'dotenv/config'; 2 | import Discord, { TextChannel } from 'discord.js'; 3 | import fetch from 'node-fetch'; 4 | import { ethers } from "ethers"; 5 | 6 | const OPENSEA_SHARED_STOREFRONT_ADDRESS = '0x495f947276749Ce646f68AC8c248420045cb7b5e'; 7 | 8 | const discordBot = new Discord.Client(); 9 | const discordSetup = async (channel: string): Promise => { 10 | const channelID = channel 11 | return new Promise((resolve, reject) => { 12 | if (!process.env['DISCORD_BOT_TOKEN']) reject('DISCORD_BOT_TOKEN not set') 13 | discordBot.login(process.env.DISCORD_BOT_TOKEN); 14 | discordBot.on('ready', async () => { 15 | const channel = await discordBot.channels.fetch(channelID!); 16 | resolve(channel as TextChannel); 17 | }); 18 | }) 19 | } 20 | 21 | const buildMessage = (sale: any) => ( 22 | new Discord.MessageEmbed() 23 | .setColor('#0099ff') 24 | .setTitle(sale.asset.name + ' sold!') 25 | .setURL(sale.asset.permalink) 26 | .setAuthor('OpenSea Bot', 'https://files.readme.io/566c72b-opensea-logomark-full-colored.png', 'https://github.com/sbauch/opensea-discord-bot') 27 | .setThumbnail(sale.asset.collection.image_url) 28 | .addFields( 29 | { name: 'Name', value: sale.asset.name }, 30 | { name: 'Amount', value: `${ethers.utils.formatEther(sale.total_price || '0')}${ethers.constants.EtherSymbol}`}, 31 | { name: 'Buyer', value: sale?.winner_account?.address, }, 32 | { name: 'Seller', value: sale?.seller?.address, }, 33 | ) 34 | .setImage(sale.asset.image_url) 35 | .setTimestamp(Date.parse(`${sale?.created_date}Z`)) 36 | .setFooter('Sold on OpenSea', 'https://files.readme.io/566c72b-opensea-logomark-full-colored.png') 37 | ) 38 | 39 | async function main() { 40 | const seconds = process.env.SECONDS ? parseInt(process.env.SECONDS) : 3_600; 41 | const hoursAgo = (Math.round(new Date().getTime() / 1000) - (seconds)); // in the last hour, run hourly? 42 | 43 | const params = new URLSearchParams({ 44 | offset: '0', 45 | event_type: 'successful', 46 | only_opensea: 'false', 47 | occurred_after: hoursAgo.toString(), 48 | collection_slug: process.env.COLLECTION_SLUG!, 49 | }) 50 | 51 | if (process.env.CONTRACT_ADDRESS !== OPENSEA_SHARED_STOREFRONT_ADDRESS) { 52 | params.append('asset_contract_address', process.env.CONTRACT_ADDRESS!) 53 | } 54 | 55 | let openSeaFetch = {} 56 | if (process.env.OPENSEA_TOKEN) { 57 | openSeaFetch['headers'] = {'X-API-KEY': process.env.OPENSEA_TOKEN} 58 | } 59 | 60 | let responseText = ""; 61 | 62 | try { 63 | const openSeaResponseObj = await fetch( 64 | "https://api.opensea.io/api/v1/events?" + params, openSeaFetch 65 | ); 66 | 67 | responseText = await openSeaResponseObj.text(); 68 | 69 | const openSeaResponse = JSON.parse(responseText); 70 | 71 | return await Promise.all( 72 | openSeaResponse?.asset_events?.reverse().map(async (sale: any) => { 73 | 74 | if (sale.asset.name == null) sale.asset.name = 'Unnamed NFT'; 75 | 76 | const message = buildMessage(sale); 77 | 78 | return await Promise.all( 79 | process.env.DISCORD_CHANNEL_ID.split(';').map(async (channel: string) => { 80 | return await (await discordSetup(channel)).send(message) 81 | }) 82 | ); 83 | }) 84 | ); 85 | } catch (e) { 86 | 87 | const payload = responseText || ""; 88 | 89 | if (payload.includes("cloudflare") && payload.includes("1020")) { 90 | throw new Error("You are being rate-limited by OpenSea. Please retrieve an OpenSea API token here: https://docs.opensea.io/reference/request-an-api-key") 91 | } 92 | 93 | throw e; 94 | } 95 | } 96 | 97 | main() 98 | .then((res) =>{ 99 | if (!res.length) console.log("No recent sales") 100 | process.exit(0) 101 | }) 102 | .catch(error => { 103 | console.error(error); 104 | process.exit(1); 105 | }); 106 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "license": "MIT", 3 | "scripts": { 4 | "heroku-postdeploy": "yarn ts-node checkSales.ts" 5 | }, 6 | "dependencies": { 7 | "@types/node": "^14.14.36", 8 | "date-fns": "^2.19.0", 9 | "discord.js": "^12.5.1", 10 | "dotenv": "^8.2.0", 11 | "ethers": "^5.1.0", 12 | "node-fetch": "^2.6.1", 13 | "ts-node": "^9.1.1", 14 | "typescript": "^4.2.3" 15 | }, 16 | "devDependencies": { 17 | "@types/node-fetch": "^2.5.9" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2018", 4 | "module": "commonjs", 5 | "strict": false, 6 | "esModuleInterop": true, 7 | "outDir": "dist", 8 | "resolveJsonModule": true 9 | 10 | 11 | }, 12 | "include": ["*.ts"], 13 | "files": ["./hardhat.config.ts"] 14 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@discordjs/collection@^0.1.6": 6 | version "0.1.6" 7 | resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.1.6.tgz#9e9a7637f4e4e0688fd8b2b5c63133c91607682c" 8 | integrity sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ== 9 | 10 | "@discordjs/form-data@^3.0.1": 11 | version "3.0.1" 12 | resolved "https://registry.yarnpkg.com/@discordjs/form-data/-/form-data-3.0.1.tgz#5c9e6be992e2e57d0dfa0e39979a850225fb4697" 13 | integrity sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg== 14 | dependencies: 15 | asynckit "^0.4.0" 16 | combined-stream "^1.0.8" 17 | mime-types "^2.1.12" 18 | 19 | "@ethersproject/abi@5.1.0", "@ethersproject/abi@^5.1.0": 20 | version "5.1.0" 21 | resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.1.0.tgz#d582c9f6a8e8192778b5f2c991ce19d7b336b0c5" 22 | integrity sha512-N/W9Sbn1/C6Kh2kuHRjf/hX6euMK4+9zdJRBB8sDWmihVntjUAfxbusGZKzDQD8i3szAHhTz8K7XADV5iFNfJw== 23 | dependencies: 24 | "@ethersproject/address" "^5.1.0" 25 | "@ethersproject/bignumber" "^5.1.0" 26 | "@ethersproject/bytes" "^5.1.0" 27 | "@ethersproject/constants" "^5.1.0" 28 | "@ethersproject/hash" "^5.1.0" 29 | "@ethersproject/keccak256" "^5.1.0" 30 | "@ethersproject/logger" "^5.1.0" 31 | "@ethersproject/properties" "^5.1.0" 32 | "@ethersproject/strings" "^5.1.0" 33 | 34 | "@ethersproject/abstract-provider@5.1.0", "@ethersproject/abstract-provider@^5.1.0": 35 | version "5.1.0" 36 | resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.1.0.tgz#1f24c56cda5524ef4ed3cfc562a01d6b6f8eeb0b" 37 | integrity sha512-8dJUnT8VNvPwWhYIau4dwp7qe1g+KgdRm4XTWvjkI9gAT2zZa90WF5ApdZ3vl1r6NDmnn6vUVvyphClRZRteTQ== 38 | dependencies: 39 | "@ethersproject/bignumber" "^5.1.0" 40 | "@ethersproject/bytes" "^5.1.0" 41 | "@ethersproject/logger" "^5.1.0" 42 | "@ethersproject/networks" "^5.1.0" 43 | "@ethersproject/properties" "^5.1.0" 44 | "@ethersproject/transactions" "^5.1.0" 45 | "@ethersproject/web" "^5.1.0" 46 | 47 | "@ethersproject/abstract-signer@5.1.0", "@ethersproject/abstract-signer@^5.1.0": 48 | version "5.1.0" 49 | resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.1.0.tgz#744c7a2d0ebe3cc0bc38294d0f53d5ca3f4e49e3" 50 | integrity sha512-qQDMkjGZSSJSKl6AnfTgmz9FSnzq3iEoEbHTYwjDlEAv+LNP7zd4ixCcVWlWyk+2siud856M5CRhAmPdupeN9w== 51 | dependencies: 52 | "@ethersproject/abstract-provider" "^5.1.0" 53 | "@ethersproject/bignumber" "^5.1.0" 54 | "@ethersproject/bytes" "^5.1.0" 55 | "@ethersproject/logger" "^5.1.0" 56 | "@ethersproject/properties" "^5.1.0" 57 | 58 | "@ethersproject/address@5.1.0", "@ethersproject/address@^5.1.0": 59 | version "5.1.0" 60 | resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.1.0.tgz#3854fd7ebcb6af7597de66f847c3345dae735b58" 61 | integrity sha512-rfWQR12eHn2cpstCFS4RF7oGjfbkZb0oqep+BfrT+gWEGWG2IowJvIsacPOvzyS1jhNF4MQ4BS59B04Mbovteg== 62 | dependencies: 63 | "@ethersproject/bignumber" "^5.1.0" 64 | "@ethersproject/bytes" "^5.1.0" 65 | "@ethersproject/keccak256" "^5.1.0" 66 | "@ethersproject/logger" "^5.1.0" 67 | "@ethersproject/rlp" "^5.1.0" 68 | 69 | "@ethersproject/base64@5.1.0", "@ethersproject/base64@^5.1.0": 70 | version "5.1.0" 71 | resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.1.0.tgz#27240c174d0a4e13f6eae87416fd876caf7f42b6" 72 | integrity sha512-npD1bLvK4Bcxz+m4EMkx+F8Rd7CnqS9DYnhNu0/GlQBXhWjvfoAZzk5HJ0f1qeyp8d+A86PTuzLOGOXf4/CN8g== 73 | dependencies: 74 | "@ethersproject/bytes" "^5.1.0" 75 | 76 | "@ethersproject/basex@5.1.0", "@ethersproject/basex@^5.1.0": 77 | version "5.1.0" 78 | resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.1.0.tgz#80da2e86f9da0cb5ccd446b337364d791f6a131c" 79 | integrity sha512-vBKr39bum7DDbOvkr1Sj19bRMEPA4FnST6Utt6xhDzI7o7L6QNkDn2yrCfP+hnvJGhZFKtLygWwqlTBZoBXYLg== 80 | dependencies: 81 | "@ethersproject/bytes" "^5.1.0" 82 | "@ethersproject/properties" "^5.1.0" 83 | 84 | "@ethersproject/bignumber@5.1.0", "@ethersproject/bignumber@^5.1.0": 85 | version "5.1.0" 86 | resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.1.0.tgz#966a013a5d871fc03fc67bf33cd8aadae627f0fd" 87 | integrity sha512-wUvQlhTjPjFXIdLPOuTrFeQmSa6Wvls1bGXQNQWvB/SEn1NsTCE8PmumIEZxmOPjSHl1eV2uyHP5jBm5Cgj92Q== 88 | dependencies: 89 | "@ethersproject/bytes" "^5.1.0" 90 | "@ethersproject/logger" "^5.1.0" 91 | bn.js "^4.4.0" 92 | 93 | "@ethersproject/bytes@5.1.0", "@ethersproject/bytes@^5.1.0": 94 | version "5.1.0" 95 | resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.1.0.tgz#55dfa9c4c21df1b1b538be3accb50fb76d5facfd" 96 | integrity sha512-sGTxb+LVjFxJcJeUswAIK6ncgOrh3D8c192iEJd7mLr95V6du119rRfYT/b87WPkZ5I3gRBUYIYXtdgCWACe8g== 97 | dependencies: 98 | "@ethersproject/logger" "^5.1.0" 99 | 100 | "@ethersproject/constants@5.1.0", "@ethersproject/constants@^5.1.0": 101 | version "5.1.0" 102 | resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.1.0.tgz#4e7da6367ea0e9be87585d8b09f3fccf384b1452" 103 | integrity sha512-0/SuHrxc8R8k+JiLmJymxHJbojUDWBQqO+b+XFdwaP0jGzqC09YDy/CAlSZB6qHsBifY8X3I89HcK/oMqxRdBw== 104 | dependencies: 105 | "@ethersproject/bignumber" "^5.1.0" 106 | 107 | "@ethersproject/contracts@5.1.0": 108 | version "5.1.0" 109 | resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.1.0.tgz#f7c3451f1af77e029005733ccab3419d07d23f6b" 110 | integrity sha512-dvTMs/4XGSc57cYOW0KjgX1NdTujUu7mNb6PQdJWg08m9ULzPyGZuBkFJnijBcp6vTOCQ59RwjboWgNWw393og== 111 | dependencies: 112 | "@ethersproject/abi" "^5.1.0" 113 | "@ethersproject/abstract-provider" "^5.1.0" 114 | "@ethersproject/abstract-signer" "^5.1.0" 115 | "@ethersproject/address" "^5.1.0" 116 | "@ethersproject/bignumber" "^5.1.0" 117 | "@ethersproject/bytes" "^5.1.0" 118 | "@ethersproject/constants" "^5.1.0" 119 | "@ethersproject/logger" "^5.1.0" 120 | "@ethersproject/properties" "^5.1.0" 121 | "@ethersproject/transactions" "^5.1.0" 122 | 123 | "@ethersproject/hash@5.1.0", "@ethersproject/hash@^5.1.0": 124 | version "5.1.0" 125 | resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.1.0.tgz#40961d64837d57f580b7b055e0d74174876d891e" 126 | integrity sha512-fNwry20yLLPpnRRwm3fBL+2ksgO+KMadxM44WJmRIoTKzy4269+rbq9KFoe2LTqq2CXJM2CE70beGaNrpuqflQ== 127 | dependencies: 128 | "@ethersproject/abstract-signer" "^5.1.0" 129 | "@ethersproject/address" "^5.1.0" 130 | "@ethersproject/bignumber" "^5.1.0" 131 | "@ethersproject/bytes" "^5.1.0" 132 | "@ethersproject/keccak256" "^5.1.0" 133 | "@ethersproject/logger" "^5.1.0" 134 | "@ethersproject/properties" "^5.1.0" 135 | "@ethersproject/strings" "^5.1.0" 136 | 137 | "@ethersproject/hdnode@5.1.0", "@ethersproject/hdnode@^5.1.0": 138 | version "5.1.0" 139 | resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.1.0.tgz#2bf5c4048935136ce83e9242e1bd570afcc0bc83" 140 | integrity sha512-obIWdlujloExPHWJGmhJO/sETOOo7SEb6qemV4f8kyFoXg+cJK+Ta9SvBrj7hsUK85n3LZeZJZRjjM7oez3Clg== 141 | dependencies: 142 | "@ethersproject/abstract-signer" "^5.1.0" 143 | "@ethersproject/basex" "^5.1.0" 144 | "@ethersproject/bignumber" "^5.1.0" 145 | "@ethersproject/bytes" "^5.1.0" 146 | "@ethersproject/logger" "^5.1.0" 147 | "@ethersproject/pbkdf2" "^5.1.0" 148 | "@ethersproject/properties" "^5.1.0" 149 | "@ethersproject/sha2" "^5.1.0" 150 | "@ethersproject/signing-key" "^5.1.0" 151 | "@ethersproject/strings" "^5.1.0" 152 | "@ethersproject/transactions" "^5.1.0" 153 | "@ethersproject/wordlists" "^5.1.0" 154 | 155 | "@ethersproject/json-wallets@5.1.0", "@ethersproject/json-wallets@^5.1.0": 156 | version "5.1.0" 157 | resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.1.0.tgz#bba7af2e520e8aea4d3829d80520db5d2e4fb8d2" 158 | integrity sha512-00n2iBy27w8zrGZSiU762UOVuzCQZxUZxopsZC47++js6xUFuI74DHcJ5K/2pddlF1YBskvmMuboEu1geK8mnA== 159 | dependencies: 160 | "@ethersproject/abstract-signer" "^5.1.0" 161 | "@ethersproject/address" "^5.1.0" 162 | "@ethersproject/bytes" "^5.1.0" 163 | "@ethersproject/hdnode" "^5.1.0" 164 | "@ethersproject/keccak256" "^5.1.0" 165 | "@ethersproject/logger" "^5.1.0" 166 | "@ethersproject/pbkdf2" "^5.1.0" 167 | "@ethersproject/properties" "^5.1.0" 168 | "@ethersproject/random" "^5.1.0" 169 | "@ethersproject/strings" "^5.1.0" 170 | "@ethersproject/transactions" "^5.1.0" 171 | aes-js "3.0.0" 172 | scrypt-js "3.0.1" 173 | 174 | "@ethersproject/keccak256@5.1.0", "@ethersproject/keccak256@^5.1.0": 175 | version "5.1.0" 176 | resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.1.0.tgz#fdcd88fb13bfef4271b225cdd8dec4d315c8e60e" 177 | integrity sha512-vrTB1W6AEYoadww5c9UyVJ2YcSiyIUTNDRccZIgwTmFFoSHwBtcvG1hqy9RzJ1T0bMdATbM9Hfx2mJ6H0i7Hig== 178 | dependencies: 179 | "@ethersproject/bytes" "^5.1.0" 180 | js-sha3 "0.5.7" 181 | 182 | "@ethersproject/logger@5.1.0", "@ethersproject/logger@^5.1.0": 183 | version "5.1.0" 184 | resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.1.0.tgz#4cdeeefac029373349d5818f39c31b82cc6d9bbf" 185 | integrity sha512-wtUaD1lBX10HBXjjKV9VHCBnTdUaKQnQ2XSET1ezglqLdPdllNOIlLfhyCRqXm5xwcjExVI5ETokOYfjPtaAlw== 186 | 187 | "@ethersproject/networks@5.1.0", "@ethersproject/networks@^5.1.0": 188 | version "5.1.0" 189 | resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.1.0.tgz#f537290cb05aa6dc5e81e910926c04cfd5814bca" 190 | integrity sha512-A/NIrIED/G/IgU1XUukOA3WcFRxn2I4O5GxsYGA5nFlIi+UZWdGojs85I1VXkR1gX9eFnDXzjE6OtbgZHjFhIA== 191 | dependencies: 192 | "@ethersproject/logger" "^5.1.0" 193 | 194 | "@ethersproject/pbkdf2@5.1.0", "@ethersproject/pbkdf2@^5.1.0": 195 | version "5.1.0" 196 | resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.1.0.tgz#6b740a85dc780e879338af74856ca2c0d3b24d19" 197 | integrity sha512-B8cUbHHTgs8OtgJIafrRcz/YPDobVd5Ru8gTnShOiM9EBuFpYHQpq3+8iQJ6pyczDu6HP/oc/njAsIBhwFZYew== 198 | dependencies: 199 | "@ethersproject/bytes" "^5.1.0" 200 | "@ethersproject/sha2" "^5.1.0" 201 | 202 | "@ethersproject/properties@5.1.0", "@ethersproject/properties@^5.1.0": 203 | version "5.1.0" 204 | resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.1.0.tgz#9484bd6def16595fc6e4bdc26f29dff4d3f6ac42" 205 | integrity sha512-519KKTwgmH42AQL3+GFV3SX6khYEfHsvI6v8HYejlkigSDuqttdgVygFTDsGlofNFchhDwuclrxQnD5B0YLNMg== 206 | dependencies: 207 | "@ethersproject/logger" "^5.1.0" 208 | 209 | "@ethersproject/providers@5.1.0": 210 | version "5.1.0" 211 | resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.1.0.tgz#27695a02cfafa370428cde1c7a4abab13afb6a35" 212 | integrity sha512-FjpZL2lSXrYpQDg2fMjugZ0HjQD9a+2fOOoRhhihh+Z+qi/xZ8vIlPoumrEP1DzIG4DBV6liUqLNqnX2C6FIAA== 213 | dependencies: 214 | "@ethersproject/abstract-provider" "^5.1.0" 215 | "@ethersproject/abstract-signer" "^5.1.0" 216 | "@ethersproject/address" "^5.1.0" 217 | "@ethersproject/basex" "^5.1.0" 218 | "@ethersproject/bignumber" "^5.1.0" 219 | "@ethersproject/bytes" "^5.1.0" 220 | "@ethersproject/constants" "^5.1.0" 221 | "@ethersproject/hash" "^5.1.0" 222 | "@ethersproject/logger" "^5.1.0" 223 | "@ethersproject/networks" "^5.1.0" 224 | "@ethersproject/properties" "^5.1.0" 225 | "@ethersproject/random" "^5.1.0" 226 | "@ethersproject/rlp" "^5.1.0" 227 | "@ethersproject/sha2" "^5.1.0" 228 | "@ethersproject/strings" "^5.1.0" 229 | "@ethersproject/transactions" "^5.1.0" 230 | "@ethersproject/web" "^5.1.0" 231 | bech32 "1.1.4" 232 | ws "7.2.3" 233 | 234 | "@ethersproject/random@5.1.0", "@ethersproject/random@^5.1.0": 235 | version "5.1.0" 236 | resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.1.0.tgz#0bdff2554df03ebc5f75689614f2d58ea0d9a71f" 237 | integrity sha512-+uuczLQZ4+no9cP6TCoCktXx0u2YbNaRT7lRkSt12d8263e702f0u+4JnnRO8Qmv5nylWJebnqCHzyxP+6mLqw== 238 | dependencies: 239 | "@ethersproject/bytes" "^5.1.0" 240 | "@ethersproject/logger" "^5.1.0" 241 | 242 | "@ethersproject/rlp@5.1.0", "@ethersproject/rlp@^5.1.0": 243 | version "5.1.0" 244 | resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.1.0.tgz#700f4f071c27fa298d3c1d637485fefe919dd084" 245 | integrity sha512-vDTyHIwNPrecy55gKGZ47eJZhBm8LLBxihzi5ou+zrSvYTpkSTWRcKUlXFDFQVwfWB+P5PGyERAdiDEI76clxw== 246 | dependencies: 247 | "@ethersproject/bytes" "^5.1.0" 248 | "@ethersproject/logger" "^5.1.0" 249 | 250 | "@ethersproject/sha2@5.1.0", "@ethersproject/sha2@^5.1.0": 251 | version "5.1.0" 252 | resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.1.0.tgz#6ca42d1a26884b3e32ffa943fe6494af7211506c" 253 | integrity sha512-+fNSeZRstOpdRJpdGUkRONFCaiAqWkc91zXgg76Nlp5ndBQE25Kk5yK8gCPG1aGnCrbariiPr5j9DmrYH78JCA== 254 | dependencies: 255 | "@ethersproject/bytes" "^5.1.0" 256 | "@ethersproject/logger" "^5.1.0" 257 | hash.js "1.1.3" 258 | 259 | "@ethersproject/signing-key@5.1.0", "@ethersproject/signing-key@^5.1.0": 260 | version "5.1.0" 261 | resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.1.0.tgz#6eddfbddb6826b597b9650e01acf817bf8991b9c" 262 | integrity sha512-tE5LFlbmdObG8bY04NpuwPWSRPgEswfxweAI1sH7TbP0ml1elNfqcq7ii/3AvIN05i5U0Pkm3Tf8bramt8MmLw== 263 | dependencies: 264 | "@ethersproject/bytes" "^5.1.0" 265 | "@ethersproject/logger" "^5.1.0" 266 | "@ethersproject/properties" "^5.1.0" 267 | bn.js "^4.4.0" 268 | elliptic "6.5.4" 269 | 270 | "@ethersproject/solidity@5.1.0": 271 | version "5.1.0" 272 | resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.1.0.tgz#095a9c75244edccb26c452c155736d363399b954" 273 | integrity sha512-kPodsGyo9zg1g9XSXp1lGhFaezBAUUsAUB1Vf6OkppE5Wksg4Et+x3kG4m7J/uShDMP2upkJtHNsIBK2XkVpKQ== 274 | dependencies: 275 | "@ethersproject/bignumber" "^5.1.0" 276 | "@ethersproject/bytes" "^5.1.0" 277 | "@ethersproject/keccak256" "^5.1.0" 278 | "@ethersproject/sha2" "^5.1.0" 279 | "@ethersproject/strings" "^5.1.0" 280 | 281 | "@ethersproject/strings@5.1.0", "@ethersproject/strings@^5.1.0": 282 | version "5.1.0" 283 | resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.1.0.tgz#0f95a56c3c8c9d5510a06c241d818779750e2da5" 284 | integrity sha512-perBZy0RrmmL0ejiFGUOlBVjMsUceqLut3OBP3zP96LhiJWWbS8u1NqQVgN4/Gyrbziuda66DxiQocXhsvx+Sw== 285 | dependencies: 286 | "@ethersproject/bytes" "^5.1.0" 287 | "@ethersproject/constants" "^5.1.0" 288 | "@ethersproject/logger" "^5.1.0" 289 | 290 | "@ethersproject/transactions@5.1.0", "@ethersproject/transactions@^5.1.0": 291 | version "5.1.0" 292 | resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.1.0.tgz#da7fcd7e77e23dcfcca317a945f60bc228c61b36" 293 | integrity sha512-s10crRLZEA0Bgv6FGEl/AKkTw9f+RVUrlWDX1rHnD4ZncPFeiV2AJr4nT7QSUhxJdFPvjyKRDb3nEH27dIqcPQ== 294 | dependencies: 295 | "@ethersproject/address" "^5.1.0" 296 | "@ethersproject/bignumber" "^5.1.0" 297 | "@ethersproject/bytes" "^5.1.0" 298 | "@ethersproject/constants" "^5.1.0" 299 | "@ethersproject/keccak256" "^5.1.0" 300 | "@ethersproject/logger" "^5.1.0" 301 | "@ethersproject/properties" "^5.1.0" 302 | "@ethersproject/rlp" "^5.1.0" 303 | "@ethersproject/signing-key" "^5.1.0" 304 | 305 | "@ethersproject/units@5.1.0": 306 | version "5.1.0" 307 | resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.1.0.tgz#b6ab3430ebc22adc3cb4839516496f167bee3ad5" 308 | integrity sha512-isvJrx6qG0nKWfxsGORNjmOq/nh175fStfvRTA2xEKrGqx8JNJY83fswu4GkILowfriEM/eYpretfJnfzi7YhA== 309 | dependencies: 310 | "@ethersproject/bignumber" "^5.1.0" 311 | "@ethersproject/constants" "^5.1.0" 312 | "@ethersproject/logger" "^5.1.0" 313 | 314 | "@ethersproject/wallet@5.1.0": 315 | version "5.1.0" 316 | resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.1.0.tgz#134c5816eaeaa586beae9f9ff67891104a2c9a15" 317 | integrity sha512-ULmUtiYQLTUS+y3DgkLzRhFEK10zMwmjOthnjiZxee3Q/MVwr3rnmuAnXIUZrPjna6hvUPnyRIdW5XuF0Ld0YQ== 318 | dependencies: 319 | "@ethersproject/abstract-provider" "^5.1.0" 320 | "@ethersproject/abstract-signer" "^5.1.0" 321 | "@ethersproject/address" "^5.1.0" 322 | "@ethersproject/bignumber" "^5.1.0" 323 | "@ethersproject/bytes" "^5.1.0" 324 | "@ethersproject/hash" "^5.1.0" 325 | "@ethersproject/hdnode" "^5.1.0" 326 | "@ethersproject/json-wallets" "^5.1.0" 327 | "@ethersproject/keccak256" "^5.1.0" 328 | "@ethersproject/logger" "^5.1.0" 329 | "@ethersproject/properties" "^5.1.0" 330 | "@ethersproject/random" "^5.1.0" 331 | "@ethersproject/signing-key" "^5.1.0" 332 | "@ethersproject/transactions" "^5.1.0" 333 | "@ethersproject/wordlists" "^5.1.0" 334 | 335 | "@ethersproject/web@5.1.0", "@ethersproject/web@^5.1.0": 336 | version "5.1.0" 337 | resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.1.0.tgz#ed56bbe4e3d9a8ffe3b2ed882da5c62d3551381b" 338 | integrity sha512-LTeluWgTq04+RNqAkVhpydPcRZK/kKxD2Vy7PYGrAD27ABO9kTqTBKwiOuzTyAHKUQHfnvZbXmxBXJAGViSDcA== 339 | dependencies: 340 | "@ethersproject/base64" "^5.1.0" 341 | "@ethersproject/bytes" "^5.1.0" 342 | "@ethersproject/logger" "^5.1.0" 343 | "@ethersproject/properties" "^5.1.0" 344 | "@ethersproject/strings" "^5.1.0" 345 | 346 | "@ethersproject/wordlists@5.1.0", "@ethersproject/wordlists@^5.1.0": 347 | version "5.1.0" 348 | resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.1.0.tgz#54eb9ef3a00babbff90ffe124e19c89e07e6aace" 349 | integrity sha512-NsUCi/TpBb+oTFvMSccUkJGtp5o/84eOyqp5q5aBeiNBSLkYyw21znRn9mAmxZgySpxgruVgKbaapnYPgvctPQ== 350 | dependencies: 351 | "@ethersproject/bytes" "^5.1.0" 352 | "@ethersproject/hash" "^5.1.0" 353 | "@ethersproject/logger" "^5.1.0" 354 | "@ethersproject/properties" "^5.1.0" 355 | "@ethersproject/strings" "^5.1.0" 356 | 357 | "@types/node-fetch@^2.5.9": 358 | version "2.5.9" 359 | resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.9.tgz#c04a12115aa436f189e39579272b305e477621b4" 360 | integrity sha512-6cUyqLK+JBsATAqNQqk10jURoBFrzfRCDh4kaYxg8ivKhRPIpyBgAvuY7zM/3E4AwsYJSh5HCHBCJRM4DsCTaQ== 361 | dependencies: 362 | "@types/node" "*" 363 | form-data "^3.0.0" 364 | 365 | "@types/node@*": 366 | version "14.14.37" 367 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.37.tgz#a3dd8da4eb84a996c36e331df98d82abd76b516e" 368 | integrity sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw== 369 | 370 | "@types/node@^14.14.36": 371 | version "14.14.36" 372 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.36.tgz#5637905dbb15c30a33a3c65b9ef7c20e3c85ebad" 373 | integrity sha512-kjivUwDJfIjngzbhooRnOLhGYz6oRFi+L+EpMjxroDYXwDw9lHrJJ43E+dJ6KAd3V3WxWAJ/qZE9XKYHhjPOFQ== 374 | 375 | abort-controller@^3.0.0: 376 | version "3.0.0" 377 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" 378 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== 379 | dependencies: 380 | event-target-shim "^5.0.0" 381 | 382 | aes-js@3.0.0: 383 | version "3.0.0" 384 | resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" 385 | integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= 386 | 387 | arg@^4.1.0: 388 | version "4.1.3" 389 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 390 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 391 | 392 | asynckit@^0.4.0: 393 | version "0.4.0" 394 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 395 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 396 | 397 | bech32@1.1.4: 398 | version "1.1.4" 399 | resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" 400 | integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== 401 | 402 | bn.js@^4.11.9, bn.js@^4.4.0: 403 | version "4.12.0" 404 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" 405 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== 406 | 407 | brorand@^1.1.0: 408 | version "1.1.0" 409 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 410 | integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= 411 | 412 | buffer-from@^1.0.0: 413 | version "1.1.1" 414 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 415 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 416 | 417 | combined-stream@^1.0.8: 418 | version "1.0.8" 419 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 420 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 421 | dependencies: 422 | delayed-stream "~1.0.0" 423 | 424 | create-require@^1.1.0: 425 | version "1.1.1" 426 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 427 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 428 | 429 | date-fns@^2.19.0: 430 | version "2.19.0" 431 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.19.0.tgz#65193348635a28d5d916c43ec7ce6fbd145059e1" 432 | integrity sha512-X3bf2iTPgCAQp9wvjOQytnf5vO5rESYRXlPIVcgSbtT5OTScPcsf9eZU+B/YIkKAtYr5WeCii58BgATrNitlWg== 433 | 434 | delayed-stream@~1.0.0: 435 | version "1.0.0" 436 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 437 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 438 | 439 | diff@^4.0.1: 440 | version "4.0.2" 441 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 442 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 443 | 444 | discord.js@^12.5.1: 445 | version "12.5.1" 446 | resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-12.5.1.tgz#992b45753e3815526a279914ccc281d3496f5990" 447 | integrity sha512-VwZkVaUAIOB9mKdca0I5MefPMTQJTNg0qdgi1huF3iwsFwJ0L5s/Y69AQe+iPmjuV6j9rtKoG0Ta0n9vgEIL6w== 448 | dependencies: 449 | "@discordjs/collection" "^0.1.6" 450 | "@discordjs/form-data" "^3.0.1" 451 | abort-controller "^3.0.0" 452 | node-fetch "^2.6.1" 453 | prism-media "^1.2.2" 454 | setimmediate "^1.0.5" 455 | tweetnacl "^1.0.3" 456 | ws "^7.3.1" 457 | 458 | dotenv@^8.2.0: 459 | version "8.2.0" 460 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 461 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 462 | 463 | elliptic@6.5.4: 464 | version "6.5.4" 465 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" 466 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 467 | dependencies: 468 | bn.js "^4.11.9" 469 | brorand "^1.1.0" 470 | hash.js "^1.0.0" 471 | hmac-drbg "^1.0.1" 472 | inherits "^2.0.4" 473 | minimalistic-assert "^1.0.1" 474 | minimalistic-crypto-utils "^1.0.1" 475 | 476 | ethers@^5.1.0: 477 | version "5.1.0" 478 | resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.1.0.tgz#8a8758e0b6cbbc19fd4b87f4d551170fa6f1a995" 479 | integrity sha512-2L6Ge6wMBw02FlRoCLg4E0Elt3khMNlW6ULawa10mMeeZToYJ5+uCfiuTuB+XZ6om1Y7wuO9ZzezP8FsU2M/+g== 480 | dependencies: 481 | "@ethersproject/abi" "5.1.0" 482 | "@ethersproject/abstract-provider" "5.1.0" 483 | "@ethersproject/abstract-signer" "5.1.0" 484 | "@ethersproject/address" "5.1.0" 485 | "@ethersproject/base64" "5.1.0" 486 | "@ethersproject/basex" "5.1.0" 487 | "@ethersproject/bignumber" "5.1.0" 488 | "@ethersproject/bytes" "5.1.0" 489 | "@ethersproject/constants" "5.1.0" 490 | "@ethersproject/contracts" "5.1.0" 491 | "@ethersproject/hash" "5.1.0" 492 | "@ethersproject/hdnode" "5.1.0" 493 | "@ethersproject/json-wallets" "5.1.0" 494 | "@ethersproject/keccak256" "5.1.0" 495 | "@ethersproject/logger" "5.1.0" 496 | "@ethersproject/networks" "5.1.0" 497 | "@ethersproject/pbkdf2" "5.1.0" 498 | "@ethersproject/properties" "5.1.0" 499 | "@ethersproject/providers" "5.1.0" 500 | "@ethersproject/random" "5.1.0" 501 | "@ethersproject/rlp" "5.1.0" 502 | "@ethersproject/sha2" "5.1.0" 503 | "@ethersproject/signing-key" "5.1.0" 504 | "@ethersproject/solidity" "5.1.0" 505 | "@ethersproject/strings" "5.1.0" 506 | "@ethersproject/transactions" "5.1.0" 507 | "@ethersproject/units" "5.1.0" 508 | "@ethersproject/wallet" "5.1.0" 509 | "@ethersproject/web" "5.1.0" 510 | "@ethersproject/wordlists" "5.1.0" 511 | 512 | event-target-shim@^5.0.0: 513 | version "5.0.1" 514 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 515 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== 516 | 517 | form-data@^3.0.0: 518 | version "3.0.1" 519 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 520 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 521 | dependencies: 522 | asynckit "^0.4.0" 523 | combined-stream "^1.0.8" 524 | mime-types "^2.1.12" 525 | 526 | hash.js@1.1.3: 527 | version "1.1.3" 528 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" 529 | integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== 530 | dependencies: 531 | inherits "^2.0.3" 532 | minimalistic-assert "^1.0.0" 533 | 534 | hash.js@^1.0.0, hash.js@^1.0.3: 535 | version "1.1.7" 536 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 537 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 538 | dependencies: 539 | inherits "^2.0.3" 540 | minimalistic-assert "^1.0.1" 541 | 542 | hmac-drbg@^1.0.1: 543 | version "1.0.1" 544 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 545 | integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= 546 | dependencies: 547 | hash.js "^1.0.3" 548 | minimalistic-assert "^1.0.0" 549 | minimalistic-crypto-utils "^1.0.1" 550 | 551 | inherits@^2.0.3, inherits@^2.0.4: 552 | version "2.0.4" 553 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 554 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 555 | 556 | js-sha3@0.5.7: 557 | version "0.5.7" 558 | resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" 559 | integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= 560 | 561 | make-error@^1.1.1: 562 | version "1.3.6" 563 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 564 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 565 | 566 | mime-db@1.46.0: 567 | version "1.46.0" 568 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" 569 | integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== 570 | 571 | mime-types@^2.1.12: 572 | version "2.1.29" 573 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" 574 | integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== 575 | dependencies: 576 | mime-db "1.46.0" 577 | 578 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 579 | version "1.0.1" 580 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 581 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 582 | 583 | minimalistic-crypto-utils@^1.0.1: 584 | version "1.0.1" 585 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 586 | integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= 587 | 588 | node-fetch@^2.6.1: 589 | version "2.6.1" 590 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 591 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 592 | 593 | prism-media@^1.2.2: 594 | version "1.2.9" 595 | resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.2.9.tgz#8d4f97b36efdfc82483eb8d3db64020767866f36" 596 | integrity sha512-UHCYuqHipbTR1ZsXr5eg4JUmHER8Ss4YEb9Azn+9zzJ7/jlTtD1h0lc4g6tNx3eMlB8Mp6bfll0LPMAV4R6r3Q== 597 | 598 | scrypt-js@3.0.1: 599 | version "3.0.1" 600 | resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" 601 | integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== 602 | 603 | setimmediate@^1.0.5: 604 | version "1.0.5" 605 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 606 | integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= 607 | 608 | source-map-support@^0.5.17: 609 | version "0.5.19" 610 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 611 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 612 | dependencies: 613 | buffer-from "^1.0.0" 614 | source-map "^0.6.0" 615 | 616 | source-map@^0.6.0: 617 | version "0.6.1" 618 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 619 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 620 | 621 | ts-node@^9.1.1: 622 | version "9.1.1" 623 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-9.1.1.tgz#51a9a450a3e959401bda5f004a72d54b936d376d" 624 | integrity sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg== 625 | dependencies: 626 | arg "^4.1.0" 627 | create-require "^1.1.0" 628 | diff "^4.0.1" 629 | make-error "^1.1.1" 630 | source-map-support "^0.5.17" 631 | yn "3.1.1" 632 | 633 | tweetnacl@^1.0.3: 634 | version "1.0.3" 635 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" 636 | integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== 637 | 638 | typescript@^4.2.3: 639 | version "4.2.3" 640 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.3.tgz#39062d8019912d43726298f09493d598048c1ce3" 641 | integrity sha512-qOcYwxaByStAWrBf4x0fibwZvMRG+r4cQoTjbPtUlrWjBHbmCAww1i448U0GJ+3cNNEtebDteo/cHOR3xJ4wEw== 642 | 643 | ws@7.2.3: 644 | version "7.2.3" 645 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" 646 | integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== 647 | 648 | ws@^7.3.1: 649 | version "7.4.4" 650 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.4.tgz#383bc9742cb202292c9077ceab6f6047b17f2d59" 651 | integrity sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw== 652 | 653 | yn@3.1.1: 654 | version "3.1.1" 655 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 656 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 657 | --------------------------------------------------------------------------------