44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
import {ethers} from "ethers";
|
|
import {factoryAbi, queryHelperAbi, vaultAbi} from "@/blockchain/abi.js";
|
|
import {useStore} from "@/store/store.js";
|
|
|
|
|
|
export function vaultAddress( owner, num=0) {
|
|
const s = useStore()
|
|
// console.log('vaultAddress', owner, s.factory, s.vaultInitCodeHash)
|
|
if( !owner )
|
|
return null
|
|
const salt = ethers.solidityPackedKeccak256(['address','uint8'],[owner,num])
|
|
return ethers.getCreate2Address(s.factory, salt, s.vaultInitCodeHash)
|
|
}
|
|
|
|
|
|
export function contractOrNull(addr,abi,provider) {
|
|
try {
|
|
return new ethers.Contract(addr,abi,provider)
|
|
}
|
|
catch (e) {
|
|
return null
|
|
}
|
|
}
|
|
|
|
export async function factoryContract() {
|
|
const s = useStore()
|
|
return contractOrNull(s.factory, factoryAbi, s.provider)
|
|
}
|
|
|
|
export async function queryHelperContract() {
|
|
const s = useStore()
|
|
return contractOrNull(s.helper, queryHelperAbi, s.provider)
|
|
}
|
|
|
|
export async function poolContract(addr) {
|
|
const s = useStore()
|
|
return contractOrNull(addr, uniswapV3PoolAbi, s.provider)
|
|
}
|
|
|
|
export async function vaultContract(owner, num, provider) {
|
|
const addr = vaultAddress(owner, num)
|
|
return new ethers.Contract(addr, vaultAbi, provider)
|
|
}
|