Init with old relayers-network-ui source code
This commit is contained in:
commit
0703778e41
13
.editorconfig
Normal file
13
.editorconfig
Normal file
@ -0,0 +1,13 @@
|
||||
# editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
2
.env.example
Normal file
2
.env.example
Normal file
@ -0,0 +1,2 @@
|
||||
PINATA_API_KEY=
|
||||
PINATA_SECRET_API_KEY=
|
57
.eslintrc
Normal file
57
.eslintrc
Normal file
@ -0,0 +1,57 @@
|
||||
{
|
||||
"env": {
|
||||
"node": true,
|
||||
"browser": true,
|
||||
"es6": true,
|
||||
"mocha": true
|
||||
},
|
||||
"plugins": [
|
||||
"vue",
|
||||
"jsx-a11y",
|
||||
"prettier",
|
||||
"eslint-plugin-import",
|
||||
"eslint-plugin-node",
|
||||
"eslint-plugin-promise",
|
||||
"@typescript-eslint"
|
||||
],
|
||||
"extends": [
|
||||
"prettier",
|
||||
"eslint:recommended",
|
||||
"standard-with-typescript",
|
||||
"plugin:vue/recommended",
|
||||
"plugin:jsx-a11y/recommended",
|
||||
"plugin:prettier/recommended"
|
||||
],
|
||||
"globals": {
|
||||
"Atomics": "readonly",
|
||||
"SharedArrayBuffer": "readonly"
|
||||
},
|
||||
"parser": "vue-eslint-parser",
|
||||
"parserOptions": {
|
||||
"parser": "@typescript-eslint/parser",
|
||||
"project": "./tsconfig.json",
|
||||
"extraFileExtensions": [".vue"]
|
||||
},
|
||||
"ignorePatterns": [".gitignore"],
|
||||
"rules": {
|
||||
"node/no-callback-literal": 0,
|
||||
"prettier/prettier": ["error", { "printWidth": 130 }],
|
||||
"jsx-quotes": ["error", "prefer-single"],
|
||||
"@typescript-eslint/restrict-template-expressions": ["warn", { "allowNumber": true }],
|
||||
"@typescript-eslint/explicit-function-return-type": 0,
|
||||
"@typescript-eslint/array-type": 2,
|
||||
"@typescript-eslint/camelcase": 0,
|
||||
"@typescript-eslint/consistent-type-definitions": 0,
|
||||
"@typescript-eslint/explicit-member-accessibility": 1,
|
||||
"@typescript-eslint/no-empty-function": 2,
|
||||
"@typescript-eslint/no-empty-interface": 2,
|
||||
"@typescript-eslint/no-explicit-any": 2,
|
||||
"@typescript-eslint/no-extra-non-null-assertion": 2,
|
||||
"@typescript-eslint/no-magic-numbers": 2,
|
||||
"@typescript-eslint/no-require-imports": 2,
|
||||
"@typescript-eslint/require-await": 2,
|
||||
"@typescript-eslint/no-floating-promises": 0,
|
||||
"@typescript-eslint/strict-boolean-expressions": 0,
|
||||
"@typescript-eslint/promise-function-async": 0
|
||||
}
|
||||
}
|
90
.gitignore
vendored
Normal file
90
.gitignore
vendored
Normal file
@ -0,0 +1,90 @@
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
### Node template
|
||||
# Logs
|
||||
/logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
# nuxt.js build output
|
||||
.nuxt
|
||||
|
||||
# Nuxt generate
|
||||
dist
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless
|
||||
|
||||
# IDE / Editor
|
||||
.idea
|
||||
|
||||
# Service worker
|
||||
sw.*
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
|
||||
# Vim swap files
|
||||
*.swp
|
1
.husky/.gitignore
vendored
Normal file
1
.husky/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
_
|
30
.husky/__/husky.sh
Normal file
30
.husky/__/husky.sh
Normal file
@ -0,0 +1,30 @@
|
||||
#!/bin/sh
|
||||
if [ -z "$husky_skip_init" ]; then
|
||||
debug () {
|
||||
[ "$HUSKY_DEBUG" = "1" ] && echo "husky (debug) - $1"
|
||||
}
|
||||
|
||||
readonly hook_name="$(basename "$0")"
|
||||
debug "starting $hook_name..."
|
||||
|
||||
if [ "$HUSKY" = "0" ]; then
|
||||
debug "HUSKY env variable is set to 0, skipping hook"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -f ~/.huskyrc ]; then
|
||||
debug "sourcing ~/.huskyrc"
|
||||
. ~/.huskyrc
|
||||
fi
|
||||
|
||||
export readonly husky_skip_init=1
|
||||
sh -e "$0" "$@"
|
||||
exitCode="$?"
|
||||
|
||||
if [ $exitCode != 0 ]; then
|
||||
echo "husky - $hook_name hook exited with code $exitCode (error)"
|
||||
exit $exitCode
|
||||
fi
|
||||
|
||||
exit 0
|
||||
fi
|
4
.husky/pre-commit
Normal file
4
.husky/pre-commit
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
yarn lint-staged
|
4
.husky/pre-push
Normal file
4
.husky/pre-push
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
. "$(dirname "$0")/_/husky.sh"
|
||||
|
||||
export CI=true && yarn build
|
1
.nvmrc
Normal file
1
.nvmrc
Normal file
@ -0,0 +1 @@
|
||||
14
|
96
.prettierignore
Normal file
96
.prettierignore
Normal file
@ -0,0 +1,96 @@
|
||||
###
|
||||
# Place your Prettier ignore content here
|
||||
|
||||
###
|
||||
# .gitignore content is duplicated here due to https://github.com/prettier/prettier/issues/8506
|
||||
|
||||
# Created by .ignore support plugin (hsz.mobi)
|
||||
### Node template
|
||||
# Logs
|
||||
/logs
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output
|
||||
|
||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Bower dependency directory (https://bower.io/)
|
||||
bower_components
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# TypeScript v1 declaration files
|
||||
typings/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
|
||||
# parcel-bundler cache (https://parceljs.org/)
|
||||
.cache
|
||||
|
||||
# next.js build output
|
||||
.next
|
||||
|
||||
# nuxt.js build output
|
||||
.nuxt
|
||||
|
||||
# Nuxt generate
|
||||
dist
|
||||
|
||||
# vuepress build output
|
||||
.vuepress/dist
|
||||
|
||||
# Serverless directories
|
||||
.serverless
|
||||
|
||||
# IDE / Editor
|
||||
.idea
|
||||
|
||||
# Service worker
|
||||
sw.*
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
|
||||
# Vim swap files
|
||||
*.swp
|
8
.prettierrc
Normal file
8
.prettierrc
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"semi": false,
|
||||
"trailingComma": "all",
|
||||
"singleQuote": true,
|
||||
"jsxSingleQuote": true,
|
||||
"printWidth": 130,
|
||||
"tabWidth": 2
|
||||
}
|
68
README.md
Normal file
68
README.md
Normal file
@ -0,0 +1,68 @@
|
||||
# Tornado Relayers Registry Network UI
|
||||
|
||||
## Build Setup
|
||||
|
||||
```bash
|
||||
# install dependencies
|
||||
$ yarn install
|
||||
|
||||
# serve with hot reload at localhost:3000
|
||||
$ yarn dev
|
||||
|
||||
# build for production and launch server
|
||||
$ yarn build
|
||||
$ yarn start
|
||||
|
||||
# generate static project
|
||||
$ yarn generate
|
||||
```
|
||||
|
||||
For detailed explanation on how things work, check out the [documentation](https://nuxtjs.org).
|
||||
|
||||
## Special Directories
|
||||
|
||||
You can create the following extra directories, some of which have special behaviors. Only `pages` is required; you can delete them if you don't want to use their functionality.
|
||||
|
||||
### `assets`
|
||||
|
||||
The assets directory contains your uncompiled assets such as Stylus or Sass files, images, or fonts.
|
||||
|
||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/assets).
|
||||
|
||||
### `components`
|
||||
|
||||
The components directory contains your Vue.js components. Components make up the different parts of your page and can be reused and imported into your pages, layouts and even other components.
|
||||
|
||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/components).
|
||||
|
||||
### `layouts`
|
||||
|
||||
Layouts are a great help when you want to change the look and feel of your Nuxt app, whether you want to include a sidebar or have distinct layouts for mobile and desktop.
|
||||
|
||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/layouts).
|
||||
|
||||
### `pages`
|
||||
|
||||
This directory contains your application views and routes. Nuxt will read all the `*.vue` files inside this directory and setup Vue Router automatically.
|
||||
|
||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/get-started/routing).
|
||||
|
||||
### `plugins`
|
||||
|
||||
The plugins directory contains JavaScript plugins that you want to run before instantiating the root Vue.js Application. This is the place to add Vue plugins and to inject functions or constants. Every time you need to use `Vue.use()`, you should create a file in `plugins/` and add its path to plugins in `nuxt.config.ts`.
|
||||
|
||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/plugins).
|
||||
|
||||
### `static`
|
||||
|
||||
This directory contains your static files. Each file inside this directory is mapped to `/`.
|
||||
|
||||
Example: `/static/robots.txt` is mapped as `/robots.txt`.
|
||||
|
||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/static).
|
||||
|
||||
### `store`
|
||||
|
||||
This directory contains your Vuex store files. Creating a file in this directory automatically activates Vuex.
|
||||
|
||||
More information about the usage of this directory in [the documentation](https://nuxtjs.org/docs/2.x/directory-structure/store).
|
607
_contracts/EnsRegistry.d.ts
vendored
Normal file
607
_contracts/EnsRegistry.d.ts
vendored
Normal file
@ -0,0 +1,607 @@
|
||||
/* Autogenerated file. Do not edit manually. */
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
|
||||
import {
|
||||
ethers,
|
||||
EventFilter,
|
||||
Signer,
|
||||
BigNumber,
|
||||
BigNumberish,
|
||||
PopulatedTransaction,
|
||||
BaseContract,
|
||||
ContractTransaction,
|
||||
Overrides,
|
||||
CallOverrides,
|
||||
} from "ethers";
|
||||
import { BytesLike } from "@ethersproject/bytes";
|
||||
import { Listener, Provider } from "@ethersproject/providers";
|
||||
import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";
|
||||
import type { TypedEventFilter, TypedEvent, TypedListener } from "./common";
|
||||
|
||||
interface EnsRegistryInterface extends ethers.utils.Interface {
|
||||
functions: {
|
||||
"isApprovedForAll(address,address)": FunctionFragment;
|
||||
"old()": FunctionFragment;
|
||||
"owner(bytes32)": FunctionFragment;
|
||||
"recordExists(bytes32)": FunctionFragment;
|
||||
"resolver(bytes32)": FunctionFragment;
|
||||
"setApprovalForAll(address,bool)": FunctionFragment;
|
||||
"setOwner(bytes32,address)": FunctionFragment;
|
||||
"setRecord(bytes32,address,address,uint64)": FunctionFragment;
|
||||
"setResolver(bytes32,address)": FunctionFragment;
|
||||
"setSubnodeOwner(bytes32,bytes32,address)": FunctionFragment;
|
||||
"setSubnodeRecord(bytes32,bytes32,address,address,uint64)": FunctionFragment;
|
||||
"setTTL(bytes32,uint64)": FunctionFragment;
|
||||
"ttl(bytes32)": FunctionFragment;
|
||||
};
|
||||
|
||||
encodeFunctionData(
|
||||
functionFragment: "isApprovedForAll",
|
||||
values: [string, string]
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "old", values?: undefined): string;
|
||||
encodeFunctionData(functionFragment: "owner", values: [BytesLike]): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "recordExists",
|
||||
values: [BytesLike]
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "resolver", values: [BytesLike]): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setApprovalForAll",
|
||||
values: [string, boolean]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setOwner",
|
||||
values: [BytesLike, string]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setRecord",
|
||||
values: [BytesLike, string, string, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setResolver",
|
||||
values: [BytesLike, string]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setSubnodeOwner",
|
||||
values: [BytesLike, BytesLike, string]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setSubnodeRecord",
|
||||
values: [BytesLike, BytesLike, string, string, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "setTTL",
|
||||
values: [BytesLike, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "ttl", values: [BytesLike]): string;
|
||||
|
||||
decodeFunctionResult(
|
||||
functionFragment: "isApprovedForAll",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "old", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "recordExists",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "resolver", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "setApprovalForAll",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "setRecord", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "setResolver",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "setSubnodeOwner",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "setSubnodeRecord",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "setTTL", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "ttl", data: BytesLike): Result;
|
||||
|
||||
events: {
|
||||
"ApprovalForAll(address,address,bool)": EventFragment;
|
||||
"NewOwner(bytes32,bytes32,address)": EventFragment;
|
||||
"NewResolver(bytes32,address)": EventFragment;
|
||||
"NewTTL(bytes32,uint64)": EventFragment;
|
||||
"Transfer(bytes32,address)": EventFragment;
|
||||
};
|
||||
|
||||
getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "NewOwner"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "NewResolver"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "NewTTL"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
|
||||
}
|
||||
|
||||
export type ApprovalForAllEvent = TypedEvent<
|
||||
[string, string, boolean] & {
|
||||
owner: string;
|
||||
operator: string;
|
||||
approved: boolean;
|
||||
}
|
||||
>;
|
||||
|
||||
export type NewOwnerEvent = TypedEvent<
|
||||
[string, string, string] & { node: string; label: string; owner: string }
|
||||
>;
|
||||
|
||||
export type NewResolverEvent = TypedEvent<
|
||||
[string, string] & { node: string; resolver: string }
|
||||
>;
|
||||
|
||||
export type NewTTLEvent = TypedEvent<
|
||||
[string, BigNumber] & { node: string; ttl: BigNumber }
|
||||
>;
|
||||
|
||||
export type TransferEvent = TypedEvent<
|
||||
[string, string] & { node: string; owner: string }
|
||||
>;
|
||||
|
||||
export class EnsRegistry extends BaseContract {
|
||||
connect(signerOrProvider: Signer | Provider | string): this;
|
||||
attach(addressOrName: string): this;
|
||||
deployed(): Promise<this>;
|
||||
|
||||
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
|
||||
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
|
||||
off<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
listener: TypedListener<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
on<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
listener: TypedListener<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
once<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
listener: TypedListener<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
listener: TypedListener<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
|
||||
listeners(eventName?: string): Array<Listener>;
|
||||
off(eventName: string, listener: Listener): this;
|
||||
on(eventName: string, listener: Listener): this;
|
||||
once(eventName: string, listener: Listener): this;
|
||||
removeListener(eventName: string, listener: Listener): this;
|
||||
removeAllListeners(eventName?: string): this;
|
||||
|
||||
queryFilter<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
fromBlockOrBlockhash?: string | number | undefined,
|
||||
toBlock?: string | number | undefined
|
||||
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
|
||||
|
||||
interface: EnsRegistryInterface;
|
||||
|
||||
functions: {
|
||||
isApprovedForAll(
|
||||
owner: string,
|
||||
operator: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<[boolean]>;
|
||||
|
||||
old(overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
owner(node: BytesLike, overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
recordExists(
|
||||
node: BytesLike,
|
||||
overrides?: CallOverrides
|
||||
): Promise<[boolean]>;
|
||||
|
||||
resolver(node: BytesLike, overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
setApprovalForAll(
|
||||
operator: string,
|
||||
approved: boolean,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setOwner(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setRecord(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setResolver(
|
||||
node: BytesLike,
|
||||
resolver: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setSubnodeOwner(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setSubnodeRecord(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setTTL(
|
||||
node: BytesLike,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
ttl(node: BytesLike, overrides?: CallOverrides): Promise<[BigNumber]>;
|
||||
};
|
||||
|
||||
isApprovedForAll(
|
||||
owner: string,
|
||||
operator: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<boolean>;
|
||||
|
||||
old(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
owner(node: BytesLike, overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
recordExists(node: BytesLike, overrides?: CallOverrides): Promise<boolean>;
|
||||
|
||||
resolver(node: BytesLike, overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
setApprovalForAll(
|
||||
operator: string,
|
||||
approved: boolean,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setOwner(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setRecord(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setResolver(
|
||||
node: BytesLike,
|
||||
resolver: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setSubnodeOwner(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setSubnodeRecord(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
setTTL(
|
||||
node: BytesLike,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
ttl(node: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
callStatic: {
|
||||
isApprovedForAll(
|
||||
owner: string,
|
||||
operator: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<boolean>;
|
||||
|
||||
old(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
owner(node: BytesLike, overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
recordExists(node: BytesLike, overrides?: CallOverrides): Promise<boolean>;
|
||||
|
||||
resolver(node: BytesLike, overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
setApprovalForAll(
|
||||
operator: string,
|
||||
approved: boolean,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
setOwner(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
setRecord(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
setResolver(
|
||||
node: BytesLike,
|
||||
resolver: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
setSubnodeOwner(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<string>;
|
||||
|
||||
setSubnodeRecord(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
setTTL(
|
||||
node: BytesLike,
|
||||
ttl: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
ttl(node: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
};
|
||||
|
||||
filters: {
|
||||
"ApprovalForAll(address,address,bool)"(
|
||||
owner?: string | null,
|
||||
operator?: string | null,
|
||||
approved?: null
|
||||
): TypedEventFilter<
|
||||
[string, string, boolean],
|
||||
{ owner: string; operator: string; approved: boolean }
|
||||
>;
|
||||
|
||||
ApprovalForAll(
|
||||
owner?: string | null,
|
||||
operator?: string | null,
|
||||
approved?: null
|
||||
): TypedEventFilter<
|
||||
[string, string, boolean],
|
||||
{ owner: string; operator: string; approved: boolean }
|
||||
>;
|
||||
|
||||
"NewOwner(bytes32,bytes32,address)"(
|
||||
node?: BytesLike | null,
|
||||
label?: BytesLike | null,
|
||||
owner?: null
|
||||
): TypedEventFilter<
|
||||
[string, string, string],
|
||||
{ node: string; label: string; owner: string }
|
||||
>;
|
||||
|
||||
NewOwner(
|
||||
node?: BytesLike | null,
|
||||
label?: BytesLike | null,
|
||||
owner?: null
|
||||
): TypedEventFilter<
|
||||
[string, string, string],
|
||||
{ node: string; label: string; owner: string }
|
||||
>;
|
||||
|
||||
"NewResolver(bytes32,address)"(
|
||||
node?: BytesLike | null,
|
||||
resolver?: null
|
||||
): TypedEventFilter<[string, string], { node: string; resolver: string }>;
|
||||
|
||||
NewResolver(
|
||||
node?: BytesLike | null,
|
||||
resolver?: null
|
||||
): TypedEventFilter<[string, string], { node: string; resolver: string }>;
|
||||
|
||||
"NewTTL(bytes32,uint64)"(
|
||||
node?: BytesLike | null,
|
||||
ttl?: null
|
||||
): TypedEventFilter<[string, BigNumber], { node: string; ttl: BigNumber }>;
|
||||
|
||||
NewTTL(
|
||||
node?: BytesLike | null,
|
||||
ttl?: null
|
||||
): TypedEventFilter<[string, BigNumber], { node: string; ttl: BigNumber }>;
|
||||
|
||||
"Transfer(bytes32,address)"(
|
||||
node?: BytesLike | null,
|
||||
owner?: null
|
||||
): TypedEventFilter<[string, string], { node: string; owner: string }>;
|
||||
|
||||
Transfer(
|
||||
node?: BytesLike | null,
|
||||
owner?: null
|
||||
): TypedEventFilter<[string, string], { node: string; owner: string }>;
|
||||
};
|
||||
|
||||
estimateGas: {
|
||||
isApprovedForAll(
|
||||
owner: string,
|
||||
operator: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
old(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
owner(node: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
recordExists(
|
||||
node: BytesLike,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
resolver(node: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
setApprovalForAll(
|
||||
operator: string,
|
||||
approved: boolean,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setOwner(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setRecord(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setResolver(
|
||||
node: BytesLike,
|
||||
resolver: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setSubnodeOwner(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setSubnodeRecord(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
setTTL(
|
||||
node: BytesLike,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
ttl(node: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
};
|
||||
|
||||
populateTransaction: {
|
||||
isApprovedForAll(
|
||||
owner: string,
|
||||
operator: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
old(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
owner(
|
||||
node: BytesLike,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
recordExists(
|
||||
node: BytesLike,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
resolver(
|
||||
node: BytesLike,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
setApprovalForAll(
|
||||
operator: string,
|
||||
approved: boolean,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
setOwner(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
setRecord(
|
||||
node: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
setResolver(
|
||||
node: BytesLike,
|
||||
resolver: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
setSubnodeOwner(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
setSubnodeRecord(
|
||||
node: BytesLike,
|
||||
label: BytesLike,
|
||||
owner: string,
|
||||
resolver: string,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
setTTL(
|
||||
node: BytesLike,
|
||||
ttl: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
ttl(
|
||||
node: BytesLike,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
};
|
||||
}
|
1038
_contracts/RelayerRegistry.d.ts
vendored
Normal file
1038
_contracts/RelayerRegistry.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
936
_contracts/Torn.d.ts
vendored
Normal file
936
_contracts/Torn.d.ts
vendored
Normal file
@ -0,0 +1,936 @@
|
||||
/* Autogenerated file. Do not edit manually. */
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
|
||||
import {
|
||||
ethers,
|
||||
EventFilter,
|
||||
Signer,
|
||||
BigNumber,
|
||||
BigNumberish,
|
||||
PopulatedTransaction,
|
||||
BaseContract,
|
||||
ContractTransaction,
|
||||
Overrides,
|
||||
CallOverrides,
|
||||
} from "ethers";
|
||||
import { BytesLike } from "@ethersproject/bytes";
|
||||
import { Listener, Provider } from "@ethersproject/providers";
|
||||
import { FunctionFragment, EventFragment, Result } from "@ethersproject/abi";
|
||||
import type { TypedEventFilter, TypedEvent, TypedListener } from "./common";
|
||||
|
||||
interface TornInterface extends ethers.utils.Interface {
|
||||
functions: {
|
||||
"addToAllowedList(address[])": FunctionFragment;
|
||||
"allowance(address,address)": FunctionFragment;
|
||||
"allowedTransferee(address)": FunctionFragment;
|
||||
"approve(address,uint256)": FunctionFragment;
|
||||
"balanceOf(address)": FunctionFragment;
|
||||
"blockTimestamp()": FunctionFragment;
|
||||
"bulkResolve(bytes32[])": FunctionFragment;
|
||||
"burn(uint256)": FunctionFragment;
|
||||
"burnFrom(address,uint256)": FunctionFragment;
|
||||
"canUnpauseAfter()": FunctionFragment;
|
||||
"chainID()": FunctionFragment;
|
||||
"changeTransferability(bool)": FunctionFragment;
|
||||
"decimals()": FunctionFragment;
|
||||
"decreaseAllowance(address,uint256)": FunctionFragment;
|
||||
"governance()": FunctionFragment;
|
||||
"increaseAllowance(address,uint256)": FunctionFragment;
|
||||
"name()": FunctionFragment;
|
||||
"nonces(address)": FunctionFragment;
|
||||
"paused()": FunctionFragment;
|
||||
"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment;
|
||||
"removeFromAllowedList(address[])": FunctionFragment;
|
||||
"rescueTokens(address,address,uint256)": FunctionFragment;
|
||||
"resolve(bytes32)": FunctionFragment;
|
||||
"symbol()": FunctionFragment;
|
||||
"totalSupply()": FunctionFragment;
|
||||
"transfer(address,uint256)": FunctionFragment;
|
||||
"transferFrom(address,address,uint256)": FunctionFragment;
|
||||
};
|
||||
|
||||
encodeFunctionData(
|
||||
functionFragment: "addToAllowedList",
|
||||
values: [string[]]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "allowance",
|
||||
values: [string, string]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "allowedTransferee",
|
||||
values: [string]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "approve",
|
||||
values: [string, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "balanceOf", values: [string]): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "blockTimestamp",
|
||||
values?: undefined
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "bulkResolve",
|
||||
values: [BytesLike[]]
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "burnFrom",
|
||||
values: [string, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "canUnpauseAfter",
|
||||
values?: undefined
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "chainID", values?: undefined): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "changeTransferability",
|
||||
values: [boolean]
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "decimals", values?: undefined): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "decreaseAllowance",
|
||||
values: [string, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "governance",
|
||||
values?: undefined
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "increaseAllowance",
|
||||
values: [string, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "name", values?: undefined): string;
|
||||
encodeFunctionData(functionFragment: "nonces", values: [string]): string;
|
||||
encodeFunctionData(functionFragment: "paused", values?: undefined): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "permit",
|
||||
values: [
|
||||
string,
|
||||
string,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BigNumberish,
|
||||
BytesLike,
|
||||
BytesLike
|
||||
]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "removeFromAllowedList",
|
||||
values: [string[]]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "rescueTokens",
|
||||
values: [string, string, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(functionFragment: "resolve", values: [BytesLike]): string;
|
||||
encodeFunctionData(functionFragment: "symbol", values?: undefined): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "totalSupply",
|
||||
values?: undefined
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "transfer",
|
||||
values: [string, BigNumberish]
|
||||
): string;
|
||||
encodeFunctionData(
|
||||
functionFragment: "transferFrom",
|
||||
values: [string, string, BigNumberish]
|
||||
): string;
|
||||
|
||||
decodeFunctionResult(
|
||||
functionFragment: "addToAllowedList",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "allowedTransferee",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "blockTimestamp",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "bulkResolve",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "canUnpauseAfter",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "chainID", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "changeTransferability",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "decreaseAllowance",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "governance", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "increaseAllowance",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "name", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "removeFromAllowedList",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "rescueTokens",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "resolve", data: BytesLike): Result;
|
||||
decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "totalSupply",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result;
|
||||
decodeFunctionResult(
|
||||
functionFragment: "transferFrom",
|
||||
data: BytesLike
|
||||
): Result;
|
||||
|
||||
events: {
|
||||
"Allowed(address)": EventFragment;
|
||||
"Approval(address,address,uint256)": EventFragment;
|
||||
"Disallowed(address)": EventFragment;
|
||||
"Paused(address)": EventFragment;
|
||||
"Transfer(address,address,uint256)": EventFragment;
|
||||
"Unpaused(address)": EventFragment;
|
||||
};
|
||||
|
||||
getEvent(nameOrSignatureOrTopic: "Allowed"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "Disallowed"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment;
|
||||
getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment;
|
||||
}
|
||||
|
||||
export type AllowedEvent = TypedEvent<[string] & { target: string }>;
|
||||
|
||||
export type ApprovalEvent = TypedEvent<
|
||||
[string, string, BigNumber] & {
|
||||
owner: string;
|
||||
spender: string;
|
||||
value: BigNumber;
|
||||
}
|
||||
>;
|
||||
|
||||
export type DisallowedEvent = TypedEvent<[string] & { target: string }>;
|
||||
|
||||
export type PausedEvent = TypedEvent<[string] & { account: string }>;
|
||||
|
||||
export type TransferEvent = TypedEvent<
|
||||
[string, string, BigNumber] & { from: string; to: string; value: BigNumber }
|
||||
>;
|
||||
|
||||
export type UnpausedEvent = TypedEvent<[string] & { account: string }>;
|
||||
|
||||
export class Torn extends BaseContract {
|
||||
connect(signerOrProvider: Signer | Provider | string): this;
|
||||
attach(addressOrName: string): this;
|
||||
deployed(): Promise<this>;
|
||||
|
||||
listeners<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter?: TypedEventFilter<EventArgsArray, EventArgsObject>
|
||||
): Array<TypedListener<EventArgsArray, EventArgsObject>>;
|
||||
off<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
listener: TypedListener<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
on<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
listener: TypedListener<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
once<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
listener: TypedListener<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
removeListener<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
listener: TypedListener<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
removeAllListeners<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
eventFilter: TypedEventFilter<EventArgsArray, EventArgsObject>
|
||||
): this;
|
||||
|
||||
listeners(eventName?: string): Array<Listener>;
|
||||
off(eventName: string, listener: Listener): this;
|
||||
on(eventName: string, listener: Listener): this;
|
||||
once(eventName: string, listener: Listener): this;
|
||||
removeListener(eventName: string, listener: Listener): this;
|
||||
removeAllListeners(eventName?: string): this;
|
||||
|
||||
queryFilter<EventArgsArray extends Array<any>, EventArgsObject>(
|
||||
event: TypedEventFilter<EventArgsArray, EventArgsObject>,
|
||||
fromBlockOrBlockhash?: string | number | undefined,
|
||||
toBlock?: string | number | undefined
|
||||
): Promise<Array<TypedEvent<EventArgsArray & EventArgsObject>>>;
|
||||
|
||||
interface: TornInterface;
|
||||
|
||||
functions: {
|
||||
addToAllowedList(
|
||||
target: string[],
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
allowance(
|
||||
owner: string,
|
||||
spender: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<[BigNumber]>;
|
||||
|
||||
allowedTransferee(
|
||||
arg0: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<[boolean]>;
|
||||
|
||||
approve(
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>;
|
||||
|
||||
blockTimestamp(overrides?: CallOverrides): Promise<[BigNumber]>;
|
||||
|
||||
bulkResolve(
|
||||
domains: BytesLike[],
|
||||
overrides?: CallOverrides
|
||||
): Promise<[string[]] & { result: string[] }>;
|
||||
|
||||
burn(
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
burnFrom(
|
||||
account: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
canUnpauseAfter(overrides?: CallOverrides): Promise<[BigNumber]>;
|
||||
|
||||
chainID(
|
||||
overrides?: CallOverrides
|
||||
): Promise<[BigNumber] & { _chainID: BigNumber }>;
|
||||
|
||||
changeTransferability(
|
||||
decision: boolean,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
decimals(overrides?: CallOverrides): Promise<[number]>;
|
||||
|
||||
decreaseAllowance(
|
||||
spender: string,
|
||||
subtractedValue: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
governance(overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
increaseAllowance(
|
||||
spender: string,
|
||||
addedValue: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
name(overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
nonces(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>;
|
||||
|
||||
paused(overrides?: CallOverrides): Promise<[boolean]>;
|
||||
|
||||
permit(
|
||||
owner: string,
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
deadline: BigNumberish,
|
||||
v: BigNumberish,
|
||||
r: BytesLike,
|
||||
s: BytesLike,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
removeFromAllowedList(
|
||||
target: string[],
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
rescueTokens(
|
||||
_token: string,
|
||||
_to: string,
|
||||
_balance: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
resolve(node: BytesLike, overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
symbol(overrides?: CallOverrides): Promise<[string]>;
|
||||
|
||||
totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
|
||||
|
||||
transfer(
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
transferFrom(
|
||||
sender: string,
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
};
|
||||
|
||||
addToAllowedList(
|
||||
target: string[],
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
allowance(
|
||||
owner: string,
|
||||
spender: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
allowedTransferee(arg0: string, overrides?: CallOverrides): Promise<boolean>;
|
||||
|
||||
approve(
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
balanceOf(account: string, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
blockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
bulkResolve(
|
||||
domains: BytesLike[],
|
||||
overrides?: CallOverrides
|
||||
): Promise<string[]>;
|
||||
|
||||
burn(
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
burnFrom(
|
||||
account: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
canUnpauseAfter(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
chainID(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
changeTransferability(
|
||||
decision: boolean,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
decimals(overrides?: CallOverrides): Promise<number>;
|
||||
|
||||
decreaseAllowance(
|
||||
spender: string,
|
||||
subtractedValue: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
governance(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
increaseAllowance(
|
||||
spender: string,
|
||||
addedValue: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
name(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
nonces(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
paused(overrides?: CallOverrides): Promise<boolean>;
|
||||
|
||||
permit(
|
||||
owner: string,
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
deadline: BigNumberish,
|
||||
v: BigNumberish,
|
||||
r: BytesLike,
|
||||
s: BytesLike,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
removeFromAllowedList(
|
||||
target: string[],
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
rescueTokens(
|
||||
_token: string,
|
||||
_to: string,
|
||||
_balance: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
resolve(node: BytesLike, overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
symbol(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
transfer(
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
transferFrom(
|
||||
sender: string,
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<ContractTransaction>;
|
||||
|
||||
callStatic: {
|
||||
addToAllowedList(
|
||||
target: string[],
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
allowance(
|
||||
owner: string,
|
||||
spender: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
allowedTransferee(
|
||||
arg0: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<boolean>;
|
||||
|
||||
approve(
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<boolean>;
|
||||
|
||||
balanceOf(account: string, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
blockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
bulkResolve(
|
||||
domains: BytesLike[],
|
||||
overrides?: CallOverrides
|
||||
): Promise<string[]>;
|
||||
|
||||
burn(amount: BigNumberish, overrides?: CallOverrides): Promise<void>;
|
||||
|
||||
burnFrom(
|
||||
account: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
canUnpauseAfter(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
chainID(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
changeTransferability(
|
||||
decision: boolean,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
decimals(overrides?: CallOverrides): Promise<number>;
|
||||
|
||||
decreaseAllowance(
|
||||
spender: string,
|
||||
subtractedValue: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<boolean>;
|
||||
|
||||
governance(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
increaseAllowance(
|
||||
spender: string,
|
||||
addedValue: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<boolean>;
|
||||
|
||||
name(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
nonces(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
paused(overrides?: CallOverrides): Promise<boolean>;
|
||||
|
||||
permit(
|
||||
owner: string,
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
deadline: BigNumberish,
|
||||
v: BigNumberish,
|
||||
r: BytesLike,
|
||||
s: BytesLike,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
removeFromAllowedList(
|
||||
target: string[],
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
rescueTokens(
|
||||
_token: string,
|
||||
_to: string,
|
||||
_balance: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<void>;
|
||||
|
||||
resolve(node: BytesLike, overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
symbol(overrides?: CallOverrides): Promise<string>;
|
||||
|
||||
totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
transfer(
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<boolean>;
|
||||
|
||||
transferFrom(
|
||||
sender: string,
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: CallOverrides
|
||||
): Promise<boolean>;
|
||||
};
|
||||
|
||||
filters: {
|
||||
"Allowed(address)"(
|
||||
target?: null
|
||||
): TypedEventFilter<[string], { target: string }>;
|
||||
|
||||
Allowed(target?: null): TypedEventFilter<[string], { target: string }>;
|
||||
|
||||
"Approval(address,address,uint256)"(
|
||||
owner?: string | null,
|
||||
spender?: string | null,
|
||||
value?: null
|
||||
): TypedEventFilter<
|
||||
[string, string, BigNumber],
|
||||
{ owner: string; spender: string; value: BigNumber }
|
||||
>;
|
||||
|
||||
Approval(
|
||||
owner?: string | null,
|
||||
spender?: string | null,
|
||||
value?: null
|
||||
): TypedEventFilter<
|
||||
[string, string, BigNumber],
|
||||
{ owner: string; spender: string; value: BigNumber }
|
||||
>;
|
||||
|
||||
"Disallowed(address)"(
|
||||
target?: null
|
||||
): TypedEventFilter<[string], { target: string }>;
|
||||
|
||||
Disallowed(target?: null): TypedEventFilter<[string], { target: string }>;
|
||||
|
||||
"Paused(address)"(
|
||||
account?: null
|
||||
): TypedEventFilter<[string], { account: string }>;
|
||||
|
||||
Paused(account?: null): TypedEventFilter<[string], { account: string }>;
|
||||
|
||||
"Transfer(address,address,uint256)"(
|
||||
from?: string | null,
|
||||
to?: string | null,
|
||||
value?: null
|
||||
): TypedEventFilter<
|
||||
[string, string, BigNumber],
|
||||
{ from: string; to: string; value: BigNumber }
|
||||
>;
|
||||
|
||||
Transfer(
|
||||
from?: string | null,
|
||||
to?: string | null,
|
||||
value?: null
|
||||
): TypedEventFilter<
|
||||
[string, string, BigNumber],
|
||||
{ from: string; to: string; value: BigNumber }
|
||||
>;
|
||||
|
||||
"Unpaused(address)"(
|
||||
account?: null
|
||||
): TypedEventFilter<[string], { account: string }>;
|
||||
|
||||
Unpaused(account?: null): TypedEventFilter<[string], { account: string }>;
|
||||
};
|
||||
|
||||
estimateGas: {
|
||||
addToAllowedList(
|
||||
target: string[],
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
allowance(
|
||||
owner: string,
|
||||
spender: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
allowedTransferee(
|
||||
arg0: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
approve(
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
balanceOf(account: string, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
blockTimestamp(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
bulkResolve(
|
||||
domains: BytesLike[],
|
||||
overrides?: CallOverrides
|
||||
): Promise<BigNumber>;
|
||||
|
||||
burn(
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
burnFrom(
|
||||
account: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
canUnpauseAfter(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
chainID(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
changeTransferability(
|
||||
decision: boolean,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
decimals(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
decreaseAllowance(
|
||||
spender: string,
|
||||
subtractedValue: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
governance(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
increaseAllowance(
|
||||
spender: string,
|
||||
addedValue: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
name(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
nonces(owner: string, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
paused(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
permit(
|
||||
owner: string,
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
deadline: BigNumberish,
|
||||
v: BigNumberish,
|
||||
r: BytesLike,
|
||||
s: BytesLike,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
removeFromAllowedList(
|
||||
target: string[],
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
rescueTokens(
|
||||
_token: string,
|
||||
_to: string,
|
||||
_balance: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
resolve(node: BytesLike, overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
symbol(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
|
||||
|
||||
transfer(
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
|
||||
transferFrom(
|
||||
sender: string,
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<BigNumber>;
|
||||
};
|
||||
|
||||
populateTransaction: {
|
||||
addToAllowedList(
|
||||
target: string[],
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
allowance(
|
||||
owner: string,
|
||||
spender: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
allowedTransferee(
|
||||
arg0: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
approve(
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
balanceOf(
|
||||
account: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
blockTimestamp(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
bulkResolve(
|
||||
domains: BytesLike[],
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
burn(
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
burnFrom(
|
||||
account: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
canUnpauseAfter(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
chainID(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
changeTransferability(
|
||||
decision: boolean,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
decreaseAllowance(
|
||||
spender: string,
|
||||
subtractedValue: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
governance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
increaseAllowance(
|
||||
spender: string,
|
||||
addedValue: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
nonces(
|
||||
owner: string,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
permit(
|
||||
owner: string,
|
||||
spender: string,
|
||||
amount: BigNumberish,
|
||||
deadline: BigNumberish,
|
||||
v: BigNumberish,
|
||||
r: BytesLike,
|
||||
s: BytesLike,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
removeFromAllowedList(
|
||||
target: string[],
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
rescueTokens(
|
||||
_token: string,
|
||||
_to: string,
|
||||
_balance: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
resolve(
|
||||
node: BytesLike,
|
||||
overrides?: CallOverrides
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
||||
|
||||
transfer(
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
|
||||
transferFrom(
|
||||
sender: string,
|
||||
recipient: string,
|
||||
amount: BigNumberish,
|
||||
overrides?: Overrides & { from?: string | Promise<string> }
|
||||
): Promise<PopulatedTransaction>;
|
||||
};
|
||||
}
|
35
_contracts/common.d.ts
vendored
Normal file
35
_contracts/common.d.ts
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
/* Autogenerated file. Do not edit manually. */
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
import { EventFilter, Event } from "ethers";
|
||||
import { Result } from "@ethersproject/abi";
|
||||
|
||||
export interface TypedEventFilter<_EventArgsArray, _EventArgsObject>
|
||||
extends EventFilter {}
|
||||
|
||||
export interface TypedEvent<EventArgs extends Result> extends Event {
|
||||
args: EventArgs;
|
||||
}
|
||||
|
||||
export type TypedListener<
|
||||
EventArgsArray extends Array<any>,
|
||||
EventArgsObject
|
||||
> = (
|
||||
...listenerArg: [
|
||||
...EventArgsArray,
|
||||
TypedEvent<EventArgsArray & EventArgsObject>
|
||||
]
|
||||
) => void;
|
||||
|
||||
export type MinEthersFactory<C, ARGS> = {
|
||||
deploy(...a: ARGS[]): Promise<C>;
|
||||
};
|
||||
export type GetContractTypeFromFactory<F> = F extends MinEthersFactory<
|
||||
infer C,
|
||||
any
|
||||
>
|
||||
? C
|
||||
: never;
|
||||
export type GetARGsTypeFromFactory<F> = F extends MinEthersFactory<any, any>
|
||||
? Parameters<F["deploy"]>
|
||||
: never;
|
443
_contracts/factories/EnsRegistry__factory.ts
Normal file
443
_contracts/factories/EnsRegistry__factory.ts
Normal file
@ -0,0 +1,443 @@
|
||||
/* Autogenerated file. Do not edit manually. */
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
|
||||
import { Contract, Signer, utils } from "ethers";
|
||||
import { Provider } from "@ethersproject/providers";
|
||||
import type { EnsRegistry, EnsRegistryInterface } from "../EnsRegistry";
|
||||
|
||||
const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "contract ENS",
|
||||
name: "_old",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
payable: false,
|
||||
stateMutability: "nonpayable",
|
||||
type: "constructor",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
name: "operator",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "bool",
|
||||
name: "approved",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
name: "ApprovalForAll",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "bytes32",
|
||||
name: "label",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "NewOwner",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "resolver",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "NewResolver",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint64",
|
||||
name: "ttl",
|
||||
type: "uint64",
|
||||
},
|
||||
],
|
||||
name: "NewTTL",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "Transfer",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
constant: true,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "operator",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "isApprovedForAll",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
payable: false,
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: true,
|
||||
inputs: [],
|
||||
name: "old",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "contract ENS",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
payable: false,
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: true,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "owner",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
payable: false,
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: true,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "recordExists",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
payable: false,
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: true,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "resolver",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
payable: false,
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: false,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "operator",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "approved",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
name: "setApprovalForAll",
|
||||
outputs: [],
|
||||
payable: false,
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: false,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "setOwner",
|
||||
outputs: [],
|
||||
payable: false,
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: false,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "resolver",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint64",
|
||||
name: "ttl",
|
||||
type: "uint64",
|
||||
},
|
||||
],
|
||||
name: "setRecord",
|
||||
outputs: [],
|
||||
payable: false,
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: false,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "resolver",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "setResolver",
|
||||
outputs: [],
|
||||
payable: false,
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: false,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "label",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "setSubnodeOwner",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
payable: false,
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: false,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "label",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "resolver",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint64",
|
||||
name: "ttl",
|
||||
type: "uint64",
|
||||
},
|
||||
],
|
||||
name: "setSubnodeRecord",
|
||||
outputs: [],
|
||||
payable: false,
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: false,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "uint64",
|
||||
name: "ttl",
|
||||
type: "uint64",
|
||||
},
|
||||
],
|
||||
name: "setTTL",
|
||||
outputs: [],
|
||||
payable: false,
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
constant: true,
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "ttl",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint64",
|
||||
name: "",
|
||||
type: "uint64",
|
||||
},
|
||||
],
|
||||
payable: false,
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
];
|
||||
|
||||
export class EnsRegistry__factory {
|
||||
static readonly abi = _abi;
|
||||
static createInterface(): EnsRegistryInterface {
|
||||
return new utils.Interface(_abi) as EnsRegistryInterface;
|
||||
}
|
||||
static connect(
|
||||
address: string,
|
||||
signerOrProvider: Signer | Provider
|
||||
): EnsRegistry {
|
||||
return new Contract(address, _abi, signerOrProvider) as EnsRegistry;
|
||||
}
|
||||
}
|
694
_contracts/factories/RelayerRegistry__factory.ts
Normal file
694
_contracts/factories/RelayerRegistry__factory.ts
Normal file
@ -0,0 +1,694 @@
|
||||
/* Autogenerated file. Do not edit manually. */
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
|
||||
import { Contract, Signer, utils } from "ethers";
|
||||
import { Provider } from "@ethersproject/providers";
|
||||
import type {
|
||||
RelayerRegistry,
|
||||
RelayerRegistryInterface,
|
||||
} from "../RelayerRegistry";
|
||||
|
||||
const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "_torn",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "_governance",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "_ens",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "_staking",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "_feeManager",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
stateMutability: "nonpayable",
|
||||
type: "constructor",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
name: "minStakeAmount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "MinimumStakeAmount",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "RelayerBalanceNullified",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "bytes32",
|
||||
name: "relayer",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "string",
|
||||
name: "ensName",
|
||||
type: "string",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "relayerAddress",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
name: "stakedAmount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "RelayerRegistered",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "tornadoRouter",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "RouterRegistered",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
name: "amountStakeAdded",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "StakeAddedToRelayer",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
name: "amountBurned",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "StakeBurned",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "worker",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "WorkerRegistered",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "worker",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "WorkerUnregistered",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32[]",
|
||||
name: "domains",
|
||||
type: "bytes32[]",
|
||||
},
|
||||
],
|
||||
name: "bulkResolve",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address[]",
|
||||
name: "result",
|
||||
type: "address[]",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "sender",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "contract ITornadoInstance",
|
||||
name: "pool",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "burn",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "ens",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "contract IENS",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "feeManager",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "contract FeeManager",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "getRelayerBalance",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "getRelayerEnsHash",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "governance",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "_tornadoRouter",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "initialize",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "toResolve",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "isRelayer",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "toResolve",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "isRelayerRegistered",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "minStakeAmount",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "nullifyBalance",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "string",
|
||||
name: "ensName",
|
||||
type: "string",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "stake",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "address[]",
|
||||
name: "workersToRegister",
|
||||
type: "address[]",
|
||||
},
|
||||
],
|
||||
name: "register",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "string",
|
||||
name: "ensName",
|
||||
type: "string",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "stake",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "address[]",
|
||||
name: "workersToRegister",
|
||||
type: "address[]",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "deadline",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "uint8",
|
||||
name: "v",
|
||||
type: "uint8",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "r",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "s",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "registerPermit",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "worker",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "registerWorker",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "relayers",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "balance",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "ensHash",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "resolve",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "minAmount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "setMinStakeAmount",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "tornadoRouterAddress",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "setTornadoRouter",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "stake",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "stakeToRelayer",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "relayer",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "stake",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "staker",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "deadline",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "uint8",
|
||||
name: "v",
|
||||
type: "uint8",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "r",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "s",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "stakeToRelayerPermit",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "staking",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "contract ITornadoStakingRewards",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "torn",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "contract TORN",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "tornadoRouter",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "worker",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "unregisterWorker",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "workers",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
];
|
||||
|
||||
export class RelayerRegistry__factory {
|
||||
static readonly abi = _abi;
|
||||
static createInterface(): RelayerRegistryInterface {
|
||||
return new utils.Interface(_abi) as RelayerRegistryInterface;
|
||||
}
|
||||
static connect(
|
||||
address: string,
|
||||
signerOrProvider: Signer | Provider
|
||||
): RelayerRegistry {
|
||||
return new Contract(address, _abi, signerOrProvider) as RelayerRegistry;
|
||||
}
|
||||
}
|
652
_contracts/factories/Torn__factory.ts
Normal file
652
_contracts/factories/Torn__factory.ts
Normal file
@ -0,0 +1,652 @@
|
||||
/* Autogenerated file. Do not edit manually. */
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
|
||||
import { Contract, Signer, utils } from "ethers";
|
||||
import { Provider } from "@ethersproject/providers";
|
||||
import type { Torn, TornInterface } from "../Torn";
|
||||
|
||||
const _abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "_governance",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "_pausePeriod",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
components: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "to",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "amount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
internalType: "struct TORN.Recipient[]",
|
||||
name: "_vestings",
|
||||
type: "tuple[]",
|
||||
},
|
||||
],
|
||||
stateMutability: "nonpayable",
|
||||
type: "constructor",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "target",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "Allowed",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
name: "spender",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
name: "value",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "Approval",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "target",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "Disallowed",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "account",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "Paused",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
name: "from",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: true,
|
||||
internalType: "address",
|
||||
name: "to",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "uint256",
|
||||
name: "value",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "Transfer",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
anonymous: false,
|
||||
inputs: [
|
||||
{
|
||||
indexed: false,
|
||||
internalType: "address",
|
||||
name: "account",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "Unpaused",
|
||||
type: "event",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address[]",
|
||||
name: "target",
|
||||
type: "address[]",
|
||||
},
|
||||
],
|
||||
name: "addToAllowedList",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "spender",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "allowance",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "allowedTransferee",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "spender",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "amount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "approve",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "account",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "balanceOf",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "blockTimestamp",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32[]",
|
||||
name: "domains",
|
||||
type: "bytes32[]",
|
||||
},
|
||||
],
|
||||
name: "bulkResolve",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address[]",
|
||||
name: "result",
|
||||
type: "address[]",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "amount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "burn",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "account",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "amount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "burnFrom",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "canUnpauseAfter",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "chainID",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "_chainID",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "decision",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
name: "changeTransferability",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "decimals",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint8",
|
||||
name: "",
|
||||
type: "uint8",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "spender",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "subtractedValue",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "decreaseAllowance",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "governance",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "spender",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "addedValue",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "increaseAllowance",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "name",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "string",
|
||||
name: "",
|
||||
type: "string",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
name: "nonces",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "paused",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "owner",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "spender",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "amount",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "deadline",
|
||||
type: "uint256",
|
||||
},
|
||||
{
|
||||
internalType: "uint8",
|
||||
name: "v",
|
||||
type: "uint8",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "r",
|
||||
type: "bytes32",
|
||||
},
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "s",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "permit",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address[]",
|
||||
name: "target",
|
||||
type: "address[]",
|
||||
},
|
||||
],
|
||||
name: "removeFromAllowedList",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "contract IERC20",
|
||||
name: "_token",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address payable",
|
||||
name: "_to",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "_balance",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "rescueTokens",
|
||||
outputs: [],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "bytes32",
|
||||
name: "node",
|
||||
type: "bytes32",
|
||||
},
|
||||
],
|
||||
name: "resolve",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "",
|
||||
type: "address",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "symbol",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "string",
|
||||
name: "",
|
||||
type: "string",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [],
|
||||
name: "totalSupply",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
stateMutability: "view",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "recipient",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "amount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "transfer",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
internalType: "address",
|
||||
name: "sender",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "address",
|
||||
name: "recipient",
|
||||
type: "address",
|
||||
},
|
||||
{
|
||||
internalType: "uint256",
|
||||
name: "amount",
|
||||
type: "uint256",
|
||||
},
|
||||
],
|
||||
name: "transferFrom",
|
||||
outputs: [
|
||||
{
|
||||
internalType: "bool",
|
||||
name: "",
|
||||
type: "bool",
|
||||
},
|
||||
],
|
||||
stateMutability: "nonpayable",
|
||||
type: "function",
|
||||
},
|
||||
];
|
||||
|
||||
export class Torn__factory {
|
||||
static readonly abi = _abi;
|
||||
static createInterface(): TornInterface {
|
||||
return new utils.Interface(_abi) as TornInterface;
|
||||
}
|
||||
static connect(address: string, signerOrProvider: Signer | Provider): Torn {
|
||||
return new Contract(address, _abi, signerOrProvider) as Torn;
|
||||
}
|
||||
}
|
10
_contracts/index.ts
Normal file
10
_contracts/index.ts
Normal file
@ -0,0 +1,10 @@
|
||||
/* Autogenerated file. Do not edit manually. */
|
||||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
export type { EnsRegistry } from "./EnsRegistry";
|
||||
export type { RelayerRegistry } from "./RelayerRegistry";
|
||||
export type { Torn } from "./Torn";
|
||||
|
||||
export { EnsRegistry__factory } from "./factories/EnsRegistry__factory";
|
||||
export { RelayerRegistry__factory } from "./factories/RelayerRegistry__factory";
|
||||
export { Torn__factory } from "./factories/Torn__factory";
|
262
abi/EnsRegistry.json
Normal file
262
abi/EnsRegistry.json
Normal file
@ -0,0 +1,262 @@
|
||||
[
|
||||
{
|
||||
"inputs": [{ "internalType": "contract ENS", "name": "_old", "type": "address" }],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "operator",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "bool",
|
||||
"name": "approved",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"name": "ApprovalForAll",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "bytes32",
|
||||
"name": "node",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "bytes32",
|
||||
"name": "label",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "NewOwner",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "bytes32",
|
||||
"name": "node",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "resolver",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "NewResolver",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "bytes32",
|
||||
"name": "node",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint64",
|
||||
"name": "ttl",
|
||||
"type": "uint64"
|
||||
}
|
||||
],
|
||||
"name": "NewTTL",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "bytes32",
|
||||
"name": "node",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "Transfer",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "owner", "type": "address" },
|
||||
{ "internalType": "address", "name": "operator", "type": "address" }
|
||||
],
|
||||
"name": "isApprovedForAll",
|
||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "old",
|
||||
"outputs": [{ "internalType": "contract ENS", "name": "", "type": "address" }],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [{ "internalType": "bytes32", "name": "node", "type": "bytes32" }],
|
||||
"name": "owner",
|
||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [{ "internalType": "bytes32", "name": "node", "type": "bytes32" }],
|
||||
"name": "recordExists",
|
||||
"outputs": [{ "internalType": "bool", "name": "", "type": "bool" }],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [{ "internalType": "bytes32", "name": "node", "type": "bytes32" }],
|
||||
"name": "resolver",
|
||||
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{ "internalType": "address", "name": "operator", "type": "address" },
|
||||
{ "internalType": "bool", "name": "approved", "type": "bool" }
|
||||
],
|
||||
"name": "setApprovalForAll",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{ "internalType": "bytes32", "name": "node", "type": "bytes32" },
|
||||
{ "internalType": "address", "name": "owner", "type": "address" }
|
||||
],
|
||||
"name": "setOwner",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{ "internalType": "bytes32", "name": "node", "type": "bytes32" },
|
||||
{ "internalType": "address", "name": "owner", "type": "address" },
|
||||
{ "internalType": "address", "name": "resolver", "type": "address" },
|
||||
{ "internalType": "uint64", "name": "ttl", "type": "uint64" }
|
||||
],
|
||||
"name": "setRecord",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{ "internalType": "bytes32", "name": "node", "type": "bytes32" },
|
||||
{ "internalType": "address", "name": "resolver", "type": "address" }
|
||||
],
|
||||
"name": "setResolver",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{ "internalType": "bytes32", "name": "node", "type": "bytes32" },
|
||||
{ "internalType": "bytes32", "name": "label", "type": "bytes32" },
|
||||
{ "internalType": "address", "name": "owner", "type": "address" }
|
||||
],
|
||||
"name": "setSubnodeOwner",
|
||||
"outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{ "internalType": "bytes32", "name": "node", "type": "bytes32" },
|
||||
{ "internalType": "bytes32", "name": "label", "type": "bytes32" },
|
||||
{ "internalType": "address", "name": "owner", "type": "address" },
|
||||
{ "internalType": "address", "name": "resolver", "type": "address" },
|
||||
{ "internalType": "uint64", "name": "ttl", "type": "uint64" }
|
||||
],
|
||||
"name": "setSubnodeRecord",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{ "internalType": "bytes32", "name": "node", "type": "bytes32" },
|
||||
{ "internalType": "uint64", "name": "ttl", "type": "uint64" }
|
||||
],
|
||||
"name": "setTTL",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [{ "internalType": "bytes32", "name": "node", "type": "bytes32" }],
|
||||
"name": "ttl",
|
||||
"outputs": [{ "internalType": "uint64", "name": "", "type": "uint64" }],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
670
abi/RelayerRegistry.json
Normal file
670
abi/RelayerRegistry.json
Normal file
@ -0,0 +1,670 @@
|
||||
[
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_torn",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_governance",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "_ens",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "_staking",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "_feeManager",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "minStakeAmount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "MinimumStakeAmount",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "RelayerBalanceNullified",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "bytes32",
|
||||
"name": "relayer",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "string",
|
||||
"name": "ensName",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayerAddress",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "stakedAmount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "RelayerRegistered",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "tornadoRouter",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "RouterRegistered",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amountStakeAdded",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "StakeAddedToRelayer",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "amountBurned",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "StakeBurned",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "worker",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "WorkerRegistered",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "worker",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "WorkerUnregistered",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32[]",
|
||||
"name": "domains",
|
||||
"type": "bytes32[]"
|
||||
}
|
||||
],
|
||||
"name": "bulkResolve",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "result",
|
||||
"type": "address[]"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "sender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "contract ITornadoInstance",
|
||||
"name": "pool",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "burn",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "ens",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract IENS",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "feeManager",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract FeeManager",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "getRelayerBalance",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "getRelayerEnsHash",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "governance",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "_tornadoRouter",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "initialize",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "toResolve",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "isRelayer",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "toResolve",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "isRelayerRegistered",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "minStakeAmount",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "nullifyBalance",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "ensName",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "stake",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "workersToRegister",
|
||||
"type": "address[]"
|
||||
}
|
||||
],
|
||||
"name": "register",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "ensName",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "stake",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "workersToRegister",
|
||||
"type": "address[]"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "deadline",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint8",
|
||||
"name": "v",
|
||||
"type": "uint8"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "r",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "s",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "registerPermit",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "worker",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "registerWorker",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "relayers",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "balance",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "ensHash",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "node",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "resolve",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "minAmount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "setMinStakeAmount",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "tornadoRouterAddress",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "setTornadoRouter",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "stake",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "stakeToRelayer",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "relayer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "stake",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "staker",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "deadline",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint8",
|
||||
"name": "v",
|
||||
"type": "uint8"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "r",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "s",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "stakeToRelayerPermit",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "staking",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract ITornadoStakingRewards",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "torn",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "contract TORN",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "tornadoRouter",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "worker",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "unregisterWorker",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "workers",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
634
abi/Torn.json
Normal file
634
abi/Torn.json
Normal file
@ -0,0 +1,634 @@
|
||||
[
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "_governance",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "_pausePeriod",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"components": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "to",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"internalType": "struct TORN.Recipient[]",
|
||||
"name": "_vestings",
|
||||
"type": "tuple[]"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "target",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "Allowed",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "Approval",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "target",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "Disallowed",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "Paused",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "from",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"internalType": "address",
|
||||
"name": "to",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "uint256",
|
||||
"name": "value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "Transfer",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"internalType": "address",
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "Unpaused",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "target",
|
||||
"type": "address[]"
|
||||
}
|
||||
],
|
||||
"name": "addToAllowedList",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "allowance",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "allowedTransferee",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "approve",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "balanceOf",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "blockTimestamp",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32[]",
|
||||
"name": "domains",
|
||||
"type": "bytes32[]"
|
||||
}
|
||||
],
|
||||
"name": "bulkResolve",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "result",
|
||||
"type": "address[]"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "burn",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "burnFrom",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "canUnpauseAfter",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "chainID",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "_chainID",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "decision",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"name": "changeTransferability",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "decimals",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint8",
|
||||
"name": "",
|
||||
"type": "uint8"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "subtractedValue",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "decreaseAllowance",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "governance",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "addedValue",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "increaseAllowance",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "name",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "nonces",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "paused",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "deadline",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"internalType": "uint8",
|
||||
"name": "v",
|
||||
"type": "uint8"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "r",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "s",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "permit",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address[]",
|
||||
"name": "target",
|
||||
"type": "address[]"
|
||||
}
|
||||
],
|
||||
"name": "removeFromAllowedList",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "contract IERC20",
|
||||
"name": "_token",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address payable",
|
||||
"name": "_to",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "_balance",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "rescueTokens",
|
||||
"outputs": [],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "node",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"name": "resolve",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "symbol",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "string",
|
||||
"name": "",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [],
|
||||
"name": "totalSupply",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "recipient",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "transfer",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "sender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "address",
|
||||
"name": "recipient",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"internalType": "uint256",
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "transferFrom",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bool",
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
9
abi/index.ts
Normal file
9
abi/index.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import TORN_TOKEN from './Torn.json'
|
||||
import ENS_REGISTRY from './EnsRegistry.json'
|
||||
import RELAYER_REGISTRY from './RelayerRegistry.json'
|
||||
|
||||
export const abi = {
|
||||
TORN_TOKEN,
|
||||
ENS_REGISTRY,
|
||||
RELAYER_REGISTRY,
|
||||
}
|
36
app.html
Normal file
36
app.html
Normal file
@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html {{ HTML_ATTRS }}>
|
||||
<head {{ HEAD_ATTRS }}>
|
||||
<script>
|
||||
if (window.location.search) {
|
||||
window.location = window.location.origin + window.location.pathname
|
||||
}
|
||||
|
||||
function addScript(src) {
|
||||
const s = document.createElement('script')
|
||||
s.setAttribute('src', src)
|
||||
document.body.appendChild(s)
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const ipfsPathRegExp = /^(\/(?:ipfs|ipns)\/[^/]+)/
|
||||
const ipfsPathPrefix = (window.location.pathname.match(ipfsPathRegExp) || [])[1] || ''
|
||||
if (ipfsPathPrefix) {
|
||||
const scripts = [...document.getElementsByTagName('script')]
|
||||
|
||||
for (let i = 0; i < scripts.length; i++) {
|
||||
if (scripts[i].src) {
|
||||
const source = new URL(scripts[i].src)
|
||||
const newSource = window.location.origin + ipfsPathPrefix + source.pathname
|
||||
addScript(newSource)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
{{ HEAD }}
|
||||
</head>
|
||||
<body {{ BODY_ATTRS }}>
|
||||
{{ APP }}
|
||||
</body>
|
||||
</html>
|
BIN
assets/fonts/PTMono-Bold.woff2
Normal file
BIN
assets/fonts/PTMono-Bold.woff2
Normal file
Binary file not shown.
BIN
assets/fonts/PTMono-Regular.woff2
Normal file
BIN
assets/fonts/PTMono-Regular.woff2
Normal file
Binary file not shown.
83
assets/styles/_animations.scss
Normal file
83
assets/styles/_animations.scss
Normal file
@ -0,0 +1,83 @@
|
||||
@mixin animation-full-rotate {
|
||||
@keyframes animation-full-rotate {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@mixin animation-full-rotate-negative {
|
||||
@keyframes animation-full-rotate-negative {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(-360deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin animation-walk {
|
||||
@keyframes animation-walk {
|
||||
0% {
|
||||
background-position: 100% 50%;
|
||||
}
|
||||
100% {
|
||||
background-position: 0 50%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin animation-from-invisible {
|
||||
@keyframes animation-from-invisible {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin animation-transform-line {
|
||||
@keyframes animation-transform-line {
|
||||
0% {
|
||||
opacity: 0;
|
||||
transform: translateX(-20rem);
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
transform: translateX(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin stroke-spacing-top {
|
||||
@keyframes stroke-spacing-top {
|
||||
0% {
|
||||
stroke-dashoffset: 2000;
|
||||
}
|
||||
50% {
|
||||
stroke-dashoffset: 0;
|
||||
}
|
||||
100% {
|
||||
stroke-dashoffset: -2000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin stroke-spacing-bottom {
|
||||
@keyframes stroke-spacing-bottom {
|
||||
0% {
|
||||
stroke-dashoffset: -2000;
|
||||
}
|
||||
50% {
|
||||
stroke-dashoffset: 0;
|
||||
}
|
||||
100% {
|
||||
stroke-dashoffset: 2000;
|
||||
}
|
||||
}
|
||||
}
|
47
assets/styles/_breakpoints.scss
Normal file
47
assets/styles/_breakpoints.scss
Normal file
@ -0,0 +1,47 @@
|
||||
$breakpoints: (
|
||||
'xs': (
|
||||
min-width: 22.5em,
|
||||
),
|
||||
//360,
|
||||
'xsm':
|
||||
(
|
||||
min-width: 32.5em,
|
||||
),
|
||||
//520,
|
||||
'sm':
|
||||
(
|
||||
min-width: 48em,
|
||||
),
|
||||
//768,
|
||||
'md':
|
||||
(
|
||||
min-width: 64em,
|
||||
),
|
||||
//1024,
|
||||
'lg':
|
||||
(
|
||||
min-width: 76.5em,
|
||||
),
|
||||
//1224,
|
||||
'xl':
|
||||
(
|
||||
min-width: 90em,
|
||||
),
|
||||
//1440,
|
||||
'xxl':
|
||||
(
|
||||
min-width: 240em,
|
||||
),
|
||||
//3840,
|
||||
) !default;
|
||||
|
||||
@mixin media($breakpoint) {
|
||||
@if map-has-key($breakpoints, $breakpoint) {
|
||||
@media #{inspect(map-get($breakpoints, $breakpoint))} {
|
||||
@content;
|
||||
}
|
||||
} @else {
|
||||
@warn "Unfortunately, no value could be retrieved from `#{$breakpoint}`. "
|
||||
+ "Available breakpoints are: #{map-keys($breakpoints)}.";
|
||||
}
|
||||
}
|
84
assets/styles/_colors.scss
Normal file
84
assets/styles/_colors.scss
Normal file
@ -0,0 +1,84 @@
|
||||
// MAIN COLORS
|
||||
$color-transparent: transparent;
|
||||
|
||||
$color-white: #fafafa;
|
||||
$color-white-003: hsla(0, 0%, 100%, 0.03);
|
||||
$color-white-005: hsla(0, 0%, 100%, 0.05);
|
||||
$color-white-01: hsla(0, 0%, 100%, 0.1);
|
||||
$color-white-02: hsla(0, 0%, 100%, 0.2);
|
||||
$color-white-03: hsla(0, 0%, 100%, 0.3);
|
||||
$color-white-04: hsla(0, 0%, 100%, 0.4);
|
||||
$color-white-08: hsla(0, 0%, 100%, 0.8);
|
||||
|
||||
$color-black: #161616;
|
||||
$color-black-004: hsla(0, 0%, 0%, 0.04);
|
||||
$color-black-01: hsla(0, 0%, 0%, 0.1);
|
||||
$color-black-02: hsla(0, 0%, 0%, 0.2);
|
||||
$color-black-04: hsla(0, 0%, 0%, 0.4);
|
||||
$color-black-06: hsla(0, 0%, 0%, 0.6);
|
||||
$color-black-08: hsla(0, 0%, 0%, 0.8);
|
||||
|
||||
$color-grey: #b2b2b2;
|
||||
$color-grey-medium: #6b6b6b;
|
||||
$color-grey-bold: #4f5059;
|
||||
$color-grey-heavy: #3a3a42;
|
||||
$color-grey-hard: #37383e;
|
||||
|
||||
$color-dark: #171717;
|
||||
$color-dark-light: #3f4047;
|
||||
$color-dark-heavy: #2a2b31;
|
||||
$color-dark-hard: #1e1e1e;
|
||||
|
||||
$color-default: #44f1a6;
|
||||
|
||||
$color-default-light: #45df9c;
|
||||
$color-default-dark: #4a8060;
|
||||
|
||||
$color-primary: #232323;
|
||||
$color-primary-light: #313131;
|
||||
|
||||
$color-bg: #000000;
|
||||
$color-bg-primary: #1f1f1f;
|
||||
$color-overlay-modal: hsla(0, 0%, 2%, 0.86);
|
||||
|
||||
$color-gradient-black: linear-gradient(180deg, #181818 0%, #000000 100%);
|
||||
|
||||
$color-green: $color-default;
|
||||
$color-red: #e45050;
|
||||
$color-yellow: #ff8f50;
|
||||
|
||||
// STATUS
|
||||
$color-success: $color-default;
|
||||
$color-danger: $color-red;
|
||||
$color-warning: $color-yellow;
|
||||
|
||||
// INPUTS
|
||||
$color-input-bg: $color-bg-primary;
|
||||
$color-input-bg-light: $color-grey-medium;
|
||||
$color-input-bg-bold: $color-grey-bold;
|
||||
|
||||
$color-input-bg-disabled: $color-grey-hard;
|
||||
$color-input-placeholder: $color-grey;
|
||||
$color-input-caret: $color-white;
|
||||
|
||||
// CHECKBOX
|
||||
$color-checkbox-border: $color-grey;
|
||||
$color-input-bg-light: $color-grey-medium;
|
||||
$color-input-bg-bold: $color-grey-bold;
|
||||
|
||||
$color-input-bg-disabled: $color-grey-hard;
|
||||
$color-input-placeholder: $color-grey;
|
||||
$color-input-caret: $color-white;
|
||||
|
||||
// LINKS
|
||||
$color-link-text: $color-grey;
|
||||
$color-link-hover: $color-default;
|
||||
|
||||
//BLOCKS
|
||||
$color-block-bg: $color-grey-hard;
|
||||
|
||||
//MODALS
|
||||
$color-modal-bg: $color-bg;
|
||||
|
||||
//ERRORS
|
||||
$color-errors-bg: rgba(193, 61, 84, 0.34);
|
10
assets/styles/_durations.scss
Normal file
10
assets/styles/_durations.scss
Normal file
@ -0,0 +1,10 @@
|
||||
$duration-animation-0s: 0s;
|
||||
$duration-animation-02s: 200ms;
|
||||
$duration-animation-025s: 250ms;
|
||||
$duration-animation-03s: 300ms;
|
||||
$duration-animation-04s: 400ms;
|
||||
$duration-animation-05s: 500ms;
|
||||
$duration-animation-06s: 600ms;
|
||||
$duration-animation-1s: 1s;
|
||||
$duration-animation-1200ms: 1.2s;
|
||||
$duration-animation-2000ms: 2s;
|
26
assets/styles/_fonts.scss
Normal file
26
assets/styles/_fonts.scss
Normal file
@ -0,0 +1,26 @@
|
||||
@font-face {
|
||||
font-family: 'PT Mono';
|
||||
src: local('PT Mono'), local('PTMono-Regular'), url('@/assets/fonts/PTMono-Regular.woff2') format('woff2');
|
||||
font-display: swap;
|
||||
font-weight: 400;
|
||||
font-style: normal;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'PT Mono';
|
||||
src: local('PT Mono Bold'), local('PTMono-Bold'), url('@/assets/fonts/PTMono-Bold.woff2') format('woff2');
|
||||
font-display: swap;
|
||||
font-weight: 700;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
$font-family-main: 'PT Mono', monospace;
|
||||
|
||||
$font-weight-regular: 400;
|
||||
$font-weight-medium: 500;
|
||||
$font-weight-semiBold: 600;
|
||||
$font-weight-bold: 700;
|
||||
|
||||
$font-style-normal: normal;
|
||||
$font-style-italic: italic;
|
||||
$font-style-oblique: oblique;
|
||||
$font-style-inherit: inherit;
|
8
assets/styles/_layers.scss
Normal file
8
assets/styles/_layers.scss
Normal file
@ -0,0 +1,8 @@
|
||||
$zIndex-7: 7;
|
||||
$zIndex-6: 6;
|
||||
$zIndex-5: 5;
|
||||
$zIndex-4: 4;
|
||||
$zIndex-3: 3;
|
||||
$zIndex-2: 2;
|
||||
$zIndex-1: 1;
|
||||
$zIndex-negative: -1;
|
164
assets/styles/_modal.scss
Normal file
164
assets/styles/_modal.scss
Normal file
@ -0,0 +1,164 @@
|
||||
.vue-modal-resizer {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
width: 1.2rem;
|
||||
height: 1.2rem;
|
||||
display: block;
|
||||
background: $color-transparent;
|
||||
z-index: $zIndex-7;
|
||||
overflow: hidden;
|
||||
cursor: se-resize;
|
||||
&::after {
|
||||
position: absolute;
|
||||
content: '';
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
display: block;
|
||||
background: $color-transparent;
|
||||
border-bottom: 1rem solid #ddd;
|
||||
border-left: 1rem solid $color-transparent;
|
||||
}
|
||||
.vue-modal-resizer.clicked::after {
|
||||
border-bottom: 1rem solid #369be9;
|
||||
}
|
||||
}
|
||||
|
||||
.vm {
|
||||
&--block-scroll {
|
||||
overflow: hidden;
|
||||
width: 100vw;
|
||||
}
|
||||
&--container {
|
||||
position: fixed;
|
||||
box-sizing: border-box;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
z-index: $zIndex-6;
|
||||
}
|
||||
&--overlay {
|
||||
position: fixed;
|
||||
box-sizing: border-box;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background-color: $color-overlay-modal;
|
||||
opacity: $opacity-default;
|
||||
}
|
||||
&--container.scrollable {
|
||||
height: 100%;
|
||||
min-height: 100vh;
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
.vm--modal {
|
||||
margin-bottom: 0.2rem;
|
||||
}
|
||||
}
|
||||
&--modal {
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
background-color: $color-bg-primary;
|
||||
border-radius: 0.6rem;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
&--top-right-slot {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.vm-transition {
|
||||
&--overlay-enter-active,
|
||||
&--overlay-leave-active {
|
||||
transition: all 50ms;
|
||||
}
|
||||
&--overlay-enter,
|
||||
&--overlay-leave-active {
|
||||
opacity: 0;
|
||||
}
|
||||
&--modal-enter-active,
|
||||
&--modal-leave-active {
|
||||
transition: all 400ms;
|
||||
}
|
||||
&--modal-enter,
|
||||
&--modal-leave-active {
|
||||
opacity: 0;
|
||||
transform: translateY(-2rem);
|
||||
}
|
||||
&--default-enter,
|
||||
&--default-leave-active {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
.vm-transition .vm-transition--default-enter-active,
|
||||
.vm-transition--default-leave-active {
|
||||
transition: all 2ms;
|
||||
}
|
||||
|
||||
.vue-dialog {
|
||||
font-size: 1.4rem;
|
||||
div {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
&-content {
|
||||
flex: 1 0 auto;
|
||||
width: 100%;
|
||||
padding: 1.4rem;
|
||||
}
|
||||
&-content-title {
|
||||
font-weight: 600;
|
||||
padding-bottom: 1.4rem;
|
||||
}
|
||||
&-buttons {
|
||||
display: flex;
|
||||
flex: 0 1 auto;
|
||||
width: 100%;
|
||||
border-top: 0.1rem solid #eee;
|
||||
}
|
||||
&-buttons-none {
|
||||
width: 100%;
|
||||
padding-bottom: 1.4rem;
|
||||
}
|
||||
&-button {
|
||||
font-size: inherit;
|
||||
background: transparent;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
cursor: pointer;
|
||||
box-sizing: border-box;
|
||||
line-height: 4rem;
|
||||
height: 4rem;
|
||||
color: inherit;
|
||||
font: inherit;
|
||||
outline: none;
|
||||
&:hover {
|
||||
background: #f9f9f9;
|
||||
}
|
||||
&:active {
|
||||
background: #f3f3f3;
|
||||
}
|
||||
&:not(:first-of-type) {
|
||||
border-left: 0.1rem solid #eee;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// NO PADDING USAGE
|
||||
.modal {
|
||||
box-shadow: none;
|
||||
&_top {
|
||||
margin: 3rem 0 0;
|
||||
}
|
||||
&_black {
|
||||
background-color: $color-black;
|
||||
background-image: none;
|
||||
}
|
||||
}
|
11
assets/styles/_opacity.scss
Normal file
11
assets/styles/_opacity.scss
Normal file
@ -0,0 +1,11 @@
|
||||
$opacity-default: 1;
|
||||
$opacity-09: 0.9;
|
||||
$opacity-08: 0.8;
|
||||
$opacity-07: 0.7;
|
||||
$opacity-06: 0.6;
|
||||
$opacity-05: 0.5;
|
||||
$opacity-04: 0.4;
|
||||
$opacity-03: 0.3;
|
||||
$opacity-02: 0.2;
|
||||
$opacity-01: 0.1;
|
||||
$opacity-invisible: 0;
|
20
assets/styles/_sizes.scss
Normal file
20
assets/styles/_sizes.scss
Normal file
@ -0,0 +1,20 @@
|
||||
// GRID
|
||||
$size-grid-padding: 1.3rem;
|
||||
|
||||
// CONTENT
|
||||
$size-content-block: 38rem;
|
||||
$size-content-width-min: 25rem;
|
||||
|
||||
// INPUTS
|
||||
$size-input-padding-vertical: 0.75em;
|
||||
$size-input-padding-horizontal: 1em;
|
||||
$size-input-padding: $size-input-padding-vertical $size-input-padding-horizontal;
|
||||
$size-input-border: 0.1rem;
|
||||
$size-input-border-radius: (1em + $size-input-padding-vertical * 2) / 10;
|
||||
|
||||
$size-input-button: 8rem;
|
||||
|
||||
// BUTTONS
|
||||
$size-button-padding-vertical: $size-grid-padding / 2;
|
||||
$size-button-padding-horizontal: $size-grid-padding / 1.5;
|
||||
$size-button-padding: $size-button-padding-vertical $size-button-padding-horizontal;
|
77
assets/styles/_tooltip.scss
Normal file
77
assets/styles/_tooltip.scss
Normal file
@ -0,0 +1,77 @@
|
||||
.tooltip {
|
||||
max-width: 20.8rem;
|
||||
z-index: $zIndex-7;
|
||||
.tooltip-inner {
|
||||
padding: 1.2rem;
|
||||
font-size: 1.2rem;
|
||||
line-height: 1.34;
|
||||
color: $color-white;
|
||||
background-color: $color-black;
|
||||
border-radius: 0.4rem;
|
||||
}
|
||||
.tooltip-arrow {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-style: solid;
|
||||
position: absolute;
|
||||
margin: 0.5rem;
|
||||
border-color: $color-black;
|
||||
z-index: $zIndex-1;
|
||||
}
|
||||
&[x-placement^='top'] {
|
||||
margin-bottom: 0.5rem;
|
||||
|
||||
.tooltip-arrow {
|
||||
border-width: 0.5rem 0.5rem 0 0.5rem;
|
||||
border-left-color: $color-transparent;
|
||||
border-right-color: $color-transparent;
|
||||
border-bottom-color: $color-transparent;
|
||||
bottom: -0.5rem;
|
||||
left: calc(50% - 0.5rem);
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
&[x-placement^='bottom'] {
|
||||
margin-top: 0.5rem;
|
||||
|
||||
.tooltip-arrow {
|
||||
border-width: 0 0.5rem 0.5rem 0.5rem;
|
||||
border-left-color: $color-transparent;
|
||||
border-right-color: $color-transparent;
|
||||
border-top-color: $color-transparent;
|
||||
top: -0.5rem;
|
||||
left: calc(50% - 0.5rem);
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
&[x-placement^='right'] {
|
||||
margin-left: 0.5rem;
|
||||
|
||||
.tooltip-arrow {
|
||||
border-width: 0.5rem 0.5rem 0.5rem 0;
|
||||
border-left-color: $color-transparent;
|
||||
border-top-color: $color-transparent;
|
||||
border-bottom-color: $color-transparent;
|
||||
left: -0.5rem;
|
||||
top: calc(50% - 0.5rem);
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
&[x-placement^='left'] {
|
||||
margin-right: 0.5rem;
|
||||
|
||||
.tooltip-arrow {
|
||||
border-width: 0.5rem 0 0.5rem 0.5rem;
|
||||
border-top-color: $color-transparent;
|
||||
border-right-color: $color-transparent;
|
||||
border-bottom-color: $color-transparent;
|
||||
right: -0.5rem;
|
||||
top: calc(50% - 0.5rem);
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
11
assets/styles/_variables.scss
Normal file
11
assets/styles/_variables.scss
Normal file
@ -0,0 +1,11 @@
|
||||
// Styles
|
||||
// include into nuxt.config.ts
|
||||
|
||||
@import 'fonts';
|
||||
@import 'sizes';
|
||||
@import 'colors';
|
||||
@import 'layers';
|
||||
@import 'opacity';
|
||||
@import 'durations';
|
||||
@import 'animations';
|
||||
@import 'breakpoints';
|
19
assets/styles/index.scss
Normal file
19
assets/styles/index.scss
Normal file
@ -0,0 +1,19 @@
|
||||
// Components
|
||||
@import 'modal';
|
||||
@import 'tooltip';
|
||||
|
||||
:export {
|
||||
// Any values that need to be accessible from JavaScript
|
||||
// outside of a Vue component can be defined here, prefixed
|
||||
// with `global-` to avoid conflicts with classes. For
|
||||
// example:
|
||||
//
|
||||
// global-grid-padding: $size-grid-padding;
|
||||
//
|
||||
// Then in a JavaScript file, you can import this object
|
||||
// as you would normally with:
|
||||
//
|
||||
// import design from '@design'
|
||||
//
|
||||
// console.log(design['global-grid-padding'])
|
||||
}
|
66
components/ConnectionButton.vue
Normal file
66
components/ConnectionButton.vue
Normal file
@ -0,0 +1,66 @@
|
||||
<template>
|
||||
<div :class="$style.container">
|
||||
<base-button
|
||||
v-if="mismatchNetwork"
|
||||
:size="size"
|
||||
:loading="isChainChanging"
|
||||
:class="$style.container__button"
|
||||
@click="onChainChange"
|
||||
>
|
||||
{{ $t('containers.header.buttons.second') }}
|
||||
</base-button>
|
||||
<base-button
|
||||
v-else-if="!isConnected"
|
||||
:size="size"
|
||||
:loading="isConnecting"
|
||||
:class="$style.container__button"
|
||||
@click="onConnect"
|
||||
>
|
||||
<base-icon name="wallet" size="symbol" />
|
||||
<span>{{ $t('containers.header.buttons.first') }}</span>
|
||||
</base-button>
|
||||
<slot v-else />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapActions, mapGetters } from 'vuex'
|
||||
|
||||
export default {
|
||||
name: 'Connection',
|
||||
inject: ['setupProvider', 'onChainChange'],
|
||||
props: {
|
||||
size: {
|
||||
type: String,
|
||||
default: 'defaultSize',
|
||||
validator(value) {
|
||||
return ['defaultSize', 'fullWidth', 'large', 'medium', 'small', 'mini', 'symbol', 'square'].includes(value)
|
||||
},
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('wallet', ['mismatchNetwork', 'isConnected', 'nameProvider', 'isConnecting', 'isChainChanging']),
|
||||
},
|
||||
methods: {
|
||||
...mapActions('wallet', ['changeChain']),
|
||||
async onConnect() {
|
||||
try {
|
||||
await this.setupProvider(this.nameProvider)
|
||||
} catch (err) {
|
||||
console.error('initWallet error', this.$t(err.message))
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
&__button {
|
||||
margin-left: auto !important;
|
||||
}
|
||||
}
|
||||
</style>
|
7
components/README.md
Normal file
7
components/README.md
Normal file
@ -0,0 +1,7 @@
|
||||
# COMPONENTS
|
||||
|
||||
**This directory is not required, you can delete it if you don't want to use it.**
|
||||
|
||||
The components directory contains your Vue.js Components.
|
||||
|
||||
_Nuxt.js doesn't supercharge these components._
|
197
components/RelayerInfo.vue
Normal file
197
components/RelayerInfo.vue
Normal file
@ -0,0 +1,197 @@
|
||||
<template>
|
||||
<work-area>
|
||||
<div :class="$style.row">
|
||||
<base-input
|
||||
:class="$style.input"
|
||||
readonly
|
||||
type="url"
|
||||
:label="$t('components.relayerInfo.inputs.labels.first')"
|
||||
:model-value="relayerUrl"
|
||||
:loading="isLoading"
|
||||
/>
|
||||
</div>
|
||||
<div :class="$style.row">
|
||||
<base-input
|
||||
readonly
|
||||
type="text"
|
||||
:label="$t('components.relayerInfo.inputs.labels.second')"
|
||||
:model-value="ensName"
|
||||
:loading="isLoading"
|
||||
/>
|
||||
|
||||
<content-placeholders v-if="isLoading" :rounded="true" animated :class="$style.placeholder">
|
||||
<content-placeholders-img />
|
||||
</content-placeholders>
|
||||
|
||||
<div v-else :class="$style.subdomains">
|
||||
<li v-for="subdomain in subdomains" :key="subdomain.name" :class="$style.subdomains__item">
|
||||
<span :class="$style.subdomains__itemIcon"><base-icon size="fill" :name="subdomain.icon" /></span>
|
||||
<span :class="$style.subdomains__itemStatus"><base-icon size="fill" :name="subdomain.status" /></span>
|
||||
</li>
|
||||
</div>
|
||||
</div>
|
||||
<div :class="$style.row">
|
||||
<label for="workerAddress" :class="$style.label"> {{ $t('components.relayerInfo.content.first') }}</label>
|
||||
|
||||
<content-placeholders v-if="isLoading" :class="$style.placeholder" :rounded="true" animated>
|
||||
<content-placeholders-text :lines="3" />
|
||||
</content-placeholders>
|
||||
|
||||
<worker-address
|
||||
v-for="(worker, index) of workers"
|
||||
v-else
|
||||
id="workerAddress"
|
||||
:key="worker + index"
|
||||
:index="index"
|
||||
:worker-address="worker"
|
||||
without-btns
|
||||
/>
|
||||
</div>
|
||||
<slot v-if="editableStake" id="#editableStake" />
|
||||
<base-input
|
||||
v-else
|
||||
icon="torn"
|
||||
readonly
|
||||
ticker="torn"
|
||||
input-mode="numeric"
|
||||
:label="$t(stakeText)"
|
||||
:model-value="String(stake)"
|
||||
:loading="isLoading"
|
||||
/>
|
||||
</work-area>
|
||||
</template>
|
||||
<script>
|
||||
import { WorkArea } from '@/containers'
|
||||
import WorkerAddress from '@/components/workers/WorkerAddress.vue'
|
||||
|
||||
export default {
|
||||
components: { WorkerAddress, WorkArea },
|
||||
props: {
|
||||
relayerUrl: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
ensName: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
subdomains: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
workers: {
|
||||
type: Array,
|
||||
default: () => [],
|
||||
},
|
||||
stake: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
stakeText: {
|
||||
type: String,
|
||||
default: () => 'components.relayerInfo.inputs.labels.third',
|
||||
},
|
||||
isLoading: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
editableStake: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.label {
|
||||
margin: 0 0 0.8rem;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.2;
|
||||
color: $color-white;
|
||||
background-color: $color-transparent;
|
||||
}
|
||||
|
||||
.row {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.workers {
|
||||
display: flex;
|
||||
&__title {
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.subdomains {
|
||||
margin: 1.5rem 0 0;
|
||||
padding: 0;
|
||||
font-size: 1.3rem;
|
||||
font-weight: 400;
|
||||
display: grid;
|
||||
width: 100%;
|
||||
columns: 4;
|
||||
grid-template-columns: repeat(4, calc(25% - 1.3rem));
|
||||
column-gap: 1.6rem;
|
||||
row-gap: 1.2rem;
|
||||
|
||||
&__item {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
list-style: none;
|
||||
background-color: $color-dark;
|
||||
padding: 0.5rem 0.8rem;
|
||||
border-radius: 0.4rem;
|
||||
align-items: center;
|
||||
|
||||
&Icon {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
&Status {
|
||||
width: 1.5rem;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.success {
|
||||
color: $color-success;
|
||||
}
|
||||
|
||||
.failed {
|
||||
color: $color-warning;
|
||||
}
|
||||
|
||||
.missing {
|
||||
color: $color-link-text;
|
||||
}
|
||||
}
|
||||
|
||||
.placeholder {
|
||||
width: 100%;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
// ToDo refactor
|
||||
.successIcon {
|
||||
padding: 0.2rem 0 !important;
|
||||
}
|
||||
// ToDo refactor
|
||||
.subdomainIcon {
|
||||
padding: 0.2rem 0 !important;
|
||||
}
|
||||
</style>
|
||||
<style lang="scss">
|
||||
.vue-content-placeholders-text__line,
|
||||
.vue-content-placeholders-img {
|
||||
background: $color-dark !important;
|
||||
&::before {
|
||||
width: 20%;
|
||||
background: linear-gradient(to right, transparent 0%, $color-bg-primary 15%, transparent 30%) !important;
|
||||
}
|
||||
}
|
||||
</style>
|
266
components/base-button.vue
Normal file
266
components/base-button.vue
Normal file
@ -0,0 +1,266 @@
|
||||
<template>
|
||||
<button
|
||||
v-bind="$attrs"
|
||||
:disabled="isDisabled"
|
||||
:class="[
|
||||
$style.styledButton,
|
||||
$style[type],
|
||||
$style[size],
|
||||
{ [$style.fullWidth]: fullWidth },
|
||||
{ [$style.freeSize]: freeSize },
|
||||
{ [$style.loading]: loading },
|
||||
]"
|
||||
v-on="$listeners"
|
||||
>
|
||||
<slot />
|
||||
</button>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
inheritAttrs: false,
|
||||
props: {
|
||||
fullWidth: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
freeSize: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: 'defaultType',
|
||||
validator(value) {
|
||||
return ['defaultType', 'primary', 'link', 'dark'].includes(value)
|
||||
},
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: 'defaultSize',
|
||||
validator(value) {
|
||||
return ['defaultSize', 'fullWidth', 'large', 'medium', 'small', 'mini', 'symbol', 'square'].includes(value)
|
||||
},
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
isDisabled() {
|
||||
return this.disabled || this.loading
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" module>
|
||||
@include animation-full-rotate;
|
||||
|
||||
.styledButton {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
width: auto;
|
||||
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
font-family: $font-family-main;
|
||||
font-weight: $font-weight-bold;
|
||||
letter-spacing: normal;
|
||||
|
||||
border: none;
|
||||
border-radius: 0.4rem;
|
||||
|
||||
transition: all $duration-animation-02s ease-in, text-indent $duration-animation-0s;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
z-index: $zIndex-1;
|
||||
outline: none;
|
||||
&:disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
&::-moz-focus-inner {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
.fullWidth {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Types */
|
||||
/* defaultType, primary, link, dark */
|
||||
.defaultType {
|
||||
color: $color-dark-hard;
|
||||
background-color: $color-default;
|
||||
background-repeat: no-repeat;
|
||||
&:disabled {
|
||||
color: $color-dark-hard;
|
||||
background-color: $color-default-dark;
|
||||
}
|
||||
|
||||
&:hover:not([disabled]) {
|
||||
background-color: $color-default-light;
|
||||
}
|
||||
|
||||
&:active:not([disabled]),
|
||||
&:focus-within:not([disabled]) {
|
||||
box-shadow: 0 0 0.4rem 0 $color-default;
|
||||
}
|
||||
|
||||
&:active:not([disabled]) {
|
||||
transform: translateY(0.2rem);
|
||||
}
|
||||
}
|
||||
.primary {
|
||||
color: $color-white;
|
||||
background-color: $color-primary;
|
||||
&:disabled {
|
||||
color: $color-primary-light;
|
||||
background-color: $color-black-04;
|
||||
}
|
||||
|
||||
&:hover:not([disabled]) {
|
||||
background-color: $color-primary-light;
|
||||
}
|
||||
|
||||
&:focus-within:not([disabled]),
|
||||
&:active:not([disabled]) {
|
||||
color: $color-grey-medium;
|
||||
background-color: $color-white;
|
||||
}
|
||||
&:active:not([disabled]) {
|
||||
transform: translateY(0.2rem);
|
||||
}
|
||||
}
|
||||
.link {
|
||||
color: $color-link-text;
|
||||
background-color: $color-transparent;
|
||||
text-decoration: underline;
|
||||
&:disabled {
|
||||
color: $color-grey-hard;
|
||||
}
|
||||
|
||||
&:hover:not([disabled]),
|
||||
&:focus-within:not([disabled]),
|
||||
&:active:not([disabled]) {
|
||||
color: $color-link-hover;
|
||||
}
|
||||
}
|
||||
|
||||
.dark {
|
||||
border-color: $color-dark;
|
||||
background-color: $color-dark;
|
||||
&:disabled {
|
||||
opacity: 0.55;
|
||||
color: $color-grey-hard;
|
||||
}
|
||||
|
||||
&:hover:not([disabled]),
|
||||
&:focus-within:not([disabled]),
|
||||
&:active:not([disabled]) {
|
||||
background-color: $color-dark-light;
|
||||
border-color: $color-dark-light;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sizes */
|
||||
/* defaultSize, large, medium, small, mini, symbol, square */
|
||||
.defaultSize {
|
||||
padding: 0.4rem 1.6rem;
|
||||
min-width: 11rem;
|
||||
height: 3.9rem;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.1rem;
|
||||
}
|
||||
.large {
|
||||
padding: 1.2rem 2rem;
|
||||
min-width: 14rem;
|
||||
height: 5.8rem;
|
||||
font-size: 1.8rem;
|
||||
line-height: 1.44;
|
||||
}
|
||||
.medium {
|
||||
padding: 0.8rem 2rem;
|
||||
min-width: 5.2rem;
|
||||
height: 4rem;
|
||||
font-size: 1.6rem;
|
||||
line-height: 1.14;
|
||||
}
|
||||
.small {
|
||||
padding: 0.5rem 1.2rem;
|
||||
min-width: 3rem;
|
||||
height: auto;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.67;
|
||||
}
|
||||
.mini {
|
||||
padding: 0.4rem;
|
||||
min-width: 3.9rem;
|
||||
height: 3.9rem;
|
||||
font-size: 1.2rem;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.fullWidth {
|
||||
width: 100%;
|
||||
padding: 0.4rem 1.6rem;
|
||||
height: 3.8rem;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.44;
|
||||
}
|
||||
|
||||
.symbol {
|
||||
padding: 0.4rem;
|
||||
min-width: 3.9rem;
|
||||
max-width: 3.9rem;
|
||||
height: 3.9rem;
|
||||
font-size: 1.2rem;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.freeSize {
|
||||
padding: 0;
|
||||
min-width: auto;
|
||||
}
|
||||
|
||||
.loading {
|
||||
position: relative;
|
||||
text-indent: -1000%;
|
||||
overflow: hidden;
|
||||
|
||||
> span {
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
&::after {
|
||||
content: '';
|
||||
margin: auto;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
background-color: $color-transparent;
|
||||
background-image: none;
|
||||
border: 0.2rem solid $color-white;
|
||||
border-color: $color-white $color-transparent $color-white $color-transparent;
|
||||
border-radius: 50%;
|
||||
animation: animation-full-rotate $duration-animation-1200ms linear infinite;
|
||||
opacity: $opacity-default;
|
||||
}
|
||||
}
|
||||
</style>
|
128
components/base-checkbox.vue
Normal file
128
components/base-checkbox.vue
Normal file
@ -0,0 +1,128 @@
|
||||
<template>
|
||||
<div :class="$style.wrapper">
|
||||
<label :class="$style.checkbox">
|
||||
<input
|
||||
:id="id"
|
||||
name="checkbox"
|
||||
type="checkbox"
|
||||
:checked="checked"
|
||||
:disabled="disabled"
|
||||
:class="$style.checkbox__input"
|
||||
v-on="$listeners"
|
||||
@input="$emit('update:modelValue', $event.target.checked)"
|
||||
/>
|
||||
<span :class="$style.checkbox__container">
|
||||
<span :class="$style.checkbox__icon"></span>
|
||||
</span>
|
||||
</label>
|
||||
<label :for="id" :class="$style.checkbox__label"><slot /></label>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
model: {
|
||||
event: 'update:modelValue',
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: Boolean,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
required: false,
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
required: false,
|
||||
},
|
||||
checked: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
emits: ['update:modelValue'],
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" module>
|
||||
.wrapper {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.checkbox {
|
||||
display: inline-flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
margin-right: 1rem;
|
||||
&__label {
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
&__container {
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 1.6rem;
|
||||
height: 1.6rem;
|
||||
background-color: $color-transparent;
|
||||
border: 0.1rem solid $color-checkbox-border;
|
||||
border-radius: 0.4rem;
|
||||
transition: background-color $duration-animation-02s, borber-color $duration-animation-02s;
|
||||
}
|
||||
&__icon {
|
||||
left: 0;
|
||||
position: absolute;
|
||||
display: inline-block;
|
||||
width: 50%;
|
||||
height: 50%;
|
||||
opacity: $opacity-invisible;
|
||||
transition: opacity $duration-animation-02s;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border-radius: 0.2rem;
|
||||
background-color: $color-default;
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
&__input {
|
||||
position: absolute;
|
||||
margin: -0.1rem;
|
||||
width: 0.1rem;
|
||||
height: 0.1rem;
|
||||
clip: rect(0.1rem 0.1rem 0.1rem 0.1rem);
|
||||
&:disabled {
|
||||
opacity: $opacity-05;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
&:hover:not([disabled]) ~ .checkbox__container {
|
||||
background-color: $color-white-005;
|
||||
}
|
||||
&:focus:not([disabled]) ~ .checkbox__container,
|
||||
&:checked:not([disabled]) ~ .checkbox__container {
|
||||
border-color: $color-white;
|
||||
}
|
||||
&:checked:not([disabled]) ~ .checkbox__container > .checkbox__icon {
|
||||
opacity: $opacity-default;
|
||||
}
|
||||
&:focus:checked:not([disabled]) ~ .checkbox__container {
|
||||
background-color: darken($color-white, 84%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.checkbox[disabled] .checkbox__container,
|
||||
.checkbox__input:disabled + .checkbox__container {
|
||||
opacity: $opacity-06;
|
||||
filter: grayscale(40%);
|
||||
cursor: not-allowed;
|
||||
}
|
||||
</style>
|
48
components/base-explorer-link.vue
Normal file
48
components/base-explorer-link.vue
Normal file
@ -0,0 +1,48 @@
|
||||
<template>
|
||||
<a v-tooltip="tooltip" :href="explorerLink" target="_blank" rel="noopener noreferrer" :class="$style.explorerLink">
|
||||
<slot />
|
||||
</a>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getEtherscanLink } from '@/utilities'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
value: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
tooltip: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
chainId: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
required: true,
|
||||
validator(value) {
|
||||
return ['transaction', 'token', 'address', 'block'].includes(value)
|
||||
},
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
explorerLink() {
|
||||
return getEtherscanLink(Number(this.chainId), this.value, this.type)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" module>
|
||||
.explorerLink {
|
||||
color: $color-link-text;
|
||||
&:focus,
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
color: $color-link-hover;
|
||||
}
|
||||
}
|
||||
</style>
|
157
components/base-icon.vue
Normal file
157
components/base-icon.vue
Normal file
@ -0,0 +1,157 @@
|
||||
<template>
|
||||
<span v-tooltip="tooltip" :class="[$style.icon, $style[size], { [$style.withTooltip]: tooltip }]">
|
||||
<component :is="iconComponent" role="img" />
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const iconsNames = [
|
||||
'Key',
|
||||
'Auth',
|
||||
'Fund',
|
||||
'Copy',
|
||||
'Info',
|
||||
'Tick',
|
||||
'Exit',
|
||||
'Plus',
|
||||
'Back',
|
||||
'Error',
|
||||
'Arrow',
|
||||
'Cross',
|
||||
'Stats',
|
||||
'Wallet',
|
||||
'Loader',
|
||||
'Trash',
|
||||
'Failed',
|
||||
'Medium',
|
||||
'Github',
|
||||
'Twitter',
|
||||
'Discord',
|
||||
'Success',
|
||||
'Missing',
|
||||
'Warning',
|
||||
'Binance',
|
||||
'Tornado',
|
||||
'Withdraw',
|
||||
'Settings',
|
||||
'Metamask',
|
||||
'Telegram',
|
||||
'NotFound',
|
||||
'Discourse',
|
||||
'CircleCross',
|
||||
// currencies
|
||||
'BSC',
|
||||
'Nova',
|
||||
'Torn',
|
||||
'Gnosis',
|
||||
'Goerli',
|
||||
'Mainnet',
|
||||
'Polygon',
|
||||
'Optimism',
|
||||
'Arbitrum',
|
||||
'Avalanche',
|
||||
// Steps
|
||||
'Stake',
|
||||
'Relayer',
|
||||
'Workers',
|
||||
'Summary',
|
||||
'Subdomains',
|
||||
'Requirement',
|
||||
]
|
||||
|
||||
const icons = iconsNames.reduce((acc, curr) => {
|
||||
acc[curr.toLowerCase()] = () => import(`./icons/${curr}.vue`)
|
||||
return acc
|
||||
}, {})
|
||||
|
||||
export default {
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
required: true,
|
||||
validator(value) {
|
||||
return Boolean(iconsNames.find((el) => el.toLowerCase() === value.toLowerCase()))
|
||||
},
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: 'default',
|
||||
validator(value) {
|
||||
return ['default', 'extraMedium', 'medium', 'small', 'large', 'xlarge', 'xl', 'fill', 'auto', 'symbol'].includes(value)
|
||||
},
|
||||
},
|
||||
tooltip: {
|
||||
type: String,
|
||||
required: false,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
iconComponent() {
|
||||
return icons[this.name]
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.icon {
|
||||
padding: 0;
|
||||
display: block;
|
||||
color: inherit;
|
||||
fill: currentColor;
|
||||
svg {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&:first-child:not(:last-child) {
|
||||
margin-right: 0.8rem;
|
||||
}
|
||||
}
|
||||
|
||||
.withTooltip {
|
||||
cursor: help;
|
||||
}
|
||||
|
||||
/* Sizes */
|
||||
/* default, small, medium, extraMedium, large, xlarge, xl, fill, auto */
|
||||
.default {
|
||||
width: 2.4rem;
|
||||
height: 2.4rem;
|
||||
}
|
||||
.small {
|
||||
width: 1.4rem;
|
||||
height: 1.4rem;
|
||||
}
|
||||
.medium {
|
||||
width: 1.6rem;
|
||||
height: 1.6rem;
|
||||
}
|
||||
.extraMedium {
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
}
|
||||
.large {
|
||||
width: 3.2rem;
|
||||
height: 3.2rem;
|
||||
}
|
||||
.xlarge {
|
||||
width: 4.4rem;
|
||||
height: 4.4rem;
|
||||
}
|
||||
.xl {
|
||||
width: 6.4rem;
|
||||
height: 6.4rem;
|
||||
}
|
||||
.fill {
|
||||
width: inherit;
|
||||
height: inherit;
|
||||
}
|
||||
.auto {
|
||||
width: auto;
|
||||
height: 100%;
|
||||
}
|
||||
.symbol {
|
||||
width: 1.8rem;
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
668
components/base-input.vue
Normal file
668
components/base-input.vue
Normal file
@ -0,0 +1,668 @@
|
||||
<template>
|
||||
<div v-on-clickAway="onBlur" :class="$style.wrap">
|
||||
<label v-if="label" :for="label" :class="$style.label">
|
||||
{{ label }}
|
||||
</label>
|
||||
|
||||
<base-button v-if="buttonClick" type="link" free-size :disabled="disabled" :class="$style.buttonBlock" @click="buttonClick">
|
||||
<span v-if="info" :class="$style.info">
|
||||
<span :class="$style.info__icon"><base-icon v-if="infoIcon" :name="infoIcon" size="fill" /></span>
|
||||
<span :class="$style.info__text">{{ info }}</span>
|
||||
<span v-if="buttonText" :class="$style.info__button">{{ buttonText }}</span>
|
||||
</span>
|
||||
</base-button>
|
||||
|
||||
<div
|
||||
:class="[
|
||||
$style.container,
|
||||
{
|
||||
[$style.container__readonly]: readonly,
|
||||
},
|
||||
]"
|
||||
>
|
||||
<span
|
||||
ref="mirror"
|
||||
:class="[
|
||||
$style.mirrorElement,
|
||||
$style[size],
|
||||
$style[type],
|
||||
$style[inputMode],
|
||||
$style[inputType],
|
||||
{
|
||||
[$style.loading]: loading,
|
||||
[$style.readonly]: readonly,
|
||||
},
|
||||
]"
|
||||
>
|
||||
{{ modelValue }}
|
||||
</span>
|
||||
<input
|
||||
:id="label"
|
||||
ref="input"
|
||||
:readonly="readonly"
|
||||
v-bind="$attrs"
|
||||
:type="type"
|
||||
:disabled="disabled"
|
||||
:value="modelValue"
|
||||
:placeholder="placeholderText"
|
||||
:class="[
|
||||
$style.input,
|
||||
$style[type],
|
||||
$style[size],
|
||||
$style[inputMode],
|
||||
$style[inputType],
|
||||
{
|
||||
[$style.error]: error,
|
||||
[$style.loading]: loading,
|
||||
[$style.focused]: focused,
|
||||
},
|
||||
]"
|
||||
autocomplete="nope"
|
||||
v-on="$listeners"
|
||||
@focus="onFocus"
|
||||
@blur="onBlur"
|
||||
@input="sendEvent"
|
||||
/>
|
||||
|
||||
<span
|
||||
v-if="isShowShortedAddress"
|
||||
:class="[
|
||||
$style.shortedAddress,
|
||||
$style[size],
|
||||
$style[type],
|
||||
$style[inputMode],
|
||||
$style[inputType],
|
||||
|
||||
{
|
||||
[$style.shortedAddress__readonly]: readonly,
|
||||
[$style.shortedAddress__disabled]: disabled,
|
||||
[$style.loading]: loading,
|
||||
},
|
||||
]"
|
||||
@click="onFocus"
|
||||
>
|
||||
{{ shortedAddress }}
|
||||
</span>
|
||||
<span v-if="loading" :class="$style.loader"><span :class="$style.loader__icon" /></span>
|
||||
|
||||
<span v-if="icon" :class="$style.iconTicker">
|
||||
<base-icon v-if="icon !== ''" :name="icon" size="symbol" />
|
||||
<span v-if="ticker" :class="$style.iconTicker__value">{{ ticker }}</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<span v-if="error" :class="$style.errorMessage" role="alert">
|
||||
{{ errorMessage }}
|
||||
<a v-if="errorLink" :href="errorLink" :class="$style.link" target="_blank" rel="noopener noreferrer">more info</a>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { directive as onClickAway } from 'vue-clickaway'
|
||||
|
||||
import { numbers } from '@/constants'
|
||||
import { validation, isAddress } from '@/utilities'
|
||||
|
||||
export default {
|
||||
directives: {
|
||||
onClickAway: onClickAway,
|
||||
},
|
||||
inheritAttrs: false,
|
||||
model: {
|
||||
event: 'update:modelValue',
|
||||
},
|
||||
props: {
|
||||
modelValue: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
buttonClick: {
|
||||
type: Function,
|
||||
default: null,
|
||||
},
|
||||
buttonText: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
info: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
error: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
errorMessage: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
errorLink: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
placeholderText: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
icon: {
|
||||
type: String,
|
||||
default: '',
|
||||
validator(value) {
|
||||
return ['', 'torn', 'binance'].includes(value)
|
||||
},
|
||||
},
|
||||
infoIcon: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
ticker: {
|
||||
type: String,
|
||||
default: 'eth',
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: 'text',
|
||||
validator(value) {
|
||||
return ['email', 'number', 'password', 'search', 'tel', 'text', 'url', 'file'].includes(value)
|
||||
},
|
||||
},
|
||||
inputMode: {
|
||||
type: String,
|
||||
default: 'text',
|
||||
validator(value) {
|
||||
return ['none', 'text', 'tel', 'url', 'email', 'numeric', 'decimal', 'search'].includes(value)
|
||||
},
|
||||
},
|
||||
inputType: {
|
||||
type: String,
|
||||
default: 'defaultType',
|
||||
validator(value) {
|
||||
return ['defaultType'].includes(value)
|
||||
},
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: 'defaultSize',
|
||||
validator(value) {
|
||||
return ['defaultSize', 'large', 'medium'].includes(value)
|
||||
},
|
||||
},
|
||||
},
|
||||
emits: ['update:modelValue'],
|
||||
data() {
|
||||
return {
|
||||
focused: false,
|
||||
isAddress: false,
|
||||
shortedAddress: '',
|
||||
resizeObserver: '',
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isShowShortedAddress() {
|
||||
return Boolean(!this.focused && this.isAddress)
|
||||
},
|
||||
isFilled() {
|
||||
return Boolean(this.modelValue && typeof this.modelValue === 'string' && this.modelValue.length > numbers.ZERO)
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
modelValue() {
|
||||
this.getShortenAddress()
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.isAddress = isAddress(this.modelValue)
|
||||
this.observeWidth()
|
||||
|
||||
window.addEventListener('resize', this.getShortenAddress)
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.getShortenAddress)
|
||||
this.unobserveWidth()
|
||||
},
|
||||
methods: {
|
||||
onFocus() {
|
||||
if (this.readonly) {
|
||||
return
|
||||
}
|
||||
this.focused = true
|
||||
},
|
||||
observeWidth() {
|
||||
this.resizeObserver = new ResizeObserver(() => {
|
||||
this.getShortenAddress()
|
||||
})
|
||||
|
||||
this.resizeObserver.observe(this.$refs.mirror)
|
||||
},
|
||||
unobserveWidth() {
|
||||
this.resizeObserver.unobserve(this.$refs.mirror)
|
||||
},
|
||||
onCutAddress(text) {
|
||||
const dots = '...'
|
||||
if (!text) {
|
||||
return ''
|
||||
}
|
||||
const median = text.length / numbers.TWO
|
||||
const cutPoint = median + numbers.ONE + dots.length
|
||||
|
||||
return `${text.substring(numbers.ZERO, median)}${dots}${text.substring(cutPoint)}`
|
||||
},
|
||||
getShortenAddress() {
|
||||
if (!this.isShowShortedAddress) {
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.modelValue) {
|
||||
this.shortedAddress = ''
|
||||
}
|
||||
|
||||
this.$refs.mirror.textContent = this.modelValue
|
||||
|
||||
if (this.$refs.mirror?.offsetWidth < this.$refs.input?.offsetWidth) {
|
||||
this.shortedAddress = this.$refs.mirror.textContent
|
||||
return
|
||||
}
|
||||
|
||||
while (true) {
|
||||
this.$refs.mirror.textContent = this.onCutAddress(this.$refs.mirror.textContent)
|
||||
|
||||
if (this.$refs.mirror?.offsetWidth < this.$refs.input?.offsetWidth) {
|
||||
break
|
||||
}
|
||||
}
|
||||
this.shortedAddress = this.$refs.mirror.textContent
|
||||
},
|
||||
onBlur() {
|
||||
this.focused = false
|
||||
this.isAddress = isAddress(this.modelValue)
|
||||
this.getShortenAddress()
|
||||
},
|
||||
sendEvent(event) {
|
||||
const { value } = event.target
|
||||
|
||||
switch (this.inputMode) {
|
||||
case 'numeric':
|
||||
this.sendNumericEvent(value)
|
||||
break
|
||||
default:
|
||||
this.$emit('update:modelValue', value)
|
||||
}
|
||||
},
|
||||
sendNumericEvent(value) {
|
||||
if (!value) {
|
||||
this.$emit('update:modelValue', value)
|
||||
return
|
||||
}
|
||||
|
||||
value = value.replaceAll(',', '.').trim()
|
||||
|
||||
const isValid = validation.cryptoNumeric(value)
|
||||
|
||||
if (!isValid) {
|
||||
// https://github.com/vuejs/vue/issues/6689
|
||||
this.$forceUpdate()
|
||||
return
|
||||
}
|
||||
this.$emit('update:modelValue', value)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
@include animation-full-rotate;
|
||||
|
||||
.wrap {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.label {
|
||||
margin: 0 0 0.8rem;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.2;
|
||||
color: $color-white;
|
||||
background-color: $color-transparent;
|
||||
}
|
||||
|
||||
.container {
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr auto;
|
||||
align-items: center;
|
||||
|
||||
border-radius: 0.4rem;
|
||||
background-color: $color-input-bg;
|
||||
border: $size-input-border solid $color-white-02;
|
||||
|
||||
input {
|
||||
color: $color-white;
|
||||
}
|
||||
|
||||
&:hover:not([disabled]) {
|
||||
background-color: $color-input-bg-bold;
|
||||
border: $size-input-border solid $color-white-04;
|
||||
|
||||
.iconTicker {
|
||||
background-color: $color-input-bg-bold;
|
||||
}
|
||||
label {
|
||||
color: $color-white;
|
||||
}
|
||||
}
|
||||
&:focus-within:not([disabled]),
|
||||
&:active:not([disabled]) {
|
||||
background-color: $color-input-bg-light;
|
||||
border: $size-input-border solid $color-white-03;
|
||||
|
||||
.iconTicker {
|
||||
background-color: $color-input-bg-light;
|
||||
}
|
||||
}
|
||||
|
||||
&__readonly {
|
||||
cursor: default;
|
||||
background-color: $color-dark;
|
||||
font-weight: $font-weight-bold;
|
||||
color: $color-white;
|
||||
border-color: $color-dark;
|
||||
pointer-events: none;
|
||||
.iconTicker {
|
||||
background-color: $color-dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mirrorElement,
|
||||
.shortedAddress,
|
||||
.input {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
font-family: $font-family-main;
|
||||
font-weight: $font-weight-regular;
|
||||
text-align: left;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
appearance: none;
|
||||
background-color: transparent;
|
||||
transition: color $duration-animation-02s ease, background-color $duration-animation-02s ease,
|
||||
border-color $duration-animation-02s ease;
|
||||
z-index: $zIndex-2;
|
||||
&::placeholder {
|
||||
font-weight: $font-weight-regular;
|
||||
line-height: 1.33;
|
||||
color: $color-input-placeholder;
|
||||
transition: opacity $duration-animation-02s;
|
||||
user-select: none;
|
||||
}
|
||||
&:hover:not([disabled]) {
|
||||
& + .label {
|
||||
color: $color-white;
|
||||
}
|
||||
}
|
||||
&:hover:not([disabled]),
|
||||
&:focus:not([disabled]) {
|
||||
-moz-appearance: number-input;
|
||||
}
|
||||
&:focus:not([disabled]) {
|
||||
outline: none;
|
||||
}
|
||||
&:disabled {
|
||||
color: $color-white-04;
|
||||
background-color: $color-input-bg-disabled;
|
||||
border-color: $color-white-01;
|
||||
}
|
||||
&[readonly] {
|
||||
cursor: default;
|
||||
background-color: $color-dark;
|
||||
font-weight: $font-weight-bold;
|
||||
color: $color-white;
|
||||
border-color: $color-dark;
|
||||
&:hover:not([disabled]),
|
||||
&:focus:not([disabled]) {
|
||||
background-color: $color-dark;
|
||||
border-color: $color-dark;
|
||||
}
|
||||
}
|
||||
|
||||
&[type='password'] {
|
||||
font-family: caption;
|
||||
letter-spacing: 0.5rem;
|
||||
&::placeholder {
|
||||
letter-spacing: normal;
|
||||
}
|
||||
}
|
||||
&[type='file'] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
-moz-appearance: textfield;
|
||||
|
||||
&::-webkit-outer-spin-button,
|
||||
&::-webkit-inner-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
&[type='search']::-webkit-search-cancel-button,
|
||||
&[type='time']::-webkit-calendar-picker-indicator,
|
||||
&[type='date']::-webkit-calendar-picker-indicator,
|
||||
&[type='week']::-webkit-calendar-picker-indicator,
|
||||
&[type='month']::-webkit-calendar-picker-indicator,
|
||||
&[type='datetime-local']::-webkit-calendar-picker-indicator {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.mirrorElement {
|
||||
visibility: hidden;
|
||||
position: absolute;
|
||||
width: max-content;
|
||||
|
||||
.readonly {
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sizes */
|
||||
/* defaultSize, large, medium */
|
||||
.defaultSize {
|
||||
padding: 0.867rem 1rem;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.33;
|
||||
&::placeholder {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
}
|
||||
.large {
|
||||
padding: 2rem;
|
||||
font-size: 2rem;
|
||||
line-height: 1.25;
|
||||
&::placeholder {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
.medium {
|
||||
padding: 1.2rem 1rem;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.25;
|
||||
&::placeholder {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.shortedAddress {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
cursor: pointer;
|
||||
color: transparent;
|
||||
z-index: $zIndex-3;
|
||||
&__disabled {
|
||||
color: $color-white-04;
|
||||
background-color: $color-input-bg-disabled;
|
||||
border: $size-input-border solid $color-white-01;
|
||||
pointer-events: none;
|
||||
}
|
||||
&__readonly {
|
||||
cursor: default;
|
||||
background-color: $color-dark;
|
||||
font-weight: $font-weight-bold;
|
||||
color: $color-white;
|
||||
border-color: $color-dark;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
.loader {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 1.2rem;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
transform: translate(0, -50%);
|
||||
z-index: $zIndex-3;
|
||||
&__icon {
|
||||
margin: 0;
|
||||
width: 2rem;
|
||||
height: 2rem;
|
||||
display: inline-block;
|
||||
border-style: solid;
|
||||
border-width: 0.2rem;
|
||||
border-color: $color-white $color-transparent $color-white $color-transparent;
|
||||
border-radius: 50%;
|
||||
animation: animation-full-rotate $duration-animation-1200ms linear infinite;
|
||||
}
|
||||
}
|
||||
|
||||
.loading {
|
||||
padding-left: 4rem;
|
||||
}
|
||||
.error {
|
||||
border-color: $color-danger;
|
||||
}
|
||||
|
||||
.errorMessage {
|
||||
position: relative;
|
||||
left: 0;
|
||||
margin-top: 0.3rem;
|
||||
display: inline-block;
|
||||
font-family: $font-family-main;
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 0.9rem;
|
||||
line-height: 1.3;
|
||||
color: $color-danger;
|
||||
}
|
||||
|
||||
.iconTicker {
|
||||
padding: 0.8rem 1.2rem;
|
||||
height: calc(100% - 5px);
|
||||
min-width: 8.5rem;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
flex: 0 0 auto;
|
||||
color: $color-white;
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
width: 20%;
|
||||
right: 0.1rem;
|
||||
background-color: $color-input-bg;
|
||||
&__value {
|
||||
font-size: 1.4rem;
|
||||
line-height: 1;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
|
||||
.buttonBlock {
|
||||
position: absolute;
|
||||
top: 0.65rem;
|
||||
right: 0;
|
||||
height: auto;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.buttonAction {
|
||||
padding: 0.2rem;
|
||||
width: auto;
|
||||
font-weight: $font-weight-bold;
|
||||
text-transform: uppercase;
|
||||
text-decoration: none;
|
||||
color: $color-link-hover;
|
||||
&:disabled {
|
||||
color: $color-link-hover;
|
||||
}
|
||||
&:focus-within:not([disabled]) {
|
||||
background-color: $color-input-bg;
|
||||
}
|
||||
}
|
||||
|
||||
.info {
|
||||
margin: 0;
|
||||
display: inline-flex;
|
||||
justify-content: flex-end;
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 1.2rem;
|
||||
line-height: 1.2;
|
||||
color: $color-input-placeholder;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
user-select: none;
|
||||
&:hover {
|
||||
.info__button {
|
||||
color: $color-default;
|
||||
}
|
||||
}
|
||||
&__text {
|
||||
display: none;
|
||||
color: $color-white;
|
||||
@include media('sm') {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
|
||||
&__icon {
|
||||
width: 1.1rem;
|
||||
height: 1.1rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
|
||||
&__button {
|
||||
color: $color-success;
|
||||
margin-left: 0.8rem;
|
||||
transition: all $duration-animation-02s ease-in;
|
||||
&:first-letter {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.link {
|
||||
color: $color-danger;
|
||||
text-decoration: underline;
|
||||
text-underline-offset: 0.5rem;
|
||||
}
|
||||
</style>
|
30
components/base-link.vue
Normal file
30
components/base-link.vue
Normal file
@ -0,0 +1,30 @@
|
||||
<template>
|
||||
<a :class="$style.link" :href="href" :target="target">
|
||||
<slot />
|
||||
</a>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
href: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
target: {
|
||||
type: String,
|
||||
default: '_blank',
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" module>
|
||||
.link {
|
||||
color: $color-link-text;
|
||||
color: $color-link-hover;
|
||||
&:focus,
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
</style>
|
108
components/base-pagination.vue
Normal file
108
components/base-pagination.vue
Normal file
@ -0,0 +1,108 @@
|
||||
<template>
|
||||
<div :class="$style.pagination">
|
||||
<div v-show="total > 1" :class="$style.pagination__wrap">
|
||||
<span :class="$style.pagination__text">{{ page }} of {{ total }}</span>
|
||||
|
||||
<div :class="$style.pagination__buttons">
|
||||
<base-button size="symbol" :disabled="!isShowToPrev" :class="$style.pagination__btn" @click="onPrev">
|
||||
<base-icon name="arrow" :class="$style.pagination__iconPrev" />
|
||||
</base-button>
|
||||
</div>
|
||||
<div :class="$style.pagination__buttons">
|
||||
<base-button size="symbol" :disabled="!isShowToNext" :class="$style.pagination__btn" @click="onNext">
|
||||
<base-icon name="arrow" />
|
||||
</base-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { numbers } from '@/constants'
|
||||
|
||||
export default {
|
||||
inheritAttrs: false,
|
||||
props: {
|
||||
list: {
|
||||
type: Array,
|
||||
required: true,
|
||||
},
|
||||
limit: {
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
current: {
|
||||
type: Number,
|
||||
required: true,
|
||||
},
|
||||
},
|
||||
emits: ['on-set-list'],
|
||||
data: function () {
|
||||
return {
|
||||
page: numbers.PAGINATION_STEP,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isShowToPrev() {
|
||||
return this.page > numbers.PAGINATION_STEP
|
||||
},
|
||||
isShowToNext() {
|
||||
return this.total > this.page
|
||||
},
|
||||
total() {
|
||||
return Math.ceil(this.list.length / this.limit)
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.page = this.current
|
||||
this.onSetNewList()
|
||||
},
|
||||
beforeUpdate() {
|
||||
this.onSetNewList()
|
||||
},
|
||||
methods: {
|
||||
onPrev() {
|
||||
this.page = this.page - numbers.PAGINATION_STEP
|
||||
this.onSetNewList()
|
||||
},
|
||||
onNext() {
|
||||
this.page = this.page + numbers.PAGINATION_STEP
|
||||
this.onSetNewList()
|
||||
},
|
||||
onSetNewList() {
|
||||
const actualIndex = this.page - numbers.PAGINATION_STEP
|
||||
this.$emit('on-set-list', { from: actualIndex * this.limit, to: this.limit })
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module scoped>
|
||||
.pagination {
|
||||
height: 3.2rem;
|
||||
&__wrap {
|
||||
width: 100%;
|
||||
display: inline-flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
&__text {
|
||||
margin: 0 1rem;
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.4;
|
||||
color: $color-white;
|
||||
}
|
||||
&__buttons {
|
||||
display: inline-flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
&__btn {
|
||||
margin: 0 0.3rem;
|
||||
}
|
||||
&__iconPrev {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
</style>
|
283
components/base-select.vue
Normal file
283
components/base-select.vue
Normal file
@ -0,0 +1,283 @@
|
||||
<template>
|
||||
<div v-on-clickAway="clickOutside" :class="$style.select">
|
||||
<button
|
||||
:disabled="disabled"
|
||||
:tabindex="tabindex"
|
||||
:class="[$style.select__selected, $style[type], $style[size], { [$style.select__selected_open]: open }]"
|
||||
@click="onSelectToggle"
|
||||
>
|
||||
{{ selected }}
|
||||
</button>
|
||||
|
||||
<label v-if="label" :class="$style.select__label">
|
||||
{{ label }}
|
||||
</label>
|
||||
|
||||
<div :class="[$style.select__items, { [$style.select__items_hide]: !open }]">
|
||||
<button
|
||||
v-for="option of options"
|
||||
:key="option"
|
||||
:class="[$style.select__item, { [$style.select__item_selected]: option === selected }]"
|
||||
@click="setSelected(option)"
|
||||
>
|
||||
{{ option }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { directive as onClickAway } from 'vue-clickaway'
|
||||
import { numbers } from '@/constants'
|
||||
|
||||
export default {
|
||||
directives: {
|
||||
onClickAway: onClickAway,
|
||||
},
|
||||
props: {
|
||||
options: {
|
||||
type: Array,
|
||||
required: true,
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
default: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
tabindex: {
|
||||
type: Number,
|
||||
required: false,
|
||||
default: 0,
|
||||
},
|
||||
label: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: 'defaultType',
|
||||
validator(value) {
|
||||
return ['defaultType'].includes(value)
|
||||
},
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: 'defaultSize',
|
||||
validator(value) {
|
||||
return ['defaultSize', 'large', 'medium'].includes(value)
|
||||
},
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selected: this.default || this.options[numbers.ZERO],
|
||||
open: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$emit('input', this.selected)
|
||||
},
|
||||
methods: {
|
||||
setSelected(option) {
|
||||
this.open = false
|
||||
this.selected = option
|
||||
this.$emit('input', option)
|
||||
},
|
||||
clickOutside() {
|
||||
this.open = false
|
||||
},
|
||||
onSelectToggle() {
|
||||
this.open = !this.open
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.select {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
display: block;
|
||||
width: 100%;
|
||||
text-align: left;
|
||||
&__selected {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-family: $font-family-main;
|
||||
font-weight: $font-weight-regular;
|
||||
color: $color-white;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
background-color: $color-transparent;
|
||||
border: none;
|
||||
border-radius: 0.4rem;
|
||||
opacity: $opacity-08;
|
||||
cursor: pointer;
|
||||
transition: opacity $duration-animation-02s ease;
|
||||
z-index: $zIndex-4;
|
||||
overflow: hidden;
|
||||
outline: none;
|
||||
user-select: none;
|
||||
&:disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
&:hover:not([disabled]),
|
||||
&:focus:not([disabled]) {
|
||||
opacity: $opacity-default;
|
||||
-moz-appearance: number-input;
|
||||
}
|
||||
&:focus:not([disabled]) {
|
||||
outline: none;
|
||||
}
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: auto;
|
||||
right: 2rem;
|
||||
bottom: auto;
|
||||
height: 1rem;
|
||||
width: 1rem;
|
||||
display: block;
|
||||
border-width: 0 0 0.1rem 0.1rem;
|
||||
border-style: solid;
|
||||
border-color: $color-white;
|
||||
transform-origin: center center;
|
||||
transform: translateY(-50%) rotate(-45deg);
|
||||
transition: transform $duration-animation-02s ease, border-color $duration-animation-02s ease;
|
||||
}
|
||||
&_open {
|
||||
&::after {
|
||||
transform: rotate(135deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&__label {
|
||||
position: absolute;
|
||||
left: 2rem;
|
||||
top: 50%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: inline-block;
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 1.2rem;
|
||||
line-height: 1.43;
|
||||
color: $color-grey;
|
||||
background-color: $color-transparent;
|
||||
transform-origin: left bottom;
|
||||
transform: translate(0, -145%);
|
||||
transition: transform $duration-animation-02s ease, font-size $duration-animation-02s ease, color $duration-animation-02s ease;
|
||||
touch-action: manipulation;
|
||||
pointer-events: none;
|
||||
z-index: $zIndex-4;
|
||||
}
|
||||
|
||||
&__items {
|
||||
position: absolute;
|
||||
top: calc(100% - 0.3rem);
|
||||
left: 0;
|
||||
right: 0;
|
||||
max-height: 27.6rem;
|
||||
background-color: $color-dark-heavy;
|
||||
border-right: 0.1rem solid $color-white-02;
|
||||
border-left: 0.1rem solid $color-white-02;
|
||||
border-bottom: 0.1rem solid $color-white-02;
|
||||
border-radius: 0 0 0.4rem 0.4rem;
|
||||
box-shadow: 0 1rem 2rem $color-black-004, 0 0.2rem 0.6rem $color-black-004, 0 0 0.1rem $color-black-004;
|
||||
overflow: auto;
|
||||
z-index: $zIndex-3;
|
||||
&_hide {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
&__item {
|
||||
padding: 1.5rem 2rem 1.4rem;
|
||||
width: 100%;
|
||||
font-family: $font-family-main;
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 1.8rem;
|
||||
line-height: 1.2;
|
||||
color: $color-grey;
|
||||
text-align: left;
|
||||
background-color: $color-transparent;
|
||||
border: none;
|
||||
border-bottom: 0.1rem solid $color-dark;
|
||||
box-shadow: 0 0.1rem $color-dark-light;
|
||||
transition: color $duration-animation-02s ease, background-color $duration-animation-02s ease;
|
||||
cursor: pointer;
|
||||
outline: none;
|
||||
user-select: none;
|
||||
&:first-child {
|
||||
padding: 1.8rem 2rem 1.4rem;
|
||||
}
|
||||
&:last-child {
|
||||
border-color: $color-transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
&:hover:not([disabled]) {
|
||||
color: $color-white;
|
||||
border-bottom: 0.1rem solid $color-grey-heavy;
|
||||
background-color: $color-grey-heavy;
|
||||
}
|
||||
&:focus-within:not([disabled]),
|
||||
&:active:not([disabled]) {
|
||||
color: $color-white;
|
||||
}
|
||||
&_selected {
|
||||
color: $color-white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Types */
|
||||
/* defaultType */
|
||||
.defaultType {
|
||||
color: $color-white;
|
||||
background-color: $color-input-bg;
|
||||
border: $size-input-border solid $color-white-01;
|
||||
|
||||
&:hover:not([disabled]) {
|
||||
background-color: $color-input-bg-bold;
|
||||
border: $size-input-border solid $color-white-03;
|
||||
}
|
||||
&:focus-within:not([disabled]),
|
||||
&:active:not([disabled]) {
|
||||
background-color: $color-input-bg-light;
|
||||
border: $size-input-border solid $color-white-03;
|
||||
}
|
||||
}
|
||||
|
||||
/* Sizes */
|
||||
/* defaultSize, large, medium */
|
||||
.defaultSize {
|
||||
padding: 3.1rem 3.6rem 1.2rem 2rem;
|
||||
font-size: 1.8rem;
|
||||
line-height: 1.43;
|
||||
&::placeholder {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
}
|
||||
.large {
|
||||
padding: 2rem;
|
||||
font-size: 1.6rem;
|
||||
line-height: 1.25;
|
||||
&::placeholder {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
}
|
||||
.medium {
|
||||
padding: 1.2rem;
|
||||
font-size: 1.4rem;
|
||||
line-height: 1.25;
|
||||
&::placeholder {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
}
|
||||
</style>
|
123
components/base-snackbar.vue
Normal file
123
components/base-snackbar.vue
Normal file
@ -0,0 +1,123 @@
|
||||
<template>
|
||||
<div v-if="isOpen" :class="$style.wrapper">
|
||||
<div :class="$style.container">
|
||||
<div :class="$style.iconContainer">
|
||||
<base-icon v-if="icon" :class="$style.icon" :name="icon" size="fill" />
|
||||
</div>
|
||||
|
||||
<div :class="$style.content">
|
||||
<div :class="$style.content__text">
|
||||
<slot />
|
||||
</div>
|
||||
|
||||
<span v-if="onClose" :class="$style.content__close" @click="onClose">
|
||||
<base-icon name="error" size="extraMedium" />
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
icon: {
|
||||
type: String,
|
||||
default: null,
|
||||
},
|
||||
onClose: {
|
||||
type: Function,
|
||||
default: null,
|
||||
},
|
||||
isOpen: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.wrapper {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
}
|
||||
|
||||
.container {
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
max-width: 80%;
|
||||
width: max-content;
|
||||
min-height: 4rem;
|
||||
align-items: center;
|
||||
padding: 0 1rem 0 0.5rem;
|
||||
border: 0.1rem solid $color-default;
|
||||
border-radius: 0.6rem;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.iconContainer {
|
||||
position: relative;
|
||||
width: 4rem;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 4rem;
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: -0.1rem;
|
||||
bottom: -0.1rem;
|
||||
left: -50%;
|
||||
right: -0.6rem;
|
||||
transform: skewX(20deg);
|
||||
background-color: rgba($color-default, 0.135);
|
||||
border-right: 0.1rem solid $color-default;
|
||||
border-top-right-radius: 0.2rem;
|
||||
}
|
||||
.icon {
|
||||
position: relative;
|
||||
z-index: $zIndex-1;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
svg {
|
||||
fill: $color-default;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
padding: 0 0 0 1.5rem;
|
||||
align-items: center;
|
||||
@include media('xsm') {
|
||||
padding: 0 0 0 2.5rem;
|
||||
}
|
||||
&__text {
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 0.9rem;
|
||||
line-height: 1.57;
|
||||
text-align: center;
|
||||
@include media('xsm') {
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
@include media('md') {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
}
|
||||
&__close {
|
||||
cursor: pointer;
|
||||
margin-left: 1rem;
|
||||
svg {
|
||||
fill: $color-white;
|
||||
&:hover {
|
||||
fill: $color-grey;
|
||||
transition: 0.2s ease-in;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
142
components/base-stepper.vue
Normal file
142
components/base-stepper.vue
Normal file
@ -0,0 +1,142 @@
|
||||
<template>
|
||||
<section :class="$style.container">
|
||||
<ul :class="$style.list">
|
||||
<li
|
||||
v-for="step in steps"
|
||||
:key="step.stepNumber"
|
||||
:class="[
|
||||
$style.list__item,
|
||||
$style[stepsStatuses[step.name]],
|
||||
{
|
||||
[$style['list__item--current']]: step.isActive,
|
||||
},
|
||||
]"
|
||||
>
|
||||
<span :class="$style.list__marker"><base-icon :name="step.icon" /></span>
|
||||
<span :class="$style.list__itemTitle">{{ $t(step.title) }}</span>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex'
|
||||
|
||||
import { steps, links, numbers } from '@/constants'
|
||||
|
||||
export default {
|
||||
name: 'Stepper',
|
||||
data: function () {
|
||||
return {
|
||||
steps: Object.entries(steps).map(([name, step], index) => {
|
||||
return { ...step, name, stepNumber: index, isActive: false }
|
||||
}),
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('application', ['stepsStatuses', 'isPendingStep']),
|
||||
},
|
||||
created() {
|
||||
this.updateSteps()
|
||||
},
|
||||
methods: {
|
||||
updateSteps() {
|
||||
const [{ path }] = this.$route.matched.slice(-numbers.ONE)
|
||||
|
||||
const route = path === '/' ? links.registration : path
|
||||
|
||||
const currentStepIndex = this.steps.findIndex((step) => step.link === route)
|
||||
|
||||
this.steps = this.steps.map((step) => {
|
||||
if (step.stepNumber === currentStepIndex) {
|
||||
return { ...step, isActive: true }
|
||||
}
|
||||
return { ...step, isActive: false }
|
||||
})
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.container {
|
||||
display: none;
|
||||
|
||||
@include media('sm') {
|
||||
display: block;
|
||||
width: 35rem;
|
||||
height: 100%;
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.list {
|
||||
margin: 0 0 2rem;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
list-style: none;
|
||||
flex-direction: column;
|
||||
height: 45rem;
|
||||
justify-content: space-between;
|
||||
&__item {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
&:not(:last-child) {
|
||||
margin: 0 2.4rem 0 0;
|
||||
}
|
||||
&:last-child {
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: calc(100% + 2rem);
|
||||
left: 2.5rem;
|
||||
width: 0.2rem;
|
||||
height: 50%;
|
||||
background-color: $color-grey-medium;
|
||||
}
|
||||
|
||||
&--current {
|
||||
.list__marker,
|
||||
.list__itemTitle {
|
||||
color: $color-default;
|
||||
}
|
||||
}
|
||||
}
|
||||
&__marker {
|
||||
position: relative;
|
||||
margin: 0 1.2rem 0;
|
||||
width: 2.8rem;
|
||||
height: 2.8rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: $color-transparent;
|
||||
color: $color-grey-medium;
|
||||
}
|
||||
&__itemTitle {
|
||||
margin: 0;
|
||||
font-weight: $font-weight-regular;
|
||||
font-size: 1.2rem;
|
||||
color: $color-grey-medium;
|
||||
text-transform: capitalize;
|
||||
word-break: keep-all;
|
||||
@include media('sm') {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.completed {
|
||||
&::before {
|
||||
background-color: $color-primary;
|
||||
}
|
||||
}
|
||||
</style>
|
9
components/icons/Arbitrum.vue
Normal file
9
components/icons/Arbitrum.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M12.9009 2.23846C12.3439 1.92049 11.6576 1.92049 11.1006 2.23846L3.90122 6.34862C3.34444 6.66649 3.00146 7.25382 3.00146 7.88943V16.1105C3.00146 16.1795 3.0055 16.2478 3.0134 16.3154L3 16.3356C3 16.8315 3.26581 17.2893 3.69646 17.5352L11.1006 21.7615C11.6576 22.0795 12.3439 22.0795 12.9009 21.7615L20.1003 17.6514C20.6571 17.3335 21 16.7461 21 16.1105V7.88943C21 7.25382 20.6571 6.66649 20.1003 6.34862L12.9009 2.23846ZM11.6018 7.75926L5.67867 17.1509L6.42253 17.5757L12.4642 7.75926H15.3815L8.71875 18.887L11.7295 20.6063C11.9152 20.7124 12.144 20.7124 12.3297 20.6063L14.8623 19.16L12.074 14.8467L13.7838 12.0147L17.423 17.6977L18.1527 17.281L14.2788 11.1325L15.7637 8.67113L19.7539 14.7726L19.7539 16.0242V7.8866C19.7539 7.67475 19.6397 7.47899 19.4541 7.37303L12.3297 3.30449C12.144 3.19845 11.9152 3.19845 11.7295 3.30449L4.60503 7.37303C4.41947 7.47899 4.30518 7.67475 4.30518 7.8866V14.3613L7.826 9.03531C8.35231 8.23915 9.24945 7.75926 10.2115 7.75926H11.6018Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Arrow.vue
Normal file
9
components/icons/Arrow.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M9.293 16.707a1 1 0 010-1.414L12.586 12 9.293 8.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
13
components/icons/Auth.vue
Normal file
13
components/icons/Auth.vue
Normal file
@ -0,0 +1,13 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24" fill="#44f1a6">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M12 0.991736C5.9203 0.991736 0.991736 5.9203 0.991736 12C0.991736 18.0797 5.9203 23.0083 12 23.0083C18.0797 23.0083 23.0083 18.0797 23.0083 12C23.0083 5.9203 18.0797 0.991736 12 0.991736ZM0 12C0 5.37258 5.37258 0 12 0C18.6274 0 24 5.37258 24 12C24 18.6274 18.6274 24 12 24C5.37258 24 0 18.6274 0 12Z"
|
||||
/>
|
||||
<path
|
||||
d="M14.5 14.5C12.5959 14.5 10.0658 14.3744 10.0658 16.3579V17.786H19.5V16.3579C19.5 14.3744 16.4835 14.5 14.5 14.5ZM7.20248 10.5661V8.34463H5.77438V10.5661H3.63223V11.9942H5.77438V14.1364H7.20248V11.9942H9.42397V10.5661H7.20248Z"
|
||||
/>
|
||||
<circle cx="14.5" cy="10.5" r="2.5" />
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Avalanche.vue
Normal file
7
components/icons/Avalanche.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M16.5033 13.8177C16.9434 13.0587 17.6536 13.0587 18.0937 13.8177L20.8344 18.6217C21.2745 19.3808 20.9144 20 20.0342 20H14.5128C13.6426 20 13.2825 19.3808 13.7126 18.6217L16.5033 13.8177ZM11.202 4.56929C11.6421 3.81024 12.3423 3.81024 12.7824 4.56929L13.3925 5.66792L14.8329 8.19476C15.183 8.91386 15.183 9.7628 14.8329 10.4819L10.0017 18.8414C9.56161 19.5206 8.83143 19.9501 8.02123 20H4.01025C3.13003 20 2.76994 19.3908 3.21005 18.6217L11.202 4.56929Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
11
components/icons/BSC.vue
Normal file
11
components/icons/BSC.vue
Normal file
@ -0,0 +1,11 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path d="M5.01287 10.2332L7.02574 12.2453L5.01287 14.2574L3 12.2453L5.01287 10.2332Z" />
|
||||
<path d="M12 10.2332L14.0129 12.2453L12 14.2574L9.98713 12.2453L12 10.2332Z" />
|
||||
<path d="M18.9871 10.2332L21 12.2453L18.9871 14.2574L16.9743 12.2453L18.9871 10.2332Z" />
|
||||
<path d="M12.0191 3.2384L17.529 8.74617L15.5161 10.7583L10.0063 5.2505L12.0191 3.2384Z" />
|
||||
<path d="M12.026 3.2384L6.51612 8.74617L8.52899 10.7583L14.0389 5.2505L12.026 3.2384Z" />
|
||||
<path d="M12.0191 21.2384L17.529 15.7306L15.5161 13.7185L10.0063 19.2263L12.0191 21.2384Z" />
|
||||
<path d="M12.026 21.2384L6.51612 15.7306L8.52899 13.7185L14.0389 19.2263L12.026 21.2384Z" />
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Back.vue
Normal file
7
components/icons/Back.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 14 12">
|
||||
<path
|
||||
d="M0.293024 6.87611C-0.0957161 6.49661 -0.0976703 5.88248 0.287192 5.50063L0.295009 5.49291L5.62915 0.285644C6.01988 -0.0958026 6.6543 -0.0949233 7.04506 0.286531C7.43581 0.667979 7.4367 1.28732 7.04597 1.66877L3.41583 5.21255L12.9994 5.21254C13.552 5.21254 14 5.64986 14 6.18932C14 6.72877 13.552 7.16609 12.9994 7.16609L3.4198 7.16609L6.66359 10.3327C7.05428 10.7141 7.05428 11.3325 6.66359 11.7139C6.27286 12.0954 5.63941 12.0954 5.24872 11.7139L0.293024 6.87611Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/CircleCross.vue
Normal file
9
components/icons/CircleCross.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M4.5 12a7.5 7.5 0 1115 0 7.5 7.5 0 01-15 0zM12 5.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zm-.7 6.5L8.64 9.35l.7-.7L12 11.29l2.65-2.64.7.7L12.71 12l2.64 2.65-.7.7L12 12.71l-2.65 2.64-.7-.7L11.29 12z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Copy.vue
Normal file
9
components/icons/Copy.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 12 12">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M4.4.8a.4.4 0 00-.4.4v6.4c0 .22.18.4.4.4h6.4a.4.4 0 00.4-.4V1.2a.4.4 0 00-.4-.4H4.4zm-1.2.4C3.2.54 3.74 0 4.4 0h6.4c.66 0 1.2.54 1.2 1.2v6.4c0 .66-.54 1.2-1.2 1.2h-2v2c0 .66-.54 1.2-1.2 1.2H1.2A1.2 1.2 0 010 10.8V4.4c0-.66.54-1.2 1.2-1.2h2v-2zm0 2.8h-2a.4.4 0 00-.4.4v6.4c0 .22.18.4.4.4h6.4a.4.4 0 00.4-.4v-2H4.4a1.2 1.2 0 01-1.2-1.2V4z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Cross.vue
Normal file
9
components/icons/Cross.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M4.3 4.3a1 1 0 011.4 0l6.3 6.29 6.3-6.3a1 1 0 111.4 1.42L13.42 12l6.3 6.3a1 1 0 01-1.42 1.4L12 13.42l-6.3 6.3a1 1 0 01-1.4-1.42L10.58 12l-6.3-6.3a1 1 0 010-1.4z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Discord.vue
Normal file
7
components/icons/Discord.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
|
||||
<path
|
||||
d="M297.216 243.2c0 15.616-11.52 28.416-26.112 28.416-14.336 0-26.112-12.8-26.112-28.416s11.52-28.416 26.112-28.416c14.592 0 26.112 12.8 26.112 28.416zm-119.552-28.416c-14.592 0-26.112 12.8-26.112 28.416s11.776 28.416 26.112 28.416c14.592 0 26.112-12.8 26.112-28.416.256-15.616-11.52-28.416-26.112-28.416zM448 52.736V512c-64.494-56.994-43.868-38.128-118.784-107.776l13.568 47.36H52.48C23.552 451.584 0 428.032 0 398.848V52.736C0 23.552 23.552 0 52.48 0h343.04C424.448 0 448 23.552 448 52.736zm-72.96 242.688c0-82.432-36.864-149.248-36.864-149.248-36.864-27.648-71.936-26.88-71.936-26.88l-3.584 4.096c43.52 13.312 63.744 32.512 63.744 32.512-60.811-33.329-132.244-33.335-191.232-7.424-9.472 4.352-15.104 7.424-15.104 7.424s21.248-20.224 67.328-33.536l-2.56-3.072s-35.072-.768-71.936 26.88c0 0-36.864 66.816-36.864 149.248 0 0 21.504 37.12 78.08 38.912 0 0 9.472-11.52 17.152-21.248-32.512-9.728-44.8-30.208-44.8-30.208 3.766 2.636 9.976 6.053 10.496 6.4 43.21 24.198 104.588 32.126 159.744 8.96 8.96-3.328 18.944-8.192 29.44-15.104 0 0-12.8 20.992-46.336 30.464 7.68 9.728 16.896 20.736 16.896 20.736 56.576-1.792 78.336-38.912 78.336-38.912z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Discourse.vue
Normal file
7
components/icons/Discourse.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
|
||||
<path
|
||||
d="M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Error.vue
Normal file
7
components/icons/Error.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24" fill="#e45050">
|
||||
<path
|
||||
d="M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2C6.47,2 2,6.47 2,12C2,17.53 6.47,22 12,22C17.53,22 22,17.53 22,12C22,6.47 17.53,2 12,2M14.59,8L12,10.59L9.41,8L8,9.41L10.59,12L8,14.59L9.41,16L12,13.41L14.59,16L16,14.59L13.41,12L16,9.41L14.59,8Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
10
components/icons/Exit.vue
Normal file
10
components/icons/Exit.vue
Normal file
@ -0,0 +1,10 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 19 18">
|
||||
<path
|
||||
d="M4 0C1.79083 0 0 1.79086 0 4V14C0 16.2091 1.79083 18 4 18H10C10.5523 18 11 17.5523 11 17C11 16.4477 10.5523 16 10 16H4C2.89545 16 2 15.1046 2 14V4C2 2.89543 2.89545 2 4 2H10C10.5523 2 11 1.55228 11 1C11 0.447716 10.5523 0 10 0H4Z"
|
||||
/>
|
||||
<path
|
||||
d="M15.1213 5.70708C14.7308 5.31655 14.0976 5.31655 13.7071 5.70708C13.3165 6.0976 13.3165 6.73077 13.7071 7.12129L14.5858 7.99997H6C5.44769 7.99997 5 8.44769 5 8.99997C5 9.55225 5.44769 9.99997 6 9.99997H14.6406L13.707 10.9336C13.3165 11.3241 13.3165 11.9571 13.707 12.3476C14.0975 12.7381 14.7306 12.7381 15.1211 12.3476L17.7148 9.75388C17.9575 9.51125 18.0494 9.17508 17.9905 8.86153C17.9597 8.63882 17.8555 8.43955 17.7031 8.28889L15.1213 5.70708Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Failed.vue
Normal file
7
components/icons/Failed.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 14 14">
|
||||
<path
|
||||
d="M13.7091 10.4475L8.76359 1.48925C7.96901 0.171125 6.03206 0.169374 5.23641 1.48925L0.291126 10.4475C-0.521148 11.7944 0.46227 13.5 2.05431 13.5H11.9455C13.5362 13.5 14.5214 11.7958 13.7091 10.4475ZM7 11.8834C6.54779 11.8834 6.17969 11.5206 6.17969 11.075C6.17969 10.6294 6.54779 10.2667 7 10.2667C7.45221 10.2667 7.82031 10.6294 7.82031 11.075C7.82031 11.5206 7.45221 11.8834 7 11.8834ZM7.82031 8.65008C7.82031 9.09568 7.45221 9.4584 7 9.4584C6.54779 9.4584 6.17969 9.09568 6.17969 8.65008V4.60848C6.17969 4.16288 6.54779 3.80016 7 3.80016C7.45221 3.80016 7.82031 4.16288 7.82031 4.60848V8.65008Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Github.vue
Normal file
7
components/icons/Github.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 23">
|
||||
<path
|
||||
d="M12 0C5.37 0 0 5.28 0 11.792C0 17.003 3.438 21.422 8.205 22.98C8.805 23.091 9.025 22.726 9.025 22.413C9.025 22.133 9.015 21.391 9.01 20.408C5.672 21.119 4.968 18.826 4.968 18.826C4.422 17.465 3.633 17.101 3.633 17.101C2.546 16.37 3.717 16.385 3.717 16.385C4.922 16.467 5.555 17.6 5.555 17.6C6.625 19.403 8.364 18.882 9.05 18.581C9.158 17.818 9.467 17.299 9.81 17.004C7.145 16.709 4.344 15.695 4.344 11.177C4.344 9.89 4.809 8.838 5.579 8.013C5.444 7.715 5.039 6.516 5.684 4.892C5.684 4.892 6.689 4.576 8.984 6.101C9.944 5.839 10.964 5.709 11.984 5.703C13.004 5.709 14.024 5.839 14.984 6.101C17.264 4.576 18.269 4.892 18.269 4.892C18.914 6.516 18.509 7.715 18.389 8.013C19.154 8.838 19.619 9.89 19.619 11.177C19.619 15.707 16.814 16.704 14.144 16.994C14.564 17.348 14.954 18.071 14.954 19.176C14.954 20.754 14.939 22.022 14.939 22.405C14.939 22.714 15.149 23.083 15.764 22.965C20.565 21.417 24 16.995 24 11.792C24 5.28 18.627 0 12 0Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
18
components/icons/Gnosis.vue
Normal file
18
components/icons/Gnosis.vue
Normal file
@ -0,0 +1,18 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M3.7786 5.595L12.0341 13.622L20.1862 5.762L19.8754 5.428C17.8551 3.254 14.9529 2 11.9308 2H11.9132C8.92522 2 6.14482 3.171 4.10704 5.261L3.7786 5.595ZM12.0351 12.301L5.12645 5.595C6.95663 3.873 9.35695 2.936 11.9308 2.936H11.9483C14.5387 2.936 17.0258 3.957 18.857 5.729L12.0351 12.301Z"
|
||||
/>
|
||||
<path
|
||||
d="M19.5996 7.736L20.3598 7L20.5489 7.301C21.498 8.81898 21.9998 10.5595 22 12.334C21.9834 17.669 17.5091 22 12 22H11.9824C6.47327 22 1.98249 17.635 2.00005 12.301C2.00156 10.5245 2.50943 8.78293 3.46771 7.268L3.6402 6.984L4.55529 7.87C4.38281 8.12 4.22685 8.388 4.12356 8.689C3.39862 10.612 4.43445 12.736 6.43815 13.438C7.63004 13.839 8.89114 13.655 9.87543 13.02L12 15.094L14.4354 12.736C14.6606 12.887 14.9188 13.004 15.1956 13.104C17.1476 13.773 19.2887 12.786 19.9797 10.913C20.3938 9.81 20.2038 8.656 19.5996 7.736Z"
|
||||
/>
|
||||
<path
|
||||
d="M5.26485 10.161C5.26442 9.7268 5.40978 9.30424 5.67902 8.957L8.54617 11.716C8.2012 11.983 7.76948 12.134 7.30263 12.134C6.17994 12.134 5.26485 11.248 5.26485 10.161Z"
|
||||
/>
|
||||
<path
|
||||
d="M15.6789 11.548C16.0074 11.765 16.3875 11.882 16.8192 11.882C17.9419 11.882 18.857 10.996 18.857 9.909C18.857 9.508 18.7361 9.123 18.512 8.805L15.6789 11.548Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
10
components/icons/Goerli.vue
Normal file
10
components/icons/Goerli.vue
Normal file
@ -0,0 +1,10 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M11.594 16.3086C11.2162 16.8751 10.6877 17.2999 10.0085 17.5832C9.33447 17.8611 8.54809 18 7.64936 18C6.74043 18 5.93362 17.7782 5.22894 17.3347C4.52426 16.8858 3.97787 16.2498 3.58979 15.4269C3.20681 14.6039 3.01021 13.65 3 12.5651V11.5471C3 9.78891 3.39064 8.42619 4.17191 7.45892C4.9583 6.49165 6.06128 6.00802 7.48085 6.00802C8.64511 6.00802 9.58213 6.32064 10.2919 6.94589C11.0017 7.5658 11.4357 8.44756 11.594 9.59118H10.1234C9.84766 8.04676 8.96936 7.27455 7.48851 7.27455C6.50298 7.27455 5.75489 7.63794 5.24426 8.36473C4.73872 9.08617 4.4834 10.1336 4.4783 11.507V12.4609C4.4783 13.7702 4.76426 14.8123 5.33617 15.5872C5.90809 16.3567 6.6817 16.7415 7.65702 16.7415C8.20851 16.7415 8.69106 16.6774 9.10468 16.5491C9.5183 16.4208 9.86043 16.2044 10.1311 15.8998V13.2786H7.54979V12.0281H11.594V16.3086Z"
|
||||
/>
|
||||
<path
|
||||
d="M13.4553 13.4228C13.4553 12.5731 13.6136 11.809 13.9302 11.1303C14.2519 10.4516 14.6962 9.92786 15.263 9.55912C15.8349 9.19038 16.486 9.00601 17.2162 9.00601C18.3447 9.00601 19.2562 9.41483 19.9506 10.2325C20.6502 11.0501 21 12.1376 21 13.495V13.5992C21 14.4436 20.8443 15.2024 20.5328 15.8758C20.2264 16.5438 19.7847 17.0648 19.2077 17.4389C18.6357 17.813 17.977 18 17.2315 18C16.1081 18 15.1966 17.5912 14.497 16.7735C13.8026 15.9559 13.4553 14.8737 13.4553 13.5271V13.4228ZM14.88 13.5992C14.88 14.5611 15.0919 15.3333 15.5157 15.9158C15.9447 16.4983 16.5166 16.7896 17.2315 16.7896C17.9515 16.7896 18.5234 16.4957 18.9472 15.9078C19.3711 15.3146 19.583 14.4863 19.583 13.4228C19.583 12.4716 19.366 11.7021 18.9319 11.1142C18.503 10.521 17.9311 10.2244 17.2162 10.2244C16.5166 10.2244 15.9523 10.5157 15.5234 11.0982C15.0945 11.6807 14.88 12.5144 14.88 13.5992ZM14.6962 6.8497C14.6962 6.60922 14.7651 6.40882 14.903 6.2485C15.046 6.08283 15.2553 6 15.5311 6C15.8068 6 16.0162 6.08283 16.1591 6.2485C16.3021 6.40882 16.3736 6.60922 16.3736 6.8497C16.3736 7.09018 16.3021 7.29058 16.1591 7.4509C16.0162 7.61122 15.8068 7.69138 15.5311 7.69138C15.2553 7.69138 15.046 7.61122 14.903 7.4509C14.7651 7.29058 14.6962 7.09018 14.6962 6.8497ZM17.9898 6.86573C17.9898 6.62525 18.0587 6.42218 18.1966 6.25651C18.3396 6.09085 18.5489 6.00802 18.8247 6.00802C19.1004 6.00802 19.3098 6.09085 19.4528 6.25651C19.5957 6.42218 19.6672 6.62525 19.6672 6.86573C19.6672 7.10621 19.5957 7.30661 19.4528 7.46693C19.3098 7.62725 19.1004 7.70741 18.8247 7.70741C18.5489 7.70741 18.3396 7.62725 18.1966 7.46693C18.0587 7.30661 17.9898 7.10621 17.9898 6.86573Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Info.vue
Normal file
7
components/icons/Info.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
19
components/icons/Key.vue
Normal file
19
components/icons/Key.vue
Normal file
@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M13.35 5.63c0 .5-.27.93-.67 1.16a1.23 1.23 0 01-.76.19 1.35 1.35 0 01-1.28-1.35 1.35 1.35 0 012.72 0zM12 4.43c.4 0 .74.17.96.46a1.23 1.23 0 00-.92-.42 1.25 1.25 0 00-1.25 1.16c0-.67.55-1.2 1.21-1.2zm1.13 1.3c0 .4-.2.74-.52.94a1.21 1.21 0 01-.67.16 1.1 1.1 0 01-1-1.1c0-.62.5-1.11 1.1-1.11.6 0 1.1.5 1.1 1.1z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M11.86 10.46a3.5 3.5 0 01-3.37-3.48 3.5 3.5 0 013.5-3.49 3.5 3.5 0 013.51 3.49v.05a3.45 3.45 0 01-3.64 3.43zm0-.14H12A3.35 3.35 0 0015.35 7a3.3 3.3 0 10-3.48 3.32z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M12 3a3.99 3.99 0 00-2.4 7.16v1.74h.72v.52l.3.49v.33l.16.22v.18l-.16.37v.52l.62.43v.26l-.62.45v.97l.5.44v.23l-.52.51.36.48v.1l-.31.65v.51l1 1.07v.08l.46.29.34-.25v-.07l.38-.32h.09l.81-.69V11.9h.72v-1.78A3.96 3.96 0 0012 3zM8.3 6.98A3.7 3.7 0 0112 3.29a3.7 3.7 0 013.7 3.69 3.7 3.7 0 01-3.7 3.68 3.7 3.7 0 01-3.7-3.68zm4.64 12.98v-9.1a4 4 0 001.22-.52v1.27h-.72v7.93l-.5.42zm-.24-9.06v9.18l-.32.28v-9.41l.32-.05zm-.47.06v9.52l-.07.07v.05l-.07.04-.15-.1v-.03l-.07-.08v-9.47a4.1 4.1 0 00.36 0zm-.51 0v9.31l-.78-.82v-.33l.31-.65v-.26l-.26-.36.43-.41v-.5l-.5-.43v-.69l.62-.45v-.57l-.62-.43v-.3l.16-.37v-.34l-.16-.22v-.32l-.3-.48v-.74H9.9v-1.22a4 4 0 001.82.57z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
81
components/icons/Loader.vue
Normal file
81
components/icons/Loader.vue
Normal file
@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<svg fill="none" viewBox="0 0 64 64">
|
||||
<g fill="#fff" clip-path="url(#clip0_loader)">
|
||||
<path
|
||||
d="M32.5 2h-1v2h1V2zM32.5 5h-1v2h1V5zM30.48 2.03l-1 .07.14 2 1-.07-.14-2zM30.62 5.03l-1 .07.14 2 1-.08-.14-2zM28.32 2.22l-.99.14.28 1.98.99-.14-.28-1.98zM28.74 5.19l-1 .14.29 1.98.99-.14-.28-1.98zM26.25 2.54l-.98.21.42 1.96.97-.2-.41-1.97zM26.88 5.5l-.98.2.41 1.96.98-.21-.41-1.96zM24.21 3.02l-.96.28.55 1.92.96-.28-.55-1.92zM25.04 5.91l-.97.28.56 1.92.96-.27-.55-1.93zM22.21 3.64l-.94.35.69 1.88.94-.35-.69-1.88zM23.24 6.45l-.94.35.69 1.88.94-.35-.69-1.88zM20.25 4.4l-.9.4.8 1.82.92-.4-.82-1.83zM21.47 7.14l-.91.4.81 1.83.92-.4-.82-1.83zM18.36 5.27l-.88.47.94 1.77.88-.47-.94-1.77zM19.76 7.93l-.88.47.94 1.76.88-.47-.94-1.76zM16.52 6.3l-.84.53 1.06 1.7.84-.54-1.06-1.7zM18.12 8.84l-.85.53 1.06 1.7.85-.54-1.06-1.7zM14.77 7.44l-.8.59 1.17 1.61.8-.58-1.17-1.62zM16.54 9.86l-.8.6 1.17 1.61.8-.59-1.17-1.62zM13.1 8.7l-.77.64 1.3 1.53.76-.64-1.29-1.54zM15.03 11l-.77.63 1.29 1.54.76-.65L15.03 11zM12.19 12.21l-1.39-1.44.72-.7 1.39 1.44-.72.7zM14.27 14.36l-1.39-1.43.72-.7 1.39 1.44-.72.69zM10.86 13.64L9.37 12.3l.67-.75 1.49 1.34-.67.75zM12.27 13.56l-.67.75 1.48 1.33.67-.74-1.48-1.34zM8.67 13.14l-.61.79 1.57 1.23.62-.79-1.58-1.23zM11.1 15.02l-.61.79 1.58 1.24.62-.8-1.58-1.23zM7.4 14.8l-.55.83 1.65 1.12.56-.83L7.4 14.8zM9.9 16.48l-.56.83L11 18.43l.56-.83-1.66-1.12zM6.27 16.56l-.5.86 1.74 1 .5-.86-1.74-1zM8.87 18.07l-.5.87 1.73 1 .5-.87-1.73-1zM5.26 18.4l-.44.9 1.8.88.43-.9-1.8-.88zM7.95 19.71l-.44.9 1.8.88.44-.9-1.8-.88zM4.38 20.3l-.38.93 1.86.75.37-.93-1.85-.75zM7.15 21.42l-.37.93 1.86.75.37-.93-1.86-.75zM3.62 22.25l-.3.95 1.9.62.3-.95-1.9-.62zM6.48 23.18l-.31.95 1.9.62.3-.95-1.9-.62zM3.01 24.26l-.24.97 1.94.48.24-.97-1.94-.48zM5.93 24.98l-.25.97 1.94.49.25-.97-1.94-.49zM2.54 26.3l-.17.99 1.97.34.17-.98-1.97-.35zM5.5 26.8l-.17 1 1.97.34.18-.98-1.97-.35zM2.22 28.36l-.1 1 1.98.2.1-.99-1.98-.2zM5.2 28.68l-.1 1 1.98.2.1-.99-1.98-.2zM2.03 30.45l-.03 1 2 .07.03-1-2-.07zM5.03 30.55l-.03 1 2 .07.03-1-2-.07zM4 32.48l-2 .07.03 1 2-.07-.03-1zM7 32.37l-2 .07.04 1 2-.07-.04-1zM4.1 34.43l-1.99.21.1 1 2-.21-.1-1zM7.08 34.12l-1.99.2.1 1 2-.2-.1-1zM4.33 36.37l-1.97.35.18.98 1.97-.34-.18-.99zM7.3 35.85l-1.97.34.17.99 1.97-.35-.17-.98zM4.71 38.3l-1.94.48.24.97 1.94-.48-.24-.97zM7.62 37.56l-1.94.49.24.97 1.94-.48-.24-.98zM5.2 40.17l-1.9.62.31.95 1.9-.61-.3-.96zM8.06 39.25l-1.9.62.3.95 1.91-.62-.3-.95zM5.85 42.02L4 42.77l.37.93 1.85-.75-.37-.93zM8.63 40.9l-1.86.75.38.93L9 41.83l-.37-.93zM6.62 43.83l-1.8.88.44.9 1.8-.89-.44-.9zM9.3 42.52l-1.79.88.44.9 1.8-.88-.44-.9zM7.5 45.56l-1.73 1 .5.87 1.74-1-.5-.87zM10.1 44.07l-1.73 1 .5.86 1.73-1-.5-.86zM8.52 47.25l-1.66 1.11.56.83 1.65-1.11-.55-.83zM11 45.57l-1.66 1.12.56.82 1.65-1.11-.55-.83zM9.86 48.9l-1.58 1.24.62.8 1.58-1.25-.62-.79zM12.22 47.05l-1.58 1.24.62.79 1.58-1.24-.62-.8zM10.04 52.45l-.67-.75 1.49-1.34.67.75-1.49 1.34zM13.1 48.36l-1.49 1.33.67.75 1.49-1.34-.67-.74zM11.52 53.93l-.72-.7 1.39-1.44.72.7-1.39 1.44zM13.6 51.77l-.72-.7 1.39-1.43.72.69-1.39 1.44zM13.62 53.13l-1.29 1.53.77.64 1.28-1.53-.76-.64zM15.55 50.83l-1.29 1.53.77.65 1.28-1.54-.76-.64zM15.13 54.36l-1.17 1.62.8.59 1.18-1.62-.8-.59zM16.9 51.93l-1.18 1.62.81.58 1.18-1.61-.81-.6zM16.73 55.48l-1.05 1.7.84.53 1.06-1.7-.85-.53zM18.33 52.94l-1.06 1.7.85.52 1.06-1.7-.85-.52zM18.41 56.5l-.94 1.77.88.47.94-1.77-.88-.47zM19.82 53.85l-.94 1.77.88.47.94-1.77-.88-.47zM20.16 57.37l-.82 1.83.92.4.81-1.83-.91-.4zM21.37 54.64l-.8 1.83.9.4.82-1.82-.92-.41zM21.95 58.13l-.68 1.88.94.35.68-1.88-.94-.35zM22.98 55.31l-.68 1.88.94.34.68-1.88-.94-.34zM23.8 58.77l-.55 1.93.96.27.55-1.92-.96-.27zM24.62 55.9l-.55 1.91.96.28.55-1.92-.96-.28zM25.7 59.3l-.42 1.95.98.2.42-1.95-.98-.2zM26.3 56.35l-.41 1.96.98.2.42-1.95-.98-.2zM27.6 59.66l-.27 1.98.99.14.27-1.98-.99-.14zM28.03 56.7l-.28 1.97 1 .14.27-1.98-.99-.14zM29.69 59.8l-.14 2 1 .07.14-2-1-.07zM29.9 56.81l-.15 2 1 .07.14-2-1-.07zM32.5 60h-1v2h1v-2zM32.5 57h-1v2h1v-2zM34.45 59.9l-1 .07.14 2 1-.08-.14-2zM34.24 56.9l-1 .08.14 2 1-.08-.14-2zM36.4 59.66l-1 .14.28 1.98 1-.14-.28-1.98zM35.98 56.7l-1 .13.28 1.98 1-.14-.28-1.98zM38.31 59.3l-.98.2.42 1.96.98-.21-.42-1.96zM37.7 56.35l-.99.2.42 1.96.98-.2-.42-1.96zM40.2 58.79l-.97.27.55 1.93.97-.28-.55-1.92zM39.37 55.9l-.96.27.55 1.92.96-.27-.55-1.92zM42.05 58.14l-.94.34.68 1.88.94-.34-.68-1.88zM41.02 55.32l-.94.34.68 1.88.94-.34-.68-1.88zM43.84 57.38l-.9.4.8 1.83.92-.4-.82-1.83zM42.62 54.63l-.9.41.8 1.83.92-.4-.82-1.84zM45.58 56.5l-.88.47.94 1.76.88-.47-.94-1.76zM44.18 53.84l-.88.47.94 1.76.88-.47-.94-1.76zM47.26 55.48l-.85.53 1.06 1.7.85-.53-1.06-1.7zM45.67 52.94l-.84.53 1.06 1.7.84-.53-1.06-1.7zM47.1 51.93l-.81.59 1.17 1.61.81-.58-1.17-1.62z"
|
||||
opacity=".4"
|
||||
/>
|
||||
<path d="M32 1a31 31 0 110 62 31 31 0 010-62zm0-1a32 32 0 100 64 32 32 0 000-64z" opacity=".4" />
|
||||
<path
|
||||
d="M32 9a23 23 0 110 46 23 23 0 010-46zm0-1a24 24 0 100 48 24 24 0 000-48zM48.86 54.36l-.8.59 1.17 1.62.8-.6-1.17-1.61zM50.38 53.13l-.76.64 1.28 1.53.77-.64-1.29-1.53z"
|
||||
opacity=".4"
|
||||
/>
|
||||
<path
|
||||
d="M48.46 50.83l-.77.64L48.98 53l.76-.64-1.28-1.53zM52.48 53.93l-1.39-1.44.72-.7 1.39 1.44-.72.7zM50.4 51.77l-1.39-1.44.72-.69 1.39 1.43-.72.7zM53.96 52.45l-1.49-1.34.67-.75 1.49 1.34-.67.75zM50.91 48.35l-.67.75 1.49 1.34.67-.75-1.49-1.34zM54.37 48.84l-.61.79 1.57 1.23.62-.79-1.58-1.23zM52.33 47.07l-.62.8 1.58 1.23.62-.79-1.58-1.24zM55.5 47.26l-.56.82 1.66 1.12.56-.83-1.66-1.11zM53.01 45.56l-.56.83 1.66 1.12.56-.83L53 45.56zM56.5 45.56l-.5.86 1.73 1 .5-.86-1.73-1zM53.9 44.06l-.5.87 1.73 1 .5-.87-1.73-1zM57.37 43.82l-.44.9 1.8.88.44-.9-1.8-.88zM54.69 42.5l-.44.9 1.8.88.43-.9-1.8-.88zM58.14 42.01l-.37.93 1.85.75.38-.93-1.86-.75zM55.36 40.9l-.37.92 1.85.75.38-.93-1.86-.75zM58.78 40.18l-.3.95 1.9.62.3-.95-1.9-.62zM55.94 39.24l-.3.96 1.9.61.3-.95-1.9-.62zM59.3 38.29l-.24.97 1.94.48.24-.97-1.94-.48zM56.38 37.56l-.24.97 1.94.49.25-.97-1.95-.49zM59.67 36.37l-.18.98 1.97.35.18-.98-1.97-.35zM56.71 35.84l-.17.98 1.97.35.17-.98-1.97-.35zM59.9 34.43l-.1 1 1.98.2.1-.99-1.98-.2zM56.92 34.11l-.1 1 1.98.2.1-.99-1.98-.2zM60 32.48l-.03 1 2 .07.03-1-2-.07zM57 32.38l-.03 1 2 .06.03-1-2-.06zM61.96 30.46l-2 .07.04 1 2-.07-.04-1zM58.96 30.56l-2 .07.03 1 2-.07-.03-1zM61.78 28.38l-1.99.2.1 1 2-.2-.1-1zM58.8 28.68l-1.99.21.1 1 2-.21-.1-1zM61.45 26.3l-1.97.34.18.99 1.97-.35-.18-.98zM58.5 26.83l-1.96.35.17.98 1.97-.34-.17-.99zM60.99 24.25l-1.94.48.24.97 1.94-.48-.24-.97zM58.08 24.98l-1.94.49.24.97 1.94-.49-.24-.97zM60.38 22.26l-1.9.62.3.95 1.9-.62-.3-.95zM57.52 23.2l-1.9.61.31.95 1.9-.61-.3-.96zM59.63 20.3l-1.85.75.37.93 1.86-.75-.38-.93zM56.85 21.42l-1.85.75.37.93 1.86-.75-.38-.93zM58.75 18.4l-1.8.88.44.9 1.8-.88-.44-.9zM56.05 19.71l-1.8.88.44.9 1.8-.88-.44-.9zM57.73 16.57l-1.73 1 .5.86 1.73-1-.5-.86zM55.14 18.07l-1.73 1 .5.87 1.73-1-.5-.87zM56.66 14.78L55 15.9l.56.83 1.66-1.12-.56-.83zM54.16 16.46l-1.66 1.12.56.83 1.66-1.12-.56-.83zM55.5 12.94l-1.58 1.24.62.79 1.58-1.24-.62-.8zM53.15 14.8l-1.58 1.23.62.8 1.58-1.25-.62-.79zM53.14 13.64l-.67-.75 1.49-1.34.67.75-1.49 1.34zM51.73 13.56l-1.49 1.34.67.74 1.49-1.34-.67-.74zM51.81 12.21l-.72-.7 1.39-1.44.72.7-1.39 1.44zM49.73 14.36l-.72-.69 1.39-1.44.72.7-1.39 1.43zM50.9 8.7l-1.28 1.53.77.64 1.28-1.53-.76-.64zM48.97 11l-1.29 1.53.77.65 1.29-1.54-.77-.64zM49.24 7.44l-1.18 1.61.8.6 1.18-1.62-.8-.6zM47.47 9.87l-1.18 1.62.81.58 1.18-1.61-.81-.6zM47.48 6.3l-1.06 1.69.85.53 1.06-1.7-.85-.53zM45.88 8.83l-1.06 1.7.85.53 1.06-1.7-.85-.53zM45.64 5.28l-.94 1.77.88.47.94-1.77-.88-.47zM44.24 7.93l-.94 1.76.88.47.94-1.76-.88-.47zM43.75 4.4l-.81 1.82.9.4.82-1.82-.91-.4zM42.53 7.12l-.81 1.83.91.4.81-1.82-.91-.4zM41.79 3.64l-.69 1.88.94.34.69-1.88-.94-.34zM40.76 6.46l-.68 1.88.94.34.68-1.88-.94-.34zM39.78 3.02l-.55 1.93.96.27.55-1.92-.96-.28zM38.96 5.9l-.55 1.93.96.28.56-1.93-.97-.27zM37.75 2.56l-.42 1.95.98.21.41-1.96-.97-.2zM37.13 5.49l-.42 1.95.98.21.42-1.96-.98-.2zM35.68 2.22L35.4 4.2l1 .14.27-1.98-1-.14zM35.26 5.2l-.28 1.97 1 .14.27-1.98-.99-.14zM33.59 2.04l-.14 2 1 .07.14-2-1-.07zM33.39 4.95l-.14 2 1 .07.14-2-1-.07z"
|
||||
opacity=".4"
|
||||
/>
|
||||
</g>
|
||||
<g clip-path="url(#clip1_loader)" class="loader__circle">
|
||||
<path fill="#fff" d="M54.63 9.37A31.9 31.9 0 0032 0v9a23 23 0 0111.5 42.91l4.5 7.8a32 32 0 006.63-50.34z" opacity=".4" />
|
||||
</g>
|
||||
<g clip-path="url(#clip2_loader)" class="loader__circle_mini">
|
||||
<path
|
||||
fill="#fff"
|
||||
fill-rule="evenodd"
|
||||
d="M32 19.5a12.5 12.5 0 100 25 12.5 12.5 0 000-25zM18.5 32a13.5 13.5 0 1127 0 13.5 13.5 0 01-27 0z"
|
||||
clip-rule="evenodd"
|
||||
opacity=".4"
|
||||
/>
|
||||
<path
|
||||
fill="#fff"
|
||||
fill-rule="evenodd"
|
||||
d="M32 20c-2.75 0-5.34 1.01-7.39 2.6A1 1 0 1123.4 21c2.35-1.81 5.36-3 8.61-3a1 1 0 110 2z"
|
||||
clip-rule="evenodd"
|
||||
opacity=".4"
|
||||
/>
|
||||
<path
|
||||
fill="#fff"
|
||||
fill-rule="evenodd"
|
||||
d="M26.87 20a1 1 0 01-.37 1.37c-.72.4-1.34.76-1.86 1.2a1 1 0 01-1.28-1.54c.67-.55 1.43-1 2.1-1.38l.04-.02a1 1 0 011.37.37z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
<path
|
||||
fill="#fff"
|
||||
fill-rule="evenodd"
|
||||
d="M20.21 37.63a1 1 0 011.36.38 11.4 11.4 0 005.89 5.16 1 1 0 01-.72 1.86A13.4 13.4 0 0119.83 39a1 1 0 01.38-1.36z"
|
||||
clip-rule="evenodd"
|
||||
opacity=".4"
|
||||
/>
|
||||
<path
|
||||
fill="#fff"
|
||||
fill-rule="evenodd"
|
||||
d="M24.13 42.5a1 1 0 011.37-.37c.7.4 1.36.78 2 1.05a1 1 0 11-.8 1.84c-.75-.32-1.49-.75-2.17-1.14l-.03-.01a1 1 0 01-.37-1.37z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
<path
|
||||
fill="#fff"
|
||||
fill-rule="evenodd"
|
||||
d="M44.76 29.21a1 1 0 011.13.85c.43 3.01-.1 6.14-1.72 8.94a1 1 0 01-1.74-1 11.87 11.87 0 001.48-7.66 1 1 0 01.85-1.13z"
|
||||
clip-rule="evenodd"
|
||||
opacity=".4"
|
||||
/>
|
||||
<path
|
||||
fill="#fff"
|
||||
fill-rule="evenodd"
|
||||
d="M44.78 29.2a1 1 0 011.11.88c.11.86.11 1.71.11 2.5v.02a1 1 0 11-2 0c0-.81 0-1.55-.1-2.28a1 1 0 01.88-1.11z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_loader">
|
||||
<path fill="#fff" d="M0 0h64v64H0z" />
|
||||
</clipPath>
|
||||
<clipPath id="clip1_loader">
|
||||
<path fill="#fff" d="M0 0h64v64H0z" />
|
||||
</clipPath>
|
||||
<clipPath id="clip2_loader">
|
||||
<path fill="#fff" d="M0 0h64v64H0z" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
</template>
|
16
components/icons/Mainnet.vue
Normal file
16
components/icons/Mainnet.vue
Normal file
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<g clip-path="url(#clip0_3811_900)">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M12.5319 3.00085L12.5324 3V3.0017L17.8634 11.6925L12.5324 14.7885V14.7891L12.5319 14.7888L12.5313 14.7891L12.5298 14.7876L7.2002 11.6925L12.5304 3.00332L12.5313 3L12.5319 3.00085ZM12.5306 20.0642L7.2002 12.6843L12.532 15.7791L17.8668 12.6844L12.5324 20.0655V20.0666L12.532 20.0661L12.5315 20.0667L12.5306 20.0642Z"
|
||||
/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_3811_900">
|
||||
<rect width="17.0667" height="17.0667" transform="translate(4 3)" />
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Medium.vue
Normal file
7
components/icons/Medium.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||
<path
|
||||
d="M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Metamask.vue
Normal file
9
components/icons/Metamask.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M5.75 3.02A.16.16 0 005.63 3a.15.15 0 00-.1.07L3.77 5.95a.14.14 0 00-.02.08l.2 3.17-.33.28a.14.14 0 00-.05.11c0 .05.02.09.05.11l.48.38-.3.29a.14.14 0 000 .2l.49.47-.21.2a.14.14 0 00-.01.2l.81.96-1.87 4.25a.14.14 0 000 .1l1.11 4.14c.01.04.04.07.08.1.03.01.08.02.12 0l5.66-1.72 1.33.55h.02l4 .93h.06l2.31-.35c.05 0 .1-.04.12-.08l.61-1.28.03-.01a.15.15 0 00.06-.07l.27.1c.04 0 .09 0 .12-.02a.15.15 0 00.08-.09l1.1-3.49v-.07l-.55-3.24.64-.77a.14.14 0 00-.02-.21l-.18-.14.36-.32a.14.14 0 00.05-.12.15.15 0 00-.06-.1l-.25-.2.35-.27a.15.15 0 00.06-.11.15.15 0 00-.06-.12l-.28-.2.84-2.36.01-.06-.15-2.4a.15.15 0 00-.06-.1.16.16 0 00-.13-.03l-6.1 1.37-4.52-.34-4.3-2.65zm12.5 15.72v.05a.15.15 0 00-.08.08l-1.99.26h-.01l-.36.12.22-1.36.3-.25 1.6-.18.26.17.24.15.13.17-.19.68-.04.01a.15.15 0 00-.07.1zm1.5-3.2l-1 3.18-.23-.07.2-.7a.07.07 0 00-.01-.06l-.16-.2-.02-.02-.23-.15-.32-.7.85-1.1.91-.18zM5.15 12.27l-.76-.92.22-.21a.14.14 0 000-.2l-.49-.47.3-.3a.14.14 0 000-.22l-.47-.36.25-.22a.14.14 0 00.05-.12l-.2-3.2 1.66-2.7.22.14 6.12 5.46L9 11.05l-3.84 1.22zm-1.8 4.36l1.84-4.2.01-.02 3.76-1.2.17 1.8a.07.07 0 000 .04l2.11 3.23-2.56.14-5.33.2zM9.85 19l-5.47 1.66-1.05-3.88 5.31-.2L9.84 19zm.52.1l5.5-1.16-.23 1.39-.56.56-3.87-.6-.81-.17-.03-.01zm7.72-.07l-.52 1.1-2.2.33-3.95-.92-.3-.12.06.01 3.91.62c.03 0 .05 0 .07-.03l.6-.6.45-.15 1.88-.24zM6.67 3.95L9.9 5.94l.08.02H10l1.75 2.5-5.08-4.51zm13.88 1.02l.14 2.19-.87 2.43c-.02.06 0 .13.05.17l.22.15-.35.27a.15.15 0 00-.06.12c0 .04.02.09.06.11l.26.2-.36.33a.14.14 0 00-.05.1c0 .05.03.09.06.12l.2.15-.58.69-2.92-.95-1.63-2.02 5.83-4.06zm-5.9 1.33l5.53-1.25-5.5 3.82-.03-2.57zm-4.45-.32l4.29.33.04 2.7v.02l.91 4.04.38 1.29.01.02.03.04.34.5c.02.03.07.05.1.03l.97-.5.1 1.4v.03l.45.97.24.52-.07-.04a.08.08 0 00-.05-.02l-1.6.18-2.07-2.95-.6-1.45-1.41-4.16a.08.08 0 00-.01-.01L10.2 5.98zm9.02 6.16l.56 3.24-1.01.2-1.22.18.9-2.98c0-.03 0-.06-.03-.08l-1.75-1.39 2.55.83zm-7.08-3.06l-3.02 2.07.17 1.79 4.2.1-1.35-3.96zm-.93 5.5l-1.78-1.5 4.08.1-.12 1.75-.7-1.02a.08.08 0 00-.1-.02l-1.38.68zm1.38-.53l.69 1-1.86-.42 1.17-.58zm-3.04-.66l1.57 1.3.15 1.34-1.72-2.64zm4.1.05l-.12 1.69 2.37 2-1.77-2.51v-.02l-.48-1.16zm1.1-4.12l1.5 1.84v.01l1.93 1.53-2.6.28-.82-3.66zm.87 3.8l2.6-.27-.9 1.38-1.02-.5a.08.08 0 00-.07 0 .07.07 0 00-.04.05l-.12.68-.08-.12-.02-.03-.35-1.19zm.7.79l-.12.74.1.13.88-.46-.85-.41zm1.24 2l.35.76.7-.91-1.05.15zm-4.15-.69l-2.12-.46.17 1.53 4.48 1.48.25-.2-2.78-2.35zm-4.6 1.35l2.45-.14-1.27 2.51-1.18-2.37zm2.62-.13L10.13 19l5.54-1.18-4.24-1.4zm6.06-1.02l-.07-1.08.73-1.1-.66 2.18z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Missing.vue
Normal file
7
components/icons/Missing.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 512 512">
|
||||
<path
|
||||
d="M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256s256-114.6 256-256S397.4 0 256 0zM256 400c-18 0-32-14-32-32s13.1-32 32-32c17.1 0 32 14 32 32S273.1 400 256 400zM325.1 258L280 286V288c0 13-11 24-24 24S232 301 232 288V272c0-8 4-16 12-21l57-34C308 213 312 206 312 198C312 186 301.1 176 289.1 176h-51.1C225.1 176 216 186 216 198c0 13-11 24-24 24s-24-11-24-24C168 159 199 128 237.1 128h51.1C329 128 360 159 360 198C360 222 347 245 325.1 258z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
83
components/icons/NotFound.vue
Normal file
83
components/icons/NotFound.vue
Normal file
@ -0,0 +1,83 @@
|
||||
<template>
|
||||
<svg class="errorIcon" viewBox="0 0 402 196" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M19 89L0.5 114V136H47.5L43.5 110.5L33.5 110L40.5 100.5C40.1667 99 38.3 95.2 33.5 92C28.7 88.8 21.8333 88.6667 19 89Z"
|
||||
fill="#182922"
|
||||
/>
|
||||
<path d="M66 36.5L59.5 34.5L73 17H99.5V75L82 59.5L66 36.5Z" fill="#182922" />
|
||||
<path
|
||||
d="M76.5 168.5L69.5 173.5V181H99.5V136H126.5V110.5H99.5V97L91.5 103L84.5 117L83.5 141.5L81.5 157L76.5 168.5Z"
|
||||
fill="#182922"
|
||||
/>
|
||||
<path d="M320 78.5L309 70L275.5 115V136H320L330 111L308.5 110L326 87L320 78.5Z" fill="#182922" />
|
||||
<path d="M327.5 55.5L320.5 54L348.5 17H374.5V42.5H362L354.5 45L345 51.5L336.5 55.5H327.5Z" fill="#182922" />
|
||||
<path d="M362.5 150L344 158.5L345 181.5H374.5V148L362.5 150Z" fill="#182922" />
|
||||
<path
|
||||
d="M125.827 135.769H126.327V135.269V111.269V110.769H125.827H98.7913V17.5771V17.0771H98.2913H73.739H73.4888L73.3388 17.2775L0.59975 114.431L0.5 114.565V114.731V135.269V135.769H1H70.0266V180.269V180.769H70.5266H98.2913H98.7913V180.269V135.769H125.827ZM401 135.769H401.5V135.269V111.269V110.769H401H373.965V17.5771V17.0771H373.465H348.912H348.662L348.512 17.2775L275.773 114.431L275.673 114.565V114.731V135.269V135.769H276.173H345.2V180.269V180.769H345.7H373.465H373.965V180.269V135.769H401ZM70.0266 110.769H31.624L70.0266 61.4936V110.769ZM345.2 110.769H306.797L345.2 61.4936V110.769Z"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M60.481 34C64.0903 35.3589 67.2333 37.4449 69.5 40.5C78.612 52.7815 85.2128 68.202 99.5 74.8228M99.5 96.1312C92.2684 100.818 84.2893 109.613 84 123.5C83.5651 144.376 83.8868 167.521 69.5 173.194M48 136.282C44.2352 128.755 44.4352 119.12 43.4817 110.5M40.9125 99.5C39.2955 95.8589 36.73 92.88 32.5 91.0001C28.0552 89.0246 23.4277 88.6047 19 89.0797M309 69.8078C315.516 74.2604 322.053 79.9477 326.309 86.5M330.15 110C327.96 118.791 322.802 127.295 319.5 136.409M320.5 53.5727C325.17 55.5529 331.611 56.7962 338.5 54.5C349.932 50.6892 353.835 39.7068 374.5 42.2019M374.5 148.114C361.589 148.856 351.877 153.158 344.862 158.5"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<path d="M214.602 71.6778L199.102 192.322L230.693 110.442L251.904 54.124L227.767 67.2893L214.602 71.6778Z" fill="#1D3F30" />
|
||||
<path d="M157.552 61.4379L137.073 50.4668L196.317 187.24L157.552 61.4379Z" fill="#182922" />
|
||||
<path d="M149.507 57.781L144.387 43.8843L167.061 57.781H149.507Z" fill="#276C4E" />
|
||||
<path
|
||||
d="M135.61 47.5419L198.511 193.823M198.511 193.823L253.367 51.199M198.511 193.823L214.602 71.6784M198.511 193.823L158.284 62.9015M141.461 37.3022C141.461 38.4725 146.825 50.7114 149.507 57.0502"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M222.666 36.5972C222.64 43.8351 211.835 49.6982 198.511 49.6982L198.462 49.6981C185.144 49.6836 174.356 43.8117 174.356 36.5703L174.356 36.5455C174.381 29.3066 185.186 23.4425 198.511 23.4425L198.56 23.4426C211.878 23.457 222.666 29.329 222.666 36.5703L222.666 36.5972ZM235.787 56.4237C233.446 63.0515 225.269 68.5516 214.275 71.283L214.187 71.9896C238.975 68.263 257.174 55.916 257.174 41.2589C257.174 31.1572 248.529 22.1528 235.041 16.3114C252.562 18.1395 265.801 26.5147 265.801 36.5703C265.801 18.9625 239.536 4.68851 207.138 4.68851C188.551 4.68851 171.983 9.3866 161.235 16.717C164.598 7.19459 180.009 0 198.511 0C166.113 0 139.849 14.274 139.849 31.8818C139.849 41.9835 148.493 50.9879 161.981 56.8293C149.262 55.5022 138.8 50.725 134.02 44.3594L134 44.4577L135.865 49.0225C144.789 60.4428 165.615 68.4522 189.884 68.4522C208.471 68.4522 225.039 63.7541 235.787 56.4237Z"
|
||||
fill="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M222.496 38.9175C222.496 42.0722 219.962 45.0588 215.568 47.2865C211.203 49.5001 205.137 50.8838 198.409 50.8838C191.682 50.8838 185.616 49.5001 181.25 47.2865C176.857 45.0588 174.323 42.0722 174.323 38.9175C174.323 35.7627 176.857 32.7761 181.25 30.5484C185.616 28.3349 191.682 26.9512 198.409 26.9512C205.137 26.9512 211.203 28.3349 215.568 30.5484C219.962 32.7761 222.496 35.7627 222.496 38.9175Z"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M219.725 42.7263C219.725 45.6026 217.49 48.328 213.604 50.3638C209.741 52.3872 204.369 53.6537 198.409 53.6537C192.449 53.6537 187.078 52.3872 183.215 50.3638C179.328 48.328 177.093 45.6026 177.093 42.7263C177.093 39.8499 179.328 37.1246 183.215 35.0888C187.078 33.0654 192.449 31.7988 198.409 31.7988C204.369 31.7988 209.741 33.0654 213.604 35.0888C217.49 37.1246 219.725 39.8499 219.725 42.7263Z"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M167.61 94.5294L167.267 93.4227C173.991 95.0115 181.491 95.9004 189.406 95.9004C197.416 95.9004 205.002 94.9899 211.788 93.3648L211.647 94.4261C204.871 96.0159 197.338 96.9004 189.406 96.9004C181.647 96.9004 174.27 96.0541 167.61 94.5294ZM171.287 106.37L170.952 105.29C176.691 106.383 182.909 106.982 189.406 106.982C196.822 106.982 203.873 106.202 210.264 104.796L210.124 105.851C203.749 107.224 196.748 107.982 189.406 107.982C183.049 107.982 176.948 107.414 171.287 106.37ZM174.462 116.593L174.133 115.532C178.964 116.276 184.091 116.677 189.406 116.677C196.311 116.677 202.9 116.001 208.934 114.773L208.794 115.821C202.781 117.02 196.241 117.677 189.406 117.677C184.221 117.677 179.206 117.299 174.462 116.593ZM177.155 125.266L176.83 124.219C180.858 124.721 185.07 124.988 189.406 124.988C195.879 124.988 202.075 124.394 207.796 123.308L207.657 124.352C201.959 125.411 195.812 125.988 189.406 125.988C185.192 125.988 181.091 125.739 177.155 125.266ZM179.824 133.861L179.503 132.826C182.709 133.137 186.02 133.299 189.406 133.299C195.453 133.299 201.258 132.78 206.66 131.827L206.521 132.866C201.146 133.796 195.389 134.299 189.406 134.299C186.136 134.299 182.934 134.149 179.824 133.861ZM182.031 140.967L181.713 139.941C184.223 140.128 186.792 140.225 189.406 140.225C195.102 140.225 200.583 139.765 205.715 138.914L205.577 139.95C200.473 140.779 195.04 141.225 189.406 141.225C186.904 141.225 184.442 141.137 182.031 140.967ZM184.004 147.32L183.688 146.302C185.566 146.405 187.473 146.458 189.406 146.458C194.789 146.458 199.98 146.047 204.866 145.284L204.728 146.317C199.872 147.06 194.729 147.458 189.406 147.458C187.583 147.458 185.781 147.411 184.004 147.32ZM198.721 191.368C198.385 191.399 198.048 191.427 197.71 191.454L197.406 190.475C197.891 190.437 198.375 190.396 198.857 190.352L198.721 191.368ZM204.112 150.94C199.447 151.629 194.513 151.999 189.406 151.999C188.069 151.999 186.745 151.974 185.434 151.924L185.748 152.936C186.957 152.978 188.177 152.999 189.406 152.999C194.454 152.999 199.341 152.641 203.974 151.971L204.112 150.94ZM203.453 155.883C198.983 156.511 194.273 156.847 189.406 156.847C188.584 156.847 187.766 156.838 186.954 156.819L187.267 157.826C187.976 157.84 188.689 157.847 189.406 157.847C194.215 157.847 198.879 157.522 203.315 156.911L203.453 155.883ZM202.888 160.115C198.587 160.693 194.068 161.002 189.406 161.002C189.02 161.002 188.635 161 188.251 160.996L188.562 161.999C188.843 162.001 189.124 162.002 189.406 162.002C194.012 162.002 198.484 161.704 202.751 161.142L202.888 160.115ZM202.324 164.345C198.235 164.87 193.954 165.152 189.543 165.158L189.854 166.157C194.1 166.139 198.23 165.868 202.188 165.37L202.324 164.345ZM201.855 167.867C198.242 168.313 194.481 168.569 190.617 168.614L190.926 169.61C194.629 169.557 198.239 169.311 201.718 168.891L201.855 167.867ZM201.479 170.683C198.249 171.068 194.904 171.303 191.473 171.37L191.781 172.364C195.053 172.291 198.248 172.067 201.343 171.706L201.479 170.683ZM201.104 173.497C198.26 173.826 195.327 174.037 192.327 174.121L192.635 175.112C195.477 175.025 198.261 174.825 200.968 174.519L201.104 173.497ZM200.729 176.31C198.273 176.584 195.751 176.771 193.179 176.863L193.486 177.852C195.903 177.759 198.275 177.583 200.593 177.331L200.729 176.31ZM200.448 178.419C198.284 178.654 196.071 178.822 193.816 178.917L194.123 179.905C196.223 179.811 198.288 179.654 200.312 179.44L200.448 178.419ZM200.167 180.527C198.297 180.724 196.39 180.871 194.452 180.965L194.759 181.951C196.543 181.86 198.302 181.725 200.031 181.546L200.167 180.527ZM199.886 182.633C198.311 182.795 196.71 182.922 195.087 183.01L195.393 183.995C196.864 183.911 198.317 183.796 199.75 183.652L199.886 182.633ZM199.605 184.74C198.327 184.868 197.031 184.972 195.721 185.052L196.027 186.035C197.186 185.961 198.334 185.869 199.469 185.758L199.605 184.74ZM199.418 186.143C198.338 186.249 197.246 186.338 196.143 186.41L196.448 187.392C197.401 187.328 198.346 187.251 199.282 187.161L199.418 186.143ZM199.231 187.546C198.35 187.631 197.461 187.705 196.564 187.767L196.869 188.748C197.616 188.694 198.358 188.633 199.095 188.564L199.231 187.546ZM199.044 188.949C198.362 189.013 197.676 189.071 196.985 189.122L197.29 190.102C197.832 190.061 198.371 190.015 198.908 189.966L199.044 188.949ZM213.557 80.1028C206.299 81.9885 198.091 83.049 189.406 83.049C179.78 83.049 170.741 81.7464 162.931 79.4614L162.574 78.312C170.422 80.6835 179.596 82.049 189.406 82.049C198.177 82.049 206.439 80.9575 213.699 79.0314L213.557 80.1028Z"
|
||||
fill="url(#paint0_linear)"
|
||||
/>
|
||||
<path
|
||||
d="M142.29 145.388C132.091 140.383 122.569 134.775 117 130M159.691 152.492C176.741 158.119 197.102 161.071 219 157.333"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M263 80C260.456 82.4914 254.977 86.9979 248.429 91.605M227 104C231.938 101.951 237.321 98.9194 242.429 95.6425"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M117.282 21.6163C116.028 29.8285 116.689 42.8176 124.908 54.8036M165.921 79.6946C148.556 75.5121 137.059 68.5158 129.587 60.5941"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M245 125C237.768 129.445 227.895 133.525 217.03 136.05M206 138C207.986 137.761 209.959 137.461 211.909 137.108"
|
||||
stroke="#44F1A6"
|
||||
/>
|
||||
<defs>
|
||||
<linearGradient id="paint0_linear" x1="188.137" y1="78.312" x2="188.137" y2="191.454" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#44F1A6" />
|
||||
<stop offset="0.458333" stop-color="#44F1A6" stop-opacity="0" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
</template>
|
||||
|
||||
<style>
|
||||
.errorIcon {
|
||||
max-width: 402px;
|
||||
width: 100%;
|
||||
display: block;
|
||||
height: auto;
|
||||
margin: 0 auto 20px;
|
||||
}
|
||||
</style>
|
16
components/icons/Nova.vue
Normal file
16
components/icons/Nova.vue
Normal file
@ -0,0 +1,16 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M12 15.2308V18.6923C7.66669 18.6923 4.15385 15.1795 4.15385 10.8462C4.15385 6.51284 7.66669 3 12 3C9.19609 3 6.92308 5.27302 6.92308 8.07692C6.92308 9.65348 7.64169 11.0622 8.76924 11.9934C8.76923 11.9956 8.76923 11.9978 8.76923 12C8.76923 13.7843 10.2157 15.2308 12 15.2308Z"
|
||||
/>
|
||||
<path
|
||||
d="M8.76923 12H5.30769C5.30769 7.66669 8.82054 4.15385 13.1538 4.15385C17.4872 4.15385 21 7.66669 21 12C21 9.19609 18.727 6.92308 15.9231 6.92308C14.3465 6.92308 12.9378 7.64169 12.0066 8.76924C12.0044 8.76923 12.0022 8.76923 12 8.76923C10.2157 8.76923 8.76923 10.2157 8.76923 12Z"
|
||||
/>
|
||||
<path
|
||||
d="M12 8.76923L12 5.30769C16.3333 5.30769 19.8462 8.82054 19.8462 13.1538C19.8462 17.4872 16.3333 21 12 21C14.8039 21 17.0769 18.727 17.0769 15.9231C17.0769 14.3465 16.3583 12.9378 15.2308 12.0066C15.2308 12.0044 15.2308 12.0022 15.2308 12C15.2308 10.2157 13.7843 8.76923 12 8.76923Z"
|
||||
/>
|
||||
<path
|
||||
d="M15.2308 12H18.6923C18.6923 16.3333 15.1795 19.8462 10.8462 19.8462C6.51284 19.8462 3 16.3333 3 12C3 14.8039 5.27302 17.0769 8.07692 17.0769C9.65348 17.0769 11.0622 16.3583 11.9934 15.2308C11.9956 15.2308 11.9978 15.2308 12 15.2308C13.7843 15.2308 15.2308 13.7843 15.2308 12Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
11
components/icons/Optimism.vue
Normal file
11
components/icons/Optimism.vue
Normal file
@ -0,0 +1,11 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path d="M12 23C18.0751 23 23 18.0751 23 12C23 5.92487 18.0751 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23Z" />
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M7.18318 14.4609C7.60149 14.7691 8.13811 14.9232 8.79309 14.9232C9.58571 14.9232 10.2186 14.7388 10.692 14.3701C11.1654 13.9958 11.4983 13.4316 11.691 12.6776C11.8066 12.2153 11.9057 11.7391 11.9882 11.2493C12.0157 11.0732 12.0295 10.9273 12.0295 10.8117C12.0295 10.4264 11.9332 10.0962 11.7405 9.821C11.5479 9.54028 11.2837 9.3311 10.9479 9.19351C10.6122 9.05043 10.2324 8.97888 9.80861 8.97888C8.25097 8.97888 7.28499 9.73568 6.91073 11.2493C6.77864 11.8052 6.67682 12.2813 6.60524 12.6776C6.57774 12.8537 6.56396 13.0023 6.56396 13.1234C6.56396 13.7014 6.77037 14.1472 7.18318 14.4609ZM9.69302 13.4619C9.47835 13.6435 9.21694 13.7344 8.90868 13.7344C8.38033 13.7344 8.11611 13.4812 8.11611 12.9748C8.11611 12.8537 8.12711 12.7381 8.14915 12.6281C8.2482 12.0942 8.34729 11.6428 8.44637 11.2741C8.53992 10.8998 8.69405 10.6218 8.90868 10.4402C9.12886 10.2585 9.39303 10.1677 9.7013 10.1677C10.2241 10.1677 10.4856 10.4182 10.4856 10.919C10.4856 11.0402 10.4746 11.1585 10.4526 11.2741C10.3866 11.6593 10.2902 12.1107 10.1636 12.6281C10.0701 13.0023 9.9132 13.2803 9.69302 13.4619ZM12.269 14.7827C12.302 14.8212 12.3489 14.8405 12.4094 14.8405H13.5322C13.5872 14.8405 13.6396 14.8212 13.6891 14.7827C13.7386 14.7441 13.7689 14.6946 13.7799 14.6341L14.1597 12.826H15.2742C15.9953 12.826 16.5622 12.6746 16.975 12.3719C17.3933 12.0692 17.6713 11.6013 17.8089 10.9683C17.8419 10.8198 17.8584 10.6766 17.8584 10.539C17.8584 10.0602 17.6713 9.69419 17.297 9.44097C16.9282 9.18779 16.4383 9.06121 15.8274 9.06121H13.6313C13.5762 9.06121 13.524 9.08048 13.4744 9.11898C13.4249 9.15752 13.3946 9.20707 13.3836 9.26761L12.2443 14.6341C12.2333 14.6891 12.2415 14.7386 12.269 14.7827ZM15.9347 11.4967C15.7641 11.6233 15.5632 11.6866 15.3321 11.6866H14.3826L14.6963 10.2088H15.687C15.9127 10.2088 16.0723 10.2528 16.1659 10.3409C16.2595 10.4234 16.3063 10.5445 16.3063 10.7042C16.3063 10.7757 16.298 10.8583 16.2815 10.9518C16.2264 11.1885 16.1109 11.3701 15.9347 11.4967Z"
|
||||
fill="#131823"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Plus.vue
Normal file
9
components/icons/Plus.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 14 14">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M7 0C6.44772 0 6 0.447716 6 1V6H1C0.447715 6 0 6.44771 0 7C0 7.55228 0.447716 8 1 8H6V13C6 13.5523 6.44772 14 7 14C7.55228 14 8 13.5523 8 13V8H13C13.5523 8 14 7.55228 14 7C14 6.44772 13.5523 6 13 6H8V1C8 0.447715 7.55228 0 7 0Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Polygon.vue
Normal file
9
components/icons/Polygon.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M7.51292 5.11104C7.78474 4.96299 8.11526 4.96299 8.38708 5.11104L12.4371 7.31692C12.7228 7.47254 12.9 7.76779 12.9 8.08824V9.5228L11.1 10.5147V8.60741L7.95 6.89173L4.8 8.60741V11.9808L7.95 13.6965L15.6129 9.5228C15.8847 9.37475 16.2153 9.37475 16.4871 9.5228L20.5371 11.7287C20.8228 11.8843 21 12.1796 21 12.5V16.9118C21 17.2322 20.8228 17.5275 20.5371 17.6831L16.4871 19.889C16.2153 20.037 15.8847 20.037 15.6129 19.889L11.5629 17.6831C11.2772 17.5275 11.1 17.2322 11.1 16.9118V15.4772L12.9 14.4853V16.3926L16.05 18.1083L19.2 16.3926V13.0192L16.05 11.3035L8.38708 15.4772C8.11526 15.6252 7.78474 15.6252 7.51292 15.4772L3.46292 13.2713C3.1772 13.1157 3 12.8204 3 12.5V8.08824C3 7.76779 3.1772 7.47254 3.46292 7.31692L7.51292 5.11104Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Relayer.vue
Normal file
9
components/icons/Relayer.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M0.0410738 13C0.549225 19.1595 5.70934 24 12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.70934 0 0.549225 4.84047 0.0410738 11H0V13H0.0410738ZM15.2222 19.4775C14.1348 21.3417 12.9263 22 12 22C11.0737 22 9.86523 21.3417 8.77781 19.4775C7.83753 17.8656 7.1652 15.6037 7.02649 13H16.9735C16.8348 15.6037 16.1625 17.8656 15.2222 19.4775ZM16.9735 11H7.02649C7.1652 8.39632 7.83753 6.13437 8.77781 4.52246C9.86523 2.65832 11.0737 2 12 2C12.9263 2 14.1348 2.65832 15.2222 4.52246C16.1625 6.13437 16.8348 8.39632 16.9735 11ZM18.976 13C18.8282 16.0724 18.0052 18.8166 16.7619 20.7956C19.6045 19.2534 21.6157 16.3732 21.9506 13H18.976ZM21.9506 11H18.976C18.8282 7.9276 18.0052 5.18339 16.7619 3.20439C19.6045 4.74664 21.6157 7.62676 21.9506 11ZM5.02396 11C5.17182 7.9276 5.99484 5.18339 7.23811 3.20439C4.39545 4.74664 2.38429 7.62676 2.04938 11H5.02396ZM2.04938 13H5.02396C5.17182 16.0724 5.99485 18.8166 7.23811 20.7956C4.39546 19.2534 2.38429 16.3732 2.04938 13Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Requirement.vue
Normal file
9
components/icons/Requirement.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M6 2H18C20.2091 2 22 3.79086 22 6V18C22 20.2091 20.2091 22 18 22H6C3.79086 22 2 20.2091 2 18V6C2 3.79086 3.79086 2 6 2ZM0 6C0 2.68629 2.68629 0 6 0H18C21.3137 0 24 2.68629 24 6V18C24 21.3137 21.3137 24 18 24H6C2.68629 24 0 21.3137 0 18V6ZM18.2929 13.2929L16 15.5858L14.7071 14.2929C14.3166 13.9024 13.6834 13.9024 13.2929 14.2929C12.9024 14.6834 12.9024 15.3166 13.2929 15.7071L15.2929 17.7071C15.4804 17.8946 15.7348 18 16 18C16.2652 18 16.5196 17.8946 16.7071 17.7071L19.7071 14.7071C20.0976 14.3166 20.0976 13.6834 19.7071 13.2929C19.3166 12.9024 18.6834 12.9024 18.2929 13.2929ZM4 14C4 13.4477 4.44772 13 5 13H10C10.5523 13 11 13.4477 11 14C11 14.5523 10.5523 15 10 15H5C4.44772 15 4 14.5523 4 14ZM5 17C4.44772 17 4 17.4477 4 18C4 18.5523 4.44772 19 5 19H10C10.5523 19 11 18.5523 11 18C11 17.4477 10.5523 17 10 17H5ZM4 6C4 5.44772 4.44772 5 5 5H19C19.5523 5 20 5.44772 20 6C20 6.55228 19.5523 7 19 7H5C4.44772 7 4 6.55228 4 6ZM5 9C4.44772 9 4 9.44771 4 10C4 10.5523 4.44772 11 5 11H19C19.5523 11 20 10.5523 20 10C20 9.44771 19.5523 9 19 9H5Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
14
components/icons/Stake.vue
Normal file
14
components/icons/Stake.vue
Normal file
@ -0,0 +1,14 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M23.8451 5.5C23.9451 5.18495 24 4.85044 24 4.5C24 3.28625 23.3417 2.26364 22.4284 1.57868C21.5155 0.893948 20.3 0.5 19 0.5C17.7 0.5 16.4845 0.893948 15.5716 1.57868C14.6583 2.26364 14 3.28625 14 4.5V19.5C14 20.7138 14.6583 21.7364 15.5716 22.4213C16.4845 23.1061 17.7 23.5 19 23.5C20.3 23.5 21.5155 23.1061 22.4284 22.4213C23.078 21.9341 23.5986 21.2761 23.8451 20.5H24V5.5H23.8451ZM19 2.5C19.9091 2.5 20.6937 2.77762 21.2284 3.17868C21.7629 3.5795 22 4.0569 22 4.5C22 4.9431 21.7629 5.4205 21.2284 5.82132C20.6937 6.22237 19.9091 6.5 19 6.5C18.0909 6.5 17.3063 6.22237 16.7716 5.82132C16.2371 5.4205 16 4.9431 16 4.5C16 4.0569 16.2371 3.5795 16.7716 3.17868C17.3063 2.77762 18.0909 2.5 19 2.5ZM19 8.5C17.8941 8.5 16.8494 8.2149 16 7.70823V9.5C16 9.9431 16.2371 10.4205 16.7716 10.8213C17.3063 11.2224 18.0909 11.5 19 11.5C19.9091 11.5 20.6937 11.2224 21.2284 10.8213C21.7629 10.4205 22 9.9431 22 9.5V7.70823C21.1506 8.2149 20.1059 8.5 19 8.5ZM22 12.7082C21.1506 13.2149 20.1059 13.5 19 13.5C17.8941 13.5 16.8494 13.2149 16 12.7082V14.5C16 14.9431 16.2371 15.4205 16.7716 15.8213C17.3063 16.2224 18.0909 16.5 19 16.5C19.9091 16.5 20.6937 16.2224 21.2284 15.8213C21.7629 15.4205 22 14.9431 22 14.5V12.7082ZM22 17.7082C21.1506 18.2149 20.1059 18.5 19 18.5C17.8941 18.5 16.8494 18.2149 16 17.7082V19.5C16 19.9431 16.2371 20.4205 16.7716 20.8213C17.3063 21.2224 18.0909 21.5 19 21.5C19.9091 21.5 20.6937 21.2224 21.2284 20.8213C21.7629 20.4205 22 19.9431 22 19.5V17.7082Z"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M10 9.5C10 8.28625 9.34171 7.26364 8.42843 6.57868C7.51545 5.89395 6.30002 5.5 5 5.5C3.69998 5.5 2.48455 5.89395 1.57157 6.57868C0.65829 7.26364 0 8.28625 0 9.5V19.5C0 20.7138 0.65829 21.7364 1.57157 22.4213C2.48455 23.1061 3.69998 23.5 5 23.5C6.30002 23.5 7.51545 23.1061 8.42843 22.4213C9.34171 21.7364 10 20.7138 10 19.5V9.5ZM7.22843 8.17868C6.69369 7.77763 5.90912 7.5 5 7.5C4.09088 7.5 3.30631 7.77763 2.77157 8.17868C2.23714 8.5795 2 9.0569 2 9.5C2 9.9431 2.23714 10.4205 2.77157 10.8213C3.30631 11.2224 4.09088 11.5 5 11.5C5.90912 11.5 6.69369 11.2224 7.22843 10.8213C7.76286 10.4205 8 9.9431 8 9.5C8 9.0569 7.76286 8.5795 7.22843 8.17868ZM8 12.7082C7.15063 13.2149 6.10592 13.5 5 13.5C3.89408 13.5 2.84937 13.2149 2 12.7082V14.5C2 14.9431 2.23714 15.4205 2.77157 15.8213C3.30631 16.2224 4.09088 16.5 5 16.5C5.90912 16.5 6.69369 16.2224 7.22843 15.8213C7.76286 15.4205 8 14.9431 8 14.5V12.7082ZM8 17.7082C7.15063 18.2149 6.10592 18.5 5 18.5C3.89408 18.5 2.84937 18.2149 2 17.7082V19.5C2 19.9431 2.23714 20.4205 2.77157 20.8213C3.30631 21.2224 4.09088 21.5 5 21.5C5.90912 21.5 6.69369 21.2224 7.22843 20.8213C7.76286 20.4205 8 19.9431 8 19.5V17.7082Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
21
components/icons/Stats.vue
Normal file
21
components/icons/Stats.vue
Normal file
@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<svg width="22" height="24" viewBox="0 0 22 24">
|
||||
<path
|
||||
d="M13 0C12.4477 0 12 0.447693 12 1V19C12 19.5523 12.4477 20 13 20C13.5523 20 14 19.5523 14 19V1C14 0.447693 13.5523 0 13 0Z"
|
||||
/>
|
||||
<path d="M8 6C8 5.44769 8.44769 5 9 5C9.55231 5 10 5.44769 10 6V19C10 19.5523 9.55231 20 9 20C8.44769 20 8 19.5523 8 19V6Z" />
|
||||
<path d="M5 8C4.44769 8 4 8.44769 4 9V19C4 19.5523 4.44769 20 5 20C5.55231 20 6 19.5523 6 19V9C6 8.44769 5.55231 8 5 8Z" />
|
||||
<path
|
||||
d="M0 13C0 12.4477 0.447693 12 1 12C1.55231 12 2 12.4477 2 13V19C2 19.5523 1.55231 20 1 20C0.447693 20 0 19.5523 0 19V13Z"
|
||||
/>
|
||||
<path
|
||||
d="M0 23C0 22.4477 0.447693 22 1 22H21C21.5523 22 22 22.4477 22 23C22 23.5523 21.5523 24 21 24H1C0.447693 24 0 23.5523 0 23Z"
|
||||
/>
|
||||
<path
|
||||
d="M16 9C16 8.44769 16.4477 8 17 8C17.5523 8 18 8.44769 18 9V19C18 19.5523 17.5523 20 17 20C16.4477 20 16 19.5523 16 19V9Z"
|
||||
/>
|
||||
<path
|
||||
d="M21 5C20.4477 5 20 5.44769 20 6V19C20 19.5523 20.4477 20 21 20C21.5523 20 22 19.5523 22 19V6C22 5.44769 21.5523 5 21 5Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
30
components/icons/Subdomains.vue
Normal file
30
components/icons/Subdomains.vue
Normal file
@ -0,0 +1,30 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 72.52 80.95">
|
||||
<g>
|
||||
<g>
|
||||
<path
|
||||
d="M15.28 34.39c.8 1.71 2.78 5.09 2.78 5.09L40.95 1.64l-22.34 15.6a9.75 9.75 0 0 0-3.18 3.5 16.19 16.19 0 0 0-.15 13.65z"
|
||||
transform="translate(-6 -1.64)"
|
||||
/>
|
||||
<path
|
||||
class="cls-3"
|
||||
d="M6.21 46.85a25.47 25.47 0 0 0 10 18.51l24.71 17.23s-15.46-22.28-28.5-44.45a22.39 22.39 0 0 1-2.62-7.56 12.1 12.1 0 0 1 0-3.63c-.34.63-1 1.92-1 1.92a29.35 29.35 0 0 0-2.67 8.55 52.28 52.28 0 0 0 .08 9.43z"
|
||||
transform="translate(-6 -1.64)"
|
||||
/>
|
||||
<path
|
||||
d="M69.25 49.84c-.8-1.71-2.78-5.09-2.78-5.09L43.58 82.59 65.92 67a9.75 9.75 0 0 0 3.18-3.5 16.19 16.19 0 0 0 .15-13.66z"
|
||||
transform="translate(-6 -1.64)"
|
||||
/>
|
||||
<path
|
||||
class="cls-3"
|
||||
d="M78.32 37.38a25.47 25.47 0 0 0-10-18.51L43.61 1.64s15.45 22.28 28.5 44.45a22.39 22.39 0 0 1 2.61 7.56 12.1 12.1 0 0 1 0 3.63c.34-.63 1-1.92 1-1.92a29.35 29.35 0 0 0 2.67-8.55 52.28 52.28 0 0 0-.07-9.43z"
|
||||
transform="translate(-6 -1.64)"
|
||||
/>
|
||||
<path
|
||||
d="M15.43 20.74a9.75 9.75 0 0 1 3.18-3.5l22.34-15.6-22.89 37.85s-2-3.38-2.78-5.09a16.19 16.19 0 0 1 .15-13.66zM6.21 46.85a25.47 25.47 0 0 0 10 18.51l24.71 17.23s-15.46-22.28-28.5-44.45a22.39 22.39 0 0 1-2.62-7.56 12.1 12.1 0 0 1 0-3.63c-.34.63-1 1.92-1 1.92a29.35 29.35 0 0 0-2.67 8.55 52.28 52.28 0 0 0 .08 9.43zm63 3c-.8-1.71-2.78-5.09-2.78-5.09L43.58 82.59 65.92 67a9.75 9.75 0 0 0 3.18-3.5 16.19 16.19 0 0 0 .15-13.66zm9.07-12.46a25.47 25.47 0 0 0-10-18.51L43.61 1.64s15.45 22.28 28.5 44.45a22.39 22.39 0 0 1 2.61 7.56 12.1 12.1 0 0 1 0 3.63c.34-.63 1-1.92 1-1.92a29.35 29.35 0 0 0 2.67-8.55 52.28 52.28 0 0 0-.07-9.43z"
|
||||
transform="translate(-6 -1.64)"
|
||||
/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
</template>
|
8
components/icons/Success.vue
Normal file
8
components/icons/Success.vue
Normal file
@ -0,0 +1,8 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 16 12">
|
||||
<path
|
||||
d="M0.671799 4.68991C0.281275 5.08043 0.281275 5.7136 0.6718 6.10412L5.61389 11.0462C5.81612 11.2484 6.08341 11.3459 6.34838 11.3387C6.59537 11.3322 6.8404 11.2347 7.02889 11.0462L15.7071 2.36801C16.0976 1.97749 16.0976 1.34432 15.7071 0.953797C15.3165 0.563273 14.6834 0.563272 14.2929 0.953797L6.32138 8.92527L2.08601 4.68991C1.69549 4.29938 1.06232 4.29938 0.671799 4.68991Z"
|
||||
fill="#44F1A6"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Summary.vue
Normal file
7
components/icons/Summary.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
d="M16.75 22.16L14 19.16L15.16 18L16.75 19.59L20.34 16L21.5 17.41L16.75 22.16M6 22C4.89 22 4 21.1 4 20V4C4 2.89 4.89 2 6 2H7V9L9.5 7.5L12 9V2H18C19.1 2 20 2.89 20 4V13.34C19.37 13.12 18.7 13 18 13C14.69 13 12 15.69 12 19C12 20.09 12.29 21.12 12.8 22H6Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Telegram.vue
Normal file
7
components/icons/Telegram.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 20">
|
||||
<path
|
||||
d="M9.4174 13.1813L9.0204 18.7653C9.58841 18.7653 9.83441 18.5213 10.1294 18.2283L12.7925 15.6833L18.3106 19.7243C19.3226 20.2883 20.0357 19.9913 20.3087 18.7933L23.9308 1.8214L23.9318 1.8204C24.2528 0.324404 23.3907 -0.260593 22.4047 0.106405L1.1142 8.25736C-0.33883 8.82136 -0.31683 9.63136 0.867199 9.99835L6.31033 11.6913L18.9536 3.78039C19.5486 3.38639 20.0897 3.60439 19.6446 3.99839L9.4174 13.1813Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Tick.vue
Normal file
9
components/icons/Tick.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 25 25">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="M21.28 5.99a1 1 0 010 1.41l-11 11a1 1 0 01-1.41 0l-5-5A1 1 0 115.28 12l4.3 4.3 10.29-10.3a1 1 0 011.41 0z"
|
||||
clip-rule="evenodd"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
20
components/icons/Torn.vue
Normal file
20
components/icons/Torn.vue
Normal file
@ -0,0 +1,20 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 18 18">
|
||||
<path
|
||||
d="M9 12.2308V15.6923C4.66669 15.6923 1.15385 12.1795 1.15385 7.84615C1.15385 3.51284 4.66669 0 9 0C6.19609 0 3.92308 2.27302 3.92308 5.07692C3.92308 6.65348 4.64169 8.0622 5.76924 8.99339C5.76923 8.9956 5.76923 8.9978 5.76923 9C5.76923 10.7843 7.2157 12.2308 9 12.2308Z"
|
||||
fill="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M5.76923 9H2.30769C2.30769 4.66669 5.82054 1.15385 10.1538 1.15385C14.4872 1.15385 18 4.66669 18 9C18 6.19609 15.727 3.92308 12.9231 3.92308C11.3465 3.92308 9.9378 4.64169 9.00661 5.76924C9.00441 5.76923 9.0022 5.76923 9 5.76923C7.2157 5.76923 5.76923 7.2157 5.76923 9Z"
|
||||
fill="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M9 5.76923L9 2.30769C13.3333 2.30769 16.8462 5.82054 16.8462 10.1538C16.8462 14.4872 13.3333 18 9 18C11.8039 18 14.0769 15.727 14.0769 12.9231C14.0769 11.3465 13.3583 9.9378 12.2308 9.00661C12.2308 9.0044 12.2308 9.0022 12.2308 9C12.2308 7.21569 10.7843 5.76923 9 5.76923Z"
|
||||
fill="#44F1A6"
|
||||
/>
|
||||
<path
|
||||
d="M12.2308 9H15.6923C15.6923 13.3333 12.1795 16.8462 7.84615 16.8462C3.51284 16.8462 1.89415e-07 13.3333 0 9C1.22563e-07 11.8039 2.27302 14.0769 5.07692 14.0769C6.65348 14.0769 8.0622 13.3583 8.99339 12.2308C8.9956 12.2308 8.9978 12.2308 9 12.2308C10.7843 12.2308 12.2308 10.7843 12.2308 9Z"
|
||||
fill="#44F1A6"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
9
components/icons/Tornado.vue
Normal file
9
components/icons/Tornado.vue
Normal file
@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 155 40">
|
||||
<path
|
||||
fill="#44f1a6"
|
||||
fill-rule="evenodd"
|
||||
d="M29.4,8.6A11.5,11.5,0,0,1,39.9,19.4,17.1,17.1,0,0,0,8.5,10.5,11.5,11.5,0,0,1,19.3,0a17.2,17.2,0,0,0-8.9,31.4A11.5,11.5,0,0,1,0,20.6a17.1,17.1,0,0,0,31.3,9.1A11.4,11.4,0,0,1,20.6,40,17.1,17.1,0,0,0,29.4,8.6ZM19.9,27.2a6.9,6.9,0,0,1-5-2.1,7.1,7.1,0,1,1,5,2.1Zm36.6-9.7v7.4c0,1.3.5,1.6,1.8,1.6a4.8,4.8,0,0,0,1.8-.3v2.9a6.4,6.4,0,0,1-2.4.5c-3,0-4.8-1.9-4.8-5V17.5H50.4V14.4h2.5V9.9h3.6v4.5h3.6v3.1ZM77,21.9c0,5-2.5,7.7-7,7.7s-7.1-2.7-7.1-7.7,2.5-7.7,7.1-7.7S77,16.9,77,21.9Zm-3.6,0c0-4-1.3-4.8-3.4-4.8s-3.5.8-3.5,4.8,1.3,4.7,3.5,4.7S73.4,25.8,73.4,21.9ZM88,14.1v3.2a11.5,11.5,0,0,0-3.8.5V29.4H80.6V15.7A20.4,20.4,0,0,1,88,14.1Zm16.9,6.3v9h-3.6V20.1c0-1.4-.2-2.8-3.5-2.8a12,12,0,0,0-2.8.3V29.4H91.4V15.8a15,15,0,0,1,6.9-1.7C102.4,14.1,104.9,16.5,104.9,20.4Zm16.2.1v4.1c0,2.4-1.6,5-6.3,5s-6.4-2.6-6.4-5.1.5-4.7,6.5-4.7a11,11,0,0,1,2.6.2c0-1.7-.8-2.9-3.2-2.9a11.2,11.2,0,0,0-4.4.8V15a12.5,12.5,0,0,1,4.6-.9C118.8,14.1,121.1,16.4,121.1,20.5Zm-3.6,1.7h-2.1c-2.5,0-3.4.7-3.4,1.9s.9,2.4,2.8,2.4,2.7-.9,2.7-2.3Zm13.9-8.1,2.5.3V8.7h3.6V24.6c0,2.4-1.7,5-6.4,5-2,0-6.7-.8-6.7-7.9C124.4,16.8,126.9,14.1,131.4,14.1Zm-.3,12.4c1.6,0,2.8-.4,2.8-1.6V17.2l-2.4-.2c-2.1,0-3.5,1-3.5,4.5S128.8,26.5,131.1,26.5ZM155,21.9c0,5-2.5,7.7-7.1,7.7s-7.1-2.7-7.1-7.7,2.5-7.7,7.1-7.7S155,16.9,155,21.9Zm-3.6,0c0-4-1.4-4.8-3.5-4.8s-3.5.8-3.5,4.8,1.4,4.7,3.5,4.7S151.4,25.8,151.4,21.9Z"
|
||||
></path>
|
||||
</svg>
|
||||
</template>
|
10
components/icons/Trash.vue
Normal file
10
components/icons/Trash.vue
Normal file
@ -0,0 +1,10 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 14 14">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M4 1C4 0.447693 4.44769 0 5 0H9C9.55231 0 10 0.447693 10 1V3H13C13.5522 3 14 3.44769 14 4C14 4.55231 13.5522 5 13 5H12V13C12 13.5523 11.5522 14 11 14H3C2.44769 14 2 13.5523 2 13V5H1C0.447693 5 0 4.55231 0 4C0 3.44769 0.447693 3 1 3H4V1ZM8 3V2H6V3H8ZM4 5H10V12H4V5Z"
|
||||
fill="#44F1A6"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
7
components/icons/Twitter.vue
Normal file
7
components/icons/Twitter.vue
Normal file
@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 20">
|
||||
<path
|
||||
d="M24 2.3037C23.1075 2.69439 22.1565 2.95335 21.165 3.07909C22.185 2.47135 22.9635 1.51634 23.3295 0.365239C22.3785 0.93106 21.3285 1.33073 20.2095 1.55376C19.3065 0.594262 18.0195 0 16.6155 0C13.8915 0 11.6985 2.2064 11.6985 4.91127C11.6985 5.30046 11.7315 5.67468 11.8125 6.03094C7.722 5.83185 4.1025 3.87543 1.671 0.895135C1.2465 1.6301 0.9975 2.47135 0.9975 3.37696C0.9975 5.07742 1.875 6.58478 3.183 7.45746C2.3925 7.44249 1.617 7.21347 0.96 6.85272C0.96 6.86769 0.96 6.88715 0.96 6.90661C0.96 9.29264 2.6655 11.2745 4.902 11.7311C4.5015 11.8403 4.065 11.8927 3.612 11.8927C3.297 11.8927 2.979 11.8748 2.6805 11.8089C3.318 13.7533 5.127 15.1829 7.278 15.2293C5.604 16.536 3.4785 17.3234 1.1775 17.3234C0.774 17.3234 0.387 17.3054 0 17.2561C2.1795 18.6586 4.7625 19.4595 7.548 19.4595C16.602 19.4595 21.552 11.9751 21.552 5.48757C21.552 5.27052 21.5445 5.06096 21.534 4.85289C22.5105 4.16133 23.331 3.29763 24 2.3037Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
12
components/icons/Wallet.vue
Normal file
12
components/icons/Wallet.vue
Normal file
@ -0,0 +1,12 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 18 18">
|
||||
<path
|
||||
d="M11 10C10.4477 10 10 10.4477 10 11C10 11.5523 10.4477 12 11 12H13C13.5523 12 14 11.5523 14 11C14 10.4477 13.5523 10 13 10H11Z"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M4 0C1.79083 0 0 1.79086 0 4V14C0 16.2091 1.79083 18 4 18H14C16.2092 18 18 16.2091 18 14V8C18 5.79086 16.2092 4 14 4H12C12 1.79086 10.2092 0 8 0H4ZM2 6V14C2 15.1046 2.89545 16 4 16H14C15.1046 16 16 15.1046 16 14V8C16 6.89543 15.1046 6 14 6H2ZM2 4C2 2.89543 2.89545 2 4 2H8C9.10455 2 10 2.89543 10 4H2Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
20
components/icons/Workers.vue
Normal file
20
components/icons/Workers.vue
Normal file
@ -0,0 +1,20 @@
|
||||
<template>
|
||||
<svg viewBox="0 0 24 24">
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M17 8C19.2091 8 21 6.20914 21 4C21 1.79086 19.2091 0 17 0C14.7909 0 13 1.79086 13 4C13 6.20914 14.7909 8 17 8ZM17 6C18.1046 6 19 5.10457 19 4C19 2.89543 18.1046 2 17 2C15.8954 2 15 2.89543 15 4C15 5.10457 15.8954 6 17 6Z"
|
||||
/>
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
clip-rule="evenodd"
|
||||
d="M11 11C11 13.2091 9.20914 15 7 15C4.79086 15 3 13.2091 3 11C3 8.79086 4.79086 7 7 7C9.20914 7 11 8.79086 11 11ZM9 11C9 12.1046 8.10457 13 7 13C5.89543 13 5 12.1046 5 11C5 9.89543 5.89543 9 7 9C8.10457 9 9 9.89543 9 11Z"
|
||||
/>
|
||||
<path
|
||||
d="M2 23C2 20.2386 4.23858 18 7 18C9.76142 18 12 20.2386 12 23C12 23.5523 12.4477 24 13 24C13.5523 24 14 23.5523 14 23C14 19.134 10.866 16 7 16C3.13401 16 0 19.134 0 23C0 23.5523 0.447715 24 1 24C1.55228 24 2 23.5523 2 23Z"
|
||||
/>
|
||||
<path
|
||||
d="M14.5007 11.6683C15.2351 11.2435 16.0876 11 17 11C19.7614 11 22 13.2386 22 16C22 16.5523 22.4477 17 23 17C23.5523 17 24 16.5523 24 16C24 12.134 20.866 9 17 9C15.7267 9 14.5299 9.3409 13.4993 9.93709C13.0212 10.2136 12.8579 10.8254 13.1344 11.3034C13.4109 11.7815 14.0227 11.9448 14.5007 11.6683Z"
|
||||
/>
|
||||
</svg>
|
||||
</template>
|
123
components/workers/AddWorkerAddress.vue
Normal file
123
components/workers/AddWorkerAddress.vue
Normal file
@ -0,0 +1,123 @@
|
||||
<template>
|
||||
<form :class="$style.container" @submit.prevent="onAddWorker">
|
||||
<base-input
|
||||
type="text"
|
||||
:class="$style.container__input"
|
||||
:model-value="address"
|
||||
:error="isAddressInvalid"
|
||||
:loading="isAddressChecking"
|
||||
:error-message="addressInvalidReason"
|
||||
placeholder-text="0x0000000000000000000000000000000000000000"
|
||||
@update:modelValue="onChangeWorkerAddress"
|
||||
/>
|
||||
<base-button :disabled="isAddDisabled" size="square">
|
||||
<base-icon name="plus" size="small" />
|
||||
</base-button>
|
||||
</form>
|
||||
</template>
|
||||
<script>
|
||||
import { BigNumber } from 'ethers'
|
||||
import { mapGetters, mapMutations } from 'vuex'
|
||||
|
||||
import { SetupMutation } from '@/types'
|
||||
|
||||
import { getProvider } from '@/services'
|
||||
import { errors, numbers } from '@/constants'
|
||||
import { debounce, isAddress } from '@/utilities'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
address: '',
|
||||
isAddressInvalid: false,
|
||||
addressInvalidReason: '',
|
||||
isAddressChecking: false,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('setup', ['workers']),
|
||||
...mapGetters('wallet', ['chainId']),
|
||||
isAddDisabled() {
|
||||
return this.isAddressInvalid || this.isAddressChecking || !this.address
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapMutations('setup', [SetupMutation.ADD_WORKER]),
|
||||
async onAddWorker() {
|
||||
await this.onCheckAddress()
|
||||
if (!this.isAddressInvalid) {
|
||||
this[SetupMutation.ADD_WORKER](this.address)
|
||||
this.isAddressInvalid = false
|
||||
this.address = ''
|
||||
}
|
||||
},
|
||||
onChangeWorkerAddress(value) {
|
||||
this.address = value
|
||||
this.isAddressInvalid = false
|
||||
this.checkAddressDebouncer()
|
||||
},
|
||||
async onCheckAddress() {
|
||||
await this.checkIsAddress()
|
||||
this.checkIsAddressExist()
|
||||
},
|
||||
checkIsAddressExist() {
|
||||
if (this.workers.includes(this.address)) {
|
||||
this.isAddressInvalid = true
|
||||
this.addressInvalidReason = this.$t(errors.validation.EXISTING_WORKER)
|
||||
}
|
||||
},
|
||||
async checkIsAddress() {
|
||||
try {
|
||||
if (!this.address) {
|
||||
return
|
||||
}
|
||||
|
||||
if (!this.address.startsWith('0x') || !isAddress(this.address)) {
|
||||
throw new Error(this.$t(errors.validation.NOT_A_ADDRESS))
|
||||
}
|
||||
|
||||
if (BigNumber.from(this.address).isZero()) {
|
||||
throw new Error(this.$t(errors.validation.INVALID_ADDRESS))
|
||||
}
|
||||
|
||||
const provider = getProvider(this.chainId)
|
||||
const isContract = await provider.getIsContract(this.address)
|
||||
|
||||
if (isContract) {
|
||||
throw new Error(this.$t(errors.validation.CONTRACT_ADDRESS))
|
||||
}
|
||||
} catch (err) {
|
||||
this.isAddressInvalid = true
|
||||
this.addressInvalidReason = err.message
|
||||
}
|
||||
},
|
||||
checkAddressDebouncer: debounce(async function () {
|
||||
try {
|
||||
this.isAddressChecking = true
|
||||
await this.onCheckAddress(this.address)
|
||||
} finally {
|
||||
this.isAddressChecking = false
|
||||
}
|
||||
}, numbers.CHECK_WORKER_INPUT_DEBOUNCE),
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.container {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
margin-bottom: 1rem;
|
||||
&__input {
|
||||
width: 100%;
|
||||
}
|
||||
button {
|
||||
margin-left: 1rem;
|
||||
min-width: 3.8rem;
|
||||
min-height: 3.8rem;
|
||||
font-size: 2.7rem;
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
</style>
|
76
components/workers/WorkerAddress.vue
Normal file
76
components/workers/WorkerAddress.vue
Normal file
@ -0,0 +1,76 @@
|
||||
<template>
|
||||
<div :class="$style.row">
|
||||
<base-input :class="$style.row__input" type="text" readonly :model-value="address" />
|
||||
<base-button v-if="!withoutBtns" :disabled="isDefaultWorker" size="square" type="dark" @click="onRemoveWorker">
|
||||
<base-icon name="trash" />
|
||||
</base-button>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { mapGetters, mapMutations } from 'vuex'
|
||||
|
||||
import { numbers } from '@/constants'
|
||||
import { SetupMutation } from '@/types'
|
||||
|
||||
export default {
|
||||
props: {
|
||||
workerAddress: {
|
||||
type: String,
|
||||
default: '',
|
||||
},
|
||||
index: {
|
||||
type: Number,
|
||||
default: numbers.ZERO,
|
||||
},
|
||||
withoutBtns: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isAddressInvalid: false,
|
||||
address: this.workerAddress,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('wallet', ['walletAddress']),
|
||||
isDefaultWorker() {
|
||||
return this.workerAddress === this.walletAddress
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapMutations('setup', [SetupMutation.REMOVE_WORKER]),
|
||||
onRemoveWorker() {
|
||||
const defaultWorksCount = 1
|
||||
this[SetupMutation.REMOVE_WORKER](this.index - defaultWorksCount)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" module>
|
||||
.row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
|
||||
+ .row {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
&__input {
|
||||
width: 100%;
|
||||
}
|
||||
button {
|
||||
margin-left: 1rem;
|
||||
min-width: 3.8rem;
|
||||
min-height: 3.8rem;
|
||||
span {
|
||||
width: 1.4rem;
|
||||
height: 1.4rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
28
constants/chainInfo.ts
Normal file
28
constants/chainInfo.ts
Normal file
@ -0,0 +1,28 @@
|
||||
import { ChainId, NetworkConfig, MetamaskList } from '@/types'
|
||||
|
||||
const CHAINS: NetworkConfig = {
|
||||
[ChainId.MAINNET]: {
|
||||
symbol: 'ETH',
|
||||
name: 'ethereum',
|
||||
shortName: 'eth',
|
||||
icon: 'ethereum',
|
||||
network: 'Mainnet',
|
||||
deployBlock: 13494216,
|
||||
blockDuration: 15000,
|
||||
blockGasLimit: 144000000,
|
||||
hexChainId: '0x1',
|
||||
isEipSupported: true,
|
||||
},
|
||||
}
|
||||
|
||||
const METAMASK_LIST: MetamaskList = {}
|
||||
|
||||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
|
||||
|
||||
const txStatuses = {
|
||||
FAIL: '0x00',
|
||||
SUCCESS: '0x01',
|
||||
PENDING: '0x02',
|
||||
}
|
||||
|
||||
export { CHAINS, ZERO_ADDRESS, txStatuses, METAMASK_LIST }
|
11
constants/contracts.ts
Normal file
11
constants/contracts.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { ChainId } from '@/types'
|
||||
|
||||
export const REGISTRY_CONTRACT: { [chainId in ChainId]: string } = {
|
||||
[ChainId.MAINNET]: '0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2',
|
||||
}
|
||||
|
||||
export const TORN_TOKEN: { [chainId in ChainId]: string } = {
|
||||
[ChainId.MAINNET]: '0x77777feddddffc19ff86db637967013e6c6a116c',
|
||||
}
|
||||
|
||||
export const DEPLOYED_BLOCK = 14173129
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user