Skip to content
This repository has been archived by the owner on Jun 24, 2022. It is now read-only.

Commit

Permalink
vCow swap abis and hook to fetch data (#2562)
Browse files Browse the repository at this point in the history
* Updated abis for vCow

* Added hook to fetch vCow data and vCow token (#2563)

* Added hook to fetch vCow data and vCow token

* Added some PR changes
  • Loading branch information
nenadV91 authored Mar 21, 2022
1 parent b081511 commit 54406f9
Show file tree
Hide file tree
Showing 11 changed files with 322 additions and 54 deletions.
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -179,9 +179,11 @@
"serve": "serve build -l 3000",
"serve:ci": "serve website -l 3000",
"cypress": "cypress open",
"contracts:compile:abi": "typechain --target ethers-v5 --out-dir src/abis/types './src/abis/**/*.json'",
"contracts:add:export": "node ./scripts/contracts_add_export.js",
"contracts:compile:abi": "typechain --target ethers-v5 --out-dir src/custom/abis/types './src/custom/abis/**/*.json'",
"contracts:compile:abi-uniswap": "typechain --target ethers-v5 --out-dir src/abis/types './src/abis/**/*.json'",
"contracts:compile:v3": "typechain --target ethers-v5 --out-dir src/types/v3 './node_modules/@uniswap/?(v3-core|v3-periphery)/artifacts/contracts/**/*.json'",
"contracts:compile": "yarn contracts:compile:abi && yarn contracts:compile:v3",
"contracts:compile": "yarn contracts:compile:abi && yarn contracts:add:export && yarn contracts:compile:abi-uniswap && yarn contracts:compile:v3",
"graphql:generate": "graphql-codegen --config codegen.yml",
"postinstall": "yarn contracts:compile && yarn graphql:generate && yarn i18n:compile",
"i18n:extract": "lingui extract --locale en-US",
Expand Down
16 changes: 16 additions & 0 deletions scripts/contracts_add_export.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
/* eslint-disable @typescript-eslint/no-var-requires */
/* This script adds necessary export of Uniswap abis/types
to the end of auto-generated abis/types/index.ts file */
const fs = require('fs')
const path = require('path')

const file = path.resolve(__dirname, '../src/custom/abis/types/index.ts')
const output = 'export * from "@src/abis/types";\n'

fs.appendFile(file, output, function (err) {
if (err) {
throw err
}

console.log('Successfully added contracts export script!')
})
50 changes: 50 additions & 0 deletions src/custom/abis/types/VCow.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ interface VCowInterface extends ethers.utils.Interface {
"gnoPrice()": FunctionFragment;
"usdcPrice()": FunctionFragment;
"nativeTokenPrice()": FunctionFragment;
"swappableBalanceOf(address)": FunctionFragment;
"balanceOf(address)": FunctionFragment;
};

encodeFunctionData(
Expand Down Expand Up @@ -72,6 +74,11 @@ interface VCowInterface extends ethers.utils.Interface {
functionFragment: "nativeTokenPrice",
values?: undefined
): string;
encodeFunctionData(
functionFragment: "swappableBalanceOf",
values: [string]
): string;
encodeFunctionData(functionFragment: "balanceOf", values: [string]): string;

decodeFunctionResult(functionFragment: "claim", data: BytesLike): Result;
decodeFunctionResult(functionFragment: "claimMany", data: BytesLike): Result;
Expand All @@ -87,6 +94,11 @@ interface VCowInterface extends ethers.utils.Interface {
functionFragment: "nativeTokenPrice",
data: BytesLike
): Result;
decodeFunctionResult(
functionFragment: "swappableBalanceOf",
data: BytesLike
): Result;
decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result;

events: {
"Claimed(uint256,uint8,address,uint256,uint256)": EventFragment;
Expand Down Expand Up @@ -184,6 +196,13 @@ export class VCow extends BaseContract {
usdcPrice(overrides?: CallOverrides): Promise<[BigNumber]>;

nativeTokenPrice(overrides?: CallOverrides): Promise<[BigNumber]>;

swappableBalanceOf(
user: string,
overrides?: CallOverrides
): Promise<[BigNumber]>;

balanceOf(user: string, overrides?: CallOverrides): Promise<[BigNumber]>;
};

claim(
Expand Down Expand Up @@ -219,6 +238,13 @@ export class VCow extends BaseContract {

nativeTokenPrice(overrides?: CallOverrides): Promise<BigNumber>;

swappableBalanceOf(
user: string,
overrides?: CallOverrides
): Promise<BigNumber>;

balanceOf(user: string, overrides?: CallOverrides): Promise<BigNumber>;

callStatic: {
claim(
index: BigNumberish,
Expand Down Expand Up @@ -252,6 +278,13 @@ export class VCow extends BaseContract {
usdcPrice(overrides?: CallOverrides): Promise<BigNumber>;

nativeTokenPrice(overrides?: CallOverrides): Promise<BigNumber>;

swappableBalanceOf(
user: string,
overrides?: CallOverrides
): Promise<BigNumber>;

balanceOf(user: string, overrides?: CallOverrides): Promise<BigNumber>;
};

filters: {
Expand Down Expand Up @@ -326,6 +359,13 @@ export class VCow extends BaseContract {
usdcPrice(overrides?: CallOverrides): Promise<BigNumber>;

nativeTokenPrice(overrides?: CallOverrides): Promise<BigNumber>;

swappableBalanceOf(
user: string,
overrides?: CallOverrides
): Promise<BigNumber>;

balanceOf(user: string, overrides?: CallOverrides): Promise<BigNumber>;
};

populateTransaction: {
Expand Down Expand Up @@ -366,5 +406,15 @@ export class VCow extends BaseContract {
usdcPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;

nativeTokenPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;

swappableBalanceOf(
user: string,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;

balanceOf(
user: string,
overrides?: CallOverrides
): Promise<PopulatedTransaction>;
};
}
86 changes: 46 additions & 40 deletions src/custom/abis/types/factories/GPv2Settlement__factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,86 +2,92 @@
/* tslint:disable */
/* eslint-disable */

import { Contract, Signer, utils } from 'ethers'
import { Provider } from '@ethersproject/providers'
import type { GPv2Settlement, GPv2SettlementInterface } from '../GPv2Settlement'
import { Contract, Signer, utils } from "ethers";
import { Provider } from "@ethersproject/providers";
import type {
GPv2Settlement,
GPv2SettlementInterface,
} from "../GPv2Settlement";

const _abi = [
{
anonymous: false,
inputs: [
{
indexed: true,
internalType: 'address',
name: 'owner',
type: 'address',
internalType: "address",
name: "owner",
type: "address",
},
{
indexed: false,
internalType: 'contract IERC20',
name: 'sellToken',
type: 'address',
internalType: "contract IERC20",
name: "sellToken",
type: "address",
},
{
indexed: false,
internalType: 'contract IERC20',
name: 'buyToken',
type: 'address',
internalType: "contract IERC20",
name: "buyToken",
type: "address",
},
{
indexed: false,
internalType: 'uint256',
name: 'sellAmount',
type: 'uint256',
internalType: "uint256",
name: "sellAmount",
type: "uint256",
},
{
indexed: false,
internalType: 'uint256',
name: 'buyAmount',
type: 'uint256',
internalType: "uint256",
name: "buyAmount",
type: "uint256",
},
{
indexed: false,
internalType: 'uint256',
name: 'feeAmount',
type: 'uint256',
internalType: "uint256",
name: "feeAmount",
type: "uint256",
},
{
indexed: false,
internalType: 'bytes',
name: 'orderUid',
type: 'bytes',
internalType: "bytes",
name: "orderUid",
type: "bytes",
},
],
name: 'Trade',
type: 'event',
name: "Trade",
type: "event",
},
{
inputs: [
{
internalType: 'bytes',
name: 'orderUid',
type: 'bytes',
internalType: "bytes",
name: "orderUid",
type: "bytes",
},
{
internalType: 'bool',
name: 'signed',
type: 'bool',
internalType: "bool",
name: "signed",
type: "bool",
},
],
name: 'setPreSignature',
name: "setPreSignature",
outputs: [],
stateMutability: 'nonpayable',
type: 'function',
stateMutability: "nonpayable",
type: "function",
},
]
];

export class GPv2Settlement__factory {
static readonly abi = _abi
static readonly abi = _abi;
static createInterface(): GPv2SettlementInterface {
return new utils.Interface(_abi) as GPv2SettlementInterface
return new utils.Interface(_abi) as GPv2SettlementInterface;
}
static connect(address: string, signerOrProvider: Signer | Provider): GPv2Settlement {
return new Contract(address, _abi, signerOrProvider) as GPv2Settlement
static connect(
address: string,
signerOrProvider: Signer | Provider
): GPv2Settlement {
return new Contract(address, _abi, signerOrProvider) as GPv2Settlement;
}
}
38 changes: 38 additions & 0 deletions src/custom/abis/types/factories/VCow__factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,44 @@ const _abi = [
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "user",
type: "address",
},
],
name: "swappableBalanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
{
inputs: [
{
internalType: "address",
name: "user",
type: "address",
},
],
name: "balanceOf",
outputs: [
{
internalType: "uint256",
name: "",
type: "uint256",
},
],
stateMutability: "view",
type: "function",
},
];

export class VCow__factory {
Expand Down
11 changes: 5 additions & 6 deletions src/custom/abis/types/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
/* Autogenerated file. Do not edit manually. */
/* tslint:disable */
/* eslint-disable */
export type { GPv2Settlement } from './GPv2Settlement'
export type { VCow } from './VCow'
export type { GPv2Settlement } from "./GPv2Settlement";
export type { VCow } from "./VCow";

export { GPv2Settlement__factory } from './factories/GPv2Settlement__factory'
export { VCow__factory } from './factories/VCow__factory'

export * from '@src/abis/types'
export { GPv2Settlement__factory } from "./factories/GPv2Settlement__factory";
export { VCow__factory } from "./factories/VCow__factory";
export * from "@src/abis/types";
38 changes: 38 additions & 0 deletions src/custom/abis/vCow.json
Original file line number Diff line number Diff line change
Expand Up @@ -200,5 +200,43 @@
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "swappableBalanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
]
6 changes: 6 additions & 0 deletions src/custom/constants/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,12 @@ export const V_COW_CONTRACT_ADDRESS: Record<number, string> = {
[ChainId.RINKEBY]: '0x5Bf4d1f8d1cB35E0aeA69B220beb97b8807504eA',
}

export const COW_CONTRACT_ADDRESS: Record<number, string> = {
[ChainId.MAINNET]: '0xDEf1CA1fb7FBcDC777520aa7f396b4E015F497aB',
[ChainId.XDAI]: '0x177127622c4A00F3d409B75571e12cB3c8973d3c',
[ChainId.RINKEBY]: '0x263D0C7a63D25564cFDc299C97Fd92A61B5fc7d1',
}

// See https://github.com/gnosis/gp-v2-contracts/commit/821b5a8da213297b0f7f1d8b17c893c5627020af#diff-12bbbe13cd5cf42d639e34a39d8795021ba40d3ee1e1a8282df652eb161a11d6R13
export const NATIVE_CURRENCY_BUY_ADDRESS = '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE'
export const NATIVE_CURRENCY_BUY_TOKEN: { [chainId in ChainId | number]: Token } = {
Expand Down
Loading

0 comments on commit 54406f9

Please sign in to comment.