@asset-projects/ethers-wrapper
Version:
230 lines (229 loc) • 8.7 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getERC20TransferEstimateGas = exports.erc20CallStaticTransfer = exports.getERC20Allowance = exports.erc20Approve = exports.erc20Transfer = exports.getERC20Balance = exports.getERC20TokenData = exports.getERC20TotalSupply = exports.getERC20Decimals = exports.getERC20Symbol = exports.getERC20Name = void 0;
const ethers_1 = require("ethers");
const helpers_1 = require("../../helpers");
const getERC20Contract = (provider, contractAddress) => {
return new ethers_1.ethers.Contract(contractAddress, helpers_1.ERC20_ABI, provider);
};
const getERC20ContractSigner = (signer, contractAddress) => {
return new ethers_1.ethers.Contract(contractAddress, helpers_1.ERC20_ABI, signer);
};
/**
* @param provider Provider;
* @param contractAddress string; 0x299533fC...
* @returns Promise<string | undefined>;
*/
const getERC20Name = (provider, contractAddress) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20Contract(provider, contractAddress);
try {
return (yield contract.name());
}
catch (e) {
console.log(e);
return;
}
});
exports.getERC20Name = getERC20Name;
/**
* @param provider Provider;
* @param contractAddress string; 0x299533fC...
* @returns Promise<string | undefined>;
*/
const getERC20Symbol = (provider, contractAddress) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20Contract(provider, contractAddress);
try {
return (yield contract.symbol());
}
catch (e) {
console.log(e);
return;
}
});
exports.getERC20Symbol = getERC20Symbol;
/**
* @param provider Provider;
* @param contractAddress string; 0x299533fC...
* @returns Promise<number | undefined>;
*/
const getERC20Decimals = (provider, contractAddress) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20Contract(provider, contractAddress);
try {
return (yield contract.decimals());
}
catch (e) {
console.log(e);
return;
}
});
exports.getERC20Decimals = getERC20Decimals;
/**
* @param provider Provider;
* @param contractAddress string; 0x299533fC...
* @returns Promise<ethers.BigNumber | undefined>;
*/
const getERC20TotalSupply = (provider, contractAddress) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20Contract(provider, contractAddress);
try {
return (yield contract.totalSupply());
}
catch (e) {
console.log(e);
return;
}
});
exports.getERC20TotalSupply = getERC20TotalSupply;
/**
* @param provider Provider;
* @param contractAddress string; 0x299533fC...
* @returns Promise<[string | undefined, string | undefined, number | undefined, ethers.BigNumber | undefined]>;
*/
const getERC20TokenData = (provider, contractAddress) => __awaiter(void 0, void 0, void 0, function* () {
return yield Promise.all([
(() => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, exports.getERC20Name)(provider, contractAddress);
}))(),
(() => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, exports.getERC20Symbol)(provider, contractAddress);
}))(),
(() => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, exports.getERC20Decimals)(provider, contractAddress);
}))(),
(() => __awaiter(void 0, void 0, void 0, function* () {
return yield (0, exports.getERC20TotalSupply)(provider, contractAddress);
}))(),
]);
});
exports.getERC20TokenData = getERC20TokenData;
/**
* @param provider Provider;
* @param contractAddress string; 0x299533fC...
* @param targetAddress string; 0xb3A566Ff63c...
* @returns Promise<ethers.BigNumber | undefined>;
*/
const getERC20Balance = (provider, contractAddress, targetAddress) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20Contract(provider, contractAddress);
try {
return (yield contract.balanceOf(targetAddress));
}
catch (e) {
console.log(e);
return;
}
});
exports.getERC20Balance = getERC20Balance;
/**
* @param signer ethers.Signer;
* @param contractAddress string; 0x299533fC...
* @param to string; 0xb3A566Ff63c...
* @param amount ethers.utils.BigNumber; ethers.utils.parseEther('0.1', 18)
* @param overrides overrides: { gasLimit, maxFeePerGas, maxPriorityFeePerGas } | undefined;
* @returns Promise<ethers.providers.TransactionResponse | undefined>;
*/
const erc20Transfer = (signer, contractAddress, to, amount, overrides) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20ContractSigner(signer, contractAddress);
const args = [to, amount];
if (overrides)
args.push(overrides);
try {
const tx = yield contract.transfer(...args);
return tx;
}
catch (e) {
console.error(e);
return;
}
});
exports.erc20Transfer = erc20Transfer;
/**
* @param signer ethers.Signer;
* @param contractAddress string; 0x299533fC...
* @param spender string; 0xb3A566Ff63c...
* @param amount BigNumber; ethers.utils.parseEther('0.1', 18)
* @param overrides overrides: { gasLimit, maxFeePerGas, maxPriorityFeePerGas } | undefined;
* @returns Promise<ethers.providers.TransactionResponse | undefined>;
*/
const erc20Approve = (signer, contractAddress, spender, amount, overrides) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20ContractSigner(signer, contractAddress);
const args = [spender, amount];
if (overrides)
args.push(overrides);
try {
const tx = yield contract.approve(...args);
return tx;
}
catch (e) {
console.error(e);
return;
}
});
exports.erc20Approve = erc20Approve;
/**
* @param provider Provider;
* @param contractAddress string; 0x299533fC...
* @param owner string; 0xb3A566Ff63c...
* @param spender string; 0xb3A566Ff63c...
* @returns Promise<ethers.BigNumber | undefined>;
*/
const getERC20Allowance = (provider, contractAddress, owner, spender) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20Contract(provider, contractAddress);
try {
return (yield contract.allowance(owner, spender));
}
catch (e) {
console.error(e);
return;
}
});
exports.getERC20Allowance = getERC20Allowance;
/**
* @param signer ethers.Signer;
* @param contractAddress string; 0x299533fC...
* @param to string; 0xb3A566Ff63c...
* @param amount ethers.utils.BigNumber; ethers.utils.parseEther('0.1', 18)
* @param overrides overrides: { gasLimit, maxFeePerGas, maxPriorityFeePerGas } | undefined;
* @returns Promise<boolean>;
*/
const erc20CallStaticTransfer = (signer, contractAddress, to, amount, overrides) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20ContractSigner(signer, contractAddress);
const args = [to, amount];
if (overrides)
args.push(overrides);
try {
yield contract.callStatic.transfer(...args);
return true;
}
catch (e) {
console.log(e);
return false;
}
});
exports.erc20CallStaticTransfer = erc20CallStaticTransfer;
/**
* @param signer ethers.Signer;
* @param contractAddress string; 0x299533fC...
* @param to string; 0xb3A566Ff63c...
* @param amount ethers.utils.BigNumber; ethers.utils.parseEther('0.1', 18)
* @returns Promise<ethers.BigNumber | undefined>;
*/
const getERC20TransferEstimateGas = (signer, contractAddress, to, amount) => __awaiter(void 0, void 0, void 0, function* () {
const contract = getERC20ContractSigner(signer, contractAddress);
try {
const result = yield contract.estimateGas.transfer(to, amount);
return result;
}
catch (e) {
console.error(e);
return;
}
});
exports.getERC20TransferEstimateGas = getERC20TransferEstimateGas;