├── types ├── contracts │ ├── index.d.ts │ ├── common.ts │ └── GIVpower.ts ├── shared.d.ts └── environment.d.ts ├── funding.json ├── .prettierrc.json ├── src ├── index.ts ├── service.ts ├── logger.ts ├── config.ts ├── blockchain.ts └── subgraph.ts ├── docker-compose.yml ├── config └── .env.template ├── Dockerfile ├── .github └── workflows │ ├── manual-ssh.yml │ ├── deploy-only.yml │ └── ci.yml ├── package.json ├── tslint.json ├── .gitignore ├── README.md ├── tsconfig.json ├── abi └── GIVpower.json ├── LICENSE └── yarn.lock /types/contracts/index.d.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /types/shared.d.ts: -------------------------------------------------------------------------------- 1 | export interface UnlockablePositions { 2 | [round: string]: string[]; 3 | } 4 | -------------------------------------------------------------------------------- /funding.json: -------------------------------------------------------------------------------- 1 | { 2 | "opRetro": { 3 | "projectId": "0xe434930e189c807b137ff0d8e2fa6a95eaa57dde574143a02ca0d7fb31a40bea" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "arrowParens": "avoid", 6 | "printWidth": 80 7 | } 8 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import config from './config'; 2 | import service from './service'; 3 | 4 | function main() { 5 | service(); 6 | setInterval(service, config.pollPeriodSecond * 1000); 7 | } 8 | 9 | main(); 10 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | givpower-bot: 5 | image: ghcr.io/giveth/givpower-bot:main 6 | env_file: 7 | - ./config/.env 8 | restart: unless-stopped 9 | volumes: 10 | - ./config:/usr/src/app/config 11 | ports: 12 | - "3000" 13 | -------------------------------------------------------------------------------- /config/.env.template: -------------------------------------------------------------------------------- 1 | NODE_URL='https://rpc.gnosischain.com/' 2 | POLL_PERIOD_SECOND=300 3 | SUBGRAPH_ENDPOINT='https://api.thegraph.com/subgraphs/name/aminlatifi/givpower-deployment-six' 4 | GIVPOWER_CONTRACT_ADDRESS='0x898Baa558A401e59Cb2aA77bb8b2D89978Cf506F' 5 | PRIVATE_KEY='' 6 | UNLOCK_PER_TRANSACTION=10 7 | GAS_MAX_BASE_FEE=1.5 8 | GAS_PRIORITY_FEE=1.5 9 | NO_GAS_OVERRIDE=false 10 | -------------------------------------------------------------------------------- /src/service.ts: -------------------------------------------------------------------------------- 1 | import logger from './logger'; 2 | import { getCurrentRound, unlockPositions } from './blockchain'; 3 | import { getUnlockablePositions } from './subgraph'; 4 | 5 | const service = async () => { 6 | const positions = await getUnlockablePositions(); 7 | logger.info(positions); 8 | if (positions) await unlockPositions(positions); 9 | }; 10 | 11 | export default service; 12 | -------------------------------------------------------------------------------- /types/environment.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | 3 | declare global { 4 | namespace NodeJS { 5 | interface ProcessEnv { 6 | NODE_URL: string; 7 | NODE_ENV: 'develop' | 'production'; 8 | POLL_PERIOD_SECOND: number; 9 | SUBGRAPH_ENDPOINT: string; 10 | GIVPOWER_CONTRACT_ADDRESS: string; 11 | PRIVATE_KEY: string; 12 | UNLOCK_PER_TRANSACTION: number; 13 | GAS_MAX_BASE_FEE: number; 14 | GAS_PRIORITY_FEE: number; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Use the official Node.js 18 base image 2 | FROM node:18 3 | 4 | # Set the working directory inside the container 5 | WORKDIR /usr/src/app 6 | 7 | # Copy the src folder 8 | COPY build ./build 9 | 10 | # Copy the package.json and package-lock.json files 11 | COPY package*.json ./ 12 | 13 | # Install production dependencies 14 | RUN yarn 15 | 16 | # Expose the port that the Nest.js application will listen on 17 | EXPOSE 3000 18 | 19 | # Start the Nest.js application 20 | CMD [ "sh", "-c", "cd build && node src/index.js" ] 21 | -------------------------------------------------------------------------------- /src/logger.ts: -------------------------------------------------------------------------------- 1 | import config from './config'; 2 | import { createLogger, transports, format } from 'winston'; 3 | import * as util from 'util'; 4 | 5 | const combineMessageAndSplat = () => { 6 | return { 7 | transform: info => { 8 | // combine message and args if any 9 | info.message = util.format( 10 | info.message, 11 | ...(info[Symbol.for('splat')] || []), 12 | ); 13 | return info; 14 | }, 15 | }; 16 | }; 17 | const logger = createLogger({ 18 | transports: [new transports.Console()], 19 | level: process.env.NODE_ENV === 'production' ? 'info' : 'debug', 20 | format: format.combine( 21 | combineMessageAndSplat(), 22 | format.colorize(), 23 | format.timestamp(), 24 | format.printf(({ timestamp, level, message }) => { 25 | return `[${timestamp}] ${level}: ${message}`; 26 | }), 27 | ), 28 | }); 29 | 30 | export default logger; 31 | -------------------------------------------------------------------------------- /.github/workflows/manual-ssh.yml: -------------------------------------------------------------------------------- 1 | name: deploy-on-server 2 | on: 3 | workflow_dispatch: 4 | 5 | jobs: 6 | deploy: 7 | name: Deploy 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Install SSH key 11 | uses: shimataro/ssh-key-action@v2 12 | with: 13 | key: ${{ secrets.SSH_PRIVATEKEY }} 14 | known_hosts: ${{ secrets.KNOWN_HOSTS }} 15 | 16 | - name: SSH and Redeploy 17 | run: | 18 | ssh -o StrictHostKeyChecking=no -i $HOME/.ssh/id_rsa ${{ secrets.USERNAME }}@${{ secrets.HOST }} ' 19 | cd ~/givpower-bots/givpower-bot-optimism-production && 20 | docker compose stop givpower-bot && 21 | docker compose pull givpower-bot && 22 | docker compose up -d givpower-bot && 23 | cd ~/givpower-bots/givpower-bot-xdai-production && 24 | docker compose stop givpower-bot && 25 | docker compose pull givpower-bot && 26 | docker compose up -d givpower-bot && 27 | docker image prune -a --force 28 | ' 29 | -------------------------------------------------------------------------------- /.github/workflows/deploy-only.yml: -------------------------------------------------------------------------------- 1 | name: deploy latest givpower-bot image 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Set Up SSH 11 | uses: webfactory/ssh-agent@v0.9.0 12 | with: 13 | ssh-private-key: ${{ secrets.SSH_PRIVATEKEY }} 14 | - name: SSH and Redeploy 15 | uses: appleboy/ssh-action@v1.0.3 16 | with: 17 | host: ${{ secrets.HOST }} 18 | username: ${{ secrets.USER }} 19 | key: ${{ secrets.SSH_PRIVATEKEY }} 20 | port: ${{ secrets.SSH_PORT }} 21 | command_timeout: 20m 22 | script: | 23 | cd ~/givpower-bots/givpower-bot-optimism-production 24 | docker compose stop givpower-bot 25 | docker compose pull givpower-bot 26 | docker compose up -d givpower-bot 27 | cd ~/givpower-bots/givpower-bot-xdai-production 28 | docker compose stop givpower-bot 29 | docker compose pull givpower-bot 30 | docker compose up -d givpower-bot 31 | docker image prune -a --force 32 | cd ~/givpower-bots/givpower-bot-zkevm-production 33 | docker compose stop givpower-bot 34 | docker compose pull givpower-bot 35 | docker compose up -d givpower-bot 36 | docker image prune -a --force 37 | -------------------------------------------------------------------------------- /types/contracts/common.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | 6 | /** 7 | * Copied from hardhat project 8 | */ 9 | 10 | import type { Listener } from "@ethersproject/providers"; 11 | import type { Event, EventFilter } from "ethers"; 12 | 13 | export interface TypedEvent< 14 | TArgsArray extends Array = any, 15 | TArgsObject = any 16 | > extends Event { 17 | args: TArgsArray & TArgsObject; 18 | } 19 | 20 | export interface TypedEventFilter<_TEvent extends TypedEvent> 21 | extends EventFilter {} 22 | 23 | export interface TypedListener { 24 | (...listenerArg: [...__TypechainArgsArray, TEvent]): void; 25 | } 26 | 27 | type __TypechainArgsArray = T extends TypedEvent ? U : never; 28 | 29 | export interface OnEvent { 30 | ( 31 | eventFilter: TypedEventFilter, 32 | listener: TypedListener 33 | ): TRes; 34 | (eventName: string, listener: Listener): TRes; 35 | } 36 | 37 | export type MinEthersFactory = { 38 | deploy(...a: ARGS[]): Promise; 39 | }; 40 | 41 | export type GetContractTypeFromFactory = F extends MinEthersFactory< 42 | infer C, 43 | any 44 | > 45 | ? C 46 | : never; 47 | 48 | export type GetARGsTypeFromFactory = F extends MinEthersFactory 49 | ? Parameters 50 | : never; 51 | -------------------------------------------------------------------------------- /src/config.ts: -------------------------------------------------------------------------------- 1 | import * as dotenv from 'dotenv'; 2 | import path from 'path'; 3 | import logger from './logger'; 4 | 5 | dotenv.config({ 6 | path: path.resolve(__dirname, `../config/${process.env.NODE_ENV || ''}.env`), 7 | }); 8 | 9 | if (!process.env.GIVPOWER_CONTRACT_ADDRESS) { 10 | logger.error('GIVPOWER_CONTRACT_ADDRESS is not defined'); 11 | process.exit(-1); 12 | } 13 | 14 | if (!process.env.SUBGRAPH_ENDPOINT) { 15 | logger.error('SUBGRAPH_ENDPOINT is not defined'); 16 | process.exit(-1); 17 | } 18 | 19 | const config: { 20 | nodeUrl: string; 21 | pollPeriodSecond: number; 22 | subgraphEndpoint: string; 23 | subgraphDomain: string; 24 | givpowerContractAddress: string; 25 | privateKey: string; 26 | unlockPerTransaction: number; 27 | gasMaxBaseFee: number; 28 | gasPriorityFee: number; 29 | noGasOverride: boolean; 30 | } = { 31 | nodeUrl: process.env.NODE_URL || 'https://rpc.gnosischain.com/', 32 | pollPeriodSecond: Number(process.env.POLL_PERIOD_SECOND) || 60, 33 | subgraphEndpoint: process.env.SUBGRAPH_ENDPOINT, 34 | subgraphDomain: process.env.SUBGRAPH_DOMAIN || 'https://giveth.io', 35 | givpowerContractAddress: process.env.GIVPOWER_CONTRACT_ADDRESS, 36 | privateKey: process.env.PRIVATE_KEY || '', 37 | unlockPerTransaction: Number(process.env.UNLOCK_PER_TRANSACTION) || 1, 38 | gasMaxBaseFee: Number(process.env.GAS_MAX_BASE_FEE) || 2, 39 | gasPriorityFee: Number(process.env.GAS_PRIORITY_FEE) || 2, 40 | noGasOverride: process.env.NO_GAS_OVERRIDE === 'true', 41 | }; 42 | 43 | export default config; 44 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@giveth/givpower-bot", 3 | "version": "0.0.0", 4 | "description": "GIVpower bot", 5 | "main": "./dist/index.js", 6 | "scripts": { 7 | "start-dev": "NODE_ENV=develop ts-node --project ./tsconfig.json ./src/index.ts", 8 | "start": "cd build && node ./src/index.js", 9 | "tslint": "tslint -c tslint.json '{src,test,types}/**/*.ts'", 10 | "tslint:fix": "tslint -c tslint.json --fix '{src,test,types}/**/*.ts'", 11 | "clean": "rm -rf build", 12 | "build": "yarn clean && tsc -p tsconfig.json && cd build && ln -s ../config .", 13 | "serve": "yarn build && pm2 startOrRestart ecosystem.config.js --env develop" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/Giveth/givpower-bot.git" 18 | }, 19 | "keywords": [ 20 | "giveth", 21 | "giv", 22 | "givpower", 23 | "bot" 24 | ], 25 | "author": "Amin Latifi", 26 | "license": "ISC", 27 | "bugs": { 28 | "url": "https://github.com/Giveth/givpower-bot/issues" 29 | }, 30 | "homepage": "https://github.com/Giveth/givpower-bot#readme", 31 | "dependencies": { 32 | "dotenv": "^16.0.1", 33 | "ethers": "^5.6.9", 34 | "graphql": "^16.5.0", 35 | "graphql-request": "^4.3.0", 36 | "typescript": "^4.7.4", 37 | "winston": "^3.8.0" 38 | }, 39 | "devDependencies": { 40 | "@types/node": "^18.0.0", 41 | "prettier": "^2.4.1", 42 | "ts-node": "^8.10.2", 43 | "tslint": "^6.1.3", 44 | "tslint-config-prettier": "^1.18.0", 45 | "tslint-eslint-rules": "^5.4.0", 46 | "tslint-plugin-prettier": "^2.3.0" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultSeverity": "error", 3 | "extends": [ 4 | "tslint:recommended", 5 | "tslint-eslint-rules", 6 | "tslint-plugin-prettier", 7 | "tslint-config-prettier" 8 | ], 9 | "rules": { 10 | "prettier": [ 11 | true, 12 | { 13 | "arrowParens": "avoid", 14 | "singleQuote": true, 15 | "semi": true, 16 | "tabWidth": 4, 17 | "useTabs": true, 18 | "trailingComma": "all", 19 | "jsdoc-format": false 20 | } 21 | ], 22 | "jsdoc-format": false, 23 | "adjacent-overload-signatures": true, 24 | "quotemark": [ 25 | true, 26 | "single" 27 | ], 28 | "ban-types": false, 29 | "no-console": true, 30 | "no-namespace": false, 31 | "object-literal-sort-keys": false, 32 | "max-classes-per-file": false, 33 | "member-access": [ 34 | true, 35 | "no-public" 36 | ], 37 | "member-ordering": [ 38 | true, 39 | { 40 | "order": [ 41 | "public-static-field", 42 | "protected-static-field", 43 | "private-static-field", 44 | "public-instance-field", 45 | "protected-instance-field", 46 | "private-instance-field", 47 | "public-static-method", 48 | "protected-static-method", 49 | "private-static-method", 50 | "public-constructor", 51 | "protected-constructor", 52 | "private-constructor", 53 | "public-instance-method", 54 | "protected-instance-method", 55 | "private-instance-method" 56 | ] 57 | } 58 | ], 59 | "unified-signatures": false, 60 | "ordered-imports": false, 61 | "no-unused-expression": false, 62 | "callable-types": false, 63 | "variable-name": [ 64 | true, 65 | "ban-keywords", 66 | "check-format", 67 | "allow-leading-underscore", 68 | "allow-pascal-case" 69 | ], 70 | "whitespace": [ 71 | true, 72 | "check-branch", 73 | "check-module" 74 | ], 75 | "object-curly-spacing": true 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | workflow_dispatch: 8 | 9 | jobs: 10 | publish: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout 14 | uses: actions/checkout@v3 15 | - name: Set up QEMU 16 | uses: docker/setup-qemu-action@v2 17 | - name: Set up Docker Buildx 18 | uses: docker/setup-buildx-action@v2 19 | - name: Set up Node.js 18 20 | uses: actions/setup-node@v3 21 | with: 22 | node-version: 18 23 | - name: Install Dependencies 24 | run: yarn 25 | - name: Build 26 | run: yarn build 27 | - name: Login to GitHub Container Registry 28 | uses: docker/login-action@v2 29 | with: 30 | registry: ghcr.io 31 | username: ${{ github.actor }} 32 | password: ${{ secrets.GITHUB_TOKEN }} 33 | - name: Build and push 34 | uses: docker/build-push-action@v4 35 | with: 36 | context: . 37 | push: true 38 | tags: ghcr.io/giveth/givpower-bot:main 39 | deploy: 40 | needs: publish 41 | runs-on: ubuntu-latest 42 | steps: 43 | - name: SSH and Redeploy 44 | uses: appleboy/ssh-action@v1.0.0 45 | with: 46 | host: ${{ secrets.HOST }} 47 | username: ${{ secrets.USERNAME }} 48 | key: ${{ secrets.SSH_PRIVATEKEY }} 49 | port: ${{ secrets.SSH_PORT }} 50 | script: | 51 | cd ~/givpower-bots/givpower-bot-optimism-production 52 | docker compose stop givpower-bot 53 | docker compose pull givpower-bot 54 | docker compose up -d givpower-bot 55 | cd ~/givpower-bots/givpower-bot-xdai-production 56 | docker compose stop givpower-bot 57 | docker compose pull givpower-bot 58 | docker compose up -d givpower-bot 59 | docker image prune -a --force 60 | cd ~/givpower-bots/givpower-bot-zkevm-production 61 | docker compose stop givpower-bot 62 | docker compose pull givpower-bot 63 | docker compose up -d givpower-bot 64 | docker image prune -a --force 65 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Typescript build 51 | build/ 52 | 53 | # Optional npm cache directory 54 | .npm 55 | 56 | # Optional eslint cache 57 | .eslintcache 58 | 59 | # Microbundle cache 60 | .rpt2_cache/ 61 | .rts2_cache_cjs/ 62 | .rts2_cache_es/ 63 | .rts2_cache_umd/ 64 | 65 | # Optional REPL history 66 | .node_repl_history 67 | 68 | # Output of 'npm pack' 69 | *.tgz 70 | 71 | # Yarn Integrity file 72 | .yarn-integrity 73 | 74 | # dotenv environment variables file 75 | .env 76 | .env.test 77 | config/*.env 78 | 79 | # parcel-bundler cache (https://parceljs.org/) 80 | .cache 81 | 82 | # Next.js build output 83 | .next 84 | 85 | # Nuxt.js build / generate output 86 | .nuxt 87 | dist 88 | 89 | # Gatsby files 90 | .cache/ 91 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 92 | # https://nextjs.org/blog/next-9-1#public-directory-support 93 | # public 94 | 95 | # vuepress build output 96 | .vuepress/dist 97 | 98 | # Serverless directories 99 | .serverless/ 100 | 101 | # FuseBox cache 102 | .fusebox/ 103 | 104 | # DynamoDB Local files 105 | .dynamodb/ 106 | 107 | # TernJS port file 108 | .tern-port 109 | 110 | # IDE 111 | .idea -------------------------------------------------------------------------------- /src/blockchain.ts: -------------------------------------------------------------------------------- 1 | import { BigNumber, ethers } from 'ethers'; 2 | import config from './config'; 3 | import * as GIVpowerArtifact from '../abi/GIVpower.json'; 4 | import logger from './logger'; 5 | import { UnlockablePositions } from '../types/shared'; 6 | import { GIVpower } from '../types/contracts/GIVpower'; 7 | 8 | const { abi: GIVpowerABI } = GIVpowerArtifact; 9 | const { privateKey, givpowerContractAddress, nodeUrl } = config; 10 | const provider = new ethers.providers.JsonRpcProvider(nodeUrl); 11 | const signer = new ethers.Wallet(privateKey, provider); 12 | 13 | const contract = new ethers.Contract( 14 | givpowerContractAddress, 15 | GIVpowerABI, 16 | signer, 17 | ) as GIVpower; 18 | 19 | export const getCurrentRound = async (): Promise => { 20 | let currentRound; 21 | try { 22 | const response = (await contract.currentRound()) as ethers.BigNumber; 23 | currentRound = response.toNumber(); 24 | } catch (e) { 25 | logger.error('Error on calling GIVpower contract currentRound', e); 26 | } 27 | 28 | return currentRound; 29 | }; 30 | 31 | export const getCurrentBlock = async (): Promise< 32 | ethers.providers.Block | undefined 33 | > => { 34 | let currentBlock; 35 | try { 36 | currentBlock = await provider.getBlock('latest'); 37 | } catch (e) { 38 | logger.error('Error on getting latest blo', e); 39 | } 40 | 41 | return currentBlock; 42 | }; 43 | 44 | export const gwei2wei = (gweiAmount: number | string): ethers.BigNumber => 45 | ethers.utils.parseUnits(gweiAmount.toString(), 'gwei'); 46 | 47 | const executeUnlockTransaction = async ( 48 | nonce: number, 49 | round: string, 50 | userAddresses: string[], 51 | ) => { 52 | logger.debug(`Execute unlock, 53 | nonce: ${nonce}, 54 | round: ${round} 55 | userAddress: ${userAddresses}`); 56 | const maxFeePerGas = !config.noGasOverride 57 | ? gwei2wei(config.gasMaxBaseFee) 58 | : undefined; 59 | const maxPriorityFeePerGas = !config.noGasOverride 60 | ? gwei2wei(config.gasPriorityFee) 61 | : undefined; 62 | 63 | console.log('Transaction config:', { 64 | nonce, 65 | round, 66 | userAddresses, 67 | maxFeePerGas, 68 | maxPriorityFeePerGas, 69 | }); 70 | 71 | try { 72 | const tx = await contract.unlock(userAddresses, round, { 73 | nonce, 74 | maxFeePerGas, 75 | maxPriorityFeePerGas, 76 | }); 77 | logger.info('Transaction hash:', tx.hash); 78 | const txResponse = await tx.wait(); 79 | if (!txResponse.status) { 80 | logger.error(`Transaction ${tx.hash} failed!!`); 81 | } else { 82 | logger.info(`Transaction ${tx.hash} successfully executed`); 83 | } 84 | } catch (e) { 85 | logger.error('Error on executing unlock transaction', e); 86 | } 87 | }; 88 | 89 | export const unlockPositions = async ( 90 | unlockablePositions: UnlockablePositions, 91 | ) => { 92 | const rounds = Object.keys(unlockablePositions).sort( 93 | (_round1, _round2) => Number(_round1) - Number(_round2), 94 | ); 95 | if (rounds.length === 0) { 96 | logger.info('No unlockable position to unlock'); 97 | } 98 | let nonce = await signer.getTransactionCount('latest'); 99 | for (const round of rounds) { 100 | const userAddresses: string[] = unlockablePositions[round]; 101 | for ( 102 | let i = 0; 103 | i < userAddresses.length; 104 | i = i + config.unlockPerTransaction 105 | ) { 106 | const chunk = userAddresses.slice(i, i + config.unlockPerTransaction); 107 | 108 | await executeUnlockTransaction(nonce, round, chunk); 109 | nonce += 1; 110 | } 111 | } 112 | }; 113 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GIVpower Bot 2 | 3 | ## 1. Project Overview 4 | 5 | ### Purpose 6 | The GIVpower Bot is a service that automates the unlocking of GIVpower positions in the Giveth ecosystem. It monitors and manages the unlocking process of staked GIV tokens, ensuring smooth operation of the GIVpower system. 7 | 8 | ### Key Features 9 | - Automated unlocking of GIVpower positions 10 | - Integration with EVM blockchains 11 | - Subgraph querying for position data 12 | - Configurable service intervals 13 | - Configurable unlock batch size 14 | 15 | ### Live Links 16 | - Mainnet: [Giveth Platform](https://giveth.io) 17 | - Documentation: [Giveth Docs](https://docs.giveth.io) 18 | 19 | ## 2. Architecture Overview 20 | 21 | ### System Diagram 22 | ```mermaid 23 | graph TD 24 | A[GIVpower Bot] --> B[Ethereum Blockchain] 25 | A --> C[The Graph Subgraph] 26 | A --> D[Logger] 27 | B --> E[Smart Contracts] 28 | C --> F[Position Data] 29 | ``` 30 | 31 | ### Tech Stack 32 | - TypeScript 33 | - Ethers.js for blockchain interaction 34 | - GraphQL for subgraph queries 35 | - Winston for logging 36 | - PM2 for process management 37 | 38 | ### Data Flow 39 | 1. Bot queries subgraph for unlockable positions 40 | 2. Executes unlock transactions when conditions are met 41 | 3. Logs all actions and results 42 | 43 | ## 3. Getting Started 44 | 45 | ### Prerequisites 46 | - Node.js (v18 or higher) 47 | - Yarn package manager 48 | - TypeScript (v4.7.4 or higher) 49 | - Access to Ethereum node (Infura/Alchemy) 50 | - PM2 (for production deployment) 51 | 52 | ### Installation Steps 53 | 1. Clone the repository: 54 | ```bash 55 | git clone https://github.com/Giveth/givpower-bot.git 56 | cd givpower-bot 57 | ``` 58 | 59 | 2. Install dependencies: 60 | ```bash 61 | yarn install 62 | ``` 63 | 64 | 3. Build the project: 65 | ```bash 66 | yarn build 67 | ``` 68 | 69 | ### Configuration 70 | Create a `.env` file in the config directory by copying the `.env.example` file. 71 | 72 | **NOTE:** You can create `.env` file and set `NODE_ENV` in command line to read the correct environment variables. 73 | 74 | ## 4. Usage Instructions 75 | 76 | ### Running the Application 77 | - Development mode: 78 | 79 | Create a `develop.env` file in the config directory by copying the `.env.example` file. Fill in the correct values for the environment variables. 80 | ```bash 81 | yarn start-dev 82 | ``` 83 | 84 | - Production mode: 85 | 86 | Create `.env` file in the config directory by copying the `.env.example` file. Fill in the correct values for the environment variables. 87 | ```bash 88 | yarn serve 89 | ``` 90 | 91 | ### Common Tasks 92 | - Clean build directory: 93 | ```bash 94 | yarn clean 95 | ``` 96 | 97 | - Rebuild project: 98 | ```bash 99 | yarn build 100 | ``` 101 | 102 | ## 5. Deployment Process 103 | 104 | ### Environments 105 | - Copy `.env.example` file to `.env` in the config directory. 106 | ### Deployment Steps 107 | - Run `docker compose up -d` to start the service. 108 | 109 | ### CI/CD Integration 110 | The project uses GitHub Actions for CI/CD. Workflows are defined in the `.github/workflows` directory. 111 | 112 | ## 6. Troubleshooting 113 | 114 | ### Common Issues 115 | 1. **Connection Issues**: Ensure your NODE_URL is working 116 | 2. **Transaction Failures**: Check gas prices, account corresponding to `PRIVATE_KEY` has enough balance, GIVPOWER_CONTRACT_ADDRESS, and network congestion 117 | 3. **Subgraph Errors**: Verify subgraph health and synchronization 118 | 119 | ### Logs and Debugging 120 | - Logs are stored in the `logs` directory 121 | - Use Winston logger for detailed debugging 122 | -------------------------------------------------------------------------------- /src/subgraph.ts: -------------------------------------------------------------------------------- 1 | import { gql, request } from 'graphql-request'; 2 | import config from './config'; 3 | import logger from './logger'; 4 | import { getCurrentBlock, getCurrentRound } from './blockchain'; 5 | import { ethers } from 'ethers'; 6 | import { UnlockablePositions } from '../types/shared'; 7 | 8 | /** 9 | * This desirable value is a little less than `POLL_PERIOD_SECOND / Network Average Block Time` 10 | * If POLL_PERIOD_SECOND 300 seconds (5m) 11 | * Mainnet < 300 / 20 = 15 12 | * Gnosis < 300 / 5 = 60 13 | */ 14 | const SUBGRAPH_NETWORK_MAX_BLOCK_GAP = 10; 15 | 16 | let acceptableNetworkGap = SUBGRAPH_NETWORK_MAX_BLOCK_GAP; 17 | 18 | const checkSubgraphHealth = ( 19 | networkLatestBlock: ethers.providers.Block, 20 | subgraphNetworkNumber, 21 | ): boolean => { 22 | const { number: networkLatestBlockNumber } = networkLatestBlock; 23 | logger.info('network latest block:', networkLatestBlockNumber); 24 | logger.info('subgraph network number:', subgraphNetworkNumber); 25 | if ( 26 | subgraphNetworkNumber + acceptableNetworkGap <= 27 | networkLatestBlockNumber 28 | ) { 29 | logger.error(`Subgraph is ${ 30 | networkLatestBlockNumber - subgraphNetworkNumber 31 | } behind network! 32 | Network Latest Block Number: ${networkLatestBlockNumber} 33 | Subgraph block number: ${subgraphNetworkNumber} 34 | `); 35 | 36 | // Next time use the data if subgraph block number will be good for this run! 37 | acceptableNetworkGap += SUBGRAPH_NETWORK_MAX_BLOCK_GAP; 38 | return false; 39 | } 40 | 41 | acceptableNetworkGap = Math.max( 42 | SUBGRAPH_NETWORK_MAX_BLOCK_GAP, 43 | acceptableNetworkGap - SUBGRAPH_NETWORK_MAX_BLOCK_GAP, 44 | ); 45 | return true; 46 | }; 47 | 48 | const getSubgraphData = async () => { 49 | let currentBlock; 50 | let subgraphResponse; 51 | try { 52 | currentBlock = (await getCurrentBlock()) as ethers.providers.Block; 53 | } catch (e) { 54 | logger.error('Error on getting latest block from network', e); 55 | return undefined; 56 | } 57 | 58 | if (!currentBlock) { 59 | logger.error('Current block is undefined!'); 60 | return undefined; 61 | } 62 | 63 | const query = gql` 64 | query getUnlockablePositions($lastBlockTimeStamp: Int!) { 65 | tokenLocks( 66 | first: 100 67 | where: { unlocked: false, unlockableAt_lte: $lastBlockTimeStamp } 68 | orderBy: untilRound 69 | orderDirection: asc 70 | ) { 71 | user { 72 | id 73 | } 74 | untilRound 75 | } 76 | _meta { 77 | block { 78 | number 79 | } 80 | } 81 | } 82 | `; 83 | 84 | try { 85 | console.log('subgraphEndpoint', config.subgraphEndpoint); 86 | subgraphResponse = await request( 87 | config.subgraphEndpoint, 88 | query, 89 | { 90 | lastBlockTimeStamp: currentBlock.timestamp, 91 | }, 92 | { origin: config.subgraphDomain }, 93 | ); 94 | } catch (e) { 95 | logger.error( 96 | 'Error getting locked positions from subgraph', 97 | JSON.stringify(e, null, 2), 98 | ); 99 | return undefined; 100 | } 101 | 102 | const subgraphBlockNumber = subgraphResponse?._meta?.block?.number; 103 | const isOk = checkSubgraphHealth(currentBlock, subgraphBlockNumber); 104 | return isOk && subgraphResponse; 105 | }; 106 | 107 | export const getUnlockablePositions = async (): Promise< 108 | UnlockablePositions | undefined 109 | > => { 110 | const subgraphResponse = await getSubgraphData(); 111 | 112 | if (!subgraphResponse) return undefined; 113 | 114 | interface TokenLock { 115 | user: { id: string }; 116 | untilRound: string; 117 | } 118 | 119 | const tokenLocks: TokenLock[] = subgraphResponse.tokenLocks; 120 | 121 | const result: UnlockablePositions = {}; 122 | 123 | tokenLocks.forEach(tokenLock => { 124 | const { 125 | user: { id: userAddress }, 126 | untilRound, 127 | } = tokenLock; 128 | if (result[untilRound]) { 129 | result[untilRound].push(userAddress); 130 | } else { 131 | result[untilRound] = [userAddress]; 132 | } 133 | }); 134 | 135 | for (const round of Object.keys(result)) { 136 | result[round] = Array.from(new Set(result[round])); // make unique 137 | } 138 | 139 | return result; 140 | }; 141 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Basic Options */ 4 | "target": "es2019" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */, 5 | "module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */, 6 | "lib": [ 7 | /* Specify library files to be included in the compilation. */ 8 | "es2018", 9 | "es2019", 10 | "esnext.asynciterable" 11 | ], 12 | // "allowJs": true, /* Allow javascript files to be compiled. */ 13 | // "checkJs": true, /* Report errors in .js files. */ 14 | // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */ 15 | "declaration": true /* Generates corresponding '.d.ts' file. */, 16 | "sourceMap": true /* Generates corresponding '.map' file. */, 17 | // "outFile": "./", /* Concatenate and emit output to single file. */ 18 | "outDir": "./build" /* Redirect output structure to the directory. */, 19 | "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */ 20 | "removeComments": false /* Do not emit comments to output. */, 21 | // "noEmit": true, /* Do not emit outputs. */ 22 | "importHelpers": true /* Import emit helpers from 'tslib'. */, 23 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */ 24 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */ 25 | /* Strict Type-Checking Options */ 26 | "strict": false /* Enable all strict type-checking options. */, 27 | "noImplicitAny": false /* Raise error on expressions and declarations with an implied 'any' type. */, 28 | "strictNullChecks": true /* Enable strict null checks. */, 29 | "strictFunctionTypes": true /* Enable strict checking of function types. */, 30 | "strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */, 31 | "noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */, 32 | "alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */, 33 | /* Additional Checks */ 34 | "noUnusedLocals": false /* Report errors on unused locals. */, 35 | "noUnusedParameters": false /* Report errors on unused parameters. */, 36 | "noImplicitReturns": true /* Report error when not all code paths in function return a value. */, 37 | "noFallthroughCasesInSwitch": true /* Report errors for fallthrough cases in switch statement. */, 38 | /* Module Resolution Options */ 39 | "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, 40 | // "baseUrl": ".", /* Base directory to resolve non-absolute module names. */ 41 | // "paths": { 42 | // "@1hive/honeyswap-sdk": ["../uniswap-sdk/src"] 43 | // }, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */ 44 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */ 45 | "typeRoots": ["./node_modules/@types", "./types"], /* List of folders to include type definitions from. */ 46 | // "types": [], /* Type declaration files to be included in compilation. */ 47 | // "allowSyntheticDefaultImports": false /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */, 48 | "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */, 49 | // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */ 50 | "forceConsistentCasingInFileNames": true, 51 | "skipLibCheck": true /* Don't check libs typings - due to https://github.com/prisma/graphql-request/issues/26 */, 52 | /* Source Map Options */ 53 | // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */ 54 | // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */ 55 | // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */ 56 | // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */ 57 | /* Experimental Options */ 58 | "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */, 59 | "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */, 60 | "resolveJsonModule": true 61 | }, 62 | "exclude": ["./node_modules", "./build"] 63 | } 64 | -------------------------------------------------------------------------------- /abi/GIVpower.json: -------------------------------------------------------------------------------- 1 | { 2 | "abi": [ 3 | { 4 | "inputs": [], 5 | "name": "CannotUnlockUntilRoundIsFinished", 6 | "type": "error" 7 | }, 8 | { 9 | "inputs": [], 10 | "name": "NotEnoughBalanceToLock", 11 | "type": "error" 12 | }, 13 | { 14 | "inputs": [], 15 | "name": "TokenNonTransferable", 16 | "type": "error" 17 | }, 18 | { 19 | "inputs": [], 20 | "name": "TokensAreLocked", 21 | "type": "error" 22 | }, 23 | { 24 | "anonymous": false, 25 | "inputs": [ 26 | { 27 | "indexed": true, 28 | "internalType": "address", 29 | "name": "owner", 30 | "type": "address" 31 | }, 32 | { 33 | "indexed": true, 34 | "internalType": "address", 35 | "name": "spender", 36 | "type": "address" 37 | }, 38 | { 39 | "indexed": false, 40 | "internalType": "uint256", 41 | "name": "value", 42 | "type": "uint256" 43 | } 44 | ], 45 | "name": "Approval", 46 | "type": "event" 47 | }, 48 | { 49 | "anonymous": false, 50 | "inputs": [ 51 | { 52 | "indexed": false, 53 | "internalType": "address", 54 | "name": "account", 55 | "type": "address" 56 | }, 57 | { 58 | "indexed": false, 59 | "internalType": "uint256", 60 | "name": "amount", 61 | "type": "uint256" 62 | }, 63 | { 64 | "indexed": false, 65 | "internalType": "uint256", 66 | "name": "rounds", 67 | "type": "uint256" 68 | }, 69 | { 70 | "indexed": false, 71 | "internalType": "uint256", 72 | "name": "untilRound", 73 | "type": "uint256" 74 | } 75 | ], 76 | "name": "GardenTokenLocked", 77 | "type": "event" 78 | }, 79 | { 80 | "anonymous": false, 81 | "inputs": [ 82 | { 83 | "indexed": false, 84 | "internalType": "address", 85 | "name": "account", 86 | "type": "address" 87 | }, 88 | { 89 | "indexed": false, 90 | "internalType": "uint256", 91 | "name": "amount", 92 | "type": "uint256" 93 | }, 94 | { 95 | "indexed": false, 96 | "internalType": "uint256", 97 | "name": "round", 98 | "type": "uint256" 99 | } 100 | ], 101 | "name": "GardenTokenUnlocked", 102 | "type": "event" 103 | }, 104 | { 105 | "anonymous": false, 106 | "inputs": [ 107 | { 108 | "indexed": false, 109 | "internalType": "uint8", 110 | "name": "version", 111 | "type": "uint8" 112 | } 113 | ], 114 | "name": "Initialized", 115 | "type": "event" 116 | }, 117 | { 118 | "anonymous": false, 119 | "inputs": [ 120 | { 121 | "indexed": true, 122 | "internalType": "address", 123 | "name": "previousOwner", 124 | "type": "address" 125 | }, 126 | { 127 | "indexed": true, 128 | "internalType": "address", 129 | "name": "newOwner", 130 | "type": "address" 131 | } 132 | ], 133 | "name": "OwnershipTransferred", 134 | "type": "event" 135 | }, 136 | { 137 | "anonymous": false, 138 | "inputs": [ 139 | { 140 | "indexed": false, 141 | "internalType": "address", 142 | "name": "account", 143 | "type": "address" 144 | }, 145 | { 146 | "indexed": false, 147 | "internalType": "uint256", 148 | "name": "powerAmount", 149 | "type": "uint256" 150 | }, 151 | { 152 | "indexed": false, 153 | "internalType": "uint256", 154 | "name": "rounds", 155 | "type": "uint256" 156 | }, 157 | { 158 | "indexed": false, 159 | "internalType": "uint256", 160 | "name": "untilRound", 161 | "type": "uint256" 162 | } 163 | ], 164 | "name": "PowerLocked", 165 | "type": "event" 166 | }, 167 | { 168 | "anonymous": false, 169 | "inputs": [ 170 | { 171 | "indexed": false, 172 | "internalType": "address", 173 | "name": "account", 174 | "type": "address" 175 | }, 176 | { 177 | "indexed": false, 178 | "internalType": "uint256", 179 | "name": "powerAmount", 180 | "type": "uint256" 181 | }, 182 | { 183 | "indexed": false, 184 | "internalType": "uint256", 185 | "name": "round", 186 | "type": "uint256" 187 | } 188 | ], 189 | "name": "PowerUnlocked", 190 | "type": "event" 191 | }, 192 | { 193 | "anonymous": false, 194 | "inputs": [ 195 | { 196 | "indexed": false, 197 | "internalType": "uint256", 198 | "name": "reward", 199 | "type": "uint256" 200 | } 201 | ], 202 | "name": "RewardAdded", 203 | "type": "event" 204 | }, 205 | { 206 | "anonymous": false, 207 | "inputs": [ 208 | { 209 | "indexed": true, 210 | "internalType": "address", 211 | "name": "user", 212 | "type": "address" 213 | }, 214 | { 215 | "indexed": false, 216 | "internalType": "uint256", 217 | "name": "reward", 218 | "type": "uint256" 219 | } 220 | ], 221 | "name": "RewardPaid", 222 | "type": "event" 223 | }, 224 | { 225 | "anonymous": false, 226 | "inputs": [ 227 | { 228 | "indexed": true, 229 | "internalType": "address", 230 | "name": "user", 231 | "type": "address" 232 | }, 233 | { 234 | "indexed": false, 235 | "internalType": "uint256", 236 | "name": "amount", 237 | "type": "uint256" 238 | } 239 | ], 240 | "name": "Staked", 241 | "type": "event" 242 | }, 243 | { 244 | "anonymous": false, 245 | "inputs": [ 246 | { 247 | "indexed": true, 248 | "internalType": "address", 249 | "name": "from", 250 | "type": "address" 251 | }, 252 | { 253 | "indexed": true, 254 | "internalType": "address", 255 | "name": "to", 256 | "type": "address" 257 | }, 258 | { 259 | "indexed": false, 260 | "internalType": "uint256", 261 | "name": "value", 262 | "type": "uint256" 263 | } 264 | ], 265 | "name": "Transfer", 266 | "type": "event" 267 | }, 268 | { 269 | "anonymous": false, 270 | "inputs": [ 271 | { 272 | "indexed": true, 273 | "internalType": "address", 274 | "name": "user", 275 | "type": "address" 276 | }, 277 | { 278 | "indexed": false, 279 | "internalType": "uint256", 280 | "name": "amount", 281 | "type": "uint256" 282 | } 283 | ], 284 | "name": "Withdrawn", 285 | "type": "event" 286 | }, 287 | { 288 | "inputs": [ 289 | { 290 | "internalType": "address", 291 | "name": "_tokenDistribution", 292 | "type": "address" 293 | }, 294 | { 295 | "internalType": "uint256", 296 | "name": "_duration", 297 | "type": "uint256" 298 | } 299 | ], 300 | "name": "__GIVUnipool_init", 301 | "outputs": [], 302 | "stateMutability": "nonpayable", 303 | "type": "function" 304 | }, 305 | { 306 | "inputs": [ 307 | { 308 | "internalType": "uint256", 309 | "name": "_initialDate", 310 | "type": "uint256" 311 | }, 312 | { 313 | "internalType": "uint256", 314 | "name": "_roundDuration", 315 | "type": "uint256" 316 | }, 317 | { 318 | "internalType": "address", 319 | "name": "_tokenManager", 320 | "type": "address" 321 | } 322 | ], 323 | "name": "__GardenTokenLock_init", 324 | "outputs": [], 325 | "stateMutability": "nonpayable", 326 | "type": "function" 327 | }, 328 | { 329 | "inputs": [ 330 | { 331 | "internalType": "address", 332 | "name": "tokenManager", 333 | "type": "address" 334 | } 335 | ], 336 | "name": "__TokenManagerHook_initialize", 337 | "outputs": [], 338 | "stateMutability": "nonpayable", 339 | "type": "function" 340 | }, 341 | { 342 | "inputs": [ 343 | { 344 | "internalType": "address", 345 | "name": "", 346 | "type": "address" 347 | }, 348 | { 349 | "internalType": "uint256", 350 | "name": "", 351 | "type": "uint256" 352 | } 353 | ], 354 | "name": "_powerUntilRound", 355 | "outputs": [ 356 | { 357 | "internalType": "uint256", 358 | "name": "", 359 | "type": "uint256" 360 | } 361 | ], 362 | "stateMutability": "view", 363 | "type": "function" 364 | }, 365 | { 366 | "inputs": [ 367 | { 368 | "internalType": "address", 369 | "name": "", 370 | "type": "address" 371 | }, 372 | { 373 | "internalType": "address", 374 | "name": "", 375 | "type": "address" 376 | } 377 | ], 378 | "name": "allowance", 379 | "outputs": [ 380 | { 381 | "internalType": "uint256", 382 | "name": "", 383 | "type": "uint256" 384 | } 385 | ], 386 | "stateMutability": "pure", 387 | "type": "function" 388 | }, 389 | { 390 | "inputs": [ 391 | { 392 | "internalType": "address", 393 | "name": "", 394 | "type": "address" 395 | }, 396 | { 397 | "internalType": "uint256", 398 | "name": "", 399 | "type": "uint256" 400 | } 401 | ], 402 | "name": "approve", 403 | "outputs": [ 404 | { 405 | "internalType": "bool", 406 | "name": "", 407 | "type": "bool" 408 | } 409 | ], 410 | "stateMutability": "pure", 411 | "type": "function" 412 | }, 413 | { 414 | "inputs": [ 415 | { 416 | "internalType": "address", 417 | "name": "account", 418 | "type": "address" 419 | } 420 | ], 421 | "name": "balanceOf", 422 | "outputs": [ 423 | { 424 | "internalType": "uint256", 425 | "name": "", 426 | "type": "uint256" 427 | } 428 | ], 429 | "stateMutability": "view", 430 | "type": "function" 431 | }, 432 | { 433 | "inputs": [ 434 | { 435 | "internalType": "uint256", 436 | "name": "_amount", 437 | "type": "uint256" 438 | }, 439 | { 440 | "internalType": "uint256", 441 | "name": "_rounds", 442 | "type": "uint256" 443 | } 444 | ], 445 | "name": "calculatePower", 446 | "outputs": [ 447 | { 448 | "internalType": "uint256", 449 | "name": "", 450 | "type": "uint256" 451 | } 452 | ], 453 | "stateMutability": "pure", 454 | "type": "function" 455 | }, 456 | { 457 | "inputs": [ 458 | { 459 | "internalType": "address", 460 | "name": "account", 461 | "type": "address" 462 | } 463 | ], 464 | "name": "claimableStream", 465 | "outputs": [ 466 | { 467 | "internalType": "uint256", 468 | "name": "", 469 | "type": "uint256" 470 | } 471 | ], 472 | "stateMutability": "view", 473 | "type": "function" 474 | }, 475 | { 476 | "inputs": [], 477 | "name": "currentRound", 478 | "outputs": [ 479 | { 480 | "internalType": "uint256", 481 | "name": "", 482 | "type": "uint256" 483 | } 484 | ], 485 | "stateMutability": "view", 486 | "type": "function" 487 | }, 488 | { 489 | "inputs": [], 490 | "name": "decimals", 491 | "outputs": [ 492 | { 493 | "internalType": "uint8", 494 | "name": "", 495 | "type": "uint8" 496 | } 497 | ], 498 | "stateMutability": "view", 499 | "type": "function" 500 | }, 501 | { 502 | "inputs": [ 503 | { 504 | "internalType": "address", 505 | "name": "", 506 | "type": "address" 507 | }, 508 | { 509 | "internalType": "uint256", 510 | "name": "", 511 | "type": "uint256" 512 | } 513 | ], 514 | "name": "decreaseAllowance", 515 | "outputs": [ 516 | { 517 | "internalType": "bool", 518 | "name": "", 519 | "type": "bool" 520 | } 521 | ], 522 | "stateMutability": "pure", 523 | "type": "function" 524 | }, 525 | { 526 | "inputs": [], 527 | "name": "duration", 528 | "outputs": [ 529 | { 530 | "internalType": "uint256", 531 | "name": "", 532 | "type": "uint256" 533 | } 534 | ], 535 | "stateMutability": "view", 536 | "type": "function" 537 | }, 538 | { 539 | "inputs": [ 540 | { 541 | "internalType": "address", 542 | "name": "account", 543 | "type": "address" 544 | } 545 | ], 546 | "name": "earned", 547 | "outputs": [ 548 | { 549 | "internalType": "uint256", 550 | "name": "", 551 | "type": "uint256" 552 | } 553 | ], 554 | "stateMutability": "view", 555 | "type": "function" 556 | }, 557 | { 558 | "inputs": [], 559 | "name": "getReward", 560 | "outputs": [], 561 | "stateMutability": "nonpayable", 562 | "type": "function" 563 | }, 564 | { 565 | "inputs": [], 566 | "name": "getTimestamp", 567 | "outputs": [ 568 | { 569 | "internalType": "uint256", 570 | "name": "", 571 | "type": "uint256" 572 | } 573 | ], 574 | "stateMutability": "view", 575 | "type": "function" 576 | }, 577 | { 578 | "inputs": [], 579 | "name": "getTokenManager", 580 | "outputs": [ 581 | { 582 | "internalType": "address", 583 | "name": "", 584 | "type": "address" 585 | } 586 | ], 587 | "stateMutability": "view", 588 | "type": "function" 589 | }, 590 | { 591 | "inputs": [ 592 | { 593 | "internalType": "address", 594 | "name": "", 595 | "type": "address" 596 | }, 597 | { 598 | "internalType": "uint256", 599 | "name": "", 600 | "type": "uint256" 601 | } 602 | ], 603 | "name": "increaseAllowance", 604 | "outputs": [ 605 | { 606 | "internalType": "bool", 607 | "name": "", 608 | "type": "bool" 609 | } 610 | ], 611 | "stateMutability": "pure", 612 | "type": "function" 613 | }, 614 | { 615 | "inputs": [], 616 | "name": "initialDate", 617 | "outputs": [ 618 | { 619 | "internalType": "uint256", 620 | "name": "", 621 | "type": "uint256" 622 | } 623 | ], 624 | "stateMutability": "view", 625 | "type": "function" 626 | }, 627 | { 628 | "inputs": [ 629 | { 630 | "internalType": "uint256", 631 | "name": "_initialDate", 632 | "type": "uint256" 633 | }, 634 | { 635 | "internalType": "uint256", 636 | "name": "_roundDuration", 637 | "type": "uint256" 638 | }, 639 | { 640 | "internalType": "address", 641 | "name": "_tokenManager", 642 | "type": "address" 643 | }, 644 | { 645 | "internalType": "address", 646 | "name": "_tokenDistribution", 647 | "type": "address" 648 | }, 649 | { 650 | "internalType": "uint256", 651 | "name": "_duration", 652 | "type": "uint256" 653 | } 654 | ], 655 | "name": "initialize", 656 | "outputs": [], 657 | "stateMutability": "nonpayable", 658 | "type": "function" 659 | }, 660 | { 661 | "inputs": [], 662 | "name": "lastTimeRewardApplicable", 663 | "outputs": [ 664 | { 665 | "internalType": "uint256", 666 | "name": "", 667 | "type": "uint256" 668 | } 669 | ], 670 | "stateMutability": "view", 671 | "type": "function" 672 | }, 673 | { 674 | "inputs": [], 675 | "name": "lastUpdateTime", 676 | "outputs": [ 677 | { 678 | "internalType": "uint256", 679 | "name": "", 680 | "type": "uint256" 681 | } 682 | ], 683 | "stateMutability": "view", 684 | "type": "function" 685 | }, 686 | { 687 | "inputs": [ 688 | { 689 | "internalType": "uint256", 690 | "name": "_amount", 691 | "type": "uint256" 692 | }, 693 | { 694 | "internalType": "uint256", 695 | "name": "_rounds", 696 | "type": "uint256" 697 | } 698 | ], 699 | "name": "lock", 700 | "outputs": [], 701 | "stateMutability": "nonpayable", 702 | "type": "function" 703 | }, 704 | { 705 | "inputs": [ 706 | { 707 | "internalType": "address", 708 | "name": "", 709 | "type": "address" 710 | } 711 | ], 712 | "name": "lockedTokens", 713 | "outputs": [ 714 | { 715 | "internalType": "uint256", 716 | "name": "totalAmountLocked", 717 | "type": "uint256" 718 | } 719 | ], 720 | "stateMutability": "view", 721 | "type": "function" 722 | }, 723 | { 724 | "inputs": [], 725 | "name": "name", 726 | "outputs": [ 727 | { 728 | "internalType": "string", 729 | "name": "", 730 | "type": "string" 731 | } 732 | ], 733 | "stateMutability": "view", 734 | "type": "function" 735 | }, 736 | { 737 | "inputs": [ 738 | { 739 | "internalType": "uint256", 740 | "name": "reward", 741 | "type": "uint256" 742 | } 743 | ], 744 | "name": "notifyRewardAmount", 745 | "outputs": [], 746 | "stateMutability": "nonpayable", 747 | "type": "function" 748 | }, 749 | { 750 | "inputs": [ 751 | { 752 | "internalType": "address", 753 | "name": "_holder", 754 | "type": "address" 755 | }, 756 | { 757 | "internalType": "address", 758 | "name": "_spender", 759 | "type": "address" 760 | }, 761 | { 762 | "internalType": "uint256", 763 | "name": "_amount", 764 | "type": "uint256" 765 | } 766 | ], 767 | "name": "onApprove", 768 | "outputs": [ 769 | { 770 | "internalType": "bool", 771 | "name": "", 772 | "type": "bool" 773 | } 774 | ], 775 | "stateMutability": "nonpayable", 776 | "type": "function" 777 | }, 778 | { 779 | "inputs": [ 780 | { 781 | "internalType": "uint256", 782 | "name": "_hookId", 783 | "type": "uint256" 784 | }, 785 | { 786 | "internalType": "address", 787 | "name": "_token", 788 | "type": "address" 789 | } 790 | ], 791 | "name": "onRegisterAsHook", 792 | "outputs": [], 793 | "stateMutability": "nonpayable", 794 | "type": "function" 795 | }, 796 | { 797 | "inputs": [ 798 | { 799 | "internalType": "uint256", 800 | "name": "_hookId", 801 | "type": "uint256" 802 | }, 803 | { 804 | "internalType": "address", 805 | "name": "_token", 806 | "type": "address" 807 | } 808 | ], 809 | "name": "onRevokeAsHook", 810 | "outputs": [], 811 | "stateMutability": "nonpayable", 812 | "type": "function" 813 | }, 814 | { 815 | "inputs": [ 816 | { 817 | "internalType": "address", 818 | "name": "_from", 819 | "type": "address" 820 | }, 821 | { 822 | "internalType": "address", 823 | "name": "_to", 824 | "type": "address" 825 | }, 826 | { 827 | "internalType": "uint256", 828 | "name": "_amount", 829 | "type": "uint256" 830 | } 831 | ], 832 | "name": "onTransfer", 833 | "outputs": [ 834 | { 835 | "internalType": "bool", 836 | "name": "", 837 | "type": "bool" 838 | } 839 | ], 840 | "stateMutability": "nonpayable", 841 | "type": "function" 842 | }, 843 | { 844 | "inputs": [], 845 | "name": "owner", 846 | "outputs": [ 847 | { 848 | "internalType": "address", 849 | "name": "", 850 | "type": "address" 851 | } 852 | ], 853 | "stateMutability": "view", 854 | "type": "function" 855 | }, 856 | { 857 | "inputs": [], 858 | "name": "periodFinish", 859 | "outputs": [ 860 | { 861 | "internalType": "uint256", 862 | "name": "", 863 | "type": "uint256" 864 | } 865 | ], 866 | "stateMutability": "view", 867 | "type": "function" 868 | }, 869 | { 870 | "inputs": [], 871 | "name": "renounceOwnership", 872 | "outputs": [], 873 | "stateMutability": "nonpayable", 874 | "type": "function" 875 | }, 876 | { 877 | "inputs": [], 878 | "name": "rewardDistribution", 879 | "outputs": [ 880 | { 881 | "internalType": "address", 882 | "name": "", 883 | "type": "address" 884 | } 885 | ], 886 | "stateMutability": "view", 887 | "type": "function" 888 | }, 889 | { 890 | "inputs": [], 891 | "name": "rewardPerToken", 892 | "outputs": [ 893 | { 894 | "internalType": "uint256", 895 | "name": "", 896 | "type": "uint256" 897 | } 898 | ], 899 | "stateMutability": "view", 900 | "type": "function" 901 | }, 902 | { 903 | "inputs": [], 904 | "name": "rewardPerTokenStored", 905 | "outputs": [ 906 | { 907 | "internalType": "uint256", 908 | "name": "", 909 | "type": "uint256" 910 | } 911 | ], 912 | "stateMutability": "view", 913 | "type": "function" 914 | }, 915 | { 916 | "inputs": [], 917 | "name": "rewardRate", 918 | "outputs": [ 919 | { 920 | "internalType": "uint256", 921 | "name": "", 922 | "type": "uint256" 923 | } 924 | ], 925 | "stateMutability": "view", 926 | "type": "function" 927 | }, 928 | { 929 | "inputs": [ 930 | { 931 | "internalType": "address", 932 | "name": "", 933 | "type": "address" 934 | } 935 | ], 936 | "name": "rewards", 937 | "outputs": [ 938 | { 939 | "internalType": "uint256", 940 | "name": "", 941 | "type": "uint256" 942 | } 943 | ], 944 | "stateMutability": "view", 945 | "type": "function" 946 | }, 947 | { 948 | "inputs": [], 949 | "name": "roundDuration", 950 | "outputs": [ 951 | { 952 | "internalType": "uint256", 953 | "name": "", 954 | "type": "uint256" 955 | } 956 | ], 957 | "stateMutability": "view", 958 | "type": "function" 959 | }, 960 | { 961 | "inputs": [ 962 | { 963 | "internalType": "address", 964 | "name": "_rewardDistribution", 965 | "type": "address" 966 | } 967 | ], 968 | "name": "setRewardDistribution", 969 | "outputs": [], 970 | "stateMutability": "nonpayable", 971 | "type": "function" 972 | }, 973 | { 974 | "inputs": [], 975 | "name": "symbol", 976 | "outputs": [ 977 | { 978 | "internalType": "string", 979 | "name": "", 980 | "type": "string" 981 | } 982 | ], 983 | "stateMutability": "view", 984 | "type": "function" 985 | }, 986 | { 987 | "inputs": [], 988 | "name": "token", 989 | "outputs": [ 990 | { 991 | "internalType": "contract IERC20", 992 | "name": "", 993 | "type": "address" 994 | } 995 | ], 996 | "stateMutability": "view", 997 | "type": "function" 998 | }, 999 | { 1000 | "inputs": [], 1001 | "name": "tokenDistro", 1002 | "outputs": [ 1003 | { 1004 | "internalType": "contract IDistro", 1005 | "name": "", 1006 | "type": "address" 1007 | } 1008 | ], 1009 | "stateMutability": "view", 1010 | "type": "function" 1011 | }, 1012 | { 1013 | "inputs": [], 1014 | "name": "totalSupply", 1015 | "outputs": [ 1016 | { 1017 | "internalType": "uint256", 1018 | "name": "", 1019 | "type": "uint256" 1020 | } 1021 | ], 1022 | "stateMutability": "view", 1023 | "type": "function" 1024 | }, 1025 | { 1026 | "inputs": [ 1027 | { 1028 | "internalType": "address", 1029 | "name": "", 1030 | "type": "address" 1031 | }, 1032 | { 1033 | "internalType": "uint256", 1034 | "name": "", 1035 | "type": "uint256" 1036 | } 1037 | ], 1038 | "name": "transfer", 1039 | "outputs": [ 1040 | { 1041 | "internalType": "bool", 1042 | "name": "", 1043 | "type": "bool" 1044 | } 1045 | ], 1046 | "stateMutability": "pure", 1047 | "type": "function" 1048 | }, 1049 | { 1050 | "inputs": [ 1051 | { 1052 | "internalType": "address", 1053 | "name": "", 1054 | "type": "address" 1055 | }, 1056 | { 1057 | "internalType": "address", 1058 | "name": "", 1059 | "type": "address" 1060 | }, 1061 | { 1062 | "internalType": "uint256", 1063 | "name": "", 1064 | "type": "uint256" 1065 | } 1066 | ], 1067 | "name": "transferFrom", 1068 | "outputs": [ 1069 | { 1070 | "internalType": "bool", 1071 | "name": "", 1072 | "type": "bool" 1073 | } 1074 | ], 1075 | "stateMutability": "pure", 1076 | "type": "function" 1077 | }, 1078 | { 1079 | "inputs": [ 1080 | { 1081 | "internalType": "address", 1082 | "name": "newOwner", 1083 | "type": "address" 1084 | } 1085 | ], 1086 | "name": "transferOwnership", 1087 | "outputs": [], 1088 | "stateMutability": "nonpayable", 1089 | "type": "function" 1090 | }, 1091 | { 1092 | "inputs": [ 1093 | { 1094 | "internalType": "address[]", 1095 | "name": "_locks", 1096 | "type": "address[]" 1097 | }, 1098 | { 1099 | "internalType": "uint256", 1100 | "name": "_round", 1101 | "type": "uint256" 1102 | } 1103 | ], 1104 | "name": "unlock", 1105 | "outputs": [], 1106 | "stateMutability": "nonpayable", 1107 | "type": "function" 1108 | }, 1109 | { 1110 | "inputs": [ 1111 | { 1112 | "internalType": "address", 1113 | "name": "", 1114 | "type": "address" 1115 | } 1116 | ], 1117 | "name": "userRewardPerTokenPaid", 1118 | "outputs": [ 1119 | { 1120 | "internalType": "uint256", 1121 | "name": "", 1122 | "type": "uint256" 1123 | } 1124 | ], 1125 | "stateMutability": "view", 1126 | "type": "function" 1127 | } 1128 | ] 1129 | } 1130 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /types/contracts/GIVpower.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | 5 | 6 | /** 7 | * Copied from hardhat project 8 | */ 9 | 10 | import { 11 | BaseContract, 12 | BigNumber, 13 | BigNumberish, 14 | BytesLike, 15 | CallOverrides, 16 | ContractTransaction, 17 | Overrides, 18 | PopulatedTransaction, 19 | Signer, 20 | utils, 21 | } from "ethers"; 22 | import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; 23 | import { Listener, Provider } from "@ethersproject/providers"; 24 | import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; 25 | 26 | export interface GIVpowerInterface extends utils.Interface { 27 | contractName: "GIVpower"; 28 | functions: { 29 | "__LPTokenWrapper_initialize()": FunctionFragment; 30 | "__TokenManagerHook_initialize(address)": FunctionFragment; 31 | "allowance(address,address)": FunctionFragment; 32 | "approve(address,uint256)": FunctionFragment; 33 | "balanceOf(address)": FunctionFragment; 34 | "calculatePower(uint256,uint256)": FunctionFragment; 35 | "claimableStream(address)": FunctionFragment; 36 | "currentRound()": FunctionFragment; 37 | "decreaseAllowance(address,uint256)": FunctionFragment; 38 | "duration()": FunctionFragment; 39 | "earned(address)": FunctionFragment; 40 | "getReward()": FunctionFragment; 41 | "getTimestamp()": FunctionFragment; 42 | "getTokenManager()": FunctionFragment; 43 | "givPowerManager()": FunctionFragment; 44 | "increaseAllowance(address,uint256)": FunctionFragment; 45 | "initialize(address,uint256,address)": FunctionFragment; 46 | "lastTimeRewardApplicable()": FunctionFragment; 47 | "lastUpdateTime()": FunctionFragment; 48 | "lock(uint256,uint256)": FunctionFragment; 49 | "notifyRewardAmount(uint256)": FunctionFragment; 50 | "onApprove(address,address,uint256)": FunctionFragment; 51 | "onRegisterAsHook(uint256,address)": FunctionFragment; 52 | "onRevokeAsHook(uint256,address)": FunctionFragment; 53 | "onTransfer(address,address,uint256)": FunctionFragment; 54 | "owner()": FunctionFragment; 55 | "periodFinish()": FunctionFragment; 56 | "renounceOwnership()": FunctionFragment; 57 | "rewardDistribution()": FunctionFragment; 58 | "rewardPerToken()": FunctionFragment; 59 | "rewardPerTokenStored()": FunctionFragment; 60 | "rewardRate()": FunctionFragment; 61 | "rewards(address)": FunctionFragment; 62 | "setGivPowerManager(address)": FunctionFragment; 63 | "setRewardDistribution(address)": FunctionFragment; 64 | "stakeGivPower(address,uint256)": FunctionFragment; 65 | "tokenDistro()": FunctionFragment; 66 | "totalSupply()": FunctionFragment; 67 | "transfer(address,uint256)": FunctionFragment; 68 | "transferFrom(address,address,uint256)": FunctionFragment; 69 | "transferOwnership(address)": FunctionFragment; 70 | "unlock(address[],uint256)": FunctionFragment; 71 | "userLocks(address)": FunctionFragment; 72 | "userRewardPerTokenPaid(address)": FunctionFragment; 73 | "withdrawGivPower(address,uint256)": FunctionFragment; 74 | }; 75 | 76 | encodeFunctionData( 77 | functionFragment: "__LPTokenWrapper_initialize", 78 | values?: undefined 79 | ): string; 80 | encodeFunctionData( 81 | functionFragment: "__TokenManagerHook_initialize", 82 | values: [string] 83 | ): string; 84 | encodeFunctionData( 85 | functionFragment: "allowance", 86 | values: [string, string] 87 | ): string; 88 | encodeFunctionData( 89 | functionFragment: "approve", 90 | values: [string, BigNumberish] 91 | ): string; 92 | encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; 93 | encodeFunctionData( 94 | functionFragment: "calculatePower", 95 | values: [BigNumberish, BigNumberish] 96 | ): string; 97 | encodeFunctionData( 98 | functionFragment: "claimableStream", 99 | values: [string] 100 | ): string; 101 | encodeFunctionData( 102 | functionFragment: "currentRound", 103 | values?: undefined 104 | ): string; 105 | encodeFunctionData( 106 | functionFragment: "decreaseAllowance", 107 | values: [string, BigNumberish] 108 | ): string; 109 | encodeFunctionData(functionFragment: "duration", values?: undefined): string; 110 | encodeFunctionData(functionFragment: "earned", values: [string]): string; 111 | encodeFunctionData(functionFragment: "getReward", values?: undefined): string; 112 | encodeFunctionData( 113 | functionFragment: "getTimestamp", 114 | values?: undefined 115 | ): string; 116 | encodeFunctionData( 117 | functionFragment: "getTokenManager", 118 | values?: undefined 119 | ): string; 120 | encodeFunctionData( 121 | functionFragment: "givPowerManager", 122 | values?: undefined 123 | ): string; 124 | encodeFunctionData( 125 | functionFragment: "increaseAllowance", 126 | values: [string, BigNumberish] 127 | ): string; 128 | encodeFunctionData( 129 | functionFragment: "initialize", 130 | values: [string, BigNumberish, string] 131 | ): string; 132 | encodeFunctionData( 133 | functionFragment: "lastTimeRewardApplicable", 134 | values?: undefined 135 | ): string; 136 | encodeFunctionData( 137 | functionFragment: "lastUpdateTime", 138 | values?: undefined 139 | ): string; 140 | encodeFunctionData( 141 | functionFragment: "lock", 142 | values: [BigNumberish, BigNumberish] 143 | ): string; 144 | encodeFunctionData( 145 | functionFragment: "notifyRewardAmount", 146 | values: [BigNumberish] 147 | ): string; 148 | encodeFunctionData( 149 | functionFragment: "onApprove", 150 | values: [string, string, BigNumberish] 151 | ): string; 152 | encodeFunctionData( 153 | functionFragment: "onRegisterAsHook", 154 | values: [BigNumberish, string] 155 | ): string; 156 | encodeFunctionData( 157 | functionFragment: "onRevokeAsHook", 158 | values: [BigNumberish, string] 159 | ): string; 160 | encodeFunctionData( 161 | functionFragment: "onTransfer", 162 | values: [string, string, BigNumberish] 163 | ): string; 164 | encodeFunctionData(functionFragment: "owner", values?: undefined): string; 165 | encodeFunctionData( 166 | functionFragment: "periodFinish", 167 | values?: undefined 168 | ): string; 169 | encodeFunctionData( 170 | functionFragment: "renounceOwnership", 171 | values?: undefined 172 | ): string; 173 | encodeFunctionData( 174 | functionFragment: "rewardDistribution", 175 | values?: undefined 176 | ): string; 177 | encodeFunctionData( 178 | functionFragment: "rewardPerToken", 179 | values?: undefined 180 | ): string; 181 | encodeFunctionData( 182 | functionFragment: "rewardPerTokenStored", 183 | values?: undefined 184 | ): string; 185 | encodeFunctionData( 186 | functionFragment: "rewardRate", 187 | values?: undefined 188 | ): string; 189 | encodeFunctionData(functionFragment: "rewards", values: [string]): string; 190 | encodeFunctionData( 191 | functionFragment: "setGivPowerManager", 192 | values: [string] 193 | ): string; 194 | encodeFunctionData( 195 | functionFragment: "setRewardDistribution", 196 | values: [string] 197 | ): string; 198 | encodeFunctionData( 199 | functionFragment: "stakeGivPower", 200 | values: [string, BigNumberish] 201 | ): string; 202 | encodeFunctionData( 203 | functionFragment: "tokenDistro", 204 | values?: undefined 205 | ): string; 206 | encodeFunctionData( 207 | functionFragment: "totalSupply", 208 | values?: undefined 209 | ): string; 210 | encodeFunctionData( 211 | functionFragment: "transfer", 212 | values: [string, BigNumberish] 213 | ): string; 214 | encodeFunctionData( 215 | functionFragment: "transferFrom", 216 | values: [string, string, BigNumberish] 217 | ): string; 218 | encodeFunctionData( 219 | functionFragment: "transferOwnership", 220 | values: [string] 221 | ): string; 222 | encodeFunctionData( 223 | functionFragment: "unlock", 224 | values: [string[], BigNumberish] 225 | ): string; 226 | encodeFunctionData(functionFragment: "userLocks", values: [string]): string; 227 | encodeFunctionData( 228 | functionFragment: "userRewardPerTokenPaid", 229 | values: [string] 230 | ): string; 231 | encodeFunctionData( 232 | functionFragment: "withdrawGivPower", 233 | values: [string, BigNumberish] 234 | ): string; 235 | 236 | decodeFunctionResult( 237 | functionFragment: "__LPTokenWrapper_initialize", 238 | data: BytesLike 239 | ): Result; 240 | decodeFunctionResult( 241 | functionFragment: "__TokenManagerHook_initialize", 242 | data: BytesLike 243 | ): Result; 244 | decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; 245 | decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; 246 | decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; 247 | decodeFunctionResult( 248 | functionFragment: "calculatePower", 249 | data: BytesLike 250 | ): Result; 251 | decodeFunctionResult( 252 | functionFragment: "claimableStream", 253 | data: BytesLike 254 | ): Result; 255 | decodeFunctionResult( 256 | functionFragment: "currentRound", 257 | data: BytesLike 258 | ): Result; 259 | decodeFunctionResult( 260 | functionFragment: "decreaseAllowance", 261 | data: BytesLike 262 | ): Result; 263 | decodeFunctionResult(functionFragment: "duration", data: BytesLike): Result; 264 | decodeFunctionResult(functionFragment: "earned", data: BytesLike): Result; 265 | decodeFunctionResult(functionFragment: "getReward", data: BytesLike): Result; 266 | decodeFunctionResult( 267 | functionFragment: "getTimestamp", 268 | data: BytesLike 269 | ): Result; 270 | decodeFunctionResult( 271 | functionFragment: "getTokenManager", 272 | data: BytesLike 273 | ): Result; 274 | decodeFunctionResult( 275 | functionFragment: "givPowerManager", 276 | data: BytesLike 277 | ): Result; 278 | decodeFunctionResult( 279 | functionFragment: "increaseAllowance", 280 | data: BytesLike 281 | ): Result; 282 | decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; 283 | decodeFunctionResult( 284 | functionFragment: "lastTimeRewardApplicable", 285 | data: BytesLike 286 | ): Result; 287 | decodeFunctionResult( 288 | functionFragment: "lastUpdateTime", 289 | data: BytesLike 290 | ): Result; 291 | decodeFunctionResult(functionFragment: "lock", data: BytesLike): Result; 292 | decodeFunctionResult( 293 | functionFragment: "notifyRewardAmount", 294 | data: BytesLike 295 | ): Result; 296 | decodeFunctionResult(functionFragment: "onApprove", data: BytesLike): Result; 297 | decodeFunctionResult( 298 | functionFragment: "onRegisterAsHook", 299 | data: BytesLike 300 | ): Result; 301 | decodeFunctionResult( 302 | functionFragment: "onRevokeAsHook", 303 | data: BytesLike 304 | ): Result; 305 | decodeFunctionResult(functionFragment: "onTransfer", data: BytesLike): Result; 306 | decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; 307 | decodeFunctionResult( 308 | functionFragment: "periodFinish", 309 | data: BytesLike 310 | ): Result; 311 | decodeFunctionResult( 312 | functionFragment: "renounceOwnership", 313 | data: BytesLike 314 | ): Result; 315 | decodeFunctionResult( 316 | functionFragment: "rewardDistribution", 317 | data: BytesLike 318 | ): Result; 319 | decodeFunctionResult( 320 | functionFragment: "rewardPerToken", 321 | data: BytesLike 322 | ): Result; 323 | decodeFunctionResult( 324 | functionFragment: "rewardPerTokenStored", 325 | data: BytesLike 326 | ): Result; 327 | decodeFunctionResult(functionFragment: "rewardRate", data: BytesLike): Result; 328 | decodeFunctionResult(functionFragment: "rewards", data: BytesLike): Result; 329 | decodeFunctionResult( 330 | functionFragment: "setGivPowerManager", 331 | data: BytesLike 332 | ): Result; 333 | decodeFunctionResult( 334 | functionFragment: "setRewardDistribution", 335 | data: BytesLike 336 | ): Result; 337 | decodeFunctionResult( 338 | functionFragment: "stakeGivPower", 339 | data: BytesLike 340 | ): Result; 341 | decodeFunctionResult( 342 | functionFragment: "tokenDistro", 343 | data: BytesLike 344 | ): Result; 345 | decodeFunctionResult( 346 | functionFragment: "totalSupply", 347 | data: BytesLike 348 | ): Result; 349 | decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; 350 | decodeFunctionResult( 351 | functionFragment: "transferFrom", 352 | data: BytesLike 353 | ): Result; 354 | decodeFunctionResult( 355 | functionFragment: "transferOwnership", 356 | data: BytesLike 357 | ): Result; 358 | decodeFunctionResult(functionFragment: "unlock", data: BytesLike): Result; 359 | decodeFunctionResult(functionFragment: "userLocks", data: BytesLike): Result; 360 | decodeFunctionResult( 361 | functionFragment: "userRewardPerTokenPaid", 362 | data: BytesLike 363 | ): Result; 364 | decodeFunctionResult( 365 | functionFragment: "withdrawGivPower", 366 | data: BytesLike 367 | ): Result; 368 | 369 | events: { 370 | "Approval(address,address,uint256)": EventFragment; 371 | "Initialized(uint8)": EventFragment; 372 | "OwnershipTransferred(address,address)": EventFragment; 373 | "RewardAdded(uint256)": EventFragment; 374 | "RewardPaid(address,uint256)": EventFragment; 375 | "Staked(address,uint256)": EventFragment; 376 | "TokenLocked(address,uint256,uint256,uint256)": EventFragment; 377 | "TokenUnlocked(address,uint256,uint256)": EventFragment; 378 | "Transfer(address,address,uint256)": EventFragment; 379 | "Withdrawn(address,uint256)": EventFragment; 380 | }; 381 | 382 | getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; 383 | getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; 384 | getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; 385 | getEvent(nameOrSignatureOrTopic: "RewardAdded"): EventFragment; 386 | getEvent(nameOrSignatureOrTopic: "RewardPaid"): EventFragment; 387 | getEvent(nameOrSignatureOrTopic: "Staked"): EventFragment; 388 | getEvent(nameOrSignatureOrTopic: "TokenLocked"): EventFragment; 389 | getEvent(nameOrSignatureOrTopic: "TokenUnlocked"): EventFragment; 390 | getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; 391 | getEvent(nameOrSignatureOrTopic: "Withdrawn"): EventFragment; 392 | } 393 | 394 | export type ApprovalEvent = TypedEvent< 395 | [string, string, BigNumber], 396 | { owner: string; spender: string; value: BigNumber } 397 | >; 398 | 399 | export type ApprovalEventFilter = TypedEventFilter; 400 | 401 | export type InitializedEvent = TypedEvent<[number], { version: number }>; 402 | 403 | export type InitializedEventFilter = TypedEventFilter; 404 | 405 | export type OwnershipTransferredEvent = TypedEvent< 406 | [string, string], 407 | { previousOwner: string; newOwner: string } 408 | >; 409 | 410 | export type OwnershipTransferredEventFilter = 411 | TypedEventFilter; 412 | 413 | export type RewardAddedEvent = TypedEvent<[BigNumber], { reward: BigNumber }>; 414 | 415 | export type RewardAddedEventFilter = TypedEventFilter; 416 | 417 | export type RewardPaidEvent = TypedEvent< 418 | [string, BigNumber], 419 | { user: string; reward: BigNumber } 420 | >; 421 | 422 | export type RewardPaidEventFilter = TypedEventFilter; 423 | 424 | export type StakedEvent = TypedEvent< 425 | [string, BigNumber], 426 | { user: string; amount: BigNumber } 427 | >; 428 | 429 | export type StakedEventFilter = TypedEventFilter; 430 | 431 | export type TokenLockedEvent = TypedEvent< 432 | [string, BigNumber, BigNumber, BigNumber], 433 | { 434 | account: string; 435 | amount: BigNumber; 436 | rounds: BigNumber; 437 | untilRound: BigNumber; 438 | } 439 | >; 440 | 441 | export type TokenLockedEventFilter = TypedEventFilter; 442 | 443 | export type TokenUnlockedEvent = TypedEvent< 444 | [string, BigNumber, BigNumber], 445 | { account: string; amount: BigNumber; round: BigNumber } 446 | >; 447 | 448 | export type TokenUnlockedEventFilter = TypedEventFilter; 449 | 450 | export type TransferEvent = TypedEvent< 451 | [string, string, BigNumber], 452 | { from: string; to: string; value: BigNumber } 453 | >; 454 | 455 | export type TransferEventFilter = TypedEventFilter; 456 | 457 | export type WithdrawnEvent = TypedEvent< 458 | [string, BigNumber], 459 | { user: string; amount: BigNumber } 460 | >; 461 | 462 | export type WithdrawnEventFilter = TypedEventFilter; 463 | 464 | export interface GIVpower extends BaseContract { 465 | contractName: "GIVpower"; 466 | connect(signerOrProvider: Signer | Provider | string): this; 467 | attach(addressOrName: string): this; 468 | deployed(): Promise; 469 | 470 | interface: GIVpowerInterface; 471 | 472 | queryFilter( 473 | event: TypedEventFilter, 474 | fromBlockOrBlockhash?: string | number | undefined, 475 | toBlock?: string | number | undefined 476 | ): Promise>; 477 | 478 | listeners( 479 | eventFilter?: TypedEventFilter 480 | ): Array>; 481 | listeners(eventName?: string): Array; 482 | removeAllListeners( 483 | eventFilter: TypedEventFilter 484 | ): this; 485 | removeAllListeners(eventName?: string): this; 486 | off: OnEvent; 487 | on: OnEvent; 488 | once: OnEvent; 489 | removeListener: OnEvent; 490 | 491 | functions: { 492 | __LPTokenWrapper_initialize( 493 | overrides?: Overrides & { from?: string | Promise } 494 | ): Promise; 495 | 496 | __TokenManagerHook_initialize( 497 | tokenManager: string, 498 | overrides?: Overrides & { from?: string | Promise } 499 | ): Promise; 500 | 501 | allowance( 502 | arg0: string, 503 | arg1: string, 504 | overrides?: CallOverrides 505 | ): Promise<[BigNumber]>; 506 | 507 | approve( 508 | arg0: string, 509 | arg1: BigNumberish, 510 | overrides?: CallOverrides 511 | ): Promise<[boolean]>; 512 | 513 | balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; 514 | 515 | calculatePower( 516 | _amount: BigNumberish, 517 | _rounds: BigNumberish, 518 | overrides?: CallOverrides 519 | ): Promise<[BigNumber]>; 520 | 521 | claimableStream( 522 | account: string, 523 | overrides?: CallOverrides 524 | ): Promise<[BigNumber]>; 525 | 526 | currentRound(overrides?: CallOverrides): Promise<[BigNumber]>; 527 | 528 | decreaseAllowance( 529 | arg0: string, 530 | arg1: BigNumberish, 531 | overrides?: CallOverrides 532 | ): Promise<[boolean]>; 533 | 534 | duration(overrides?: CallOverrides): Promise<[BigNumber]>; 535 | 536 | earned(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; 537 | 538 | getReward( 539 | overrides?: Overrides & { from?: string | Promise } 540 | ): Promise; 541 | 542 | getTimestamp(overrides?: CallOverrides): Promise<[BigNumber]>; 543 | 544 | getTokenManager(overrides?: CallOverrides): Promise<[string]>; 545 | 546 | givPowerManager(overrides?: CallOverrides): Promise<[string]>; 547 | 548 | increaseAllowance( 549 | arg0: string, 550 | arg1: BigNumberish, 551 | overrides?: CallOverrides 552 | ): Promise<[boolean]>; 553 | 554 | initialize( 555 | _tokenDistribution: string, 556 | _duration: BigNumberish, 557 | tokenManager: string, 558 | overrides?: Overrides & { from?: string | Promise } 559 | ): Promise; 560 | 561 | lastTimeRewardApplicable(overrides?: CallOverrides): Promise<[BigNumber]>; 562 | 563 | lastUpdateTime(overrides?: CallOverrides): Promise<[BigNumber]>; 564 | 565 | lock( 566 | _amount: BigNumberish, 567 | _rounds: BigNumberish, 568 | overrides?: Overrides & { from?: string | Promise } 569 | ): Promise; 570 | 571 | notifyRewardAmount( 572 | reward: BigNumberish, 573 | overrides?: Overrides & { from?: string | Promise } 574 | ): Promise; 575 | 576 | onApprove( 577 | _holder: string, 578 | _spender: string, 579 | _amount: BigNumberish, 580 | overrides?: Overrides & { from?: string | Promise } 581 | ): Promise; 582 | 583 | onRegisterAsHook( 584 | _hookId: BigNumberish, 585 | _token: string, 586 | overrides?: Overrides & { from?: string | Promise } 587 | ): Promise; 588 | 589 | onRevokeAsHook( 590 | _hookId: BigNumberish, 591 | _token: string, 592 | overrides?: Overrides & { from?: string | Promise } 593 | ): Promise; 594 | 595 | onTransfer( 596 | _from: string, 597 | _to: string, 598 | _amount: BigNumberish, 599 | overrides?: Overrides & { from?: string | Promise } 600 | ): Promise; 601 | 602 | owner(overrides?: CallOverrides): Promise<[string]>; 603 | 604 | periodFinish(overrides?: CallOverrides): Promise<[BigNumber]>; 605 | 606 | renounceOwnership( 607 | overrides?: Overrides & { from?: string | Promise } 608 | ): Promise; 609 | 610 | rewardDistribution(overrides?: CallOverrides): Promise<[string]>; 611 | 612 | rewardPerToken(overrides?: CallOverrides): Promise<[BigNumber]>; 613 | 614 | rewardPerTokenStored(overrides?: CallOverrides): Promise<[BigNumber]>; 615 | 616 | rewardRate(overrides?: CallOverrides): Promise<[BigNumber]>; 617 | 618 | rewards(arg0: string, overrides?: CallOverrides): Promise<[BigNumber]>; 619 | 620 | setGivPowerManager( 621 | _givPowerManager: string, 622 | overrides?: Overrides & { from?: string | Promise } 623 | ): Promise; 624 | 625 | setRewardDistribution( 626 | _rewardDistribution: string, 627 | overrides?: Overrides & { from?: string | Promise } 628 | ): Promise; 629 | 630 | stakeGivPower( 631 | user: string, 632 | amount: BigNumberish, 633 | overrides?: Overrides & { from?: string | Promise } 634 | ): Promise; 635 | 636 | tokenDistro(overrides?: CallOverrides): Promise<[string]>; 637 | 638 | totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; 639 | 640 | transfer( 641 | arg0: string, 642 | arg1: BigNumberish, 643 | overrides?: CallOverrides 644 | ): Promise<[boolean]>; 645 | 646 | transferFrom( 647 | arg0: string, 648 | arg1: string, 649 | arg2: BigNumberish, 650 | overrides?: CallOverrides 651 | ): Promise<[boolean]>; 652 | 653 | transferOwnership( 654 | newOwner: string, 655 | overrides?: Overrides & { from?: string | Promise } 656 | ): Promise; 657 | 658 | unlock( 659 | _accounts: string[], 660 | _round: BigNumberish, 661 | overrides?: Overrides & { from?: string | Promise } 662 | ): Promise; 663 | 664 | userLocks( 665 | arg0: string, 666 | overrides?: CallOverrides 667 | ): Promise<[BigNumber] & { totalAmountLocked: BigNumber }>; 668 | 669 | userRewardPerTokenPaid( 670 | arg0: string, 671 | overrides?: CallOverrides 672 | ): Promise<[BigNumber]>; 673 | 674 | withdrawGivPower( 675 | user: string, 676 | amount: BigNumberish, 677 | overrides?: Overrides & { from?: string | Promise } 678 | ): Promise; 679 | }; 680 | 681 | __LPTokenWrapper_initialize( 682 | overrides?: Overrides & { from?: string | Promise } 683 | ): Promise; 684 | 685 | __TokenManagerHook_initialize( 686 | tokenManager: string, 687 | overrides?: Overrides & { from?: string | Promise } 688 | ): Promise; 689 | 690 | allowance( 691 | arg0: string, 692 | arg1: string, 693 | overrides?: CallOverrides 694 | ): Promise; 695 | 696 | approve( 697 | arg0: string, 698 | arg1: BigNumberish, 699 | overrides?: CallOverrides 700 | ): Promise; 701 | 702 | balanceOf(account: string, overrides?: CallOverrides): Promise; 703 | 704 | calculatePower( 705 | _amount: BigNumberish, 706 | _rounds: BigNumberish, 707 | overrides?: CallOverrides 708 | ): Promise; 709 | 710 | claimableStream( 711 | account: string, 712 | overrides?: CallOverrides 713 | ): Promise; 714 | 715 | currentRound(overrides?: CallOverrides): Promise; 716 | 717 | decreaseAllowance( 718 | arg0: string, 719 | arg1: BigNumberish, 720 | overrides?: CallOverrides 721 | ): Promise; 722 | 723 | duration(overrides?: CallOverrides): Promise; 724 | 725 | earned(account: string, overrides?: CallOverrides): Promise; 726 | 727 | getReward( 728 | overrides?: Overrides & { from?: string | Promise } 729 | ): Promise; 730 | 731 | getTimestamp(overrides?: CallOverrides): Promise; 732 | 733 | getTokenManager(overrides?: CallOverrides): Promise; 734 | 735 | givPowerManager(overrides?: CallOverrides): Promise; 736 | 737 | increaseAllowance( 738 | arg0: string, 739 | arg1: BigNumberish, 740 | overrides?: CallOverrides 741 | ): Promise; 742 | 743 | initialize( 744 | _tokenDistribution: string, 745 | _duration: BigNumberish, 746 | tokenManager: string, 747 | overrides?: Overrides & { from?: string | Promise } 748 | ): Promise; 749 | 750 | lastTimeRewardApplicable(overrides?: CallOverrides): Promise; 751 | 752 | lastUpdateTime(overrides?: CallOverrides): Promise; 753 | 754 | lock( 755 | _amount: BigNumberish, 756 | _rounds: BigNumberish, 757 | overrides?: Overrides & { from?: string | Promise } 758 | ): Promise; 759 | 760 | notifyRewardAmount( 761 | reward: BigNumberish, 762 | overrides?: Overrides & { from?: string | Promise } 763 | ): Promise; 764 | 765 | onApprove( 766 | _holder: string, 767 | _spender: string, 768 | _amount: BigNumberish, 769 | overrides?: Overrides & { from?: string | Promise } 770 | ): Promise; 771 | 772 | onRegisterAsHook( 773 | _hookId: BigNumberish, 774 | _token: string, 775 | overrides?: Overrides & { from?: string | Promise } 776 | ): Promise; 777 | 778 | onRevokeAsHook( 779 | _hookId: BigNumberish, 780 | _token: string, 781 | overrides?: Overrides & { from?: string | Promise } 782 | ): Promise; 783 | 784 | onTransfer( 785 | _from: string, 786 | _to: string, 787 | _amount: BigNumberish, 788 | overrides?: Overrides & { from?: string | Promise } 789 | ): Promise; 790 | 791 | owner(overrides?: CallOverrides): Promise; 792 | 793 | periodFinish(overrides?: CallOverrides): Promise; 794 | 795 | renounceOwnership( 796 | overrides?: Overrides & { from?: string | Promise } 797 | ): Promise; 798 | 799 | rewardDistribution(overrides?: CallOverrides): Promise; 800 | 801 | rewardPerToken(overrides?: CallOverrides): Promise; 802 | 803 | rewardPerTokenStored(overrides?: CallOverrides): Promise; 804 | 805 | rewardRate(overrides?: CallOverrides): Promise; 806 | 807 | rewards(arg0: string, overrides?: CallOverrides): Promise; 808 | 809 | setGivPowerManager( 810 | _givPowerManager: string, 811 | overrides?: Overrides & { from?: string | Promise } 812 | ): Promise; 813 | 814 | setRewardDistribution( 815 | _rewardDistribution: string, 816 | overrides?: Overrides & { from?: string | Promise } 817 | ): Promise; 818 | 819 | stakeGivPower( 820 | user: string, 821 | amount: BigNumberish, 822 | overrides?: Overrides & { from?: string | Promise } 823 | ): Promise; 824 | 825 | tokenDistro(overrides?: CallOverrides): Promise; 826 | 827 | totalSupply(overrides?: CallOverrides): Promise; 828 | 829 | transfer( 830 | arg0: string, 831 | arg1: BigNumberish, 832 | overrides?: CallOverrides 833 | ): Promise; 834 | 835 | transferFrom( 836 | arg0: string, 837 | arg1: string, 838 | arg2: BigNumberish, 839 | overrides?: CallOverrides 840 | ): Promise; 841 | 842 | transferOwnership( 843 | newOwner: string, 844 | overrides?: Overrides & { from?: string | Promise } 845 | ): Promise; 846 | 847 | unlock( 848 | _accounts: string[], 849 | _round: BigNumberish, 850 | overrides?: Overrides & { from?: string | Promise } 851 | ): Promise; 852 | 853 | userLocks(arg0: string, overrides?: CallOverrides): Promise; 854 | 855 | userRewardPerTokenPaid( 856 | arg0: string, 857 | overrides?: CallOverrides 858 | ): Promise; 859 | 860 | withdrawGivPower( 861 | user: string, 862 | amount: BigNumberish, 863 | overrides?: Overrides & { from?: string | Promise } 864 | ): Promise; 865 | 866 | callStatic: { 867 | __LPTokenWrapper_initialize(overrides?: CallOverrides): Promise; 868 | 869 | __TokenManagerHook_initialize( 870 | tokenManager: string, 871 | overrides?: CallOverrides 872 | ): Promise; 873 | 874 | allowance( 875 | arg0: string, 876 | arg1: string, 877 | overrides?: CallOverrides 878 | ): Promise; 879 | 880 | approve( 881 | arg0: string, 882 | arg1: BigNumberish, 883 | overrides?: CallOverrides 884 | ): Promise; 885 | 886 | balanceOf(account: string, overrides?: CallOverrides): Promise; 887 | 888 | calculatePower( 889 | _amount: BigNumberish, 890 | _rounds: BigNumberish, 891 | overrides?: CallOverrides 892 | ): Promise; 893 | 894 | claimableStream( 895 | account: string, 896 | overrides?: CallOverrides 897 | ): Promise; 898 | 899 | currentRound(overrides?: CallOverrides): Promise; 900 | 901 | decreaseAllowance( 902 | arg0: string, 903 | arg1: BigNumberish, 904 | overrides?: CallOverrides 905 | ): Promise; 906 | 907 | duration(overrides?: CallOverrides): Promise; 908 | 909 | earned(account: string, overrides?: CallOverrides): Promise; 910 | 911 | getReward(overrides?: CallOverrides): Promise; 912 | 913 | getTimestamp(overrides?: CallOverrides): Promise; 914 | 915 | getTokenManager(overrides?: CallOverrides): Promise; 916 | 917 | givPowerManager(overrides?: CallOverrides): Promise; 918 | 919 | increaseAllowance( 920 | arg0: string, 921 | arg1: BigNumberish, 922 | overrides?: CallOverrides 923 | ): Promise; 924 | 925 | initialize( 926 | _tokenDistribution: string, 927 | _duration: BigNumberish, 928 | tokenManager: string, 929 | overrides?: CallOverrides 930 | ): Promise; 931 | 932 | lastTimeRewardApplicable(overrides?: CallOverrides): Promise; 933 | 934 | lastUpdateTime(overrides?: CallOverrides): Promise; 935 | 936 | lock( 937 | _amount: BigNumberish, 938 | _rounds: BigNumberish, 939 | overrides?: CallOverrides 940 | ): Promise; 941 | 942 | notifyRewardAmount( 943 | reward: BigNumberish, 944 | overrides?: CallOverrides 945 | ): Promise; 946 | 947 | onApprove( 948 | _holder: string, 949 | _spender: string, 950 | _amount: BigNumberish, 951 | overrides?: CallOverrides 952 | ): Promise; 953 | 954 | onRegisterAsHook( 955 | _hookId: BigNumberish, 956 | _token: string, 957 | overrides?: CallOverrides 958 | ): Promise; 959 | 960 | onRevokeAsHook( 961 | _hookId: BigNumberish, 962 | _token: string, 963 | overrides?: CallOverrides 964 | ): Promise; 965 | 966 | onTransfer( 967 | _from: string, 968 | _to: string, 969 | _amount: BigNumberish, 970 | overrides?: CallOverrides 971 | ): Promise; 972 | 973 | owner(overrides?: CallOverrides): Promise; 974 | 975 | periodFinish(overrides?: CallOverrides): Promise; 976 | 977 | renounceOwnership(overrides?: CallOverrides): Promise; 978 | 979 | rewardDistribution(overrides?: CallOverrides): Promise; 980 | 981 | rewardPerToken(overrides?: CallOverrides): Promise; 982 | 983 | rewardPerTokenStored(overrides?: CallOverrides): Promise; 984 | 985 | rewardRate(overrides?: CallOverrides): Promise; 986 | 987 | rewards(arg0: string, overrides?: CallOverrides): Promise; 988 | 989 | setGivPowerManager( 990 | _givPowerManager: string, 991 | overrides?: CallOverrides 992 | ): Promise; 993 | 994 | setRewardDistribution( 995 | _rewardDistribution: string, 996 | overrides?: CallOverrides 997 | ): Promise; 998 | 999 | stakeGivPower( 1000 | user: string, 1001 | amount: BigNumberish, 1002 | overrides?: CallOverrides 1003 | ): Promise; 1004 | 1005 | tokenDistro(overrides?: CallOverrides): Promise; 1006 | 1007 | totalSupply(overrides?: CallOverrides): Promise; 1008 | 1009 | transfer( 1010 | arg0: string, 1011 | arg1: BigNumberish, 1012 | overrides?: CallOverrides 1013 | ): Promise; 1014 | 1015 | transferFrom( 1016 | arg0: string, 1017 | arg1: string, 1018 | arg2: BigNumberish, 1019 | overrides?: CallOverrides 1020 | ): Promise; 1021 | 1022 | transferOwnership( 1023 | newOwner: string, 1024 | overrides?: CallOverrides 1025 | ): Promise; 1026 | 1027 | unlock( 1028 | _accounts: string[], 1029 | _round: BigNumberish, 1030 | overrides?: CallOverrides 1031 | ): Promise; 1032 | 1033 | userLocks(arg0: string, overrides?: CallOverrides): Promise; 1034 | 1035 | userRewardPerTokenPaid( 1036 | arg0: string, 1037 | overrides?: CallOverrides 1038 | ): Promise; 1039 | 1040 | withdrawGivPower( 1041 | user: string, 1042 | amount: BigNumberish, 1043 | overrides?: CallOverrides 1044 | ): Promise; 1045 | }; 1046 | 1047 | filters: { 1048 | "Approval(address,address,uint256)"( 1049 | owner?: string | null, 1050 | spender?: string | null, 1051 | value?: null 1052 | ): ApprovalEventFilter; 1053 | Approval( 1054 | owner?: string | null, 1055 | spender?: string | null, 1056 | value?: null 1057 | ): ApprovalEventFilter; 1058 | 1059 | "Initialized(uint8)"(version?: null): InitializedEventFilter; 1060 | Initialized(version?: null): InitializedEventFilter; 1061 | 1062 | "OwnershipTransferred(address,address)"( 1063 | previousOwner?: string | null, 1064 | newOwner?: string | null 1065 | ): OwnershipTransferredEventFilter; 1066 | OwnershipTransferred( 1067 | previousOwner?: string | null, 1068 | newOwner?: string | null 1069 | ): OwnershipTransferredEventFilter; 1070 | 1071 | "RewardAdded(uint256)"(reward?: null): RewardAddedEventFilter; 1072 | RewardAdded(reward?: null): RewardAddedEventFilter; 1073 | 1074 | "RewardPaid(address,uint256)"( 1075 | user?: string | null, 1076 | reward?: null 1077 | ): RewardPaidEventFilter; 1078 | RewardPaid(user?: string | null, reward?: null): RewardPaidEventFilter; 1079 | 1080 | "Staked(address,uint256)"( 1081 | user?: string | null, 1082 | amount?: null 1083 | ): StakedEventFilter; 1084 | Staked(user?: string | null, amount?: null): StakedEventFilter; 1085 | 1086 | "TokenLocked(address,uint256,uint256,uint256)"( 1087 | account?: null, 1088 | amount?: null, 1089 | rounds?: null, 1090 | untilRound?: null 1091 | ): TokenLockedEventFilter; 1092 | TokenLocked( 1093 | account?: null, 1094 | amount?: null, 1095 | rounds?: null, 1096 | untilRound?: null 1097 | ): TokenLockedEventFilter; 1098 | 1099 | "TokenUnlocked(address,uint256,uint256)"( 1100 | account?: null, 1101 | amount?: null, 1102 | round?: null 1103 | ): TokenUnlockedEventFilter; 1104 | TokenUnlocked( 1105 | account?: null, 1106 | amount?: null, 1107 | round?: null 1108 | ): TokenUnlockedEventFilter; 1109 | 1110 | "Transfer(address,address,uint256)"( 1111 | from?: string | null, 1112 | to?: string | null, 1113 | value?: null 1114 | ): TransferEventFilter; 1115 | Transfer( 1116 | from?: string | null, 1117 | to?: string | null, 1118 | value?: null 1119 | ): TransferEventFilter; 1120 | 1121 | "Withdrawn(address,uint256)"( 1122 | user?: string | null, 1123 | amount?: null 1124 | ): WithdrawnEventFilter; 1125 | Withdrawn(user?: string | null, amount?: null): WithdrawnEventFilter; 1126 | }; 1127 | 1128 | estimateGas: { 1129 | __LPTokenWrapper_initialize( 1130 | overrides?: Overrides & { from?: string | Promise } 1131 | ): Promise; 1132 | 1133 | __TokenManagerHook_initialize( 1134 | tokenManager: string, 1135 | overrides?: Overrides & { from?: string | Promise } 1136 | ): Promise; 1137 | 1138 | allowance( 1139 | arg0: string, 1140 | arg1: string, 1141 | overrides?: CallOverrides 1142 | ): Promise; 1143 | 1144 | approve( 1145 | arg0: string, 1146 | arg1: BigNumberish, 1147 | overrides?: CallOverrides 1148 | ): Promise; 1149 | 1150 | balanceOf(account: string, overrides?: CallOverrides): Promise; 1151 | 1152 | calculatePower( 1153 | _amount: BigNumberish, 1154 | _rounds: BigNumberish, 1155 | overrides?: CallOverrides 1156 | ): Promise; 1157 | 1158 | claimableStream( 1159 | account: string, 1160 | overrides?: CallOverrides 1161 | ): Promise; 1162 | 1163 | currentRound(overrides?: CallOverrides): Promise; 1164 | 1165 | decreaseAllowance( 1166 | arg0: string, 1167 | arg1: BigNumberish, 1168 | overrides?: CallOverrides 1169 | ): Promise; 1170 | 1171 | duration(overrides?: CallOverrides): Promise; 1172 | 1173 | earned(account: string, overrides?: CallOverrides): Promise; 1174 | 1175 | getReward( 1176 | overrides?: Overrides & { from?: string | Promise } 1177 | ): Promise; 1178 | 1179 | getTimestamp(overrides?: CallOverrides): Promise; 1180 | 1181 | getTokenManager(overrides?: CallOverrides): Promise; 1182 | 1183 | givPowerManager(overrides?: CallOverrides): Promise; 1184 | 1185 | increaseAllowance( 1186 | arg0: string, 1187 | arg1: BigNumberish, 1188 | overrides?: CallOverrides 1189 | ): Promise; 1190 | 1191 | initialize( 1192 | _tokenDistribution: string, 1193 | _duration: BigNumberish, 1194 | tokenManager: string, 1195 | overrides?: Overrides & { from?: string | Promise } 1196 | ): Promise; 1197 | 1198 | lastTimeRewardApplicable(overrides?: CallOverrides): Promise; 1199 | 1200 | lastUpdateTime(overrides?: CallOverrides): Promise; 1201 | 1202 | lock( 1203 | _amount: BigNumberish, 1204 | _rounds: BigNumberish, 1205 | overrides?: Overrides & { from?: string | Promise } 1206 | ): Promise; 1207 | 1208 | notifyRewardAmount( 1209 | reward: BigNumberish, 1210 | overrides?: Overrides & { from?: string | Promise } 1211 | ): Promise; 1212 | 1213 | onApprove( 1214 | _holder: string, 1215 | _spender: string, 1216 | _amount: BigNumberish, 1217 | overrides?: Overrides & { from?: string | Promise } 1218 | ): Promise; 1219 | 1220 | onRegisterAsHook( 1221 | _hookId: BigNumberish, 1222 | _token: string, 1223 | overrides?: Overrides & { from?: string | Promise } 1224 | ): Promise; 1225 | 1226 | onRevokeAsHook( 1227 | _hookId: BigNumberish, 1228 | _token: string, 1229 | overrides?: Overrides & { from?: string | Promise } 1230 | ): Promise; 1231 | 1232 | onTransfer( 1233 | _from: string, 1234 | _to: string, 1235 | _amount: BigNumberish, 1236 | overrides?: Overrides & { from?: string | Promise } 1237 | ): Promise; 1238 | 1239 | owner(overrides?: CallOverrides): Promise; 1240 | 1241 | periodFinish(overrides?: CallOverrides): Promise; 1242 | 1243 | renounceOwnership( 1244 | overrides?: Overrides & { from?: string | Promise } 1245 | ): Promise; 1246 | 1247 | rewardDistribution(overrides?: CallOverrides): Promise; 1248 | 1249 | rewardPerToken(overrides?: CallOverrides): Promise; 1250 | 1251 | rewardPerTokenStored(overrides?: CallOverrides): Promise; 1252 | 1253 | rewardRate(overrides?: CallOverrides): Promise; 1254 | 1255 | rewards(arg0: string, overrides?: CallOverrides): Promise; 1256 | 1257 | setGivPowerManager( 1258 | _givPowerManager: string, 1259 | overrides?: Overrides & { from?: string | Promise } 1260 | ): Promise; 1261 | 1262 | setRewardDistribution( 1263 | _rewardDistribution: string, 1264 | overrides?: Overrides & { from?: string | Promise } 1265 | ): Promise; 1266 | 1267 | stakeGivPower( 1268 | user: string, 1269 | amount: BigNumberish, 1270 | overrides?: Overrides & { from?: string | Promise } 1271 | ): Promise; 1272 | 1273 | tokenDistro(overrides?: CallOverrides): Promise; 1274 | 1275 | totalSupply(overrides?: CallOverrides): Promise; 1276 | 1277 | transfer( 1278 | arg0: string, 1279 | arg1: BigNumberish, 1280 | overrides?: CallOverrides 1281 | ): Promise; 1282 | 1283 | transferFrom( 1284 | arg0: string, 1285 | arg1: string, 1286 | arg2: BigNumberish, 1287 | overrides?: CallOverrides 1288 | ): Promise; 1289 | 1290 | transferOwnership( 1291 | newOwner: string, 1292 | overrides?: Overrides & { from?: string | Promise } 1293 | ): Promise; 1294 | 1295 | unlock( 1296 | _accounts: string[], 1297 | _round: BigNumberish, 1298 | overrides?: Overrides & { from?: string | Promise } 1299 | ): Promise; 1300 | 1301 | userLocks(arg0: string, overrides?: CallOverrides): Promise; 1302 | 1303 | userRewardPerTokenPaid( 1304 | arg0: string, 1305 | overrides?: CallOverrides 1306 | ): Promise; 1307 | 1308 | withdrawGivPower( 1309 | user: string, 1310 | amount: BigNumberish, 1311 | overrides?: Overrides & { from?: string | Promise } 1312 | ): Promise; 1313 | }; 1314 | 1315 | populateTransaction: { 1316 | __LPTokenWrapper_initialize( 1317 | overrides?: Overrides & { from?: string | Promise } 1318 | ): Promise; 1319 | 1320 | __TokenManagerHook_initialize( 1321 | tokenManager: string, 1322 | overrides?: Overrides & { from?: string | Promise } 1323 | ): Promise; 1324 | 1325 | allowance( 1326 | arg0: string, 1327 | arg1: string, 1328 | overrides?: CallOverrides 1329 | ): Promise; 1330 | 1331 | approve( 1332 | arg0: string, 1333 | arg1: BigNumberish, 1334 | overrides?: CallOverrides 1335 | ): Promise; 1336 | 1337 | balanceOf( 1338 | account: string, 1339 | overrides?: CallOverrides 1340 | ): Promise; 1341 | 1342 | calculatePower( 1343 | _amount: BigNumberish, 1344 | _rounds: BigNumberish, 1345 | overrides?: CallOverrides 1346 | ): Promise; 1347 | 1348 | claimableStream( 1349 | account: string, 1350 | overrides?: CallOverrides 1351 | ): Promise; 1352 | 1353 | currentRound(overrides?: CallOverrides): Promise; 1354 | 1355 | decreaseAllowance( 1356 | arg0: string, 1357 | arg1: BigNumberish, 1358 | overrides?: CallOverrides 1359 | ): Promise; 1360 | 1361 | duration(overrides?: CallOverrides): Promise; 1362 | 1363 | earned( 1364 | account: string, 1365 | overrides?: CallOverrides 1366 | ): Promise; 1367 | 1368 | getReward( 1369 | overrides?: Overrides & { from?: string | Promise } 1370 | ): Promise; 1371 | 1372 | getTimestamp(overrides?: CallOverrides): Promise; 1373 | 1374 | getTokenManager(overrides?: CallOverrides): Promise; 1375 | 1376 | givPowerManager(overrides?: CallOverrides): Promise; 1377 | 1378 | increaseAllowance( 1379 | arg0: string, 1380 | arg1: BigNumberish, 1381 | overrides?: CallOverrides 1382 | ): Promise; 1383 | 1384 | initialize( 1385 | _tokenDistribution: string, 1386 | _duration: BigNumberish, 1387 | tokenManager: string, 1388 | overrides?: Overrides & { from?: string | Promise } 1389 | ): Promise; 1390 | 1391 | lastTimeRewardApplicable( 1392 | overrides?: CallOverrides 1393 | ): Promise; 1394 | 1395 | lastUpdateTime(overrides?: CallOverrides): Promise; 1396 | 1397 | lock( 1398 | _amount: BigNumberish, 1399 | _rounds: BigNumberish, 1400 | overrides?: Overrides & { from?: string | Promise } 1401 | ): Promise; 1402 | 1403 | notifyRewardAmount( 1404 | reward: BigNumberish, 1405 | overrides?: Overrides & { from?: string | Promise } 1406 | ): Promise; 1407 | 1408 | onApprove( 1409 | _holder: string, 1410 | _spender: string, 1411 | _amount: BigNumberish, 1412 | overrides?: Overrides & { from?: string | Promise } 1413 | ): Promise; 1414 | 1415 | onRegisterAsHook( 1416 | _hookId: BigNumberish, 1417 | _token: string, 1418 | overrides?: Overrides & { from?: string | Promise } 1419 | ): Promise; 1420 | 1421 | onRevokeAsHook( 1422 | _hookId: BigNumberish, 1423 | _token: string, 1424 | overrides?: Overrides & { from?: string | Promise } 1425 | ): Promise; 1426 | 1427 | onTransfer( 1428 | _from: string, 1429 | _to: string, 1430 | _amount: BigNumberish, 1431 | overrides?: Overrides & { from?: string | Promise } 1432 | ): Promise; 1433 | 1434 | owner(overrides?: CallOverrides): Promise; 1435 | 1436 | periodFinish(overrides?: CallOverrides): Promise; 1437 | 1438 | renounceOwnership( 1439 | overrides?: Overrides & { from?: string | Promise } 1440 | ): Promise; 1441 | 1442 | rewardDistribution( 1443 | overrides?: CallOverrides 1444 | ): Promise; 1445 | 1446 | rewardPerToken(overrides?: CallOverrides): Promise; 1447 | 1448 | rewardPerTokenStored( 1449 | overrides?: CallOverrides 1450 | ): Promise; 1451 | 1452 | rewardRate(overrides?: CallOverrides): Promise; 1453 | 1454 | rewards( 1455 | arg0: string, 1456 | overrides?: CallOverrides 1457 | ): Promise; 1458 | 1459 | setGivPowerManager( 1460 | _givPowerManager: string, 1461 | overrides?: Overrides & { from?: string | Promise } 1462 | ): Promise; 1463 | 1464 | setRewardDistribution( 1465 | _rewardDistribution: string, 1466 | overrides?: Overrides & { from?: string | Promise } 1467 | ): Promise; 1468 | 1469 | stakeGivPower( 1470 | user: string, 1471 | amount: BigNumberish, 1472 | overrides?: Overrides & { from?: string | Promise } 1473 | ): Promise; 1474 | 1475 | tokenDistro(overrides?: CallOverrides): Promise; 1476 | 1477 | totalSupply(overrides?: CallOverrides): Promise; 1478 | 1479 | transfer( 1480 | arg0: string, 1481 | arg1: BigNumberish, 1482 | overrides?: CallOverrides 1483 | ): Promise; 1484 | 1485 | transferFrom( 1486 | arg0: string, 1487 | arg1: string, 1488 | arg2: BigNumberish, 1489 | overrides?: CallOverrides 1490 | ): Promise; 1491 | 1492 | transferOwnership( 1493 | newOwner: string, 1494 | overrides?: Overrides & { from?: string | Promise } 1495 | ): Promise; 1496 | 1497 | unlock( 1498 | _accounts: string[], 1499 | _round: BigNumberish, 1500 | overrides?: Overrides & { from?: string | Promise } 1501 | ): Promise; 1502 | 1503 | userLocks( 1504 | arg0: string, 1505 | overrides?: CallOverrides 1506 | ): Promise; 1507 | 1508 | userRewardPerTokenPaid( 1509 | arg0: string, 1510 | overrides?: CallOverrides 1511 | ): Promise; 1512 | 1513 | withdrawGivPower( 1514 | user: string, 1515 | amount: BigNumberish, 1516 | overrides?: Overrides & { from?: string | Promise } 1517 | ): Promise; 1518 | }; 1519 | } 1520 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.16.7" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" 8 | integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== 9 | dependencies: 10 | "@babel/highlight" "^7.16.7" 11 | 12 | "@babel/helper-validator-identifier@^7.16.7": 13 | version "7.16.7" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" 15 | integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== 16 | 17 | "@babel/highlight@^7.16.7": 18 | version "7.17.12" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" 20 | integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.16.7" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@colors/colors@1.5.0": 27 | version "1.5.0" 28 | resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" 29 | integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== 30 | 31 | "@dabh/diagnostics@^2.0.2": 32 | version "2.0.3" 33 | resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a" 34 | integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA== 35 | dependencies: 36 | colorspace "1.1.x" 37 | enabled "2.0.x" 38 | kuler "^2.0.0" 39 | 40 | "@ethersproject/abi@5.6.4", "@ethersproject/abi@^5.6.3": 41 | version "5.6.4" 42 | resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.4.tgz#f6e01b6ed391a505932698ecc0d9e7a99ee60362" 43 | integrity sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg== 44 | dependencies: 45 | "@ethersproject/address" "^5.6.1" 46 | "@ethersproject/bignumber" "^5.6.2" 47 | "@ethersproject/bytes" "^5.6.1" 48 | "@ethersproject/constants" "^5.6.1" 49 | "@ethersproject/hash" "^5.6.1" 50 | "@ethersproject/keccak256" "^5.6.1" 51 | "@ethersproject/logger" "^5.6.0" 52 | "@ethersproject/properties" "^5.6.0" 53 | "@ethersproject/strings" "^5.6.1" 54 | 55 | "@ethersproject/abstract-provider@5.6.1", "@ethersproject/abstract-provider@^5.6.1": 56 | version "5.6.1" 57 | resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" 58 | integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== 59 | dependencies: 60 | "@ethersproject/bignumber" "^5.6.2" 61 | "@ethersproject/bytes" "^5.6.1" 62 | "@ethersproject/logger" "^5.6.0" 63 | "@ethersproject/networks" "^5.6.3" 64 | "@ethersproject/properties" "^5.6.0" 65 | "@ethersproject/transactions" "^5.6.2" 66 | "@ethersproject/web" "^5.6.1" 67 | 68 | "@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.2": 69 | version "5.6.2" 70 | resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" 71 | integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== 72 | dependencies: 73 | "@ethersproject/abstract-provider" "^5.6.1" 74 | "@ethersproject/bignumber" "^5.6.2" 75 | "@ethersproject/bytes" "^5.6.1" 76 | "@ethersproject/logger" "^5.6.0" 77 | "@ethersproject/properties" "^5.6.0" 78 | 79 | "@ethersproject/address@5.6.1", "@ethersproject/address@^5.6.1": 80 | version "5.6.1" 81 | resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" 82 | integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== 83 | dependencies: 84 | "@ethersproject/bignumber" "^5.6.2" 85 | "@ethersproject/bytes" "^5.6.1" 86 | "@ethersproject/keccak256" "^5.6.1" 87 | "@ethersproject/logger" "^5.6.0" 88 | "@ethersproject/rlp" "^5.6.1" 89 | 90 | "@ethersproject/base64@5.6.1", "@ethersproject/base64@^5.6.1": 91 | version "5.6.1" 92 | resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" 93 | integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== 94 | dependencies: 95 | "@ethersproject/bytes" "^5.6.1" 96 | 97 | "@ethersproject/basex@5.6.1", "@ethersproject/basex@^5.6.1": 98 | version "5.6.1" 99 | resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" 100 | integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== 101 | dependencies: 102 | "@ethersproject/bytes" "^5.6.1" 103 | "@ethersproject/properties" "^5.6.0" 104 | 105 | "@ethersproject/bignumber@5.6.2", "@ethersproject/bignumber@^5.6.2": 106 | version "5.6.2" 107 | resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" 108 | integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== 109 | dependencies: 110 | "@ethersproject/bytes" "^5.6.1" 111 | "@ethersproject/logger" "^5.6.0" 112 | bn.js "^5.2.1" 113 | 114 | "@ethersproject/bytes@5.6.1", "@ethersproject/bytes@^5.6.1": 115 | version "5.6.1" 116 | resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" 117 | integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== 118 | dependencies: 119 | "@ethersproject/logger" "^5.6.0" 120 | 121 | "@ethersproject/constants@5.6.1", "@ethersproject/constants@^5.6.1": 122 | version "5.6.1" 123 | resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" 124 | integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== 125 | dependencies: 126 | "@ethersproject/bignumber" "^5.6.2" 127 | 128 | "@ethersproject/contracts@5.6.2": 129 | version "5.6.2" 130 | resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" 131 | integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== 132 | dependencies: 133 | "@ethersproject/abi" "^5.6.3" 134 | "@ethersproject/abstract-provider" "^5.6.1" 135 | "@ethersproject/abstract-signer" "^5.6.2" 136 | "@ethersproject/address" "^5.6.1" 137 | "@ethersproject/bignumber" "^5.6.2" 138 | "@ethersproject/bytes" "^5.6.1" 139 | "@ethersproject/constants" "^5.6.1" 140 | "@ethersproject/logger" "^5.6.0" 141 | "@ethersproject/properties" "^5.6.0" 142 | "@ethersproject/transactions" "^5.6.2" 143 | 144 | "@ethersproject/hash@5.6.1", "@ethersproject/hash@^5.6.1": 145 | version "5.6.1" 146 | resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" 147 | integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== 148 | dependencies: 149 | "@ethersproject/abstract-signer" "^5.6.2" 150 | "@ethersproject/address" "^5.6.1" 151 | "@ethersproject/bignumber" "^5.6.2" 152 | "@ethersproject/bytes" "^5.6.1" 153 | "@ethersproject/keccak256" "^5.6.1" 154 | "@ethersproject/logger" "^5.6.0" 155 | "@ethersproject/properties" "^5.6.0" 156 | "@ethersproject/strings" "^5.6.1" 157 | 158 | "@ethersproject/hdnode@5.6.2", "@ethersproject/hdnode@^5.6.2": 159 | version "5.6.2" 160 | resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" 161 | integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== 162 | dependencies: 163 | "@ethersproject/abstract-signer" "^5.6.2" 164 | "@ethersproject/basex" "^5.6.1" 165 | "@ethersproject/bignumber" "^5.6.2" 166 | "@ethersproject/bytes" "^5.6.1" 167 | "@ethersproject/logger" "^5.6.0" 168 | "@ethersproject/pbkdf2" "^5.6.1" 169 | "@ethersproject/properties" "^5.6.0" 170 | "@ethersproject/sha2" "^5.6.1" 171 | "@ethersproject/signing-key" "^5.6.2" 172 | "@ethersproject/strings" "^5.6.1" 173 | "@ethersproject/transactions" "^5.6.2" 174 | "@ethersproject/wordlists" "^5.6.1" 175 | 176 | "@ethersproject/json-wallets@5.6.1", "@ethersproject/json-wallets@^5.6.1": 177 | version "5.6.1" 178 | resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" 179 | integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== 180 | dependencies: 181 | "@ethersproject/abstract-signer" "^5.6.2" 182 | "@ethersproject/address" "^5.6.1" 183 | "@ethersproject/bytes" "^5.6.1" 184 | "@ethersproject/hdnode" "^5.6.2" 185 | "@ethersproject/keccak256" "^5.6.1" 186 | "@ethersproject/logger" "^5.6.0" 187 | "@ethersproject/pbkdf2" "^5.6.1" 188 | "@ethersproject/properties" "^5.6.0" 189 | "@ethersproject/random" "^5.6.1" 190 | "@ethersproject/strings" "^5.6.1" 191 | "@ethersproject/transactions" "^5.6.2" 192 | aes-js "3.0.0" 193 | scrypt-js "3.0.1" 194 | 195 | "@ethersproject/keccak256@5.6.1", "@ethersproject/keccak256@^5.6.1": 196 | version "5.6.1" 197 | resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" 198 | integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== 199 | dependencies: 200 | "@ethersproject/bytes" "^5.6.1" 201 | js-sha3 "0.8.0" 202 | 203 | "@ethersproject/logger@5.6.0", "@ethersproject/logger@^5.6.0": 204 | version "5.6.0" 205 | resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" 206 | integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== 207 | 208 | "@ethersproject/networks@5.6.4", "@ethersproject/networks@^5.6.3": 209 | version "5.6.4" 210 | resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" 211 | integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== 212 | dependencies: 213 | "@ethersproject/logger" "^5.6.0" 214 | 215 | "@ethersproject/pbkdf2@5.6.1", "@ethersproject/pbkdf2@^5.6.1": 216 | version "5.6.1" 217 | resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" 218 | integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== 219 | dependencies: 220 | "@ethersproject/bytes" "^5.6.1" 221 | "@ethersproject/sha2" "^5.6.1" 222 | 223 | "@ethersproject/properties@5.6.0", "@ethersproject/properties@^5.6.0": 224 | version "5.6.0" 225 | resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" 226 | integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== 227 | dependencies: 228 | "@ethersproject/logger" "^5.6.0" 229 | 230 | "@ethersproject/providers@5.6.8": 231 | version "5.6.8" 232 | resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" 233 | integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== 234 | dependencies: 235 | "@ethersproject/abstract-provider" "^5.6.1" 236 | "@ethersproject/abstract-signer" "^5.6.2" 237 | "@ethersproject/address" "^5.6.1" 238 | "@ethersproject/base64" "^5.6.1" 239 | "@ethersproject/basex" "^5.6.1" 240 | "@ethersproject/bignumber" "^5.6.2" 241 | "@ethersproject/bytes" "^5.6.1" 242 | "@ethersproject/constants" "^5.6.1" 243 | "@ethersproject/hash" "^5.6.1" 244 | "@ethersproject/logger" "^5.6.0" 245 | "@ethersproject/networks" "^5.6.3" 246 | "@ethersproject/properties" "^5.6.0" 247 | "@ethersproject/random" "^5.6.1" 248 | "@ethersproject/rlp" "^5.6.1" 249 | "@ethersproject/sha2" "^5.6.1" 250 | "@ethersproject/strings" "^5.6.1" 251 | "@ethersproject/transactions" "^5.6.2" 252 | "@ethersproject/web" "^5.6.1" 253 | bech32 "1.1.4" 254 | ws "7.4.6" 255 | 256 | "@ethersproject/random@5.6.1", "@ethersproject/random@^5.6.1": 257 | version "5.6.1" 258 | resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" 259 | integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== 260 | dependencies: 261 | "@ethersproject/bytes" "^5.6.1" 262 | "@ethersproject/logger" "^5.6.0" 263 | 264 | "@ethersproject/rlp@5.6.1", "@ethersproject/rlp@^5.6.1": 265 | version "5.6.1" 266 | resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" 267 | integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== 268 | dependencies: 269 | "@ethersproject/bytes" "^5.6.1" 270 | "@ethersproject/logger" "^5.6.0" 271 | 272 | "@ethersproject/sha2@5.6.1", "@ethersproject/sha2@^5.6.1": 273 | version "5.6.1" 274 | resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" 275 | integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== 276 | dependencies: 277 | "@ethersproject/bytes" "^5.6.1" 278 | "@ethersproject/logger" "^5.6.0" 279 | hash.js "1.1.7" 280 | 281 | "@ethersproject/signing-key@5.6.2", "@ethersproject/signing-key@^5.6.2": 282 | version "5.6.2" 283 | resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" 284 | integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== 285 | dependencies: 286 | "@ethersproject/bytes" "^5.6.1" 287 | "@ethersproject/logger" "^5.6.0" 288 | "@ethersproject/properties" "^5.6.0" 289 | bn.js "^5.2.1" 290 | elliptic "6.5.4" 291 | hash.js "1.1.7" 292 | 293 | "@ethersproject/solidity@5.6.1": 294 | version "5.6.1" 295 | resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" 296 | integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== 297 | dependencies: 298 | "@ethersproject/bignumber" "^5.6.2" 299 | "@ethersproject/bytes" "^5.6.1" 300 | "@ethersproject/keccak256" "^5.6.1" 301 | "@ethersproject/logger" "^5.6.0" 302 | "@ethersproject/sha2" "^5.6.1" 303 | "@ethersproject/strings" "^5.6.1" 304 | 305 | "@ethersproject/strings@5.6.1", "@ethersproject/strings@^5.6.1": 306 | version "5.6.1" 307 | resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" 308 | integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== 309 | dependencies: 310 | "@ethersproject/bytes" "^5.6.1" 311 | "@ethersproject/constants" "^5.6.1" 312 | "@ethersproject/logger" "^5.6.0" 313 | 314 | "@ethersproject/transactions@5.6.2", "@ethersproject/transactions@^5.6.2": 315 | version "5.6.2" 316 | resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" 317 | integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== 318 | dependencies: 319 | "@ethersproject/address" "^5.6.1" 320 | "@ethersproject/bignumber" "^5.6.2" 321 | "@ethersproject/bytes" "^5.6.1" 322 | "@ethersproject/constants" "^5.6.1" 323 | "@ethersproject/keccak256" "^5.6.1" 324 | "@ethersproject/logger" "^5.6.0" 325 | "@ethersproject/properties" "^5.6.0" 326 | "@ethersproject/rlp" "^5.6.1" 327 | "@ethersproject/signing-key" "^5.6.2" 328 | 329 | "@ethersproject/units@5.6.1": 330 | version "5.6.1" 331 | resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" 332 | integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== 333 | dependencies: 334 | "@ethersproject/bignumber" "^5.6.2" 335 | "@ethersproject/constants" "^5.6.1" 336 | "@ethersproject/logger" "^5.6.0" 337 | 338 | "@ethersproject/wallet@5.6.2": 339 | version "5.6.2" 340 | resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" 341 | integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== 342 | dependencies: 343 | "@ethersproject/abstract-provider" "^5.6.1" 344 | "@ethersproject/abstract-signer" "^5.6.2" 345 | "@ethersproject/address" "^5.6.1" 346 | "@ethersproject/bignumber" "^5.6.2" 347 | "@ethersproject/bytes" "^5.6.1" 348 | "@ethersproject/hash" "^5.6.1" 349 | "@ethersproject/hdnode" "^5.6.2" 350 | "@ethersproject/json-wallets" "^5.6.1" 351 | "@ethersproject/keccak256" "^5.6.1" 352 | "@ethersproject/logger" "^5.6.0" 353 | "@ethersproject/properties" "^5.6.0" 354 | "@ethersproject/random" "^5.6.1" 355 | "@ethersproject/signing-key" "^5.6.2" 356 | "@ethersproject/transactions" "^5.6.2" 357 | "@ethersproject/wordlists" "^5.6.1" 358 | 359 | "@ethersproject/web@5.6.1", "@ethersproject/web@^5.6.1": 360 | version "5.6.1" 361 | resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" 362 | integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== 363 | dependencies: 364 | "@ethersproject/base64" "^5.6.1" 365 | "@ethersproject/bytes" "^5.6.1" 366 | "@ethersproject/logger" "^5.6.0" 367 | "@ethersproject/properties" "^5.6.0" 368 | "@ethersproject/strings" "^5.6.1" 369 | 370 | "@ethersproject/wordlists@5.6.1", "@ethersproject/wordlists@^5.6.1": 371 | version "5.6.1" 372 | resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" 373 | integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== 374 | dependencies: 375 | "@ethersproject/bytes" "^5.6.1" 376 | "@ethersproject/hash" "^5.6.1" 377 | "@ethersproject/logger" "^5.6.0" 378 | "@ethersproject/properties" "^5.6.0" 379 | "@ethersproject/strings" "^5.6.1" 380 | 381 | "@types/node@^18.0.0": 382 | version "18.0.0" 383 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" 384 | integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== 385 | 386 | aes-js@3.0.0: 387 | version "3.0.0" 388 | resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" 389 | integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== 390 | 391 | ansi-styles@^3.2.1: 392 | version "3.2.1" 393 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 394 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 395 | dependencies: 396 | color-convert "^1.9.0" 397 | 398 | arg@^4.1.0: 399 | version "4.1.3" 400 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 401 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 402 | 403 | argparse@^1.0.7: 404 | version "1.0.10" 405 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 406 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 407 | dependencies: 408 | sprintf-js "~1.0.2" 409 | 410 | async@^3.2.3: 411 | version "3.2.4" 412 | resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" 413 | integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== 414 | 415 | asynckit@^0.4.0: 416 | version "0.4.0" 417 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 418 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 419 | 420 | balanced-match@^1.0.0: 421 | version "1.0.2" 422 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 423 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 424 | 425 | bech32@1.1.4: 426 | version "1.1.4" 427 | resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" 428 | integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== 429 | 430 | bn.js@^4.11.9: 431 | version "4.12.0" 432 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" 433 | integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== 434 | 435 | bn.js@^5.2.1: 436 | version "5.2.1" 437 | resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" 438 | integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== 439 | 440 | brace-expansion@^1.1.7: 441 | version "1.1.11" 442 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 443 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 444 | dependencies: 445 | balanced-match "^1.0.0" 446 | concat-map "0.0.1" 447 | 448 | brorand@^1.1.0: 449 | version "1.1.0" 450 | resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" 451 | integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== 452 | 453 | buffer-from@^1.0.0: 454 | version "1.1.2" 455 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 456 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 457 | 458 | builtin-modules@^1.1.1: 459 | version "1.1.1" 460 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 461 | integrity sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ== 462 | 463 | chalk@^2.0.0, chalk@^2.3.0: 464 | version "2.4.2" 465 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 466 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 467 | dependencies: 468 | ansi-styles "^3.2.1" 469 | escape-string-regexp "^1.0.5" 470 | supports-color "^5.3.0" 471 | 472 | color-convert@^1.9.0, color-convert@^1.9.3: 473 | version "1.9.3" 474 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 475 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 476 | dependencies: 477 | color-name "1.1.3" 478 | 479 | color-name@1.1.3: 480 | version "1.1.3" 481 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 482 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 483 | 484 | color-name@^1.0.0: 485 | version "1.1.4" 486 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 487 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 488 | 489 | color-string@^1.6.0: 490 | version "1.9.1" 491 | resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" 492 | integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== 493 | dependencies: 494 | color-name "^1.0.0" 495 | simple-swizzle "^0.2.2" 496 | 497 | color@^3.1.3: 498 | version "3.2.1" 499 | resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" 500 | integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== 501 | dependencies: 502 | color-convert "^1.9.3" 503 | color-string "^1.6.0" 504 | 505 | colorspace@1.1.x: 506 | version "1.1.4" 507 | resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243" 508 | integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w== 509 | dependencies: 510 | color "^3.1.3" 511 | text-hex "1.0.x" 512 | 513 | combined-stream@^1.0.8: 514 | version "1.0.8" 515 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 516 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 517 | dependencies: 518 | delayed-stream "~1.0.0" 519 | 520 | commander@^2.12.1: 521 | version "2.20.3" 522 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 523 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 524 | 525 | concat-map@0.0.1: 526 | version "0.0.1" 527 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 528 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 529 | 530 | cross-fetch@^3.1.5: 531 | version "3.1.5" 532 | resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" 533 | integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw== 534 | dependencies: 535 | node-fetch "2.6.7" 536 | 537 | delayed-stream@~1.0.0: 538 | version "1.0.0" 539 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 540 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 541 | 542 | diff@^4.0.1: 543 | version "4.0.2" 544 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 545 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 546 | 547 | doctrine@0.7.2: 548 | version "0.7.2" 549 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-0.7.2.tgz#7cb860359ba3be90e040b26b729ce4bfa654c523" 550 | integrity sha512-qiB/Rir6Un6Ad/TIgTRzsremsTGWzs8j7woXvp14jgq00676uBiBT5eUOi+FgRywZFVy5Us/c04ISRpZhRbS6w== 551 | dependencies: 552 | esutils "^1.1.6" 553 | isarray "0.0.1" 554 | 555 | dotenv@^16.0.1: 556 | version "16.0.1" 557 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d" 558 | integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ== 559 | 560 | elliptic@6.5.4: 561 | version "6.5.4" 562 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" 563 | integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== 564 | dependencies: 565 | bn.js "^4.11.9" 566 | brorand "^1.1.0" 567 | hash.js "^1.0.0" 568 | hmac-drbg "^1.0.1" 569 | inherits "^2.0.4" 570 | minimalistic-assert "^1.0.1" 571 | minimalistic-crypto-utils "^1.0.1" 572 | 573 | enabled@2.0.x: 574 | version "2.0.0" 575 | resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" 576 | integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== 577 | 578 | escape-string-regexp@^1.0.5: 579 | version "1.0.5" 580 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 581 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 582 | 583 | eslint-plugin-prettier@^2.2.0: 584 | version "2.7.0" 585 | resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz#b4312dcf2c1d965379d7f9d5b5f8aaadc6a45904" 586 | integrity sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA== 587 | dependencies: 588 | fast-diff "^1.1.1" 589 | jest-docblock "^21.0.0" 590 | 591 | esprima@^4.0.0: 592 | version "4.0.1" 593 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 594 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 595 | 596 | esutils@^1.1.6: 597 | version "1.1.6" 598 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-1.1.6.tgz#c01ccaa9ae4b897c6d0c3e210ae52f3c7a844375" 599 | integrity sha512-RG1ZkUT7iFJG9LSHr7KDuuMSlujfeTtMNIcInURxKAxhMtwQhI3NrQhz26gZQYlsYZQKzsnwtpKrFKj9K9Qu1A== 600 | 601 | ethers@^5.6.9: 602 | version "5.6.9" 603 | resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" 604 | integrity sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA== 605 | dependencies: 606 | "@ethersproject/abi" "5.6.4" 607 | "@ethersproject/abstract-provider" "5.6.1" 608 | "@ethersproject/abstract-signer" "5.6.2" 609 | "@ethersproject/address" "5.6.1" 610 | "@ethersproject/base64" "5.6.1" 611 | "@ethersproject/basex" "5.6.1" 612 | "@ethersproject/bignumber" "5.6.2" 613 | "@ethersproject/bytes" "5.6.1" 614 | "@ethersproject/constants" "5.6.1" 615 | "@ethersproject/contracts" "5.6.2" 616 | "@ethersproject/hash" "5.6.1" 617 | "@ethersproject/hdnode" "5.6.2" 618 | "@ethersproject/json-wallets" "5.6.1" 619 | "@ethersproject/keccak256" "5.6.1" 620 | "@ethersproject/logger" "5.6.0" 621 | "@ethersproject/networks" "5.6.4" 622 | "@ethersproject/pbkdf2" "5.6.1" 623 | "@ethersproject/properties" "5.6.0" 624 | "@ethersproject/providers" "5.6.8" 625 | "@ethersproject/random" "5.6.1" 626 | "@ethersproject/rlp" "5.6.1" 627 | "@ethersproject/sha2" "5.6.1" 628 | "@ethersproject/signing-key" "5.6.2" 629 | "@ethersproject/solidity" "5.6.1" 630 | "@ethersproject/strings" "5.6.1" 631 | "@ethersproject/transactions" "5.6.2" 632 | "@ethersproject/units" "5.6.1" 633 | "@ethersproject/wallet" "5.6.2" 634 | "@ethersproject/web" "5.6.1" 635 | "@ethersproject/wordlists" "5.6.1" 636 | 637 | extract-files@^9.0.0: 638 | version "9.0.0" 639 | resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" 640 | integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== 641 | 642 | fast-diff@^1.1.1: 643 | version "1.2.0" 644 | resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" 645 | integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== 646 | 647 | fecha@^4.2.0: 648 | version "4.2.3" 649 | resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd" 650 | integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw== 651 | 652 | fn.name@1.x.x: 653 | version "1.1.0" 654 | resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" 655 | integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== 656 | 657 | form-data@^3.0.0: 658 | version "3.0.1" 659 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" 660 | integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== 661 | dependencies: 662 | asynckit "^0.4.0" 663 | combined-stream "^1.0.8" 664 | mime-types "^2.1.12" 665 | 666 | fs.realpath@^1.0.0: 667 | version "1.0.0" 668 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 669 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 670 | 671 | function-bind@^1.1.1: 672 | version "1.1.1" 673 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 674 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 675 | 676 | glob@^7.1.1: 677 | version "7.2.3" 678 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 679 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 680 | dependencies: 681 | fs.realpath "^1.0.0" 682 | inflight "^1.0.4" 683 | inherits "2" 684 | minimatch "^3.1.1" 685 | once "^1.3.0" 686 | path-is-absolute "^1.0.0" 687 | 688 | graphql-request@^4.3.0: 689 | version "4.3.0" 690 | resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-4.3.0.tgz#b934e08fcae764aa2cdc697d3c821f046cb5dbf2" 691 | integrity sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow== 692 | dependencies: 693 | cross-fetch "^3.1.5" 694 | extract-files "^9.0.0" 695 | form-data "^3.0.0" 696 | 697 | graphql@^16.5.0: 698 | version "16.5.0" 699 | resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.5.0.tgz#41b5c1182eaac7f3d47164fb247f61e4dfb69c85" 700 | integrity sha512-qbHgh8Ix+j/qY+a/ZcJnFQ+j8ezakqPiHwPiZhV/3PgGlgf96QMBB5/f2rkiC9sgLoy/xvT6TSiaf2nTHJh5iA== 701 | 702 | has-flag@^3.0.0: 703 | version "3.0.0" 704 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 705 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 706 | 707 | has@^1.0.3: 708 | version "1.0.3" 709 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 710 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 711 | dependencies: 712 | function-bind "^1.1.1" 713 | 714 | hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: 715 | version "1.1.7" 716 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" 717 | integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== 718 | dependencies: 719 | inherits "^2.0.3" 720 | minimalistic-assert "^1.0.1" 721 | 722 | hmac-drbg@^1.0.1: 723 | version "1.0.1" 724 | resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" 725 | integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== 726 | dependencies: 727 | hash.js "^1.0.3" 728 | minimalistic-assert "^1.0.0" 729 | minimalistic-crypto-utils "^1.0.1" 730 | 731 | inflight@^1.0.4: 732 | version "1.0.6" 733 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 734 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 735 | dependencies: 736 | once "^1.3.0" 737 | wrappy "1" 738 | 739 | inherits@2, inherits@^2.0.3, inherits@^2.0.4: 740 | version "2.0.4" 741 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 742 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 743 | 744 | is-arrayish@^0.3.1: 745 | version "0.3.2" 746 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" 747 | integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== 748 | 749 | is-core-module@^2.9.0: 750 | version "2.9.0" 751 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" 752 | integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== 753 | dependencies: 754 | has "^1.0.3" 755 | 756 | is-stream@^2.0.0: 757 | version "2.0.1" 758 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" 759 | integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== 760 | 761 | isarray@0.0.1: 762 | version "0.0.1" 763 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 764 | integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== 765 | 766 | jest-docblock@^21.0.0: 767 | version "21.2.0" 768 | resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-21.2.0.tgz#51529c3b30d5fd159da60c27ceedc195faf8d414" 769 | integrity sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw== 770 | 771 | js-sha3@0.8.0: 772 | version "0.8.0" 773 | resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" 774 | integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== 775 | 776 | js-tokens@^4.0.0: 777 | version "4.0.0" 778 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 779 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 780 | 781 | js-yaml@^3.13.1: 782 | version "3.14.1" 783 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 784 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 785 | dependencies: 786 | argparse "^1.0.7" 787 | esprima "^4.0.0" 788 | 789 | kuler@^2.0.0: 790 | version "2.0.0" 791 | resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" 792 | integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== 793 | 794 | lines-and-columns@^1.1.6: 795 | version "1.2.4" 796 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" 797 | integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== 798 | 799 | logform@^2.3.2, logform@^2.4.0: 800 | version "2.4.1" 801 | resolved "https://registry.yarnpkg.com/logform/-/logform-2.4.1.tgz#512c9eaef738044d1c619790ba0f806c80d9d3a9" 802 | integrity sha512-7XB/tqc3VRbri9pRjU6E97mQ8vC27ivJ3lct4jhyT+n0JNDd4YKldFl0D75NqDp46hk8RC7Ma1Vjv/UPf67S+A== 803 | dependencies: 804 | "@colors/colors" "1.5.0" 805 | fecha "^4.2.0" 806 | ms "^2.1.1" 807 | safe-stable-stringify "^2.3.1" 808 | triple-beam "^1.3.0" 809 | 810 | make-error@^1.1.1: 811 | version "1.3.6" 812 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 813 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 814 | 815 | mime-db@1.52.0: 816 | version "1.52.0" 817 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 818 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 819 | 820 | mime-types@^2.1.12: 821 | version "2.1.35" 822 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 823 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 824 | dependencies: 825 | mime-db "1.52.0" 826 | 827 | minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: 828 | version "1.0.1" 829 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" 830 | integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== 831 | 832 | minimalistic-crypto-utils@^1.0.1: 833 | version "1.0.1" 834 | resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" 835 | integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== 836 | 837 | minimatch@^3.0.4, minimatch@^3.1.1: 838 | version "3.1.2" 839 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 840 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 841 | dependencies: 842 | brace-expansion "^1.1.7" 843 | 844 | minimist@^1.2.6: 845 | version "1.2.6" 846 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" 847 | integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== 848 | 849 | mkdirp@^0.5.3: 850 | version "0.5.6" 851 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 852 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 853 | dependencies: 854 | minimist "^1.2.6" 855 | 856 | ms@^2.1.1: 857 | version "2.1.3" 858 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 859 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 860 | 861 | node-fetch@2.6.7: 862 | version "2.6.7" 863 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" 864 | integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== 865 | dependencies: 866 | whatwg-url "^5.0.0" 867 | 868 | once@^1.3.0: 869 | version "1.4.0" 870 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 871 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 872 | dependencies: 873 | wrappy "1" 874 | 875 | one-time@^1.0.0: 876 | version "1.0.0" 877 | resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" 878 | integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== 879 | dependencies: 880 | fn.name "1.x.x" 881 | 882 | path-is-absolute@^1.0.0: 883 | version "1.0.1" 884 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 885 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 886 | 887 | path-parse@^1.0.7: 888 | version "1.0.7" 889 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 890 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 891 | 892 | prettier@^2.4.1: 893 | version "2.7.1" 894 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" 895 | integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== 896 | 897 | readable-stream@^3.4.0, readable-stream@^3.6.0: 898 | version "3.6.0" 899 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 900 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 901 | dependencies: 902 | inherits "^2.0.3" 903 | string_decoder "^1.1.1" 904 | util-deprecate "^1.0.1" 905 | 906 | resolve@^1.3.2: 907 | version "1.22.1" 908 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 909 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 910 | dependencies: 911 | is-core-module "^2.9.0" 912 | path-parse "^1.0.7" 913 | supports-preserve-symlinks-flag "^1.0.0" 914 | 915 | safe-buffer@~5.2.0: 916 | version "5.2.1" 917 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 918 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 919 | 920 | safe-stable-stringify@^2.3.1: 921 | version "2.3.1" 922 | resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.3.1.tgz#ab67cbe1fe7d40603ca641c5e765cb942d04fc73" 923 | integrity sha512-kYBSfT+troD9cDA85VDnHZ1rpHC50O0g1e6WlGHVCz/g+JS+9WKLj+XwFYyR8UbrZN8ll9HUpDAAddY58MGisg== 924 | 925 | scrypt-js@3.0.1: 926 | version "3.0.1" 927 | resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" 928 | integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== 929 | 930 | semver@^5.3.0: 931 | version "5.7.1" 932 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 933 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 934 | 935 | simple-swizzle@^0.2.2: 936 | version "0.2.2" 937 | resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" 938 | integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== 939 | dependencies: 940 | is-arrayish "^0.3.1" 941 | 942 | source-map-support@^0.5.17: 943 | version "0.5.21" 944 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 945 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 946 | dependencies: 947 | buffer-from "^1.0.0" 948 | source-map "^0.6.0" 949 | 950 | source-map@^0.6.0: 951 | version "0.6.1" 952 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 953 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 954 | 955 | sprintf-js@~1.0.2: 956 | version "1.0.3" 957 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 958 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 959 | 960 | stack-trace@0.0.x: 961 | version "0.0.10" 962 | resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" 963 | integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg== 964 | 965 | string_decoder@^1.1.1: 966 | version "1.3.0" 967 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 968 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 969 | dependencies: 970 | safe-buffer "~5.2.0" 971 | 972 | supports-color@^5.3.0: 973 | version "5.5.0" 974 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 975 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 976 | dependencies: 977 | has-flag "^3.0.0" 978 | 979 | supports-preserve-symlinks-flag@^1.0.0: 980 | version "1.0.0" 981 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 982 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 983 | 984 | text-hex@1.0.x: 985 | version "1.0.0" 986 | resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" 987 | integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== 988 | 989 | tr46@~0.0.3: 990 | version "0.0.3" 991 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 992 | integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== 993 | 994 | triple-beam@^1.3.0: 995 | version "1.3.0" 996 | resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" 997 | integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== 998 | 999 | ts-node@^8.10.2: 1000 | version "8.10.2" 1001 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-8.10.2.tgz#eee03764633b1234ddd37f8db9ec10b75ec7fb8d" 1002 | integrity sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA== 1003 | dependencies: 1004 | arg "^4.1.0" 1005 | diff "^4.0.1" 1006 | make-error "^1.1.1" 1007 | source-map-support "^0.5.17" 1008 | yn "3.1.1" 1009 | 1010 | tslib@1.9.0: 1011 | version "1.9.0" 1012 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8" 1013 | integrity sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ== 1014 | 1015 | tslib@^1.13.0, tslib@^1.7.1, tslib@^1.8.1: 1016 | version "1.14.1" 1017 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1018 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1019 | 1020 | tslint-config-prettier@^1.18.0: 1021 | version "1.18.0" 1022 | resolved "https://registry.yarnpkg.com/tslint-config-prettier/-/tslint-config-prettier-1.18.0.tgz#75f140bde947d35d8f0d238e0ebf809d64592c37" 1023 | integrity sha512-xPw9PgNPLG3iKRxmK7DWr+Ea/SzrvfHtjFt5LBl61gk2UBG/DB9kCXRjv+xyIU1rUtnayLeMUVJBcMX8Z17nDg== 1024 | 1025 | tslint-eslint-rules@^5.4.0: 1026 | version "5.4.0" 1027 | resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.4.0.tgz#e488cc9181bf193fe5cd7bfca213a7695f1737b5" 1028 | integrity sha512-WlSXE+J2vY/VPgIcqQuijMQiel+UtmXS+4nvK4ZzlDiqBfXse8FAvkNnTcYhnQyOTW5KFM+uRRGXxYhFpuBc6w== 1029 | dependencies: 1030 | doctrine "0.7.2" 1031 | tslib "1.9.0" 1032 | tsutils "^3.0.0" 1033 | 1034 | tslint-plugin-prettier@^2.3.0: 1035 | version "2.3.0" 1036 | resolved "https://registry.yarnpkg.com/tslint-plugin-prettier/-/tslint-plugin-prettier-2.3.0.tgz#73fe71bf9f03842ac48c104122ca9b1de012ecf4" 1037 | integrity sha512-F9e4K03yc9xuvv+A0v1EmjcnDwpz8SpCD8HzqSDe0eyg34cBinwn9JjmnnRrNAs4HdleRQj7qijp+P/JTxt4vA== 1038 | dependencies: 1039 | eslint-plugin-prettier "^2.2.0" 1040 | lines-and-columns "^1.1.6" 1041 | tslib "^1.7.1" 1042 | 1043 | tslint@^6.1.3: 1044 | version "6.1.3" 1045 | resolved "https://registry.yarnpkg.com/tslint/-/tslint-6.1.3.tgz#5c23b2eccc32487d5523bd3a470e9aa31789d904" 1046 | integrity sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg== 1047 | dependencies: 1048 | "@babel/code-frame" "^7.0.0" 1049 | builtin-modules "^1.1.1" 1050 | chalk "^2.3.0" 1051 | commander "^2.12.1" 1052 | diff "^4.0.1" 1053 | glob "^7.1.1" 1054 | js-yaml "^3.13.1" 1055 | minimatch "^3.0.4" 1056 | mkdirp "^0.5.3" 1057 | resolve "^1.3.2" 1058 | semver "^5.3.0" 1059 | tslib "^1.13.0" 1060 | tsutils "^2.29.0" 1061 | 1062 | tsutils@^2.29.0: 1063 | version "2.29.0" 1064 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99" 1065 | integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA== 1066 | dependencies: 1067 | tslib "^1.8.1" 1068 | 1069 | tsutils@^3.0.0: 1070 | version "3.21.0" 1071 | resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" 1072 | integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== 1073 | dependencies: 1074 | tslib "^1.8.1" 1075 | 1076 | typescript@^4.7.4: 1077 | version "4.7.4" 1078 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" 1079 | integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== 1080 | 1081 | util-deprecate@^1.0.1: 1082 | version "1.0.2" 1083 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1084 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1085 | 1086 | webidl-conversions@^3.0.0: 1087 | version "3.0.1" 1088 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 1089 | integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== 1090 | 1091 | whatwg-url@^5.0.0: 1092 | version "5.0.0" 1093 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" 1094 | integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== 1095 | dependencies: 1096 | tr46 "~0.0.3" 1097 | webidl-conversions "^3.0.0" 1098 | 1099 | winston-transport@^4.5.0: 1100 | version "4.5.0" 1101 | resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa" 1102 | integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q== 1103 | dependencies: 1104 | logform "^2.3.2" 1105 | readable-stream "^3.6.0" 1106 | triple-beam "^1.3.0" 1107 | 1108 | winston@^3.8.0: 1109 | version "3.8.0" 1110 | resolved "https://registry.yarnpkg.com/winston/-/winston-3.8.0.tgz#4fc8656829dcfdab3c38f558eab785eea38a5328" 1111 | integrity sha512-Iix1w8rIq2kBDkGvclO0db2CVOHYVamCIkVWcUbs567G9i2pdB+gvqLgDgxx4B4HXHYD6U4Zybh6ojepUOqcFQ== 1112 | dependencies: 1113 | "@dabh/diagnostics" "^2.0.2" 1114 | async "^3.2.3" 1115 | is-stream "^2.0.0" 1116 | logform "^2.4.0" 1117 | one-time "^1.0.0" 1118 | readable-stream "^3.4.0" 1119 | safe-stable-stringify "^2.3.1" 1120 | stack-trace "0.0.x" 1121 | triple-beam "^1.3.0" 1122 | winston-transport "^4.5.0" 1123 | 1124 | wrappy@1: 1125 | version "1.0.2" 1126 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1127 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1128 | 1129 | ws@7.4.6: 1130 | version "7.4.6" 1131 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" 1132 | integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== 1133 | 1134 | yn@3.1.1: 1135 | version "3.1.1" 1136 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 1137 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 1138 | --------------------------------------------------------------------------------