import { BscScan } from "../client"; import { CheckProxyVerificationRequest, CheckProxyVerificationResponse, GetAbiRequest, GetAbiResponse, GetCreatorAndTxnHashRequest, GetCreatorAndTxnHashResponse, GetSourceCodeRequest, GetSourceCodeResponse, VerifyProxyContractRequest, VerifyProxyContractResponse, VerifySourceCodeRequest, VerifySourceCodeResponse, } from "../typings"; class Contracts { /** * Represents the BscScan client * * @private * @type {BscScan} * @memberof Contracts */ private client: BscScan; /** * Creates an instance of Contracts. * * @param {BscScan} client * @memberof Contracts */ constructor(client: BscScan) { this.client = client; } /** * Get Contract ABI for Verified Contract Source Codes * https://docs.bscscan.com/api-endpoints/contracts#get-contract-abi-for-verified-contract-source-codes * * @param {GetAbiRequest} opts * @returns {Promise} * @memberof Contracts */ async getAbi(opts: GetAbiRequest): Promise { return this.do("getabi", opts); } /** * Get Contract Source Code for Verified Contract Source Codes * https://docs.bscscan.com/api-endpoints/contracts#get-contract-source-code-for-verified-contract-source-codes * * @param {GetSourceCodeRequest} opts * @returns {Promise} * @memberof Contracts */ async getSourceCode(opts: GetSourceCodeRequest): Promise { return this.do("getsourcecode", opts); } /** * Get Contract Creator and Creation Tx Hash * https://docs.bscscan.com/api-endpoints/contracts#get-contract-creator-and-creation-tx-hash * * @param {GetCreatorAndTxnHashRequest} opts * @returns {Promise} * @memberof Contracts */ async getCreatorAndTxnHash(opts: GetCreatorAndTxnHashRequest): Promise { if (opts.contractAddresses.length > 5) { throw new Error("Max 5 contract addresses allowed"); } return this.do("getcontractcreation", opts); } /** * Verify Source Code * https://docs.bscscan.com/api-endpoints/contracts#verify-source-code * * @param {VerifySourceCodeRequest} opts * @returns {Promise} * @memberof Contracts */ async verifySourceCode(opts: VerifySourceCodeRequest): Promise { const request = this.client.newRequest("POST", "contract", "verifysourcecode", opts); return this.client.do(request); } // todo: checkverifystatus /** * Verifying Proxy Contract * https://docs.bscscan.com/api-endpoints/contracts#verifying-proxy-contract-using-curl * * @param {VerifyProxyContractRequest} opts * @returns {Promise} * @memberof Contracts */ async verifyProxyContract(opts: VerifyProxyContractRequest): Promise { const request = this.client.newRequest("POST", "contract", "verifyproxycontract", opts); return this.client.do(request); } /** * Checking Proxy Contract Verification Submission Status * https://docs.bscscan.com/api-endpoints/contracts#checking-proxy-contract-verification-submission-status-using-curl * * @param {CheckProxyVerificationRequest} opts * @returns {Promise} * @memberof Contracts */ async checkProxyVerification(opts: CheckProxyVerificationRequest): Promise { const request = this.client.newRequest("POST", "contract", "checkproxyverification", opts); return this.client.do(request); } private async do(action: string, opts: Record): Promise { return this.client.query("contract", action, opts); } } export { Contracts };