import { Contract as ConfluxSdkContract } from "js-conflux-sdk"; import { BaseProvider } from "../providers"; import { Signer } from "../signers"; export class Contract extends ConfluxSdkContract { provider: BaseProvider | null; signer: Signer | null; constructor(addressOrName: string, abi: any, signerOrProvider?: BaseProvider | Signer) { const conflux = signerOrProvider.cfxClient; super({ "abi": abi, "address": addressOrName }, conflux); if (signerOrProvider == null) { this.provider = null; this.signer = null; } else if (signerOrProvider instanceof Signer) { this.provider = null; this.signer = signerOrProvider; } else if (signerOrProvider instanceof BaseProvider) { this.provider = signerOrProvider; this.signer = null; } } /** * attach to a new collection */ public attach(addressOrName: string): Contract { super.attach(addressOrName); return this; } /** * connect to a provider or a signer */ public connect(signerOrProvider: Signer | BaseProvider): Contract { return new Contract(this.address, this.abi, signerOrProvider); } /** * whether to be deployed or not */ public deployed() { } }