mirror of
https://github.com/oceanprotocol/ocean-subgraph.git
synced 2024-12-02 05:57:29 +01:00
basic events
This commit is contained in:
parent
dd238aa614
commit
b39ecb6e12
@ -1,4 +1,4 @@
|
||||
|
||||
node_modules
|
||||
data
|
||||
src/types
|
||||
src/@types
|
||||
|
2986
abis/BFactory.json
2986
abis/BFactory.json
File diff suppressed because one or more lines are too long
1526
abis/BPool.json
1526
abis/BPool.json
File diff suppressed because it is too large
Load Diff
13920
abis/BToken.json
13920
abis/BToken.json
File diff suppressed because one or more lines are too long
4527
abis/DTFactory.json
4527
abis/DTFactory.json
File diff suppressed because one or more lines are too long
@ -1,679 +0,0 @@
|
||||
[
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "approve",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "totalSupply",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "sender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "recipient",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "transferFrom",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "BASE_MARKET_FEE_PERCENTAGE",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "addedValue",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "increaseAllowance",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "balanceOf",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "subtractedValue",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "decreaseAllowance",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "recipient",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "transfer",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "BASE_COMMUNITY_FEE_PERCENTAGE",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "allowance",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "BASE",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"inputs": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "symbol",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "minterAddress",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "cap",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"name": "blob",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "feeCollector",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "constructor"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "consumer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "payer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "serviceId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "timestamp",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "mrktFeeCollector",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "marketFee",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "OrderStarted",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "orderTxId",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "consumer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "serviceId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "provider",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "timestamp",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "OrderFinished",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "currentMinter",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "newMinter",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "MinterProposed",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "currentMinter",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "newMinter",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "MinterApproved",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "from",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "to",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "Transfer",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "Approval",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "symbol",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "minterAddress",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "cap",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"name": "blob",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"name": "feeCollector",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "initialize",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "mint",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "consumer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"name": "serviceId",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"name": "mrktFeeCollector",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "startOrder",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "orderTxId",
|
||||
"type": "bytes32"
|
||||
},
|
||||
{
|
||||
"name": "consumer",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"name": "serviceId",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "finishOrder",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "newMinter",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "proposeMinter",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [],
|
||||
"name": "approveMinter",
|
||||
"outputs": [],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "name",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "symbol",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "blob",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "decimals",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint8"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "cap",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "account",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "isMinter",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "minter",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "isInitialized",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "amount",
|
||||
"type": "uint256"
|
||||
},
|
||||
{
|
||||
"name": "feePercentage",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "calculateFee",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "pure",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
17468
abis/Dispenser.json
17468
abis/Dispenser.json
File diff suppressed because one or more lines are too long
222
abis/ERC20.json
222
abis/ERC20.json
@ -1,222 +0,0 @@
|
||||
[
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "name",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "_spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "_value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "approve",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "totalSupply",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "_from",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "_to",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "_value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "transferFrom",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "decimals",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint8"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "_owner",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "balanceOf",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "balance",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "symbol",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": false,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "_to",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "_value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "transfer",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "bool"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "nonpayable",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [
|
||||
{
|
||||
"name": "_owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"name": "_spender",
|
||||
"type": "address"
|
||||
}
|
||||
],
|
||||
"name": "allowance",
|
||||
"outputs": [
|
||||
{
|
||||
"name": "",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
},
|
||||
{
|
||||
"payable": true,
|
||||
"stateMutability": "payable",
|
||||
"type": "fallback"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "owner",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "spender",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "Approval",
|
||||
"type": "event"
|
||||
},
|
||||
{
|
||||
"anonymous": false,
|
||||
"inputs": [
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "from",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": true,
|
||||
"name": "to",
|
||||
"type": "address"
|
||||
},
|
||||
{
|
||||
"indexed": false,
|
||||
"name": "value",
|
||||
"type": "uint256"
|
||||
}
|
||||
],
|
||||
"name": "Transfer",
|
||||
"type": "event"
|
||||
}
|
||||
]
|
@ -1,17 +0,0 @@
|
||||
[
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "name",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
@ -1,17 +0,0 @@
|
||||
[
|
||||
{
|
||||
"constant": true,
|
||||
"inputs": [],
|
||||
"name": "symbol",
|
||||
"outputs": [
|
||||
{
|
||||
"internalType": "bytes32",
|
||||
"name": "",
|
||||
"type": "bytes32"
|
||||
}
|
||||
],
|
||||
"payable": false,
|
||||
"stateMutability": "view",
|
||||
"type": "function"
|
||||
}
|
||||
]
|
1174
abis/ERC20Template.json
Normal file
1174
abis/ERC20Template.json
Normal file
File diff suppressed because one or more lines are too long
1095
abis/ERC721Factory.json
Normal file
1095
abis/ERC721Factory.json
Normal file
File diff suppressed because one or more lines are too long
790
abis/FactoryRouter.json
Normal file
790
abis/FactoryRouter.json
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2392
abis/Metadata.json
2392
abis/Metadata.json
File diff suppressed because it is too large
Load Diff
@ -17,7 +17,7 @@ services:
|
||||
postgres_pass: let-me-in
|
||||
postgres_db: graph-node
|
||||
ipfs: 'ipfs:5001'
|
||||
ethereum: 'rinkeby:https://rinkeby.infura.io/v3/${INFURA_PROJECT_ID}'
|
||||
ethereum: 'barge:http://172.15.0.3:8545'
|
||||
RUST_LOG: info
|
||||
ipfs:
|
||||
image: ipfs/go-ipfs:v0.4.23
|
||||
|
541
package-lock.json
generated
541
package-lock.json
generated
@ -22,7 +22,7 @@
|
||||
"auto-changelog": "^2.3.0",
|
||||
"chai": "^4.3.4",
|
||||
"chai-spies": "^1.0.0",
|
||||
"eslint": "^8.0.1",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-config-oceanprotocol": "^1.5.0",
|
||||
"eslint-config-prettier": "^8.3.0",
|
||||
"eslint-plugin-import": "^2.24.2",
|
||||
@ -1284,14 +1284,14 @@
|
||||
"deprecated": "Please use @ensdomains/ens-contracts"
|
||||
},
|
||||
"node_modules/@eslint/eslintrc": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz",
|
||||
"integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==",
|
||||
"version": "0.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
|
||||
"integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.0.0",
|
||||
"debug": "^4.1.1",
|
||||
"espree": "^7.3.0",
|
||||
"globals": "^13.9.0",
|
||||
"ignore": "^4.0.6",
|
||||
"import-fresh": "^3.2.1",
|
||||
@ -1300,7 +1300,7 @@
|
||||
"strip-json-comments": "^3.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
"node": "^10.12.0 || >=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ethereum-navigator/atlas": {
|
||||
@ -3704,9 +3704,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@humanwhocodes/config-array": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
|
||||
"integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==",
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
|
||||
"integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@humanwhocodes/object-schema": "^1.2.0",
|
||||
@ -11104,6 +11104,15 @@
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/astral-regex": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
|
||||
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/async": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
||||
@ -15101,36 +15110,37 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.0.1.tgz",
|
||||
"integrity": "sha512-LsgcwZgQ72vZ+SMp4K6pAnk2yFDWL7Ti4pJaRvsZ0Hsw2h8ZjUIW38a9AFn2cZXdBMlScMFYYgsSp4ttFI/0bA==",
|
||||
"version": "7.32.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
|
||||
"integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint/eslintrc": "^1.0.3",
|
||||
"@humanwhocodes/config-array": "^0.6.0",
|
||||
"@babel/code-frame": "7.12.11",
|
||||
"@eslint/eslintrc": "^0.4.3",
|
||||
"@humanwhocodes/config-array": "^0.5.0",
|
||||
"ajv": "^6.10.0",
|
||||
"chalk": "^4.0.0",
|
||||
"cross-spawn": "^7.0.2",
|
||||
"debug": "^4.3.2",
|
||||
"debug": "^4.0.1",
|
||||
"doctrine": "^3.0.0",
|
||||
"enquirer": "^2.3.5",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"eslint-scope": "^6.0.0",
|
||||
"eslint-utils": "^3.0.0",
|
||||
"eslint-visitor-keys": "^3.0.0",
|
||||
"espree": "^9.0.0",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"eslint-utils": "^2.1.0",
|
||||
"eslint-visitor-keys": "^2.0.0",
|
||||
"espree": "^7.3.1",
|
||||
"esquery": "^1.4.0",
|
||||
"esutils": "^2.0.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"file-entry-cache": "^6.0.1",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
"glob-parent": "^6.0.1",
|
||||
"glob-parent": "^5.1.2",
|
||||
"globals": "^13.6.0",
|
||||
"ignore": "^4.0.6",
|
||||
"import-fresh": "^3.0.0",
|
||||
"imurmurhash": "^0.1.4",
|
||||
"is-glob": "^4.0.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
"json-stable-stringify-without-jsonify": "^1.0.1",
|
||||
"levn": "^0.4.1",
|
||||
"lodash.merge": "^4.6.2",
|
||||
@ -15138,10 +15148,11 @@
|
||||
"natural-compare": "^1.4.0",
|
||||
"optionator": "^0.9.1",
|
||||
"progress": "^2.0.0",
|
||||
"regexpp": "^3.2.0",
|
||||
"regexpp": "^3.1.0",
|
||||
"semver": "^7.2.1",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"strip-json-comments": "^3.1.0",
|
||||
"table": "^6.0.9",
|
||||
"text-table": "^0.2.0",
|
||||
"v8-compile-cache": "^2.0.3"
|
||||
},
|
||||
@ -15149,7 +15160,7 @@
|
||||
"eslint": "bin/eslint.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
"node": "^10.12.0 || >=12.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/eslint"
|
||||
@ -16365,12 +16376,6 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/argparse": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/eslint/node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
@ -16387,71 +16392,28 @@
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/eslint-scope": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz",
|
||||
"integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==",
|
||||
"node_modules/eslint/node_modules/eslint-utils": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
|
||||
"integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esrecurse": "^4.3.0",
|
||||
"estraverse": "^5.2.0"
|
||||
"eslint-visitor-keys": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
"node": ">=6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/mysticatea"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/eslint-visitor-keys": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
|
||||
"integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
|
||||
"node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
|
||||
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/estraverse": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
|
||||
"integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-glob": "^4.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"is-extglob": "^2.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/js-yaml": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"argparse": "^2.0.1"
|
||||
},
|
||||
"bin": {
|
||||
"js-yaml": "bin/js-yaml.js"
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint/node_modules/strip-ansi": {
|
||||
@ -16467,38 +16429,26 @@
|
||||
}
|
||||
},
|
||||
"node_modules/espree": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz",
|
||||
"integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==",
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
|
||||
"integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"acorn": "^8.5.0",
|
||||
"acorn": "^7.4.0",
|
||||
"acorn-jsx": "^5.3.1",
|
||||
"eslint-visitor-keys": "^3.0.0"
|
||||
"eslint-visitor-keys": "^1.3.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/espree/node_modules/acorn": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
|
||||
"integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
"node": "^10.12.0 || >=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/espree/node_modules/eslint-visitor-keys": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
|
||||
"integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
|
||||
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/esprima": {
|
||||
@ -19459,9 +19409,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "13.11.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
|
||||
"integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
|
||||
"version": "13.12.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
|
||||
"integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"type-fest": "^0.20.2"
|
||||
@ -24108,6 +24058,12 @@
|
||||
"integrity": "sha1-j/TexTLYJIavWVc8OURZFOlEp/E=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.truncate": {
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
|
||||
"integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/lodash.uppercase": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz",
|
||||
@ -30754,6 +30710,32 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/slice-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
|
||||
"integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.0.0",
|
||||
"astral-regex": "^2.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/slice-ansi/node_modules/is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/snake-case": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz",
|
||||
@ -32074,6 +32056,104 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/table": {
|
||||
"version": "6.7.2",
|
||||
"resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz",
|
||||
"integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ajv": "^8.0.1",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"lodash.truncate": "^4.4.2",
|
||||
"slice-ansi": "^4.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
"strip-ansi": "^6.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/table/node_modules/ajv": {
|
||||
"version": "8.6.3",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz",
|
||||
"integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2",
|
||||
"uri-js": "^4.2.2"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/epoberezkin"
|
||||
}
|
||||
},
|
||||
"node_modules/table/node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/table/node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/table/node_modules/is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/table/node_modules/json-schema-traverse": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/table/node_modules/require-from-string": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/table/node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/table/node_modules/strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/taffydb": {
|
||||
"version": "2.7.3",
|
||||
"resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz",
|
||||
@ -37922,14 +38002,14 @@
|
||||
"integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA=="
|
||||
},
|
||||
"@eslint/eslintrc": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.3.tgz",
|
||||
"integrity": "sha512-DHI1wDPoKCBPoLZA3qDR91+3te/wDSc1YhKg3jR8NxKKRJq2hwHwcWv31cSwSYvIBrmbENoYMWcenW8uproQqg==",
|
||||
"version": "0.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
|
||||
"integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^6.12.4",
|
||||
"debug": "^4.3.2",
|
||||
"espree": "^9.0.0",
|
||||
"debug": "^4.1.1",
|
||||
"espree": "^7.3.0",
|
||||
"globals": "^13.9.0",
|
||||
"ignore": "^4.0.6",
|
||||
"import-fresh": "^3.2.1",
|
||||
@ -39899,9 +39979,9 @@
|
||||
}
|
||||
},
|
||||
"@humanwhocodes/config-array": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
|
||||
"integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==",
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
|
||||
"integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@humanwhocodes/object-schema": "^1.2.0",
|
||||
@ -46185,6 +46265,12 @@
|
||||
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
|
||||
"optional": true
|
||||
},
|
||||
"astral-regex": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
|
||||
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
|
||||
"dev": true
|
||||
},
|
||||
"async": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
|
||||
@ -49496,36 +49582,37 @@
|
||||
}
|
||||
},
|
||||
"eslint": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.0.1.tgz",
|
||||
"integrity": "sha512-LsgcwZgQ72vZ+SMp4K6pAnk2yFDWL7Ti4pJaRvsZ0Hsw2h8ZjUIW38a9AFn2cZXdBMlScMFYYgsSp4ttFI/0bA==",
|
||||
"version": "7.32.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
|
||||
"integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@eslint/eslintrc": "^1.0.3",
|
||||
"@humanwhocodes/config-array": "^0.6.0",
|
||||
"@babel/code-frame": "7.12.11",
|
||||
"@eslint/eslintrc": "^0.4.3",
|
||||
"@humanwhocodes/config-array": "^0.5.0",
|
||||
"ajv": "^6.10.0",
|
||||
"chalk": "^4.0.0",
|
||||
"cross-spawn": "^7.0.2",
|
||||
"debug": "^4.3.2",
|
||||
"debug": "^4.0.1",
|
||||
"doctrine": "^3.0.0",
|
||||
"enquirer": "^2.3.5",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"eslint-scope": "^6.0.0",
|
||||
"eslint-utils": "^3.0.0",
|
||||
"eslint-visitor-keys": "^3.0.0",
|
||||
"espree": "^9.0.0",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"eslint-utils": "^2.1.0",
|
||||
"eslint-visitor-keys": "^2.0.0",
|
||||
"espree": "^7.3.1",
|
||||
"esquery": "^1.4.0",
|
||||
"esutils": "^2.0.2",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"file-entry-cache": "^6.0.1",
|
||||
"functional-red-black-tree": "^1.0.1",
|
||||
"glob-parent": "^6.0.1",
|
||||
"glob-parent": "^5.1.2",
|
||||
"globals": "^13.6.0",
|
||||
"ignore": "^4.0.6",
|
||||
"import-fresh": "^3.0.0",
|
||||
"imurmurhash": "^0.1.4",
|
||||
"is-glob": "^4.0.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
"json-stable-stringify-without-jsonify": "^1.0.1",
|
||||
"levn": "^0.4.1",
|
||||
"lodash.merge": "^4.6.2",
|
||||
@ -49533,10 +49620,11 @@
|
||||
"natural-compare": "^1.4.0",
|
||||
"optionator": "^0.9.1",
|
||||
"progress": "^2.0.0",
|
||||
"regexpp": "^3.2.0",
|
||||
"regexpp": "^3.1.0",
|
||||
"semver": "^7.2.1",
|
||||
"strip-ansi": "^6.0.0",
|
||||
"strip-json-comments": "^3.1.0",
|
||||
"table": "^6.0.9",
|
||||
"text-table": "^0.2.0",
|
||||
"v8-compile-cache": "^2.0.3"
|
||||
},
|
||||
@ -49547,12 +49635,6 @@
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"dev": true
|
||||
},
|
||||
"argparse": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||
"dev": true
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
@ -49563,53 +49645,21 @@
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"eslint-scope": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-6.0.0.tgz",
|
||||
"integrity": "sha512-uRDL9MWmQCkaFus8RF5K9/L/2fn+80yoW3jkD53l4shjCh26fCtvJGasxjUqP5OT87SYTxCVA3BwTUzuELx9kA==",
|
||||
"eslint-utils": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
|
||||
"integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esrecurse": "^4.3.0",
|
||||
"estraverse": "^5.2.0"
|
||||
}
|
||||
"eslint-visitor-keys": "^1.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"eslint-visitor-keys": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
|
||||
"integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
|
||||
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
|
||||
"dev": true
|
||||
},
|
||||
"estraverse": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
|
||||
"integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
|
||||
"dev": true
|
||||
},
|
||||
"glob-parent": {
|
||||
"version": "6.0.2",
|
||||
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
|
||||
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-glob": "^4.0.3"
|
||||
}
|
||||
},
|
||||
"is-glob": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"is-extglob": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"js-yaml": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"argparse": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
@ -50520,26 +50570,20 @@
|
||||
"dev": true
|
||||
},
|
||||
"espree": {
|
||||
"version": "9.0.0",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-9.0.0.tgz",
|
||||
"integrity": "sha512-r5EQJcYZ2oaGbeR0jR0fFVijGOcwai07/690YRXLINuhmVeRY4UKSAsQPe/0BNuDgwP7Ophoc1PRsr2E3tkbdQ==",
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
|
||||
"integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"acorn": "^8.5.0",
|
||||
"acorn": "^7.4.0",
|
||||
"acorn-jsx": "^5.3.1",
|
||||
"eslint-visitor-keys": "^3.0.0"
|
||||
"eslint-visitor-keys": "^1.3.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"acorn": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.5.0.tgz",
|
||||
"integrity": "sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==",
|
||||
"dev": true
|
||||
},
|
||||
"eslint-visitor-keys": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.0.0.tgz",
|
||||
"integrity": "sha512-mJOZa35trBTb3IyRmo8xmKBZlxf+N7OnUl4+ZhJHs/r+0770Wh/LEACE2pqMGMe27G/4y8P2bYGk4J70IC5k1Q==",
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
|
||||
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@ -52937,9 +52981,9 @@
|
||||
}
|
||||
},
|
||||
"globals": {
|
||||
"version": "13.11.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz",
|
||||
"integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
|
||||
"version": "13.12.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
|
||||
"integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"type-fest": "^0.20.2"
|
||||
@ -56721,6 +56765,12 @@
|
||||
"integrity": "sha1-j/TexTLYJIavWVc8OURZFOlEp/E=",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.truncate": {
|
||||
"version": "4.4.2",
|
||||
"resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
|
||||
"integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
|
||||
"dev": true
|
||||
},
|
||||
"lodash.uppercase": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.uppercase/-/lodash.uppercase-4.3.0.tgz",
|
||||
@ -62144,6 +62194,25 @@
|
||||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
|
||||
"devOptional": true
|
||||
},
|
||||
"slice-ansi": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
|
||||
"integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-styles": "^4.0.0",
|
||||
"astral-regex": "^2.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"snake-case": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz",
|
||||
@ -63229,6 +63298,84 @@
|
||||
"node-fetch": "^2.6.1"
|
||||
}
|
||||
},
|
||||
"table": {
|
||||
"version": "6.7.2",
|
||||
"resolved": "https://registry.npmjs.org/table/-/table-6.7.2.tgz",
|
||||
"integrity": "sha512-UFZK67uvyNivLeQbVtkiUs8Uuuxv24aSL4/Vil2PJVtMgU8Lx0CYkP12uCGa3kjyQzOSgV1+z9Wkb82fCGsO0g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^8.0.1",
|
||||
"lodash.clonedeep": "^4.5.0",
|
||||
"lodash.truncate": "^4.4.2",
|
||||
"slice-ansi": "^4.0.0",
|
||||
"string-width": "^4.2.3",
|
||||
"strip-ansi": "^6.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"ajv": {
|
||||
"version": "8.6.3",
|
||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.3.tgz",
|
||||
"integrity": "sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fast-deep-equal": "^3.1.1",
|
||||
"json-schema-traverse": "^1.0.0",
|
||||
"require-from-string": "^2.0.2",
|
||||
"uri-js": "^4.2.2"
|
||||
}
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"dev": true
|
||||
},
|
||||
"emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||
"dev": true
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"dev": true
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
|
||||
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
|
||||
"dev": true
|
||||
},
|
||||
"require-from-string": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
|
||||
"dev": true
|
||||
},
|
||||
"string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.1"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"taffydb": {
|
||||
"version": "2.7.3",
|
||||
"resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz",
|
||||
|
@ -8,10 +8,8 @@ type Token @entity {
|
||||
supply: BigDecimal #
|
||||
isDatatoken: Boolean! #
|
||||
|
||||
factory: DatatokenFactory #
|
||||
|
||||
owner: String # address of ERC721 that owns the token, valid only for datatokens
|
||||
minter: [String] # array of addresses with minter role, can be user wallet address, dispenser etc.
|
||||
minter: [User!] # array of addresses with minter role, can be user wallet address, dispenser etc.
|
||||
feeManager: String # TODO: maybe we change name , depends on audit results . It's the address that collects the payments (NOT fees)
|
||||
publishMarketFeeAddress: String # address of the market where the datatoken was created. This address collects market fees.
|
||||
publishMarketFeeToken: String # adreess of fee token (can be Ocean, ETH, etc.)
|
||||
@ -26,53 +24,35 @@ type Token @entity {
|
||||
block: Int # Block number when it was created
|
||||
}
|
||||
|
||||
type TokenValue {
|
||||
type TokenValuePair @entity {
|
||||
id : ID!
|
||||
token : Token!
|
||||
value : BigDecimal!
|
||||
}
|
||||
|
||||
type NftToken @entity{
|
||||
id: ID! #
|
||||
type Nft @entity{
|
||||
id: ID! # nft address
|
||||
symbol: String! #
|
||||
name: String! #
|
||||
address: String!
|
||||
tokenUri: String! #
|
||||
owner: String!
|
||||
|
||||
owner: String! # owner of the nft
|
||||
address: String! #
|
||||
providerUrl: String # provider url that can decrypt the ddo
|
||||
assetState: Int! # state of the asset (described in docs)
|
||||
|
||||
managerRole: [String]
|
||||
erc20DeployerRole: [String]
|
||||
storeUpdateRole: [String]
|
||||
metadataRole: [String] # addresses that can update the metadata
|
||||
}
|
||||
managerRole: [String!]
|
||||
erc20DeployerRole: [String!]
|
||||
storeUpdateRole: [String!]
|
||||
metadataRole: [String!] # addresses that can update the metadata
|
||||
|
||||
#TODO: do we need factories in general? We can move statistics on global object, check if we use them in a way
|
||||
type PoolFactory @entity {
|
||||
id: ID!
|
||||
totalValueLocked: [TokenValue] # total value locked represented in the base token
|
||||
totalLiquidity: [TokenValue] # total liquidity for each base token
|
||||
totalSwapVolume: [TokenValue] # total swap volume for each base token
|
||||
totalSwapFee: [TokenValue] # All the swap fee in Ocean
|
||||
|
||||
poolCount: Int! # Number of pools
|
||||
finalizedPoolCount: Int! # Number of finalized pools
|
||||
orderCount: BigInt # Number of total consumes
|
||||
totalOrderVolume: BigDecimal # probably remove due to inconsistencies and imposibility to calculate
|
||||
|
||||
pools: [Pool!] @derivedFrom(field: "factoryID")
|
||||
}
|
||||
|
||||
type DatatokenFactory @entity {
|
||||
id: ID!
|
||||
tokenCount: Int! # Number of datatokens
|
||||
datatokens: [Tokens!] @derivedFrom(field: "factory")
|
||||
template: String! # template address
|
||||
createTime: Int! # Block time pool was created
|
||||
tx: Bytes # Pool creation transaction id
|
||||
block: Int # Block number when it was created
|
||||
}
|
||||
|
||||
type Pool @entity {
|
||||
id: ID! # Pool address
|
||||
poolFactory: PoolFactory! # Pool factory
|
||||
owner: String! # Owner address, pool controller
|
||||
|
||||
isPublicSwap: Boolean! # if swap/trade is activated, probably always true
|
||||
@ -86,16 +66,16 @@ type Pool @entity {
|
||||
poolFee: BigDecimal! # Pool Fee percent, fee goes to all liquidity providers : SWAP, JOIN , EXIT
|
||||
opfFee: BigDecimal! # OPF Fee percent, fee that goes to Ocean Protocol Foundation : SWAP
|
||||
marketFee: BigDecimal! # Market fee percent, fee that goes to the market where the pool was created : SWAP
|
||||
totalPoolFee: [TokenValue!]! # actual value of fee collected in both tokens
|
||||
totalOpfFee: [TokenValue!]! # actual value of fee collected in both tokens
|
||||
totalMarketFee: [TokenValue!]! # actual value of fee collected in both tokens
|
||||
totalPoolFee: [TokenValuePair!]! # actual value of fee collected in both tokens
|
||||
totalOpfFee: [TokenValuePair!]! # actual value of fee collected in both tokens
|
||||
totalMarketFee: [TokenValuePair!]! # actual value of fee collected in both tokens
|
||||
|
||||
currentOpfFee: [TokenValue!]! # fee after collection totalFee - colectedFee
|
||||
currentMarketFee: [TokenValue!]! # fee after collection totalFee - colectedFee
|
||||
currentOpfFee: [TokenValuePair!]! # fee after collection totalFee - colectedFee
|
||||
currentMarketFee: [TokenValuePair!]! # fee after collection totalFee - colectedFee
|
||||
|
||||
totalWeight: BigDecimal! # it's always 100
|
||||
totalShares: BigDecimal! # Total pool token shares
|
||||
totalSwapVolume: [TokenValue!]! # total tokens that were swaped
|
||||
totalSwapVolume: [TokenValuePair!]! # total tokens that were swaped
|
||||
|
||||
spotPrice: BigDecimal! # spot price
|
||||
|
||||
@ -109,8 +89,8 @@ type Pool @entity {
|
||||
block: Int # Block number when it was created
|
||||
|
||||
# split in basetokne and datatoken like in fre
|
||||
tokens: [PoolToken!] @derivedFrom(field: "poolId")
|
||||
shares: [PoolShare!] @derivedFrom(field: "poolId")
|
||||
tokens: [PoolToken!] @derivedFrom(field: "pool")
|
||||
shares: [PoolShare!] @derivedFrom(field: "pool")
|
||||
transactions: [PoolTransaction!] @derivedFrom(field: "pool")
|
||||
}
|
||||
|
||||
@ -152,7 +132,7 @@ type PoolTransaction @entity {
|
||||
gasPrice: BigDecimal!
|
||||
|
||||
# change to baseToken and dataToken
|
||||
tokens: [TokenValue!] # tokens transfered , if value is negative it means it was removed.
|
||||
tokens: [TokenValuePair!] # tokens transfered , if value is negative it means it was removed.
|
||||
}
|
||||
|
||||
type Order @entity { # renamed from TokenOrder to Order
|
||||
@ -196,7 +176,7 @@ type TokenTransaction @entity {
|
||||
type User @entity {
|
||||
id: ID!
|
||||
sharesOwned: [PoolShare!] @derivedFrom(field: "user")
|
||||
tokenBalancesOwned: [TokenValue!]
|
||||
tokenBalancesOwned: [TokenValuePair!]
|
||||
tokensOwned: [Token!] @derivedFrom(field: "minter")
|
||||
poolTransactions: [PoolTransaction!] @derivedFrom(field: "user")
|
||||
orders: [Order!] @derivedFrom(field: "payer")
|
||||
@ -205,7 +185,7 @@ type User @entity {
|
||||
|
||||
type FixedRateExchange @entity {
|
||||
id: ID! # fixed rate exchange id
|
||||
exchangeOwner: User!
|
||||
owner: User!
|
||||
datatoken: Token!
|
||||
baseToken: Token!
|
||||
price: BigDecimal!
|
||||
@ -263,7 +243,7 @@ type Dispenser @entity {
|
||||
maxBalance: BigDecimal! # max balance of requester. If the balance is higher, the dispense is rejected
|
||||
balance: BigDecimal! # how many tokens are left
|
||||
|
||||
dispenses: [DispenserTransaction!] @derivedFrom(field: "dispenserId")
|
||||
dispenses: [DispenserTransaction!] @derivedFrom(field: "dispenser")
|
||||
}
|
||||
|
||||
type DispenserTransaction @entity {
|
||||
@ -300,20 +280,21 @@ type PoolSnapshotTokenValue @entity {
|
||||
type Global @entity {
|
||||
id: ID!
|
||||
|
||||
totalValueLocked: [TokenValuePair] # total value locked represented in the base token , basically 2x liqudity for each base token
|
||||
totalLiquidity: [TokenValuePair] # total liquidity for each base token
|
||||
totalSwapVolume: [TokenValuePair] # total swap volume for each base token. pools and fre
|
||||
totalValueLocked: [TokenValuePair!] # total value locked represented in the base token , basically 2x liqudity for each base token
|
||||
totalLiquidity: [TokenValuePair!] # total liquidity for each base token
|
||||
totalSwapVolume: [TokenValuePair!] # total swap volume for each base token. pools and fre
|
||||
|
||||
orderCount: BigInt # Number of total consumes, pools + fre
|
||||
|
||||
poolCount: Int! # Number of pools for all factories
|
||||
finalizedPoolCount: Int! # Number of finalized pools for all factories
|
||||
totalOrderVolume: BigDecimal # probably remove due to inconsistencies and imposibility to calculate
|
||||
}
|
||||
|
||||
|
||||
type MetadataUpdate @entity {
|
||||
id: ID! # update tx + datatokenAddress
|
||||
datatokenId: Datatoken!
|
||||
datatoken: Token!
|
||||
|
||||
datatokenAddress: String!
|
||||
userAddress: String!
|
||||
|
@ -4,46 +4,25 @@ var fs = require('fs')
|
||||
async function replaceContractAddresses() {
|
||||
// load barge addresses first
|
||||
try {
|
||||
const data = JSON.parse(fs.readFileSync(process.env.ADDRESS_FILE, 'utf8'))
|
||||
const data = JSON.parse(
|
||||
fs.readFileSync(
|
||||
'/home/mihai/.ocean/ocean-contracts/artifacts/address.json',
|
||||
'utf8'
|
||||
)
|
||||
)
|
||||
const {
|
||||
DTFactory,
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
BFactory,
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
FixedRateExchange,
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
Metadata,
|
||||
// eslint-disable-next-line no-unused-vars
|
||||
Dispenser
|
||||
ERC721Factory
|
||||
} = data.development
|
||||
let subgraph = fs.readFileSync('subgraph.yaml', 'utf8')
|
||||
if (!data) {
|
||||
return false
|
||||
}
|
||||
// BFactory
|
||||
// ERC721Factory
|
||||
subgraph = subgraph.replace(
|
||||
/0xbe0083053744ECb871510C88dC0f6b77Da162706/g,
|
||||
BFactory
|
||||
)
|
||||
// dt factory
|
||||
subgraph = subgraph.replace(
|
||||
/0x57317f97E9EA49eBd19f7c9bB7c180b8cDcbDeB9/g,
|
||||
DTFactory
|
||||
)
|
||||
// metadata
|
||||
subgraph = subgraph.replace(
|
||||
/0x1a4b70d8c9DcA47cD6D0Fb3c52BB8634CA1C0Fdf/g,
|
||||
Metadata
|
||||
)
|
||||
// fixed rate exchgage
|
||||
subgraph = subgraph.replace(
|
||||
/0x608d05214E42722B94a54cF6114d4840FCfF84e1/g,
|
||||
FixedRateExchange
|
||||
)
|
||||
// dispenser
|
||||
subgraph = subgraph.replace(
|
||||
/0xDEfD0018969cd2d4E648209F876ADe184815f038/g,
|
||||
Dispenser
|
||||
/0x17d55A3501999FFBF9b0623cDB258611419d01F5/g,
|
||||
ERC721Factory
|
||||
)
|
||||
// network
|
||||
subgraph = subgraph.replace(/network: mainnet/g, 'network: barge')
|
||||
|
733
src/helpers.ts
733
src/helpers.ts
@ -1,31 +1,4 @@
|
||||
import {
|
||||
BigDecimal,
|
||||
BigInt,
|
||||
Bytes,
|
||||
dataSource,
|
||||
Address,
|
||||
ethereum,
|
||||
log
|
||||
} from '@graphprotocol/graph-ts'
|
||||
|
||||
import {
|
||||
Pool as PoolEntity,
|
||||
User,
|
||||
PoolToken,
|
||||
PoolShare,
|
||||
PoolTransaction,
|
||||
PoolFactory,
|
||||
Datatoken,
|
||||
TokenBalance,
|
||||
TokenTransaction,
|
||||
PoolTransactionTokenValues,
|
||||
Global
|
||||
} from './@types/schema'
|
||||
|
||||
import { Pool } from './@types/templates/Pool/Pool'
|
||||
import { ERC20 } from './@types/templates/Pool/ERC20'
|
||||
import { ERC20SymbolBytes } from './@types/templates/Pool/ERC20SymbolBytes'
|
||||
import { ERC20NameBytes } from './@types/templates/Pool/ERC20NameBytes'
|
||||
import { BigDecimal, BigInt, dataSource } from '@graphprotocol/graph-ts'
|
||||
|
||||
export const ZERO_BD = BigDecimal.fromString('0.0')
|
||||
export const MINUS_1_BD = BigDecimal.fromString('-1.0')
|
||||
@ -62,36 +35,36 @@ export function getOceanAddress(): string {
|
||||
|
||||
export const OCEAN: string = getOceanAddress()
|
||||
|
||||
export function getGlobalStats(): Global {
|
||||
let gStats: Global | null = Global.load('1')
|
||||
if (gStats == null) {
|
||||
gStats = new Global('1')
|
||||
gStats.totalOceanLiquidity = ZERO_BD
|
||||
gStats.totalSwapVolume = ZERO_BD
|
||||
gStats.totalValueLocked = ZERO_BD
|
||||
gStats.totalOrderVolume = ZERO_BD
|
||||
gStats.orderCount = BigInt.fromI32(0)
|
||||
gStats.poolCount = 0
|
||||
}
|
||||
// export function getGlobalStats(): Global {
|
||||
// let gStats: Global | null = Global.load('1')
|
||||
// if (gStats == null) {
|
||||
// gStats = new Global('1')
|
||||
// gStats.totalOceanLiquidity = ZERO_BD
|
||||
// gStats.totalSwapVolume = ZERO_BD
|
||||
// gStats.totalValueLocked = ZERO_BD
|
||||
// gStats.totalOrderVolume = ZERO_BD
|
||||
// gStats.orderCount = BigInt.fromI32(0)
|
||||
// gStats.poolCount = 0
|
||||
// }
|
||||
|
||||
return gStats
|
||||
}
|
||||
// return gStats
|
||||
// }
|
||||
|
||||
export function hexToDecimal(hexString: string, decimals: i32): BigDecimal {
|
||||
const bytes = Bytes.fromHexString(hexString.toString()).reverse() as Bytes
|
||||
const bi = BigInt.fromUnsignedBytes(bytes)
|
||||
const scale = BigInt.fromI32(10)
|
||||
.pow(decimals as u8)
|
||||
.toBigDecimal()
|
||||
return bi.divDecimal(scale)
|
||||
}
|
||||
// export function hexToDecimal(hexString: string, decimals: i32): BigDecimal {
|
||||
// const bytes = Bytes.fromHexString(hexString.toString()).reverse() as Bytes
|
||||
// const bi = BigInt.fromUnsignedBytes(bytes)
|
||||
// const scale = BigInt.fromI32(10)
|
||||
// .pow(decimals as u8)
|
||||
// .toBigDecimal()
|
||||
// return bi.divDecimal(scale)
|
||||
// }
|
||||
|
||||
export function bigIntToDecimal(amount: BigInt, decimals: i32): BigDecimal {
|
||||
const scale = BigInt.fromI32(10)
|
||||
.pow(decimals as u8)
|
||||
.toBigDecimal()
|
||||
return amount.toBigDecimal().div(scale)
|
||||
}
|
||||
// export function bigIntToDecimal(amount: BigInt, decimals: i32): BigDecimal {
|
||||
// const scale = BigInt.fromI32(10)
|
||||
// .pow(decimals as u8)
|
||||
// .toBigDecimal()
|
||||
// return amount.toBigDecimal().div(scale)
|
||||
// }
|
||||
|
||||
export function tokenToDecimal(amount: BigDecimal, decimals: i32): BigDecimal {
|
||||
const scale = BigInt.fromI32(10)
|
||||
@ -100,379 +73,379 @@ export function tokenToDecimal(amount: BigDecimal, decimals: i32): BigDecimal {
|
||||
return amount.div(scale)
|
||||
}
|
||||
|
||||
export function decimalToBigInt(value: BigDecimal): BigInt {
|
||||
value.truncate(18)
|
||||
const scale = BigInt.fromI32(10).pow((value.exp.toI32() + 18) as u8)
|
||||
return value.digits.times(scale)
|
||||
}
|
||||
// export function decimalToBigInt(value: BigDecimal): BigInt {
|
||||
// value.truncate(18)
|
||||
// const scale = BigInt.fromI32(10).pow((value.exp.toI32() + 18) as u8)
|
||||
// return value.digits.times(scale)
|
||||
// }
|
||||
|
||||
export function isNullEthValue(value: string): boolean {
|
||||
return (
|
||||
value ==
|
||||
'0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||
)
|
||||
}
|
||||
// export function isNullEthValue(value: string): boolean {
|
||||
// return (
|
||||
// value ==
|
||||
// '0x0000000000000000000000000000000000000000000000000000000000000001'
|
||||
// )
|
||||
// }
|
||||
|
||||
export function getTokenSymbol(tokenAddress: Address): string {
|
||||
const contract = ERC20.bind(tokenAddress)
|
||||
const contractSymbolBytes = ERC20SymbolBytes.bind(tokenAddress)
|
||||
// export function getTokenSymbol(tokenAddress: Address): string {
|
||||
// const contract = ERC20.bind(tokenAddress)
|
||||
// const contractSymbolBytes = ERC20SymbolBytes.bind(tokenAddress)
|
||||
|
||||
// try types string and bytes32 for symbol
|
||||
let symbolValue = 'unknown'
|
||||
const symbolResult = contract.try_symbol()
|
||||
if (symbolResult.reverted) {
|
||||
const symbolResultBytes = contractSymbolBytes.try_symbol()
|
||||
if (!symbolResultBytes.reverted) {
|
||||
// for broken pairs that have no symbol function exposed
|
||||
if (!isNullEthValue(symbolResultBytes.value.toHexString())) {
|
||||
symbolValue = symbolResultBytes.value.toString()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
symbolValue = symbolResult.value
|
||||
}
|
||||
// // try types string and bytes32 for symbol
|
||||
// let symbolValue = 'unknown'
|
||||
// const symbolResult = contract.try_symbol()
|
||||
// if (symbolResult.reverted) {
|
||||
// const symbolResultBytes = contractSymbolBytes.try_symbol()
|
||||
// if (!symbolResultBytes.reverted) {
|
||||
// // for broken pairs that have no symbol function exposed
|
||||
// if (!isNullEthValue(symbolResultBytes.value.toHexString())) {
|
||||
// symbolValue = symbolResultBytes.value.toString()
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// symbolValue = symbolResult.value
|
||||
// }
|
||||
|
||||
return symbolValue
|
||||
}
|
||||
// return symbolValue
|
||||
// }
|
||||
|
||||
export function getTokenName(tokenAddress: Address): string {
|
||||
const contract = ERC20.bind(tokenAddress)
|
||||
const contractNameBytes = ERC20NameBytes.bind(tokenAddress)
|
||||
// export function getTokenName(tokenAddress: Address): string {
|
||||
// const contract = ERC20.bind(tokenAddress)
|
||||
// const contractNameBytes = ERC20NameBytes.bind(tokenAddress)
|
||||
|
||||
// try types string and bytes32 for name
|
||||
let nameValue = 'unknown'
|
||||
const nameResult = contract.try_name()
|
||||
if (nameResult.reverted) {
|
||||
const nameResultBytes = contractNameBytes.try_name()
|
||||
if (!nameResultBytes.reverted) {
|
||||
// for broken exchanges that have no name function exposed
|
||||
if (!isNullEthValue(nameResultBytes.value.toHexString())) {
|
||||
nameValue = nameResultBytes.value.toString()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
nameValue = nameResult.value
|
||||
}
|
||||
// // try types string and bytes32 for name
|
||||
// let nameValue = 'unknown'
|
||||
// const nameResult = contract.try_name()
|
||||
// if (nameResult.reverted) {
|
||||
// const nameResultBytes = contractNameBytes.try_name()
|
||||
// if (!nameResultBytes.reverted) {
|
||||
// // for broken exchanges that have no name function exposed
|
||||
// if (!isNullEthValue(nameResultBytes.value.toHexString())) {
|
||||
// nameValue = nameResultBytes.value.toString()
|
||||
// }
|
||||
// }
|
||||
// } else {
|
||||
// nameValue = nameResult.value
|
||||
// }
|
||||
|
||||
return nameValue
|
||||
}
|
||||
// return nameValue
|
||||
// }
|
||||
|
||||
export function getTokenDecimals(tokenAddress: Address): i32 {
|
||||
const contract = ERC20.bind(tokenAddress)
|
||||
let decimals = 18
|
||||
const decimalCall = contract.try_decimals()
|
||||
if (!decimalCall.reverted) {
|
||||
decimals = decimalCall.value
|
||||
}
|
||||
return decimals
|
||||
}
|
||||
// export function getTokenDecimals(tokenAddress: Address): i32 {
|
||||
// const contract = ERC20.bind(tokenAddress)
|
||||
// let decimals = 18
|
||||
// const decimalCall = contract.try_decimals()
|
||||
// if (!decimalCall.reverted) {
|
||||
// decimals = decimalCall.value
|
||||
// }
|
||||
// return decimals
|
||||
// }
|
||||
|
||||
export function updatePoolTokenBalance(
|
||||
poolToken: PoolToken,
|
||||
balance: BigDecimal,
|
||||
source: string
|
||||
): void {
|
||||
if (!poolToken) return
|
||||
if (balance < ZERO_BD || poolToken.balance < ZERO_BD) {
|
||||
poolToken.balance = balance
|
||||
}
|
||||
}
|
||||
// export function updatePoolTokenBalance(
|
||||
// poolToken: PoolToken,
|
||||
// balance: BigDecimal,
|
||||
// source: string
|
||||
// ): void {
|
||||
// if (!poolToken) return
|
||||
// if (balance < ZERO_BD || poolToken.balance < ZERO_BD) {
|
||||
// poolToken.balance = balance
|
||||
// }
|
||||
// }
|
||||
|
||||
export function createUserEntity(address: string): void {
|
||||
if (User.load(address) == null) {
|
||||
const user = new User(address)
|
||||
user.nrSales = 0
|
||||
user.save()
|
||||
}
|
||||
}
|
||||
// export function createUserEntity(address: string): void {
|
||||
// if (User.load(address) == null) {
|
||||
// const user = new User(address)
|
||||
// user.nrSales = 0
|
||||
// user.save()
|
||||
// }
|
||||
// }
|
||||
|
||||
export function createPoolShareEntity(
|
||||
id: string,
|
||||
pool: string,
|
||||
user: string
|
||||
): void {
|
||||
const poolShare = new PoolShare(id)
|
||||
// export function createPoolShareEntity(
|
||||
// id: string,
|
||||
// pool: string,
|
||||
// user: string
|
||||
// ): void {
|
||||
// const poolShare = new PoolShare(id)
|
||||
|
||||
createUserEntity(user)
|
||||
// createUserEntity(user)
|
||||
|
||||
poolShare.userAddress = user
|
||||
poolShare.poolId = pool
|
||||
poolShare.balance = ZERO_BD
|
||||
poolShare.save()
|
||||
}
|
||||
// poolShare.userAddress = user
|
||||
// poolShare.poolId = pool
|
||||
// poolShare.balance = ZERO_BD
|
||||
// poolShare.save()
|
||||
// }
|
||||
|
||||
export function createPoolTokenEntity(
|
||||
id: string,
|
||||
pool: string,
|
||||
address: Address
|
||||
): void {
|
||||
const datatoken = Datatoken.load(address.toHexString())
|
||||
// export function createPoolTokenEntity(
|
||||
// id: string,
|
||||
// pool: string,
|
||||
// address: Address
|
||||
// ): void {
|
||||
// const datatoken = Datatoken.load(address.toHexString())
|
||||
|
||||
const poolToken = new PoolToken(id)
|
||||
poolToken.poolId = pool
|
||||
poolToken.isDatatoken = !!datatoken
|
||||
poolToken.tokenId = datatoken ? datatoken.id : ''
|
||||
poolToken.address = address.toHexString()
|
||||
poolToken.balance = ZERO_BD
|
||||
poolToken.denormWeight = ZERO_BD
|
||||
poolToken.symbol = getTokenSymbol(address)
|
||||
poolToken.name = getTokenName(address)
|
||||
poolToken.decimals = getTokenDecimals(address)
|
||||
poolToken.save()
|
||||
}
|
||||
// const poolToken = new PoolToken(id)
|
||||
// poolToken.poolId = pool
|
||||
// poolToken.isDatatoken = !!datatoken
|
||||
// poolToken.tokenId = datatoken ? datatoken.id : ''
|
||||
// poolToken.address = address.toHexString()
|
||||
// poolToken.balance = ZERO_BD
|
||||
// poolToken.denormWeight = ZERO_BD
|
||||
// poolToken.symbol = getTokenSymbol(address)
|
||||
// poolToken.name = getTokenName(address)
|
||||
// poolToken.decimals = getTokenDecimals(address)
|
||||
// poolToken.save()
|
||||
// }
|
||||
|
||||
export function updatePoolTransactionToken(
|
||||
poolTx: string,
|
||||
poolTokenId: string,
|
||||
amount: BigDecimal,
|
||||
balance: BigDecimal,
|
||||
feeValue: BigDecimal
|
||||
): void {
|
||||
const ptx = PoolTransaction.load(poolTx)
|
||||
const poolToken = PoolToken.load(poolTokenId)
|
||||
// export function updatePoolTransactionToken(
|
||||
// poolTx: string,
|
||||
// poolTokenId: string,
|
||||
// amount: BigDecimal,
|
||||
// balance: BigDecimal,
|
||||
// feeValue: BigDecimal
|
||||
// ): void {
|
||||
// const ptx = PoolTransaction.load(poolTx)
|
||||
// const poolToken = PoolToken.load(poolTokenId)
|
||||
|
||||
if (!ptx) {
|
||||
log.error('Cannot load PoolTransaction {}', [poolTx])
|
||||
return
|
||||
}
|
||||
// if (!ptx) {
|
||||
// log.error('Cannot load PoolTransaction {}', [poolTx])
|
||||
// return
|
||||
// }
|
||||
|
||||
if (!poolToken) {
|
||||
log.error('Cannot load PoolToken {}', [poolTokenId])
|
||||
return
|
||||
}
|
||||
const pool = PoolEntity.load(poolToken.poolId)
|
||||
if (!pool) {
|
||||
log.error('Cannot load PoolEntity {}', [poolToken.poolId])
|
||||
return
|
||||
}
|
||||
const ptxTokenValuesId = poolTx.concat('-').concat(poolTokenId)
|
||||
let ptxTokenValues = PoolTransactionTokenValues.load(ptxTokenValuesId)
|
||||
if (ptxTokenValues == null) {
|
||||
ptxTokenValues = new PoolTransactionTokenValues(ptxTokenValuesId)
|
||||
log.warning('created PoolTransactionTokenValues for {}', [ptxTokenValuesId])
|
||||
}
|
||||
// if (!poolToken) {
|
||||
// log.error('Cannot load PoolToken {}', [poolTokenId])
|
||||
// return
|
||||
// }
|
||||
// const pool = PoolEntity.load(poolToken.poolId)
|
||||
// if (!pool) {
|
||||
// log.error('Cannot load PoolEntity {}', [poolToken.poolId])
|
||||
// return
|
||||
// }
|
||||
// const ptxTokenValuesId = poolTx.concat('-').concat(poolTokenId)
|
||||
// let ptxTokenValues = PoolTransactionTokenValues.load(ptxTokenValuesId)
|
||||
// if (ptxTokenValues == null) {
|
||||
// ptxTokenValues = new PoolTransactionTokenValues(ptxTokenValuesId)
|
||||
// log.warning('created PoolTransactionTokenValues for {}', [ptxTokenValuesId])
|
||||
// }
|
||||
|
||||
if (!ptxTokenValues) return
|
||||
// if (!ptxTokenValues) return
|
||||
|
||||
ptxTokenValues.txId = poolTx
|
||||
ptxTokenValues.poolToken = poolTokenId
|
||||
ptxTokenValues.poolAddress = poolToken.poolId
|
||||
const ptxUserAddress = ptx.userAddress
|
||||
ptxTokenValues.userAddress = ptxUserAddress ? ptxUserAddress : ''
|
||||
const poolTokenAddress = poolToken.address
|
||||
ptxTokenValues.tokenAddress = poolTokenAddress ? poolTokenAddress : ''
|
||||
// ptxTokenValues.txId = poolTx
|
||||
// ptxTokenValues.poolToken = poolTokenId
|
||||
// ptxTokenValues.poolAddress = poolToken.poolId
|
||||
// const ptxUserAddress = ptx.userAddress
|
||||
// ptxTokenValues.userAddress = ptxUserAddress ? ptxUserAddress : ''
|
||||
// const poolTokenAddress = poolToken.address
|
||||
// ptxTokenValues.tokenAddress = poolTokenAddress ? poolTokenAddress : ''
|
||||
|
||||
ptxTokenValues.value = amount
|
||||
ptxTokenValues.tokenReserve = balance
|
||||
ptxTokenValues.feeValue = feeValue
|
||||
if (amount.lt(ZERO_BD)) {
|
||||
ptxTokenValues.type = 'out'
|
||||
} else {
|
||||
ptxTokenValues.type = 'in'
|
||||
}
|
||||
// ptxTokenValues.value = amount
|
||||
// ptxTokenValues.tokenReserve = balance
|
||||
// ptxTokenValues.feeValue = feeValue
|
||||
// if (amount.lt(ZERO_BD)) {
|
||||
// ptxTokenValues.type = 'out'
|
||||
// } else {
|
||||
// ptxTokenValues.type = 'in'
|
||||
// }
|
||||
|
||||
ptxTokenValues.save()
|
||||
// ptxTokenValues.save()
|
||||
|
||||
if (ptxTokenValues.tokenAddress == OCEAN) {
|
||||
const factory = PoolFactory.load('1')
|
||||
if (factory !== null) {
|
||||
factory.totalOceanLiquidity = factory.totalOceanLiquidity
|
||||
.plus(ptxTokenValues.tokenReserve)
|
||||
.minus(pool.oceanReserve)
|
||||
// if (ptxTokenValues.tokenAddress == OCEAN) {
|
||||
// const factory = PoolFactory.load('1')
|
||||
// if (factory !== null) {
|
||||
// factory.totalOceanLiquidity = factory.totalOceanLiquidity
|
||||
// .plus(ptxTokenValues.tokenReserve)
|
||||
// .minus(pool.oceanReserve)
|
||||
|
||||
const gStats: Global = getGlobalStats()
|
||||
if (gStats !== null) {
|
||||
gStats.totalOceanLiquidity = factory.totalOceanLiquidity
|
||||
// const gStats: Global = getGlobalStats()
|
||||
// if (gStats !== null) {
|
||||
// gStats.totalOceanLiquidity = factory.totalOceanLiquidity
|
||||
|
||||
gStats.save()
|
||||
}
|
||||
// gStats.save()
|
||||
// }
|
||||
|
||||
ptx.oceanReserve = ptxTokenValues.tokenReserve
|
||||
pool.oceanReserve = ptxTokenValues.tokenReserve
|
||||
factory.save()
|
||||
}
|
||||
} else {
|
||||
ptx.datatokenReserve = ptxTokenValues.tokenReserve
|
||||
pool.datatokenReserve = ptxTokenValues.tokenReserve
|
||||
}
|
||||
ptx.save()
|
||||
pool.save()
|
||||
}
|
||||
// ptx.oceanReserve = ptxTokenValues.tokenReserve
|
||||
// pool.oceanReserve = ptxTokenValues.tokenReserve
|
||||
// factory.save()
|
||||
// }
|
||||
// } else {
|
||||
// ptx.datatokenReserve = ptxTokenValues.tokenReserve
|
||||
// pool.datatokenReserve = ptxTokenValues.tokenReserve
|
||||
// }
|
||||
// ptx.save()
|
||||
// pool.save()
|
||||
// }
|
||||
|
||||
export function calcSpotPrice(
|
||||
balanceIn: BigDecimal,
|
||||
wIn: BigDecimal,
|
||||
balanceOut: BigDecimal,
|
||||
wOut: BigDecimal,
|
||||
swapFee: BigDecimal
|
||||
): BigDecimal {
|
||||
if (balanceIn <= ZERO_BD || balanceOut <= ZERO_BD) return MINUS_1_BD
|
||||
// export function calcSpotPrice(
|
||||
// balanceIn: BigDecimal,
|
||||
// wIn: BigDecimal,
|
||||
// balanceOut: BigDecimal,
|
||||
// wOut: BigDecimal,
|
||||
// swapFee: BigDecimal
|
||||
// ): BigDecimal {
|
||||
// if (balanceIn <= ZERO_BD || balanceOut <= ZERO_BD) return MINUS_1_BD
|
||||
|
||||
const numer = balanceIn.div(wIn)
|
||||
const denom = balanceOut.div(wOut)
|
||||
if (denom <= ZERO_BD) return MINUS_1_BD
|
||||
// const numer = balanceIn.div(wIn)
|
||||
// const denom = balanceOut.div(wOut)
|
||||
// if (denom <= ZERO_BD) return MINUS_1_BD
|
||||
|
||||
const ratio = numer.div(denom)
|
||||
const scale = ONE_BD.div(ONE_BD.minus(swapFee))
|
||||
const price = ratio.times(scale)
|
||||
price.truncate(18)
|
||||
return price
|
||||
}
|
||||
// const ratio = numer.div(denom)
|
||||
// const scale = ONE_BD.div(ONE_BD.minus(swapFee))
|
||||
// const price = ratio.times(scale)
|
||||
// price.truncate(18)
|
||||
// return price
|
||||
// }
|
||||
|
||||
export function createPoolTransaction(
|
||||
event: ethereum.Event,
|
||||
// eslint-disable-next-line camelcase
|
||||
event_type: string,
|
||||
userAddress: string
|
||||
): void {
|
||||
const poolId = event.address.toHex()
|
||||
const pool = PoolEntity.load(poolId)
|
||||
if (!pool) return
|
||||
const ptx = event.transaction.hash.toHexString()
|
||||
// export function createPoolTransaction(
|
||||
// event: ethereum.Event,
|
||||
// // eslint-disable-next-line camelcase
|
||||
// event_type: string,
|
||||
// userAddress: string
|
||||
// ): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// const pool = PoolEntity.load(poolId)
|
||||
// if (!pool) return
|
||||
// const ptx = event.transaction.hash.toHexString()
|
||||
|
||||
const ocnToken = PoolToken.load(poolId.concat('-').concat(OCEAN))
|
||||
const dtToken = PoolToken.load(
|
||||
poolId.concat('-').concat(pool.datatokenAddress)
|
||||
)
|
||||
if (ocnToken == null || dtToken == null) {
|
||||
return
|
||||
}
|
||||
// const ocnToken = PoolToken.load(poolId.concat('-').concat(OCEAN))
|
||||
// const dtToken = PoolToken.load(
|
||||
// poolId.concat('-').concat(pool.datatokenAddress)
|
||||
// )
|
||||
// if (ocnToken == null || dtToken == null) {
|
||||
// return
|
||||
// }
|
||||
|
||||
let poolTx = PoolTransaction.load(ptx)
|
||||
if (poolTx != null) {
|
||||
return
|
||||
}
|
||||
poolTx = new PoolTransaction(ptx)
|
||||
// let poolTx = PoolTransaction.load(ptx)
|
||||
// if (poolTx != null) {
|
||||
// return
|
||||
// }
|
||||
// poolTx = new PoolTransaction(ptx)
|
||||
|
||||
poolTx.poolAddress = poolId
|
||||
poolTx.userAddress = userAddress
|
||||
poolTx.poolAddressStr = poolId
|
||||
poolTx.userAddressStr = userAddress
|
||||
// poolTx.poolAddress = poolId
|
||||
// poolTx.userAddress = userAddress
|
||||
// poolTx.poolAddressStr = poolId
|
||||
// poolTx.userAddressStr = userAddress
|
||||
|
||||
poolTx.sharesTransferAmount = ZERO_BD
|
||||
poolTx.sharesBalance = ZERO_BD
|
||||
// poolTx.sharesTransferAmount = ZERO_BD
|
||||
// poolTx.sharesBalance = ZERO_BD
|
||||
|
||||
// pool.datatokenReserve = dtToken.balance
|
||||
// pool.oceanReserve = ocnToken.balance
|
||||
// Initial reserve values, will be updated in `updatePoolTransactionToken`
|
||||
poolTx.datatokenReserve = dtToken.balance
|
||||
poolTx.oceanReserve = ocnToken.balance
|
||||
// // pool.datatokenReserve = dtToken.balance
|
||||
// // pool.oceanReserve = ocnToken.balance
|
||||
// // Initial reserve values, will be updated in `updatePoolTransactionToken`
|
||||
// poolTx.datatokenReserve = dtToken.balance
|
||||
// poolTx.oceanReserve = ocnToken.balance
|
||||
|
||||
const p = Pool.bind(Address.fromString(poolId))
|
||||
// const p = Pool.bind(Address.fromString(poolId))
|
||||
|
||||
const priceResult = p.try_calcInGivenOut(
|
||||
decimalToBigInt(ocnToken.balance),
|
||||
decimalToBigInt(ocnToken.denormWeight),
|
||||
decimalToBigInt(dtToken.balance),
|
||||
decimalToBigInt(dtToken.denormWeight),
|
||||
ONE_BASE_18,
|
||||
decimalToBigInt(pool.swapFee)
|
||||
)
|
||||
// const priceResult = p.try_calcInGivenOut(
|
||||
// decimalToBigInt(ocnToken.balance),
|
||||
// decimalToBigInt(ocnToken.denormWeight),
|
||||
// decimalToBigInt(dtToken.balance),
|
||||
// decimalToBigInt(dtToken.denormWeight),
|
||||
// ONE_BASE_18,
|
||||
// decimalToBigInt(pool.swapFee)
|
||||
// )
|
||||
|
||||
poolTx.consumePrice = priceResult.reverted
|
||||
? MINUS_1_BD
|
||||
: bigIntToDecimal(priceResult.value, 18)
|
||||
// poolTx.consumePrice = priceResult.reverted
|
||||
// ? MINUS_1_BD
|
||||
// : bigIntToDecimal(priceResult.value, 18)
|
||||
|
||||
const priceSpot = p.try_calcSpotPrice(
|
||||
decimalToBigInt(ocnToken.balance),
|
||||
decimalToBigInt(ocnToken.denormWeight),
|
||||
decimalToBigInt(dtToken.balance),
|
||||
decimalToBigInt(dtToken.denormWeight),
|
||||
decimalToBigInt(pool.swapFee)
|
||||
)
|
||||
poolTx.spotPrice = priceSpot.reverted
|
||||
? ZERO_BD
|
||||
: bigIntToDecimal(priceSpot.value, 18)
|
||||
// const priceSpot = p.try_calcSpotPrice(
|
||||
// decimalToBigInt(ocnToken.balance),
|
||||
// decimalToBigInt(ocnToken.denormWeight),
|
||||
// decimalToBigInt(dtToken.balance),
|
||||
// decimalToBigInt(dtToken.denormWeight),
|
||||
// decimalToBigInt(pool.swapFee)
|
||||
// )
|
||||
// poolTx.spotPrice = priceSpot.reverted
|
||||
// ? ZERO_BD
|
||||
// : bigIntToDecimal(priceSpot.value, 18)
|
||||
|
||||
pool.consumePrice = poolTx.consumePrice
|
||||
pool.spotPrice = poolTx.spotPrice
|
||||
const oldValueLocked = pool.valueLocked
|
||||
const spotPrice = pool.spotPrice >= ZERO_BD ? pool.spotPrice : ZERO_BD
|
||||
pool.valueLocked = poolTx.oceanReserve.plus(
|
||||
poolTx.datatokenReserve.times(spotPrice)
|
||||
)
|
||||
const factory = PoolFactory.load('1')
|
||||
if (!factory) return
|
||||
if (factory.totalValueLocked !== null) {
|
||||
const tvl = factory.totalValueLocked
|
||||
// pool.consumePrice = poolTx.consumePrice
|
||||
// pool.spotPrice = poolTx.spotPrice
|
||||
// const oldValueLocked = pool.valueLocked
|
||||
// const spotPrice = pool.spotPrice >= ZERO_BD ? pool.spotPrice : ZERO_BD
|
||||
// pool.valueLocked = poolTx.oceanReserve.plus(
|
||||
// poolTx.datatokenReserve.times(spotPrice)
|
||||
// )
|
||||
// const factory = PoolFactory.load('1')
|
||||
// if (!factory) return
|
||||
// if (factory.totalValueLocked !== null) {
|
||||
// const tvl = factory.totalValueLocked
|
||||
|
||||
factory.totalValueLocked = tvl
|
||||
? tvl.minus(oldValueLocked).plus(pool.valueLocked)
|
||||
: BigDecimal.fromString('0')
|
||||
}
|
||||
// factory.totalValueLocked = tvl
|
||||
// ? tvl.minus(oldValueLocked).plus(pool.valueLocked)
|
||||
// : BigDecimal.fromString('0')
|
||||
// }
|
||||
|
||||
const gStats: Global = getGlobalStats()
|
||||
if (gStats !== null) {
|
||||
gStats.totalValueLocked = factory.totalValueLocked
|
||||
gStats.save()
|
||||
}
|
||||
// const gStats: Global = getGlobalStats()
|
||||
// if (gStats !== null) {
|
||||
// gStats.totalValueLocked = factory.totalValueLocked
|
||||
// gStats.save()
|
||||
// }
|
||||
|
||||
pool.transactionCount = pool.transactionCount.plus(BigInt.fromI32(1))
|
||||
// pool.transactionCount = pool.transactionCount.plus(BigInt.fromI32(1))
|
||||
|
||||
pool.save()
|
||||
factory.save()
|
||||
// pool.save()
|
||||
// factory.save()
|
||||
|
||||
poolTx.tx = event.transaction.hash
|
||||
// eslint-disable-next-line camelcase
|
||||
poolTx.event = event_type
|
||||
poolTx.block = event.block.number.toI32()
|
||||
poolTx.timestamp = event.block.timestamp.toI32()
|
||||
// Property 'gasUsed' does not exist on type '~lib/@graphprotocol/graph-ts/chain/ethereum/ethereum.Transaction'
|
||||
// poolTx.gasUsed = event.transaction.gasUsed.toBigDecimal()
|
||||
poolTx.gasPrice = event.transaction.gasPrice.toBigDecimal()
|
||||
// poolTx.tx = event.transaction.hash
|
||||
// // eslint-disable-next-line camelcase
|
||||
// poolTx.event = event_type
|
||||
// poolTx.block = event.block.number.toI32()
|
||||
// poolTx.timestamp = event.block.timestamp.toI32()
|
||||
// // Property 'gasUsed' does not exist on type '~lib/@graphprotocol/graph-ts/chain/ethereum/ethereum.Transaction'
|
||||
// // poolTx.gasUsed = event.transaction.gasUsed.toBigDecimal()
|
||||
// poolTx.gasPrice = event.transaction.gasPrice.toBigDecimal()
|
||||
|
||||
poolTx.save()
|
||||
}
|
||||
// poolTx.save()
|
||||
// }
|
||||
|
||||
export function decrPoolCount(finalized: boolean): void {
|
||||
const factory = PoolFactory.load('1')
|
||||
if (!factory) return
|
||||
factory.poolCount -= 1
|
||||
if (finalized) factory.finalizedPoolCount -= 1
|
||||
factory.save()
|
||||
}
|
||||
// export function decrPoolCount(finalized: boolean): void {
|
||||
// const factory = PoolFactory.load('1')
|
||||
// if (!factory) return
|
||||
// factory.poolCount -= 1
|
||||
// if (finalized) factory.finalizedPoolCount -= 1
|
||||
// factory.save()
|
||||
// }
|
||||
|
||||
export function saveTokenTransaction(
|
||||
event: ethereum.Event,
|
||||
eventName: string
|
||||
): void {
|
||||
const tx = event.transaction.hash
|
||||
.toHexString()
|
||||
.concat('-')
|
||||
.concat(event.logIndex.toString())
|
||||
const userAddress = event.transaction.from.toHex()
|
||||
let transaction = TokenTransaction.load(tx)
|
||||
if (transaction == null) {
|
||||
transaction = new TokenTransaction(tx)
|
||||
}
|
||||
transaction.event = eventName
|
||||
transaction.datatokenAddress = event.address.toHex()
|
||||
transaction.userAddress = userAddress
|
||||
// transaction.gasUsed = event.transaction.gasUsed.toBigDecimal()
|
||||
transaction.gasPrice = event.transaction.gasPrice.toBigDecimal()
|
||||
transaction.tx = event.transaction.hash
|
||||
transaction.timestamp = event.block.timestamp.toI32()
|
||||
transaction.block = event.block.number.toI32()
|
||||
transaction.save()
|
||||
// export function saveTokenTransaction(
|
||||
// event: ethereum.Event,
|
||||
// eventName: string
|
||||
// ): void {
|
||||
// const tx = event.transaction.hash
|
||||
// .toHexString()
|
||||
// .concat('-')
|
||||
// .concat(event.logIndex.toString())
|
||||
// const userAddress = event.transaction.from.toHex()
|
||||
// let transaction = TokenTransaction.load(tx)
|
||||
// if (transaction == null) {
|
||||
// transaction = new TokenTransaction(tx)
|
||||
// }
|
||||
// transaction.event = eventName
|
||||
// transaction.datatokenAddress = event.address.toHex()
|
||||
// transaction.userAddress = userAddress
|
||||
// // transaction.gasUsed = event.transaction.gasUsed.toBigDecimal()
|
||||
// transaction.gasPrice = event.transaction.gasPrice.toBigDecimal()
|
||||
// transaction.tx = event.transaction.hash
|
||||
// transaction.timestamp = event.block.timestamp.toI32()
|
||||
// transaction.block = event.block.number.toI32()
|
||||
// transaction.save()
|
||||
|
||||
createUserEntity(userAddress)
|
||||
}
|
||||
// createUserEntity(userAddress)
|
||||
// }
|
||||
|
||||
export function updateTokenBalance(
|
||||
id: string,
|
||||
token: string,
|
||||
user: string,
|
||||
amount: BigDecimal
|
||||
): void {
|
||||
let tokenBalance = TokenBalance.load(id)
|
||||
if (tokenBalance == null) {
|
||||
tokenBalance = new TokenBalance(id)
|
||||
createUserEntity(user)
|
||||
tokenBalance.userAddress = user
|
||||
tokenBalance.datatokenId = token
|
||||
tokenBalance.balance = ZERO_BD
|
||||
}
|
||||
// export function updateTokenBalance(
|
||||
// id: string,
|
||||
// token: string,
|
||||
// user: string,
|
||||
// amount: BigDecimal
|
||||
// ): void {
|
||||
// let tokenBalance = TokenBalance.load(id)
|
||||
// if (tokenBalance == null) {
|
||||
// tokenBalance = new TokenBalance(id)
|
||||
// createUserEntity(user)
|
||||
// tokenBalance.userAddress = user
|
||||
// tokenBalance.datatokenId = token
|
||||
// tokenBalance.balance = ZERO_BD
|
||||
// }
|
||||
|
||||
tokenBalance.balance = tokenBalance.balance.plus(amount)
|
||||
tokenBalance.save()
|
||||
}
|
||||
// tokenBalance.balance = tokenBalance.balance.plus(amount)
|
||||
// tokenBalance.save()
|
||||
// }
|
||||
|
9
src/mappings/erc20Template.ts
Normal file
9
src/mappings/erc20Template.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import {
|
||||
MinterApproved,
|
||||
OrderStarted
|
||||
} from '../@types/ERC20Template/ERC20Template'
|
||||
// TODO: no events in contracts
|
||||
export function handleMinterApproved(event: MinterApproved): void {}
|
||||
|
||||
// TODO: to complicated at this point, return after basic events implemented ¯\_(ツ)_/¯
|
||||
export function handleOrderStarted(event: OrderStarted): void {}
|
33
src/mappings/erc721Factory.ts
Normal file
33
src/mappings/erc721Factory.ts
Normal file
@ -0,0 +1,33 @@
|
||||
import { log } from '@graphprotocol/graph-ts'
|
||||
import { NFTCreated, TokenCreated } from '../@types/ERC721Factory/ERC721Factory'
|
||||
import { Nft, Token } from '../@types/schema'
|
||||
import { ZERO_BD } from '../helpers'
|
||||
|
||||
export function handleNftCreated(event: NFTCreated): void {
|
||||
const nft = new Nft(event.params.newTokenAddress.toHexString())
|
||||
|
||||
nft.owner = event.params.admin.toHexString()
|
||||
nft.address = event.params.newTokenAddress.toHexString()
|
||||
nft.name = event.params.tokenName.toHex()
|
||||
nft.symbol = ''
|
||||
nft.createTime = event.block.timestamp.toI32()
|
||||
nft.tx = event.transaction.hash
|
||||
nft.block = event.block.number.toI32()
|
||||
|
||||
nft.save()
|
||||
}
|
||||
|
||||
export function handleNewToken(event: TokenCreated): void {
|
||||
const token = new Token(event.params.newTokenAddress.toHexString())
|
||||
token.isDatatoken = true
|
||||
token.address = event.params.newTokenAddress.toHexString()
|
||||
token.createTime = event.block.timestamp.toI32()
|
||||
token.tx = event.transaction.hash
|
||||
token.block = event.block.number.toI32()
|
||||
|
||||
token.name = event.params.tokenName.toString()
|
||||
token.decimals = 18
|
||||
token.supply = ZERO_BD
|
||||
log.info('dt name {} ', [event.params.tokenName.toString()])
|
||||
token.save()
|
||||
}
|
11
src/mappings/factoryRouter.ts
Normal file
11
src/mappings/factoryRouter.ts
Normal file
@ -0,0 +1,11 @@
|
||||
import { NewPool } from '../@types/ERC20Template/ERC20Template'
|
||||
import { Pool } from '../@types/schema'
|
||||
|
||||
export function handleNewPool(event: NewPool): void {
|
||||
const newPool = new Pool(event.params.poolAddress.toHex())
|
||||
|
||||
newPool.createTime = event.block.timestamp.toI32()
|
||||
newPool.tx = event.transaction.hash
|
||||
newPool.block = event.block.number.toI32()
|
||||
newPool.save()
|
||||
}
|
23
src/mappings/fixedRateExchange.ts
Normal file
23
src/mappings/fixedRateExchange.ts
Normal file
@ -0,0 +1,23 @@
|
||||
import { BigInt } from '@graphprotocol/graph-ts'
|
||||
import { ExchangeCreated } from '../@types/FixedRateExchange/FixedRateExchange'
|
||||
|
||||
import { FixedRateExchange } from '../@types/schema'
|
||||
|
||||
import { tokenToDecimal } from '../helpers'
|
||||
|
||||
export function handleExchangeCreated(event: ExchangeCreated): void {
|
||||
const fixedRateExchange = new FixedRateExchange(
|
||||
event.params.exchangeId.toHexString()
|
||||
)
|
||||
fixedRateExchange.owner = event.params.exchangeOwner.toHexString()
|
||||
fixedRateExchange.datatoken = event.params.dataToken.toHexString()
|
||||
fixedRateExchange.baseToken = event.params.baseToken.toHexString()
|
||||
// fixedRateExchange.baseTokenSymbol = getTokenSymbol(event.params.baseToken)
|
||||
fixedRateExchange.active = false
|
||||
|
||||
fixedRateExchange.price = tokenToDecimal(
|
||||
event.params.fixedRate.toBigDecimal(),
|
||||
BigInt.fromI32(18).toI32()
|
||||
)
|
||||
fixedRateExchange.save()
|
||||
}
|
@ -1,135 +0,0 @@
|
||||
import { BigInt, ethereum, log } from '@graphprotocol/graph-ts'
|
||||
import {
|
||||
ExchangeCreated,
|
||||
ExchangeActivated,
|
||||
ExchangeDeactivated,
|
||||
ExchangeRateChanged,
|
||||
Swapped
|
||||
} from '../@types/FixedRateExchange/FixedRateExchange'
|
||||
|
||||
import {
|
||||
FixedRateExchange,
|
||||
FixedRateExchangeUpdate,
|
||||
FixedRateExchangeSwap
|
||||
} from '../@types/schema'
|
||||
|
||||
import { getTokenSymbol, tokenToDecimal } from '../helpers'
|
||||
|
||||
export function handleExchangeCreated(event: ExchangeCreated): void {
|
||||
const fixedrateexchange = new FixedRateExchange(
|
||||
event.params.exchangeId.toHexString()
|
||||
)
|
||||
fixedrateexchange.exchangeOwner = event.params.exchangeOwner.toHexString()
|
||||
fixedrateexchange.datatoken = event.params.dataToken.toHexString()
|
||||
fixedrateexchange.baseToken = event.params.baseToken.toHexString()
|
||||
fixedrateexchange.baseTokenSymbol = getTokenSymbol(event.params.baseToken)
|
||||
fixedrateexchange.active = false
|
||||
log.info('new exchange with datatoken {} and base token {} ', [
|
||||
fixedrateexchange.datatoken,
|
||||
fixedrateexchange.baseToken
|
||||
])
|
||||
log.info('for new exchange {} for rate {}', [
|
||||
event.params.exchangeId.toHexString(),
|
||||
event.params.fixedRate.toString()
|
||||
])
|
||||
fixedrateexchange.rate = tokenToDecimal(
|
||||
event.params.fixedRate.toBigDecimal(),
|
||||
BigInt.fromI32(18).toI32()
|
||||
)
|
||||
fixedrateexchange.save()
|
||||
}
|
||||
|
||||
function _processActiveUpdated(
|
||||
event: ethereum.Event,
|
||||
exchangeId: string,
|
||||
active: boolean
|
||||
): void {
|
||||
const tx = event.transaction.hash
|
||||
const id = tx.toHexString().concat('-').concat(exchangeId)
|
||||
const fixedrateexchange = FixedRateExchange.load(exchangeId)
|
||||
|
||||
const freupdate = new FixedRateExchangeUpdate(id)
|
||||
freupdate.exchangeId = exchangeId
|
||||
if (fixedrateexchange) {
|
||||
freupdate.oldRate = fixedrateexchange.rate
|
||||
freupdate.newRate = fixedrateexchange.rate
|
||||
freupdate.oldActive = fixedrateexchange.active
|
||||
fixedrateexchange.active = active
|
||||
fixedrateexchange.save()
|
||||
}
|
||||
|
||||
freupdate.newActive = active
|
||||
freupdate.block = event.block.number.toI32()
|
||||
freupdate.timestamp = event.block.timestamp.toI32()
|
||||
freupdate.tx = tx
|
||||
freupdate.save()
|
||||
}
|
||||
|
||||
export function handleExchangeActivated(event: ExchangeActivated): void {
|
||||
_processActiveUpdated(event, event.params.exchangeId.toHexString(), true)
|
||||
}
|
||||
|
||||
export function handleExchangeDeactivated(event: ExchangeDeactivated): void {
|
||||
_processActiveUpdated(event, event.params.exchangeId.toHexString(), false)
|
||||
}
|
||||
|
||||
export function handleExchangeRateChanged(event: ExchangeRateChanged): void {
|
||||
const tx = event.transaction.hash
|
||||
const id = tx
|
||||
.toHexString()
|
||||
.concat('-')
|
||||
.concat(event.params.exchangeId.toHexString())
|
||||
const fixedrateexchange = FixedRateExchange.load(
|
||||
event.params.exchangeId.toHexString()
|
||||
)
|
||||
if (!fixedrateexchange) {
|
||||
log.error('Cannot update unknown FRE {}', [
|
||||
event.params.exchangeId.toHexString()
|
||||
])
|
||||
return
|
||||
}
|
||||
|
||||
const freupdate = new FixedRateExchangeUpdate(id)
|
||||
freupdate.exchangeId = fixedrateexchange.id
|
||||
freupdate.oldRate = fixedrateexchange.rate
|
||||
log.info('for new exchange {} for rate {}', [
|
||||
id,
|
||||
event.params.newRate.toString()
|
||||
])
|
||||
freupdate.newRate = tokenToDecimal(
|
||||
event.params.newRate.toBigDecimal(),
|
||||
BigInt.fromI32(18).toI32()
|
||||
)
|
||||
freupdate.oldActive = fixedrateexchange.active
|
||||
freupdate.newActive = fixedrateexchange.active
|
||||
freupdate.block = event.block.number.toI32()
|
||||
freupdate.timestamp = event.block.timestamp.toI32()
|
||||
freupdate.tx = tx
|
||||
freupdate.save()
|
||||
|
||||
fixedrateexchange.rate = freupdate.newRate
|
||||
fixedrateexchange.save()
|
||||
}
|
||||
|
||||
export function handleSwapped(event: Swapped): void {
|
||||
const tx = event.transaction.hash
|
||||
const id = tx
|
||||
.toHexString()
|
||||
.concat('-')
|
||||
.concat(event.params.exchangeId.toHexString())
|
||||
const freSwap = new FixedRateExchangeSwap(id)
|
||||
freSwap.exchangeId = event.params.exchangeId.toHexString()
|
||||
freSwap.by = event.params.by.toHexString()
|
||||
freSwap.baseTokenAmount = tokenToDecimal(
|
||||
event.params.baseTokenSwappedAmount.toBigDecimal(),
|
||||
BigInt.fromI32(18).toI32()
|
||||
)
|
||||
freSwap.dataTokenAmount = tokenToDecimal(
|
||||
event.params.dataTokenSwappedAmount.toBigDecimal(),
|
||||
BigInt.fromI32(18).toI32()
|
||||
)
|
||||
freSwap.block = event.block.number.toI32()
|
||||
freSwap.timestamp = event.block.timestamp.toI32()
|
||||
freSwap.tx = tx
|
||||
freSwap.save()
|
||||
}
|
@ -14,9 +14,9 @@ import {
|
||||
DispenserTransaction,
|
||||
User,
|
||||
Datatoken
|
||||
} from '../@types/schema'
|
||||
} from '../../@types/schema'
|
||||
|
||||
import { tokenToDecimal } from '../helpers'
|
||||
import { tokenToDecimal } from '../../helpers'
|
||||
|
||||
function _processDispenserUpdate(
|
||||
event: ethereum.Event,
|
577
src/mappings/old/pool.ts
Normal file
577
src/mappings/old/pool.ts
Normal file
@ -0,0 +1,577 @@
|
||||
// import { BigInt, Address, BigDecimal, log } from '@graphprotocol/graph-ts'
|
||||
// import {
|
||||
// LOG_CALL,
|
||||
// LOG_JOIN,
|
||||
// LOG_EXIT,
|
||||
// LOG_SWAP,
|
||||
// Transfer,
|
||||
// Pool as PoolEntity
|
||||
// } from '../@types/templates/Pool/Pool'
|
||||
|
||||
// import {
|
||||
// PoolFactory,
|
||||
// Pool,
|
||||
// PoolToken,
|
||||
// PoolShare,
|
||||
// Datatoken,
|
||||
// PoolTransaction,
|
||||
// Global
|
||||
// } from '../@types/schema'
|
||||
// import {
|
||||
// hexToDecimal,
|
||||
// tokenToDecimal,
|
||||
// createPoolShareEntity,
|
||||
// createPoolTokenEntity,
|
||||
// ZERO_BD,
|
||||
// MINUS_1_BD,
|
||||
// decrPoolCount,
|
||||
// updatePoolTransactionToken,
|
||||
// createPoolTransaction,
|
||||
// OCEAN,
|
||||
// updatePoolTokenBalance,
|
||||
// getOceanAddress,
|
||||
// getGlobalStats,
|
||||
// bigIntToDecimal
|
||||
// } from '../helpers'
|
||||
|
||||
// /************************************
|
||||
// ********** Pool Controls ***********
|
||||
// ************************************/
|
||||
|
||||
// export function handleSetSwapFee(
|
||||
// event: LOG_CALL,
|
||||
// swapFeeStr: string | null = null
|
||||
// ): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// const pool = Pool.load(poolId)
|
||||
// if (!pool) return
|
||||
// if (!swapFeeStr) {
|
||||
// swapFeeStr = event.params.data.toHexString().slice(-40)
|
||||
// }
|
||||
// if (swapFeeStr !== null) pool.swapFee = hexToDecimal(swapFeeStr, 18)
|
||||
// pool.save()
|
||||
// }
|
||||
|
||||
// export function handleSetController(event: LOG_CALL): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// const pool = Pool.load(poolId)
|
||||
// if (!pool) return
|
||||
// pool.controller = Address.fromString(
|
||||
// event.params.data.toHexString().slice(-40)
|
||||
// )
|
||||
// pool.save()
|
||||
// }
|
||||
|
||||
// export function handleSetPublicSwap(event: LOG_CALL): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// const pool = Pool.load(poolId)
|
||||
// if (!pool) return
|
||||
// pool.publicSwap = event.params.data.toHexString().slice(-1) == '1'
|
||||
// pool.save()
|
||||
// }
|
||||
|
||||
// export function handleFinalize(event: LOG_CALL): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// const pool = Pool.load(poolId)
|
||||
// if (!pool) {
|
||||
// log.error('Cannot handle finalize for unknown pool {} ', [poolId])
|
||||
// return
|
||||
// }
|
||||
// if (pool.tokenCount == BigInt.fromI32(0)) {
|
||||
// log.error('Cannot mark pool {} finalized, because we have 0 tokenCount', [
|
||||
// poolId
|
||||
// ])
|
||||
// return
|
||||
// }
|
||||
// pool.finalized = true
|
||||
// pool.symbol = 'BPT'
|
||||
// pool.publicSwap = true
|
||||
// pool.save()
|
||||
|
||||
// const factory = PoolFactory.load('1')
|
||||
// if (!factory) return
|
||||
// factory.finalizedPoolCount = factory.finalizedPoolCount + 1
|
||||
// factory.save()
|
||||
// }
|
||||
|
||||
// export function _handleRebind(
|
||||
// event: LOG_CALL,
|
||||
// poolId: string,
|
||||
// tokenAddress: string,
|
||||
// balanceStr: string,
|
||||
// denormWeightStr: string
|
||||
// ): void {
|
||||
// const pool = Pool.load(poolId)
|
||||
// if (!pool) return
|
||||
// const decimals = BigInt.fromI32(18).toI32()
|
||||
|
||||
// if (tokenAddress != OCEAN) {
|
||||
// pool.datatokenAddress = tokenAddress
|
||||
// }
|
||||
// pool.tokenCount = pool.tokenCount.plus(BigInt.fromI32(1))
|
||||
// const address = Address.fromString(tokenAddress)
|
||||
// const denormWeight = hexToDecimal(denormWeightStr, decimals)
|
||||
// const poolTokenId = poolId.concat('-').concat(address.toHexString())
|
||||
// let poolToken = PoolToken.load(poolTokenId)
|
||||
// if (poolToken == null) {
|
||||
// createPoolTokenEntity(poolTokenId, poolId, address)
|
||||
// poolToken = PoolToken.load(poolTokenId)
|
||||
// pool.totalWeight = pool.totalWeight.plus(denormWeight)
|
||||
// } else {
|
||||
// const oldWeight = poolToken.denormWeight
|
||||
// if (denormWeight > oldWeight) {
|
||||
// pool.totalWeight = pool.totalWeight.plus(denormWeight).minus(oldWeight)
|
||||
// } else {
|
||||
// pool.totalWeight = pool.totalWeight.minus(oldWeight).minus(denormWeight)
|
||||
// }
|
||||
// }
|
||||
// if (!poolToken) return
|
||||
// poolToken.denormWeight =
|
||||
// denormWeight !== null ? denormWeight : BigDecimal.fromString('0')
|
||||
// const balance = hexToDecimal(balanceStr, decimals)
|
||||
// updatePoolTokenBalance(poolToken as PoolToken, balance, '_handleRebind')
|
||||
|
||||
// poolToken.save()
|
||||
// if (balance.equals(ZERO_BD)) {
|
||||
// decrPoolCount(pool.finalized)
|
||||
// pool.active = false
|
||||
// }
|
||||
// pool.save()
|
||||
// }
|
||||
|
||||
// export function handleRebind(event: LOG_CALL): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// _handleRebind(
|
||||
// event,
|
||||
// poolId,
|
||||
// event.params.data.toHexString().slice(34, 74),
|
||||
// event.params.data.toHexString().slice(74, 138),
|
||||
// event.params.data.toHexString().slice(138)
|
||||
// )
|
||||
// }
|
||||
|
||||
// export function handleSetup(event: LOG_CALL): void {
|
||||
// if (PoolTransaction.load(event.transaction.hash.toHexString()) != null) {
|
||||
// return
|
||||
// }
|
||||
|
||||
// const poolId = event.address.toHex()
|
||||
// const data = event.params.data.toHexString()
|
||||
// // First 2 chars are 0x
|
||||
// // Next there is 8 chars
|
||||
// // Next starts the data each params occupies exactly 64 chars
|
||||
// // Each value is padded with 0s to the left
|
||||
// // For an Address, need to remove the leading 24 zeros, because the address itself is 40 chars
|
||||
// // For numbers we donot need to remove the leading zeros because they have no effect being on the left of the number
|
||||
|
||||
// // skip 8 then take the last 40 (2 + 8 + 24 = 34) to (2 + 8 + 64 = 74)
|
||||
// const dataTokenAddress = Address.fromString(data.slice(34, 74)).toHexString()
|
||||
|
||||
// const dataTokenAmount = data.slice(74, 138) // 74+64
|
||||
// const dataTokenWeight = data.slice(138, 202) // (74+64,74+(2*64)
|
||||
// const baseTokenAddress = Address.fromString(
|
||||
// data.slice(202 + 24, 266)
|
||||
// ).toHexString() // (74+(2*64)+24, 74+(3*64))
|
||||
// const baseTokenAmount = data.slice(266, 330) // (74+(3*64),74+(4*64))
|
||||
// const baseTokenWeight = data.slice(330, 394) // (74+(4*64),74+(5*64))
|
||||
// const swapFee = data.slice(394) // (74+(5*64), END)
|
||||
|
||||
// if (baseTokenAddress != OCEAN) {
|
||||
// log.error('baseTokenAddress is not Ocean, but is {}', [baseTokenAddress])
|
||||
// return
|
||||
// }
|
||||
// const poolTokenId = poolId.concat('-').concat(baseTokenAddress)
|
||||
// const poolToken = PoolToken.load(poolTokenId)
|
||||
// if (!poolToken) return
|
||||
|
||||
// _handleRebind(
|
||||
// event,
|
||||
// poolId,
|
||||
// dataTokenAddress,
|
||||
// dataTokenAmount,
|
||||
// dataTokenWeight
|
||||
// )
|
||||
// _handleRebind(
|
||||
// event,
|
||||
// poolId,
|
||||
// baseTokenAddress,
|
||||
// baseTokenAmount,
|
||||
// baseTokenWeight
|
||||
// )
|
||||
// handleSetSwapFee(event, swapFee)
|
||||
// handleFinalize(event)
|
||||
// createPoolTransaction(event, 'setup', event.transaction.from.toHex())
|
||||
|
||||
// // update base token
|
||||
// let amount = hexToDecimal(baseTokenAmount, 18)
|
||||
|
||||
// const poolTokenBalance = poolToken.balance
|
||||
// const balance = poolTokenBalance
|
||||
// ? poolTokenBalance
|
||||
// : BigDecimal.fromString('0')
|
||||
// updatePoolTransactionToken(
|
||||
// event.transaction.hash.toHexString(),
|
||||
// poolTokenId,
|
||||
// amount,
|
||||
// balance,
|
||||
// ZERO_BD
|
||||
// )
|
||||
// // update the datatoken
|
||||
// const poolDataToken = PoolToken.load(
|
||||
// poolId.concat('-').concat(dataTokenAddress)
|
||||
// )
|
||||
// if (poolDataToken !== null) {
|
||||
// amount = hexToDecimal(dataTokenAmount, 18)
|
||||
// updatePoolTransactionToken(
|
||||
// event.transaction.hash.toHexString(),
|
||||
// poolId.concat('-').concat(dataTokenAddress),
|
||||
// amount,
|
||||
// poolDataToken.balance,
|
||||
// ZERO_BD
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
|
||||
// /************************************
|
||||
// ********** JOINS & EXITS ***********
|
||||
// ************************************/
|
||||
|
||||
// export function handleJoinPool(event: LOG_JOIN): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// const address = event.params.tokenIn.toHex()
|
||||
// const ptx = event.transaction.hash.toHexString()
|
||||
// const poolTokenId = poolId.concat('-').concat(address)
|
||||
// const poolToken = PoolToken.load(poolTokenId)
|
||||
// const pool = Pool.load(poolId)
|
||||
// const datatoken = Datatoken.load(poolTokenId)
|
||||
|
||||
// const poolTx = PoolTransaction.load(ptx)
|
||||
// if (poolTx !== null) return
|
||||
// if (!pool || !poolToken || !datatoken) return
|
||||
|
||||
// if (pool.finalized == false) {
|
||||
// return
|
||||
// }
|
||||
|
||||
// pool.joinCount = pool.joinCount.plus(BigInt.fromI32(1))
|
||||
// pool.save()
|
||||
|
||||
// const decimals =
|
||||
// datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
||||
// const tokenAmountIn = tokenToDecimal(
|
||||
// event.params.tokenAmountIn.toBigDecimal(),
|
||||
// decimals
|
||||
// )
|
||||
// updatePoolTokenBalance(
|
||||
// poolToken as PoolToken,
|
||||
// poolToken.balance.plus(tokenAmountIn),
|
||||
// 'handleJoinPool'
|
||||
// )
|
||||
|
||||
// poolToken.save()
|
||||
// createPoolTransaction(event, 'join', event.params.caller.toHexString())
|
||||
// updatePoolTransactionToken(
|
||||
// event.transaction.hash.toHexString(),
|
||||
// poolTokenId,
|
||||
// tokenAmountIn,
|
||||
// poolToken.balance,
|
||||
// tokenAmountIn.times(pool.swapFee)
|
||||
// )
|
||||
// }
|
||||
|
||||
// export function handleExitPool(event: LOG_EXIT): void {
|
||||
// const poolId = event.address.toHex()
|
||||
|
||||
// const address = event.params.tokenOut.toHex()
|
||||
// const poolTokenId = poolId.concat('-').concat(address.toString())
|
||||
// const pool = Pool.load(poolId)
|
||||
// const poolToken = PoolToken.load(poolTokenId)
|
||||
// const datatoken = Datatoken.load(poolTokenId)
|
||||
// if (!poolToken || !pool || !datatoken) {
|
||||
// return
|
||||
// }
|
||||
|
||||
// const decimals =
|
||||
// datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
||||
// const tokenAmountOut = tokenToDecimal(
|
||||
// event.params.tokenAmountOut.toBigDecimal(),
|
||||
// decimals
|
||||
// )
|
||||
// const newAmount = poolToken.balance.minus(tokenAmountOut)
|
||||
// updatePoolTokenBalance(poolToken as PoolToken, newAmount, 'handleExitPool')
|
||||
// poolToken.save()
|
||||
|
||||
// pool.exitCount = pool.exitCount.plus(BigInt.fromI32(1))
|
||||
// if (newAmount.equals(ZERO_BD)) {
|
||||
// decrPoolCount(pool.finalized)
|
||||
// pool.active = false
|
||||
// }
|
||||
// pool.save()
|
||||
|
||||
// createPoolTransaction(event, 'exit', event.params.caller.toHexString())
|
||||
// updatePoolTransactionToken(
|
||||
// event.transaction.hash.toHexString(),
|
||||
// poolTokenId,
|
||||
// tokenAmountOut.times(MINUS_1_BD),
|
||||
// poolToken.balance,
|
||||
// tokenAmountOut.times(pool.swapFee)
|
||||
// )
|
||||
// }
|
||||
|
||||
// /************************************
|
||||
// ************** SWAPS ***************
|
||||
// ************************************/
|
||||
|
||||
// export function handleSwap(event: LOG_SWAP): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// const ptx = event.transaction.hash.toHexString()
|
||||
|
||||
// const tokenIn = event.params.tokenIn.toHex()
|
||||
// const poolTokenInId = poolId.concat('-').concat(tokenIn.toString())
|
||||
// const poolTokenIn = PoolToken.load(poolTokenInId)
|
||||
// if (!poolTokenIn) {
|
||||
// return
|
||||
// }
|
||||
// const dtIn = Datatoken.load(tokenIn)
|
||||
// const tokenAmountIn = tokenToDecimal(
|
||||
// event.params.tokenAmountIn.toBigDecimal(),
|
||||
// dtIn == null ? 18 : dtIn.decimals
|
||||
// )
|
||||
// const newAmountIn = poolTokenIn.balance.plus(tokenAmountIn)
|
||||
// updatePoolTokenBalance(
|
||||
// poolTokenIn as PoolToken,
|
||||
// newAmountIn,
|
||||
// 'handleSwap.tokenIn'
|
||||
// )
|
||||
// poolTokenIn.save()
|
||||
|
||||
// const tokenOut = event.params.tokenOut.toHex()
|
||||
// const poolTokenOutId = poolId.concat('-').concat(tokenOut.toString())
|
||||
// const poolTokenOut = PoolToken.load(poolTokenOutId)
|
||||
// const pool = Pool.load(poolId)
|
||||
// const factory = PoolFactory.load('1')
|
||||
// const dtOut = Datatoken.load(tokenOut)
|
||||
// if (!poolTokenOut || !dtOut || !factory || !pool) return
|
||||
|
||||
// const tokenAmountOut = tokenToDecimal(
|
||||
// event.params.tokenAmountOut.toBigDecimal(),
|
||||
// dtOut == null ? 18 : dtOut.decimals
|
||||
// )
|
||||
// const newAmountOut = poolTokenOut.balance.minus(tokenAmountOut)
|
||||
// updatePoolTokenBalance(
|
||||
// poolTokenOut as PoolToken,
|
||||
// newAmountOut,
|
||||
// 'handleSwap.tokenOut'
|
||||
// )
|
||||
// poolTokenOut.save()
|
||||
|
||||
// pool.swapCount = pool.swapCount.plus(BigInt.fromI32(1))
|
||||
// if (newAmountIn.equals(ZERO_BD) || newAmountOut.equals(ZERO_BD)) {
|
||||
// decrPoolCount(pool.finalized)
|
||||
// pool.active = false
|
||||
// }
|
||||
// if (tokenIn === getOceanAddress()) {
|
||||
// pool.totalSwapVolume = pool.totalSwapVolume.plus(tokenAmountIn)
|
||||
// factory.totalSwapVolume = factory.totalSwapVolume.plus(tokenAmountIn)
|
||||
// } else {
|
||||
// pool.totalSwapVolume = pool.totalSwapVolume.plus(tokenAmountOut)
|
||||
// factory.totalSwapVolume = factory.totalSwapVolume.plus(tokenAmountOut)
|
||||
// }
|
||||
|
||||
// factory.save()
|
||||
// pool.save()
|
||||
// const gStats: Global = getGlobalStats()
|
||||
// if (gStats !== null) {
|
||||
// gStats.totalSwapVolume = factory.totalSwapVolume
|
||||
// gStats.save()
|
||||
// }
|
||||
|
||||
// createPoolTransaction(event, 'swap', event.params.caller.toHexString())
|
||||
// updatePoolTransactionToken(
|
||||
// ptx,
|
||||
// poolTokenIn.id,
|
||||
// tokenAmountIn,
|
||||
// poolTokenIn.balance,
|
||||
// tokenAmountIn.times(pool.swapFee)
|
||||
// )
|
||||
// updatePoolTransactionToken(
|
||||
// ptx,
|
||||
// poolTokenOut.id,
|
||||
// tokenAmountOut.times(MINUS_1_BD),
|
||||
// poolTokenOut.balance,
|
||||
// BigDecimal.fromString('0.0')
|
||||
// )
|
||||
// }
|
||||
|
||||
// /************************************
|
||||
// *********** POOL SHARES ************
|
||||
// ************************************/
|
||||
|
||||
// export function handleTransfer(event: Transfer): void {
|
||||
// const poolId = event.address.toHex()
|
||||
|
||||
// const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
|
||||
|
||||
// const isMint = event.params.from.toHex() == ZERO_ADDRESS
|
||||
// const isBurn = event.params.to.toHex() == ZERO_ADDRESS
|
||||
|
||||
// const poolShareFromId = poolId.concat('-').concat(event.params.from.toHex())
|
||||
// let poolShareFrom = PoolShare.load(poolShareFromId)
|
||||
|
||||
// const poolShareToId = poolId.concat('-').concat(event.params.to.toHex())
|
||||
// let poolShareTo = PoolShare.load(poolShareToId)
|
||||
// const poolShareToBalance = poolShareTo == null ? ZERO_BD : poolShareTo.balance
|
||||
|
||||
// const pool = Pool.load(poolId)
|
||||
// if (!pool) return
|
||||
// const poolTx = PoolTransaction.load(event.transaction.hash.toHexString())
|
||||
// const value = tokenToDecimal(event.params.value.toBigDecimal(), 18)
|
||||
|
||||
// if (isMint) {
|
||||
// if (poolShareTo == null) {
|
||||
// createPoolShareEntity(poolShareToId, poolId, event.params.to.toHex())
|
||||
// poolShareTo = PoolShare.load(poolShareToId)
|
||||
// }
|
||||
// if (poolShareTo !== null) {
|
||||
// poolShareTo.balance = poolShareTo.balance.plus(value)
|
||||
// poolShareTo.save()
|
||||
// }
|
||||
|
||||
// pool.totalShares = pool.totalShares.plus(value)
|
||||
// if (poolTx != null) {
|
||||
// poolTx.sharesTransferAmount = value
|
||||
// if (poolShareTo !== null) poolTx.sharesBalance = poolShareTo.balance
|
||||
// }
|
||||
// } else if (isBurn) {
|
||||
// if (poolShareFrom == null) {
|
||||
// createPoolShareEntity(poolShareFromId, poolId, event.params.from.toHex())
|
||||
// poolShareFrom = PoolShare.load(poolShareFromId)
|
||||
// }
|
||||
|
||||
// pool.totalShares = pool.totalShares.minus(value)
|
||||
// if (poolTx !== null) {
|
||||
// poolTx.sharesTransferAmount = poolTx.sharesTransferAmount.minus(value)
|
||||
// }
|
||||
|
||||
// if (poolTx !== null && poolShareFrom !== null) {
|
||||
// poolTx.sharesBalance = poolShareFrom.balance
|
||||
// }
|
||||
|
||||
// if (poolShareFrom !== null) {
|
||||
// poolShareFrom.balance = poolShareFrom.balance.minus(value)
|
||||
// poolShareFrom.save()
|
||||
// }
|
||||
// } else {
|
||||
// if (poolShareTo == null) {
|
||||
// createPoolShareEntity(poolShareToId, poolId, event.params.to.toHex())
|
||||
// poolShareTo = PoolShare.load(poolShareToId)
|
||||
// }
|
||||
|
||||
// if (poolShareTo !== null) {
|
||||
// poolShareTo.balance = poolShareTo.balance.plus(value)
|
||||
// poolShareTo.save()
|
||||
// }
|
||||
|
||||
// if (poolShareFrom == null) {
|
||||
// createPoolShareEntity(poolShareFromId, poolId, event.params.from.toHex())
|
||||
// poolShareFrom = PoolShare.load(poolShareFromId)
|
||||
// }
|
||||
// if (poolShareFrom !== null) {
|
||||
// poolShareFrom.balance = poolShareFrom.balance.minus(value)
|
||||
// poolShareFrom.save()
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (
|
||||
// poolShareTo != null &&
|
||||
// poolShareTo.balance.notEqual(ZERO_BD) &&
|
||||
// poolShareToBalance.equals(ZERO_BD)
|
||||
// ) {
|
||||
// pool.holderCount = pool.holderCount.plus(BigInt.fromI32(1))
|
||||
// }
|
||||
|
||||
// if (
|
||||
// poolShareFrom !== null &&
|
||||
// poolShareFrom.balance.equals(ZERO_BD) &&
|
||||
// poolShareFrom.balance.notEqual(ZERO_BD)
|
||||
// ) {
|
||||
// pool.holderCount = pool.holderCount.plus(BigInt.fromI32(1))
|
||||
// }
|
||||
|
||||
// if (poolTx !== null) {
|
||||
// poolTx.save()
|
||||
// }
|
||||
|
||||
// pool.save()
|
||||
// }
|
||||
|
||||
// /************************************
|
||||
// *********** GULP ************
|
||||
// ************************************/
|
||||
// export function handleGulp(event: LOG_CALL): void {
|
||||
// const poolId = event.address.toHex()
|
||||
// const ptx = event.transaction.hash.toHexString()
|
||||
// // we need to check the contract balance & compare with our internal balances
|
||||
// const pool = Pool.load(poolId)
|
||||
// const poolEbtity = PoolEntity.bind(Address.fromString(poolId))
|
||||
// if (!pool) {
|
||||
// log.warning('Gulp called, but cannot load pool {}', [poolId])
|
||||
// return
|
||||
// }
|
||||
// const ocnToken = PoolToken.load(poolId.concat('-').concat(OCEAN))
|
||||
// const dtToken = PoolToken.load(
|
||||
// poolId.concat('-').concat(pool.datatokenAddress)
|
||||
// )
|
||||
|
||||
// // get the balances from the contract
|
||||
// // for ocean
|
||||
// if (ocnToken) {
|
||||
// const ocnTokenBalance = ocnToken.balance
|
||||
// const balanceAttempt = poolEbtity.try_getBalance(Address.fromString(OCEAN))
|
||||
// if (!balanceAttempt.reverted) {
|
||||
// const contractBalance = bigIntToDecimal(balanceAttempt.value, 18)
|
||||
// if (
|
||||
// ocnToken.balance.notEqual(contractBalance) &&
|
||||
// contractBalance.ge(ZERO_BD)
|
||||
// ) {
|
||||
// // we have a difference. let's absorb that
|
||||
// createPoolTransaction(event, 'gulp', event.params.caller.toHexString())
|
||||
// ocnToken.balance = contractBalance
|
||||
// ocnToken.save()
|
||||
// updatePoolTransactionToken(
|
||||
// ptx,
|
||||
// ocnToken.id,
|
||||
// contractBalance.minus(ocnTokenBalance),
|
||||
// contractBalance,
|
||||
// ZERO_BD
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// // for dt
|
||||
// if (dtToken) {
|
||||
// const dtTokenBalance = dtToken.balance
|
||||
// const balanceAttempt = poolEbtity.try_getBalance(
|
||||
// Address.fromString(pool.datatokenAddress)
|
||||
// )
|
||||
// if (!balanceAttempt.reverted) {
|
||||
// const contractBalance = bigIntToDecimal(balanceAttempt.value, 18)
|
||||
// if (
|
||||
// dtToken.balance.notEqual(contractBalance) &&
|
||||
// contractBalance.ge(ZERO_BD)
|
||||
// ) {
|
||||
// // we have a difference. let's absorb that
|
||||
// createPoolTransaction(event, 'gulp', event.params.caller.toHexString())
|
||||
// dtToken.balance = contractBalance
|
||||
// dtToken.save()
|
||||
// updatePoolTransactionToken(
|
||||
// ptx,
|
||||
// dtToken.id,
|
||||
// contractBalance.minus(dtTokenBalance),
|
||||
// contractBalance,
|
||||
// ZERO_BD
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
@ -1,577 +0,0 @@
|
||||
import { BigInt, Address, BigDecimal, log } from '@graphprotocol/graph-ts'
|
||||
import {
|
||||
LOG_CALL,
|
||||
LOG_JOIN,
|
||||
LOG_EXIT,
|
||||
LOG_SWAP,
|
||||
Transfer,
|
||||
Pool as PoolEntity
|
||||
} from '../@types/templates/Pool/Pool'
|
||||
|
||||
import {
|
||||
PoolFactory,
|
||||
Pool,
|
||||
PoolToken,
|
||||
PoolShare,
|
||||
Datatoken,
|
||||
PoolTransaction,
|
||||
Global
|
||||
} from '../@types/schema'
|
||||
import {
|
||||
hexToDecimal,
|
||||
tokenToDecimal,
|
||||
createPoolShareEntity,
|
||||
createPoolTokenEntity,
|
||||
ZERO_BD,
|
||||
MINUS_1_BD,
|
||||
decrPoolCount,
|
||||
updatePoolTransactionToken,
|
||||
createPoolTransaction,
|
||||
OCEAN,
|
||||
updatePoolTokenBalance,
|
||||
getOceanAddress,
|
||||
getGlobalStats,
|
||||
bigIntToDecimal
|
||||
} from '../helpers'
|
||||
|
||||
/************************************
|
||||
********** Pool Controls ***********
|
||||
************************************/
|
||||
|
||||
export function handleSetSwapFee(
|
||||
event: LOG_CALL,
|
||||
swapFeeStr: string | null = null
|
||||
): void {
|
||||
const poolId = event.address.toHex()
|
||||
const pool = Pool.load(poolId)
|
||||
if (!pool) return
|
||||
if (!swapFeeStr) {
|
||||
swapFeeStr = event.params.data.toHexString().slice(-40)
|
||||
}
|
||||
if (swapFeeStr !== null) pool.swapFee = hexToDecimal(swapFeeStr, 18)
|
||||
pool.save()
|
||||
}
|
||||
|
||||
export function handleSetController(event: LOG_CALL): void {
|
||||
const poolId = event.address.toHex()
|
||||
const pool = Pool.load(poolId)
|
||||
if (!pool) return
|
||||
pool.controller = Address.fromString(
|
||||
event.params.data.toHexString().slice(-40)
|
||||
)
|
||||
pool.save()
|
||||
}
|
||||
|
||||
export function handleSetPublicSwap(event: LOG_CALL): void {
|
||||
const poolId = event.address.toHex()
|
||||
const pool = Pool.load(poolId)
|
||||
if (!pool) return
|
||||
pool.publicSwap = event.params.data.toHexString().slice(-1) == '1'
|
||||
pool.save()
|
||||
}
|
||||
|
||||
export function handleFinalize(event: LOG_CALL): void {
|
||||
const poolId = event.address.toHex()
|
||||
const pool = Pool.load(poolId)
|
||||
if (!pool) {
|
||||
log.error('Cannot handle finalize for unknown pool {} ', [poolId])
|
||||
return
|
||||
}
|
||||
if (pool.tokenCount == BigInt.fromI32(0)) {
|
||||
log.error('Cannot mark pool {} finalized, because we have 0 tokenCount', [
|
||||
poolId
|
||||
])
|
||||
return
|
||||
}
|
||||
pool.finalized = true
|
||||
pool.symbol = 'BPT'
|
||||
pool.publicSwap = true
|
||||
pool.save()
|
||||
|
||||
const factory = PoolFactory.load('1')
|
||||
if (!factory) return
|
||||
factory.finalizedPoolCount = factory.finalizedPoolCount + 1
|
||||
factory.save()
|
||||
}
|
||||
|
||||
export function _handleRebind(
|
||||
event: LOG_CALL,
|
||||
poolId: string,
|
||||
tokenAddress: string,
|
||||
balanceStr: string,
|
||||
denormWeightStr: string
|
||||
): void {
|
||||
const pool = Pool.load(poolId)
|
||||
if (!pool) return
|
||||
const decimals = BigInt.fromI32(18).toI32()
|
||||
|
||||
if (tokenAddress != OCEAN) {
|
||||
pool.datatokenAddress = tokenAddress
|
||||
}
|
||||
pool.tokenCount = pool.tokenCount.plus(BigInt.fromI32(1))
|
||||
const address = Address.fromString(tokenAddress)
|
||||
const denormWeight = hexToDecimal(denormWeightStr, decimals)
|
||||
const poolTokenId = poolId.concat('-').concat(address.toHexString())
|
||||
let poolToken = PoolToken.load(poolTokenId)
|
||||
if (poolToken == null) {
|
||||
createPoolTokenEntity(poolTokenId, poolId, address)
|
||||
poolToken = PoolToken.load(poolTokenId)
|
||||
pool.totalWeight = pool.totalWeight.plus(denormWeight)
|
||||
} else {
|
||||
const oldWeight = poolToken.denormWeight
|
||||
if (denormWeight > oldWeight) {
|
||||
pool.totalWeight = pool.totalWeight.plus(denormWeight).minus(oldWeight)
|
||||
} else {
|
||||
pool.totalWeight = pool.totalWeight.minus(oldWeight).minus(denormWeight)
|
||||
}
|
||||
}
|
||||
if (!poolToken) return
|
||||
poolToken.denormWeight =
|
||||
denormWeight !== null ? denormWeight : BigDecimal.fromString('0')
|
||||
const balance = hexToDecimal(balanceStr, decimals)
|
||||
updatePoolTokenBalance(poolToken as PoolToken, balance, '_handleRebind')
|
||||
|
||||
poolToken.save()
|
||||
if (balance.equals(ZERO_BD)) {
|
||||
decrPoolCount(pool.finalized)
|
||||
pool.active = false
|
||||
}
|
||||
pool.save()
|
||||
}
|
||||
|
||||
export function handleRebind(event: LOG_CALL): void {
|
||||
const poolId = event.address.toHex()
|
||||
_handleRebind(
|
||||
event,
|
||||
poolId,
|
||||
event.params.data.toHexString().slice(34, 74),
|
||||
event.params.data.toHexString().slice(74, 138),
|
||||
event.params.data.toHexString().slice(138)
|
||||
)
|
||||
}
|
||||
|
||||
export function handleSetup(event: LOG_CALL): void {
|
||||
if (PoolTransaction.load(event.transaction.hash.toHexString()) != null) {
|
||||
return
|
||||
}
|
||||
|
||||
const poolId = event.address.toHex()
|
||||
const data = event.params.data.toHexString()
|
||||
// First 2 chars are 0x
|
||||
// Next there is 8 chars
|
||||
// Next starts the data each params occupies exactly 64 chars
|
||||
// Each value is padded with 0s to the left
|
||||
// For an Address, need to remove the leading 24 zeros, because the address itself is 40 chars
|
||||
// For numbers we donot need to remove the leading zeros because they have no effect being on the left of the number
|
||||
|
||||
// skip 8 then take the last 40 (2 + 8 + 24 = 34) to (2 + 8 + 64 = 74)
|
||||
const dataTokenAddress = Address.fromString(data.slice(34, 74)).toHexString()
|
||||
|
||||
const dataTokenAmount = data.slice(74, 138) // 74+64
|
||||
const dataTokenWeight = data.slice(138, 202) // (74+64,74+(2*64)
|
||||
const baseTokenAddress = Address.fromString(
|
||||
data.slice(202 + 24, 266)
|
||||
).toHexString() // (74+(2*64)+24, 74+(3*64))
|
||||
const baseTokenAmount = data.slice(266, 330) // (74+(3*64),74+(4*64))
|
||||
const baseTokenWeight = data.slice(330, 394) // (74+(4*64),74+(5*64))
|
||||
const swapFee = data.slice(394) // (74+(5*64), END)
|
||||
|
||||
if (baseTokenAddress != OCEAN) {
|
||||
log.error('baseTokenAddress is not Ocean, but is {}', [baseTokenAddress])
|
||||
return
|
||||
}
|
||||
const poolTokenId = poolId.concat('-').concat(baseTokenAddress)
|
||||
const poolToken = PoolToken.load(poolTokenId)
|
||||
if (!poolToken) return
|
||||
|
||||
_handleRebind(
|
||||
event,
|
||||
poolId,
|
||||
dataTokenAddress,
|
||||
dataTokenAmount,
|
||||
dataTokenWeight
|
||||
)
|
||||
_handleRebind(
|
||||
event,
|
||||
poolId,
|
||||
baseTokenAddress,
|
||||
baseTokenAmount,
|
||||
baseTokenWeight
|
||||
)
|
||||
handleSetSwapFee(event, swapFee)
|
||||
handleFinalize(event)
|
||||
createPoolTransaction(event, 'setup', event.transaction.from.toHex())
|
||||
|
||||
// update base token
|
||||
let amount = hexToDecimal(baseTokenAmount, 18)
|
||||
|
||||
const poolTokenBalance = poolToken.balance
|
||||
const balance = poolTokenBalance
|
||||
? poolTokenBalance
|
||||
: BigDecimal.fromString('0')
|
||||
updatePoolTransactionToken(
|
||||
event.transaction.hash.toHexString(),
|
||||
poolTokenId,
|
||||
amount,
|
||||
balance,
|
||||
ZERO_BD
|
||||
)
|
||||
// update the datatoken
|
||||
const poolDataToken = PoolToken.load(
|
||||
poolId.concat('-').concat(dataTokenAddress)
|
||||
)
|
||||
if (poolDataToken !== null) {
|
||||
amount = hexToDecimal(dataTokenAmount, 18)
|
||||
updatePoolTransactionToken(
|
||||
event.transaction.hash.toHexString(),
|
||||
poolId.concat('-').concat(dataTokenAddress),
|
||||
amount,
|
||||
poolDataToken.balance,
|
||||
ZERO_BD
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/************************************
|
||||
********** JOINS & EXITS ***********
|
||||
************************************/
|
||||
|
||||
export function handleJoinPool(event: LOG_JOIN): void {
|
||||
const poolId = event.address.toHex()
|
||||
const address = event.params.tokenIn.toHex()
|
||||
const ptx = event.transaction.hash.toHexString()
|
||||
const poolTokenId = poolId.concat('-').concat(address)
|
||||
const poolToken = PoolToken.load(poolTokenId)
|
||||
const pool = Pool.load(poolId)
|
||||
const datatoken = Datatoken.load(poolTokenId)
|
||||
|
||||
const poolTx = PoolTransaction.load(ptx)
|
||||
if (poolTx !== null) return
|
||||
if (!pool || !poolToken || !datatoken) return
|
||||
|
||||
if (pool.finalized == false) {
|
||||
return
|
||||
}
|
||||
|
||||
pool.joinCount = pool.joinCount.plus(BigInt.fromI32(1))
|
||||
pool.save()
|
||||
|
||||
const decimals =
|
||||
datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
||||
const tokenAmountIn = tokenToDecimal(
|
||||
event.params.tokenAmountIn.toBigDecimal(),
|
||||
decimals
|
||||
)
|
||||
updatePoolTokenBalance(
|
||||
poolToken as PoolToken,
|
||||
poolToken.balance.plus(tokenAmountIn),
|
||||
'handleJoinPool'
|
||||
)
|
||||
|
||||
poolToken.save()
|
||||
createPoolTransaction(event, 'join', event.params.caller.toHexString())
|
||||
updatePoolTransactionToken(
|
||||
event.transaction.hash.toHexString(),
|
||||
poolTokenId,
|
||||
tokenAmountIn,
|
||||
poolToken.balance,
|
||||
tokenAmountIn.times(pool.swapFee)
|
||||
)
|
||||
}
|
||||
|
||||
export function handleExitPool(event: LOG_EXIT): void {
|
||||
const poolId = event.address.toHex()
|
||||
|
||||
const address = event.params.tokenOut.toHex()
|
||||
const poolTokenId = poolId.concat('-').concat(address.toString())
|
||||
const pool = Pool.load(poolId)
|
||||
const poolToken = PoolToken.load(poolTokenId)
|
||||
const datatoken = Datatoken.load(poolTokenId)
|
||||
if (!poolToken || !pool || !datatoken) {
|
||||
return
|
||||
}
|
||||
|
||||
const decimals =
|
||||
datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
||||
const tokenAmountOut = tokenToDecimal(
|
||||
event.params.tokenAmountOut.toBigDecimal(),
|
||||
decimals
|
||||
)
|
||||
const newAmount = poolToken.balance.minus(tokenAmountOut)
|
||||
updatePoolTokenBalance(poolToken as PoolToken, newAmount, 'handleExitPool')
|
||||
poolToken.save()
|
||||
|
||||
pool.exitCount = pool.exitCount.plus(BigInt.fromI32(1))
|
||||
if (newAmount.equals(ZERO_BD)) {
|
||||
decrPoolCount(pool.finalized)
|
||||
pool.active = false
|
||||
}
|
||||
pool.save()
|
||||
|
||||
createPoolTransaction(event, 'exit', event.params.caller.toHexString())
|
||||
updatePoolTransactionToken(
|
||||
event.transaction.hash.toHexString(),
|
||||
poolTokenId,
|
||||
tokenAmountOut.times(MINUS_1_BD),
|
||||
poolToken.balance,
|
||||
tokenAmountOut.times(pool.swapFee)
|
||||
)
|
||||
}
|
||||
|
||||
/************************************
|
||||
************** SWAPS ***************
|
||||
************************************/
|
||||
|
||||
export function handleSwap(event: LOG_SWAP): void {
|
||||
const poolId = event.address.toHex()
|
||||
const ptx = event.transaction.hash.toHexString()
|
||||
|
||||
const tokenIn = event.params.tokenIn.toHex()
|
||||
const poolTokenInId = poolId.concat('-').concat(tokenIn.toString())
|
||||
const poolTokenIn = PoolToken.load(poolTokenInId)
|
||||
if (!poolTokenIn) {
|
||||
return
|
||||
}
|
||||
const dtIn = Datatoken.load(tokenIn)
|
||||
const tokenAmountIn = tokenToDecimal(
|
||||
event.params.tokenAmountIn.toBigDecimal(),
|
||||
dtIn == null ? 18 : dtIn.decimals
|
||||
)
|
||||
const newAmountIn = poolTokenIn.balance.plus(tokenAmountIn)
|
||||
updatePoolTokenBalance(
|
||||
poolTokenIn as PoolToken,
|
||||
newAmountIn,
|
||||
'handleSwap.tokenIn'
|
||||
)
|
||||
poolTokenIn.save()
|
||||
|
||||
const tokenOut = event.params.tokenOut.toHex()
|
||||
const poolTokenOutId = poolId.concat('-').concat(tokenOut.toString())
|
||||
const poolTokenOut = PoolToken.load(poolTokenOutId)
|
||||
const pool = Pool.load(poolId)
|
||||
const factory = PoolFactory.load('1')
|
||||
const dtOut = Datatoken.load(tokenOut)
|
||||
if (!poolTokenOut || !dtOut || !factory || !pool) return
|
||||
|
||||
const tokenAmountOut = tokenToDecimal(
|
||||
event.params.tokenAmountOut.toBigDecimal(),
|
||||
dtOut == null ? 18 : dtOut.decimals
|
||||
)
|
||||
const newAmountOut = poolTokenOut.balance.minus(tokenAmountOut)
|
||||
updatePoolTokenBalance(
|
||||
poolTokenOut as PoolToken,
|
||||
newAmountOut,
|
||||
'handleSwap.tokenOut'
|
||||
)
|
||||
poolTokenOut.save()
|
||||
|
||||
pool.swapCount = pool.swapCount.plus(BigInt.fromI32(1))
|
||||
if (newAmountIn.equals(ZERO_BD) || newAmountOut.equals(ZERO_BD)) {
|
||||
decrPoolCount(pool.finalized)
|
||||
pool.active = false
|
||||
}
|
||||
if (tokenIn === getOceanAddress()) {
|
||||
pool.totalSwapVolume = pool.totalSwapVolume.plus(tokenAmountIn)
|
||||
factory.totalSwapVolume = factory.totalSwapVolume.plus(tokenAmountIn)
|
||||
} else {
|
||||
pool.totalSwapVolume = pool.totalSwapVolume.plus(tokenAmountOut)
|
||||
factory.totalSwapVolume = factory.totalSwapVolume.plus(tokenAmountOut)
|
||||
}
|
||||
|
||||
factory.save()
|
||||
pool.save()
|
||||
const gStats: Global = getGlobalStats()
|
||||
if (gStats !== null) {
|
||||
gStats.totalSwapVolume = factory.totalSwapVolume
|
||||
gStats.save()
|
||||
}
|
||||
|
||||
createPoolTransaction(event, 'swap', event.params.caller.toHexString())
|
||||
updatePoolTransactionToken(
|
||||
ptx,
|
||||
poolTokenIn.id,
|
||||
tokenAmountIn,
|
||||
poolTokenIn.balance,
|
||||
tokenAmountIn.times(pool.swapFee)
|
||||
)
|
||||
updatePoolTransactionToken(
|
||||
ptx,
|
||||
poolTokenOut.id,
|
||||
tokenAmountOut.times(MINUS_1_BD),
|
||||
poolTokenOut.balance,
|
||||
BigDecimal.fromString('0.0')
|
||||
)
|
||||
}
|
||||
|
||||
/************************************
|
||||
*********** POOL SHARES ************
|
||||
************************************/
|
||||
|
||||
export function handleTransfer(event: Transfer): void {
|
||||
const poolId = event.address.toHex()
|
||||
|
||||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
|
||||
|
||||
const isMint = event.params.from.toHex() == ZERO_ADDRESS
|
||||
const isBurn = event.params.to.toHex() == ZERO_ADDRESS
|
||||
|
||||
const poolShareFromId = poolId.concat('-').concat(event.params.from.toHex())
|
||||
let poolShareFrom = PoolShare.load(poolShareFromId)
|
||||
|
||||
const poolShareToId = poolId.concat('-').concat(event.params.to.toHex())
|
||||
let poolShareTo = PoolShare.load(poolShareToId)
|
||||
const poolShareToBalance = poolShareTo == null ? ZERO_BD : poolShareTo.balance
|
||||
|
||||
const pool = Pool.load(poolId)
|
||||
if (!pool) return
|
||||
const poolTx = PoolTransaction.load(event.transaction.hash.toHexString())
|
||||
const value = tokenToDecimal(event.params.value.toBigDecimal(), 18)
|
||||
|
||||
if (isMint) {
|
||||
if (poolShareTo == null) {
|
||||
createPoolShareEntity(poolShareToId, poolId, event.params.to.toHex())
|
||||
poolShareTo = PoolShare.load(poolShareToId)
|
||||
}
|
||||
if (poolShareTo !== null) {
|
||||
poolShareTo.balance = poolShareTo.balance.plus(value)
|
||||
poolShareTo.save()
|
||||
}
|
||||
|
||||
pool.totalShares = pool.totalShares.plus(value)
|
||||
if (poolTx != null) {
|
||||
poolTx.sharesTransferAmount = value
|
||||
if (poolShareTo !== null) poolTx.sharesBalance = poolShareTo.balance
|
||||
}
|
||||
} else if (isBurn) {
|
||||
if (poolShareFrom == null) {
|
||||
createPoolShareEntity(poolShareFromId, poolId, event.params.from.toHex())
|
||||
poolShareFrom = PoolShare.load(poolShareFromId)
|
||||
}
|
||||
|
||||
pool.totalShares = pool.totalShares.minus(value)
|
||||
if (poolTx !== null) {
|
||||
poolTx.sharesTransferAmount = poolTx.sharesTransferAmount.minus(value)
|
||||
}
|
||||
|
||||
if (poolTx !== null && poolShareFrom !== null) {
|
||||
poolTx.sharesBalance = poolShareFrom.balance
|
||||
}
|
||||
|
||||
if (poolShareFrom !== null) {
|
||||
poolShareFrom.balance = poolShareFrom.balance.minus(value)
|
||||
poolShareFrom.save()
|
||||
}
|
||||
} else {
|
||||
if (poolShareTo == null) {
|
||||
createPoolShareEntity(poolShareToId, poolId, event.params.to.toHex())
|
||||
poolShareTo = PoolShare.load(poolShareToId)
|
||||
}
|
||||
|
||||
if (poolShareTo !== null) {
|
||||
poolShareTo.balance = poolShareTo.balance.plus(value)
|
||||
poolShareTo.save()
|
||||
}
|
||||
|
||||
if (poolShareFrom == null) {
|
||||
createPoolShareEntity(poolShareFromId, poolId, event.params.from.toHex())
|
||||
poolShareFrom = PoolShare.load(poolShareFromId)
|
||||
}
|
||||
if (poolShareFrom !== null) {
|
||||
poolShareFrom.balance = poolShareFrom.balance.minus(value)
|
||||
poolShareFrom.save()
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
poolShareTo != null &&
|
||||
poolShareTo.balance.notEqual(ZERO_BD) &&
|
||||
poolShareToBalance.equals(ZERO_BD)
|
||||
) {
|
||||
pool.holderCount = pool.holderCount.plus(BigInt.fromI32(1))
|
||||
}
|
||||
|
||||
if (
|
||||
poolShareFrom !== null &&
|
||||
poolShareFrom.balance.equals(ZERO_BD) &&
|
||||
poolShareFrom.balance.notEqual(ZERO_BD)
|
||||
) {
|
||||
pool.holderCount = pool.holderCount.plus(BigInt.fromI32(1))
|
||||
}
|
||||
|
||||
if (poolTx !== null) {
|
||||
poolTx.save()
|
||||
}
|
||||
|
||||
pool.save()
|
||||
}
|
||||
|
||||
/************************************
|
||||
*********** GULP ************
|
||||
************************************/
|
||||
export function handleGulp(event: LOG_CALL): void {
|
||||
const poolId = event.address.toHex()
|
||||
const ptx = event.transaction.hash.toHexString()
|
||||
// we need to check the contract balance & compare with our internal balances
|
||||
const pool = Pool.load(poolId)
|
||||
const poolEbtity = PoolEntity.bind(Address.fromString(poolId))
|
||||
if (!pool) {
|
||||
log.warning('Gulp called, but cannot load pool {}', [poolId])
|
||||
return
|
||||
}
|
||||
const ocnToken = PoolToken.load(poolId.concat('-').concat(OCEAN))
|
||||
const dtToken = PoolToken.load(
|
||||
poolId.concat('-').concat(pool.datatokenAddress)
|
||||
)
|
||||
|
||||
// get the balances from the contract
|
||||
// for ocean
|
||||
if (ocnToken) {
|
||||
const ocnTokenBalance = ocnToken.balance
|
||||
const balanceAttempt = poolEbtity.try_getBalance(Address.fromString(OCEAN))
|
||||
if (!balanceAttempt.reverted) {
|
||||
const contractBalance = bigIntToDecimal(balanceAttempt.value, 18)
|
||||
if (
|
||||
ocnToken.balance.notEqual(contractBalance) &&
|
||||
contractBalance.ge(ZERO_BD)
|
||||
) {
|
||||
// we have a difference. let's absorb that
|
||||
createPoolTransaction(event, 'gulp', event.params.caller.toHexString())
|
||||
ocnToken.balance = contractBalance
|
||||
ocnToken.save()
|
||||
updatePoolTransactionToken(
|
||||
ptx,
|
||||
ocnToken.id,
|
||||
contractBalance.minus(ocnTokenBalance),
|
||||
contractBalance,
|
||||
ZERO_BD
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
// for dt
|
||||
if (dtToken) {
|
||||
const dtTokenBalance = dtToken.balance
|
||||
const balanceAttempt = poolEbtity.try_getBalance(
|
||||
Address.fromString(pool.datatokenAddress)
|
||||
)
|
||||
if (!balanceAttempt.reverted) {
|
||||
const contractBalance = bigIntToDecimal(balanceAttempt.value, 18)
|
||||
if (
|
||||
dtToken.balance.notEqual(contractBalance) &&
|
||||
contractBalance.ge(ZERO_BD)
|
||||
) {
|
||||
// we have a difference. let's absorb that
|
||||
createPoolTransaction(event, 'gulp', event.params.caller.toHexString())
|
||||
dtToken.balance = contractBalance
|
||||
dtToken.save()
|
||||
updatePoolTransactionToken(
|
||||
ptx,
|
||||
dtToken.id,
|
||||
contractBalance.minus(dtTokenBalance),
|
||||
contractBalance,
|
||||
ZERO_BD
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
202
subgraph.yaml
202
subgraph.yaml
@ -1,213 +1,89 @@
|
||||
specVersion: 0.0.2
|
||||
specVersion: 0.0.3
|
||||
description: Ocean provides data sharing through IDOs
|
||||
repository: https://github.com/oceanprotocol/ocean-subgraph
|
||||
schema:
|
||||
file: ./schema.graphql
|
||||
dataSources:
|
||||
- kind: ethereum/contract
|
||||
name: Factory
|
||||
network: mainnet
|
||||
name: ERC721Factory
|
||||
network: barge
|
||||
source:
|
||||
address: '0xbe0083053744ECb871510C88dC0f6b77Da162706'
|
||||
abi: Factory
|
||||
startBlock: 11105585
|
||||
address: '0x0599a4a2873B38D836E10302De1ca4834F7BDF4E'
|
||||
abi: ERC721Factory
|
||||
startBlock: 0
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/factory.ts
|
||||
file: ./src/mappings/erc721Factory.ts
|
||||
entities:
|
||||
- PoolFactory
|
||||
- ERC721Factory
|
||||
abis:
|
||||
- name: Factory
|
||||
file: ./abis/BFactory.json
|
||||
- name: ERC721Factory
|
||||
file: ./abis/ERC721Factory.json
|
||||
eventHandlers:
|
||||
- event: BPoolRegistered(address,indexed address)
|
||||
handler: handleNewPool
|
||||
- kind: ethereum/contract
|
||||
name: DTFactory
|
||||
network: mainnet
|
||||
source:
|
||||
address: '0x57317f97E9EA49eBd19f7c9bB7c180b8cDcbDeB9'
|
||||
abi: DTFactory
|
||||
startBlock: 11105560
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/dtfactory.ts
|
||||
entities:
|
||||
- DatatokenFactory
|
||||
abis:
|
||||
- name: DTFactory
|
||||
file: ./abis/DTFactory.json
|
||||
eventHandlers:
|
||||
- event: TokenRegistered(indexed address,string,string,uint256,indexed address,indexed string)
|
||||
- event: NFTCreated(indexed address,indexed address,indexed string,address)
|
||||
handler: handleNftCreated
|
||||
- event: TokenCreated(indexed address,indexed address,indexed string)
|
||||
handler: handleNewToken
|
||||
- kind: ethereum/contract
|
||||
name: Metadata
|
||||
network: mainnet
|
||||
source:
|
||||
address: '0x1a4b70d8c9DcA47cD6D0Fb3c52BB8634CA1C0Fdf'
|
||||
abi: Metadata
|
||||
startBlock: 11105610
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/metadata.ts
|
||||
entities:
|
||||
- Metadata
|
||||
abis:
|
||||
- name: Metadata
|
||||
file: ./abis/Metadata.json
|
||||
eventHandlers:
|
||||
- event: MetadataCreated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataCreated
|
||||
- event: MetadataUpdated(indexed address,indexed address,bytes,bytes)
|
||||
handler: handleMetadataUpdated
|
||||
- kind: ethereum/contract
|
||||
name: FixedRateExchange
|
||||
network: mainnet
|
||||
network: barge
|
||||
source:
|
||||
address: '0x608d05214E42722B94a54cF6114d4840FCfF84e1'
|
||||
address: '0x2356DeCd8CFB6c6f2bf46b5ED4531818B4662337'
|
||||
abi: FixedRateExchange
|
||||
startBlock: 11105610
|
||||
startBlock: 0
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/fixedrateexchange.ts
|
||||
file: ./src/mappings/fixedRateExchange.ts
|
||||
entities:
|
||||
- FixedRateExchange
|
||||
abis:
|
||||
- name: FixedRateExchange
|
||||
file: ./abis/FixedRateExchange.json
|
||||
- name: ERC20
|
||||
file: ./abis/ERC20.json
|
||||
- name: ERC20SymbolBytes
|
||||
file: ./abis/ERC20SymbolBytes.json
|
||||
- name: ERC20NameBytes
|
||||
file: ./abis/ERC20NameBytes.json
|
||||
eventHandlers:
|
||||
- event: ExchangeCreated(indexed bytes32,indexed address,indexed address,address,uint256)
|
||||
handler: handleExchangeCreated
|
||||
- event: ExchangeActivated(indexed bytes32,indexed address)
|
||||
handler: handleExchangeActivated
|
||||
- event: ExchangeDeactivated(indexed bytes32,indexed address)
|
||||
handler: handleExchangeDeactivated
|
||||
- event: ExchangeRateChanged(indexed bytes32,indexed address,uint256)
|
||||
handler: handleExchangeRateChanged
|
||||
- event: Swapped(indexed bytes32,indexed address,uint256,uint256)
|
||||
handler: handleSwapped
|
||||
- kind: ethereum/contract
|
||||
name: Dispenser
|
||||
network: mainnet
|
||||
name: FactoryRouter
|
||||
network: barge
|
||||
source:
|
||||
address: '0xDEfD0018969cd2d4E648209F876ADe184815f038'
|
||||
abi: Dispenser
|
||||
startBlock: 12398958
|
||||
address: '0x5509dc151e25BdA96d508A5994654980b7574883'
|
||||
abi: FactoryRouter
|
||||
startBlock: 0
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/dispenser.ts
|
||||
file: ./src/mappings/factoryRouter.ts
|
||||
entities:
|
||||
- Dispenser
|
||||
- FactoryRouter
|
||||
abis:
|
||||
- name: Dispenser
|
||||
file: ./abis/Dispenser.json
|
||||
- name: FactoryRouter
|
||||
file: ./abis/FactoryRouter.json
|
||||
eventHandlers:
|
||||
- event: Activated(indexed address)
|
||||
handler: handleDispenserActivated
|
||||
- event: Deactivated(indexed address)
|
||||
handler: handleDispenserDeactivated
|
||||
- event: AcceptedMinter(indexed address)
|
||||
handler: handleDispenserAcceptedMinter
|
||||
- event: RemovedMinter(indexed address)
|
||||
handler: handleDispenserRemovedMinter
|
||||
- event: TokensDispensed(indexed address,indexed address,uint256)
|
||||
handler: handleDispenserTokensDispensed
|
||||
- event: OwnerWithdrawed(indexed address,indexed address,uint256)
|
||||
handler: handleDispenserOwnerWithdrawed
|
||||
- event: NewPool(indexed address,bool)
|
||||
handler: handleNewPool
|
||||
templates:
|
||||
- kind: ethereum/contract
|
||||
name: Pool
|
||||
network: mainnet
|
||||
- name: ERC20Template
|
||||
kind: ethereum/contract
|
||||
network: barge
|
||||
source:
|
||||
abi: Pool
|
||||
abi: ERC20Template
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/pool.ts
|
||||
file: ./src/mappings/erc20Template.ts
|
||||
entities:
|
||||
- Pool
|
||||
- PoolFactory
|
||||
- Swap
|
||||
- ERC20Template
|
||||
abis:
|
||||
- name: Pool
|
||||
file: ./abis/BPool.json
|
||||
- name: BToken
|
||||
file: ./abis/BToken.json
|
||||
- name: ERC20
|
||||
file: ./abis/ERC20.json
|
||||
- name: ERC20SymbolBytes
|
||||
file: ./abis/ERC20SymbolBytes.json
|
||||
- name: ERC20NameBytes
|
||||
file: ./abis/ERC20NameBytes.json
|
||||
- name: ERC20Template
|
||||
file: ./abis/ERC20Template.json
|
||||
eventHandlers:
|
||||
- event: LOG_CALL(indexed bytes4,indexed address,bytes)
|
||||
topic0: '0x34e1990700000000000000000000000000000000000000000000000000000000'
|
||||
handler: handleSetSwapFee
|
||||
- event: LOG_CALL(indexed bytes4,indexed address,bytes)
|
||||
topic0: '0x92eefe9b00000000000000000000000000000000000000000000000000000000'
|
||||
handler: handleSetController
|
||||
- event: LOG_CALL(indexed bytes4,indexed address,bytes)
|
||||
topic0: '0x49b5955200000000000000000000000000000000000000000000000000000000'
|
||||
handler: handleSetPublicSwap
|
||||
- event: LOG_CALL(indexed bytes4,indexed address,bytes)
|
||||
topic0: '0x4bb278f300000000000000000000000000000000000000000000000000000000'
|
||||
handler: handleFinalize
|
||||
- event: LOG_CALL(indexed bytes4,indexed address,bytes)
|
||||
topic0: '0xd1d7bc9100000000000000000000000000000000000000000000000000000000'
|
||||
handler: handleSetup
|
||||
- event: LOG_CALL(indexed bytes4,indexed address,bytes)
|
||||
topic0: '0x3fdddaa200000000000000000000000000000000000000000000000000000000'
|
||||
handler: handleRebind
|
||||
- event: LOG_CALL(indexed bytes4,indexed address,bytes)
|
||||
topic0: '0xe4e1e53800000000000000000000000000000000000000000000000000000000'
|
||||
handler: handleRebind
|
||||
- event: LOG_CALL(indexed bytes4,indexed address,bytes)
|
||||
topic0: '0x8c28cbe800000000000000000000000000000000000000000000000000000000'
|
||||
handler: handleGulp
|
||||
- event: LOG_JOIN(indexed address,indexed address,uint256)
|
||||
handler: handleJoinPool
|
||||
- event: LOG_EXIT(indexed address,indexed address,uint256)
|
||||
handler: handleExitPool
|
||||
- event: LOG_SWAP(indexed address,indexed address,indexed address,uint256,uint256)
|
||||
handler: handleSwap
|
||||
- event: Transfer(indexed address,indexed address,uint256)
|
||||
handler: handleTransfer
|
||||
|
||||
- kind: ethereum/contract
|
||||
name: DataToken
|
||||
network: mainnet
|
||||
source:
|
||||
abi: DataToken
|
||||
mapping:
|
||||
kind: ethereum/events
|
||||
apiVersion: 0.0.5
|
||||
language: wasm/assemblyscript
|
||||
file: ./src/mappings/datatoken.ts
|
||||
entities:
|
||||
- DataToken
|
||||
- DatatokenFactory
|
||||
abis:
|
||||
- name: DataToken
|
||||
file: ./abis/DataTokenTemplate.json
|
||||
eventHandlers:
|
||||
- event: Transfer(indexed address,indexed address,uint256)
|
||||
handler: handleTransfer
|
||||
- event: OrderStarted(indexed address,indexed address,uint256,uint256,uint256,indexed address,uint256)
|
||||
- event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,indexed address,uint256)
|
||||
handler: handleOrderStarted
|
||||
- event: MinterApproved(address,address)
|
||||
handler: handleMinterApproved
|
||||
|
Loading…
Reference in New Issue
Block a user