@settlemint/solidity-token-erc20-crowdsale
Version:
Smart contract set to build an ERC20 token sale in SettleMint
30 lines (23 loc) • 1.05 kB
text/typescript
import { Address, BigInt } from '@graphprotocol/graph-ts';
import { VestingWalletContract } from '../../generated/schema';
import { VestingWallet } from '../../generated/vestingwallet/VestingWallet';
import { fetchAccount } from './account';
export function fetchVestingWallet(address: Address): VestingWalletContract {
const account = fetchAccount(address);
let contract = VestingWalletContract.load(account.id.toHex());
if (contract == null) {
const endpoint = VestingWallet.bind(address);
const start = endpoint.try_start();
const duration = endpoint.try_duration();
contract = new VestingWalletContract(account.id.toHex());
contract.start = start.reverted ? null : start.value;
contract.duration = duration.reverted ? null : duration.value;
contract.erc20Released = BigInt.fromString('0');
contract.etherReleased = BigInt.fromString('0');
account.asVestingWallet = contract.id;
contract.asAccount = account.id;
}
contract.save();
account.save();
return contract as VestingWalletContract;
}