Moved shared logic into BaseContract

Shared validation and default application can be moved into BaseContract

Assignment before return can be skipped here as it saves a line and
makes a dramatic difference.

Store the functionSignature once and reuse, this saving is large for
Exchange functions with order tuples.
This commit is contained in:
Jacob Evans
2019-11-15 23:02:24 +10:00
parent 9e9e0d6592
commit 255aca8789
23 changed files with 3408 additions and 15465 deletions

View File

@@ -103,9 +103,11 @@ export class CoordinatorContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [exchange, chainId]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -482,242 +484,150 @@ export class CoordinatorContract extends BaseContract {
public EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH(): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorContract;
assert.isString('hash', hash);
assert.isString('signature', signature);
const functionSignature = 'getSignerAddress(bytes32,bytes)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [hash, signature]);
const rawCallResult = await self._evmExecAsync(encodedData);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'EIP712_COORDINATOR_APPROVAL_SCHEMA_HASH()',
[],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [hash, signature]);
},
};
}
/**
* Calculates the EIP712 hash of a 0x transaction using the domain separator of the Exchange contract.
* @param transaction 0x transaction containing salt, signerAddress, and data.
* @returns EIP712 hash of the transaction with the domain separator of this contract.
*/
public getTransactionHash(transaction: {
salt: BigNumber;
signerAddress: string;
data: string;
}): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorContract;
const functionSignature = 'getTransactionHash((uint256,address,bytes))';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [transaction]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
return self._strictEncodeArguments(functionSignature, [transaction]);
},
};
}
public EIP712_COORDINATOR_DOMAIN_HASH(): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorContract;
const functionSignature = 'getCoordinatorApprovalHash((address,bytes32,bytes,uint256))';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('EIP712_COORDINATOR_DOMAIN_HASH()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('EIP712_COORDINATOR_DOMAIN_HASH()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [approval]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('EIP712_COORDINATOR_DOMAIN_HASH()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [approval]);
},
};
}
public EIP712_COORDINATOR_DOMAIN_NAME(): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorContract;
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('EIP712_COORDINATOR_DOMAIN_NAME()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('EIP712_COORDINATOR_DOMAIN_NAME()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('EIP712_COORDINATOR_DOMAIN_NAME()', []);
return abiEncodedTransactionData;
},
};
}
public EIP712_COORDINATOR_DOMAIN_VERSION(): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorContract;
assert.isString('txOrigin', txOrigin);
assert.isString('transactionSignature', transactionSignature);
assert.isArray('approvalExpirationTimeSeconds', approvalExpirationTimeSeconds);
assert.isArray('approvalSignatures', approvalSignatures);
const functionSignature = 'executeTransaction((uint256,address,bytes),address,bytes,uint256[],bytes[])';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments(functionSignature, [
transaction,
txOrigin.toLowerCase(),
transactionSignature,
approvalExpirationTimeSeconds,
approvalSignatures,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const encodedData = self._strictEncodeArguments('EIP712_COORDINATOR_DOMAIN_VERSION()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('EIP712_COORDINATOR_DOMAIN_VERSION()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments(functionSignature, [
transaction,
txOrigin.toLowerCase(),
transactionSignature,
approvalExpirationTimeSeconds,
approvalSignatures,
]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
transaction,
txOrigin.toLowerCase(),
transactionSignature,
approvalExpirationTimeSeconds,
approvalSignatures,
]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'EIP712_COORDINATOR_DOMAIN_VERSION()',
[],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [
transaction,
txOrigin.toLowerCase(),
transactionSignature,
approvalExpirationTimeSeconds,
approvalSignatures,
]);
},
};
}
public EIP712_EXCHANGE_DOMAIN_HASH(): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorContract;
const functionSignature = 'EIP712_EXCHANGE_DOMAIN_HASH()';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('EIP712_EXCHANGE_DOMAIN_HASH()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('EIP712_EXCHANGE_DOMAIN_HASH()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('EIP712_EXCHANGE_DOMAIN_HASH()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}
@@ -750,56 +660,31 @@ export class CoordinatorContract extends BaseContract {
assert.isString('txOrigin', txOrigin);
assert.isString('transactionSignature', transactionSignature);
assert.isArray('approvalSignatures', approvalSignatures);
const functionSignature =
'assertValidCoordinatorApprovals((uint256,address,bytes),address,bytes,uint256[],bytes[])';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
transaction,
txOrigin.toLowerCase(),
transactionSignature,
approvalExpirationTimeSeconds,
approvalSignatures,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments(
'assertValidCoordinatorApprovals((uint256,uint256,uint256,address,bytes),address,bytes,bytes[])',
[transaction, txOrigin.toLowerCase(), transactionSignature, approvalSignatures],
);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder(
'assertValidCoordinatorApprovals((uint256,uint256,uint256,address,bytes),address,bytes,bytes[])',
);
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'assertValidCoordinatorApprovals((uint256,uint256,uint256,address,bytes),address,bytes,bytes[])',
[transaction, txOrigin.toLowerCase(), transactionSignature, approvalSignatures],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [
transaction,
txOrigin.toLowerCase(),
transactionSignature,
approvalExpirationTimeSeconds,
approvalSignatures,
]);
},
};
}
@@ -830,6 +715,7 @@ export class CoordinatorContract extends BaseContract {
> {
const self = (this as any) as CoordinatorContract;
assert.isString('data', data);
const functionSignature = 'decodeOrdersFromFillData(bytes)';
return {
async callAsync(
@@ -853,29 +739,11 @@ export class CoordinatorContract extends BaseContract {
takerFeeAssetData: string;
}>
> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('decodeOrdersFromFillData(bytes)', [data]);
let rawCallResult;
const encodedDataBytes = Buffer.from(encodedData.substr(2), 'hex');
try {
rawCallResult = await self._evmExecAsync(encodedDataBytes);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('decodeOrdersFromFillData(bytes)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [data]);
const rawCallResult = await self._evmExecAsync(encodedData);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<
Array<{
makerAddress: string;
takerAddress: string;
@@ -893,14 +761,9 @@ export class CoordinatorContract extends BaseContract {
takerFeeAssetData: string;
}>
>(rawCallResult);
// tslint:enable boolean-naming
return result;
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('decodeOrdersFromFillData(bytes)', [
data,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [data]);
},
};
}
@@ -1063,101 +926,18 @@ export class CoordinatorContract extends BaseContract {
transactionSignature: string;
}): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorContract;
const functionSignature = 'EIP712_COORDINATOR_DOMAIN_HASH()';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('getCoordinatorApprovalHash((address,bytes32,bytes))', [
approval,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('getCoordinatorApprovalHash((address,bytes32,bytes))');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'getCoordinatorApprovalHash((address,bytes32,bytes))',
[approval],
);
return abiEncodedTransactionData;
},
};
}
/**
* Recovers the address of a signer given a hash and signature.
* @param hash Any 32 byte hash.
* @param signature Proof that the hash has been signed by signer.
* @returns signerAddress Address of the signer.
*/
public getSignerAddress(hash: string, signature: string): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorContract;
assert.isString('hash', hash);
assert.isString('signature', signature);
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('getSignerAddress(bytes32,bytes)', [hash, signature]);
let rawCallResult;
const encodedDataBytes = Buffer.from(encodedData.substr(2), 'hex');
try {
rawCallResult = await self._evmExecAsync(encodedDataBytes);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('getSignerAddress(bytes32,bytes)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('getSignerAddress(bytes32,bytes)', [
hash,
signature,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}

View File

@@ -106,9 +106,11 @@ export class CoordinatorRegistryContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -283,114 +285,62 @@ export class CoordinatorRegistryContract extends BaseContract {
public setCoordinatorEndpoint(coordinatorEndpoint: string): ContractTxFunctionObj<void> {
const self = (this as any) as CoordinatorRegistryContract;
assert.isString('coordinatorEndpoint', coordinatorEndpoint);
const functionSignature = 'setCoordinatorEndpoint(string)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('setCoordinatorEndpoint(string)', [
coordinatorEndpoint,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [coordinatorEndpoint]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('setCoordinatorEndpoint(string)', [
coordinatorEndpoint,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [coordinatorEndpoint]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('setCoordinatorEndpoint(string)', [
coordinatorEndpoint,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('setCoordinatorEndpoint(string)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [coordinatorEndpoint]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('setCoordinatorEndpoint(string)', [
coordinatorEndpoint,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [coordinatorEndpoint]);
},
};
}
/**
* Gets the endpoint for a Coordinator.
* @param coordinatorOperator operator of the Coordinator endpoint.
*/
public getCoordinatorEndpoint(coordinatorOperator: string): ContractFunctionObj<string> {
const self = (this as any) as CoordinatorRegistryContract;
assert.isString('coordinatorOperator', coordinatorOperator);
const functionSignature = 'getCoordinatorEndpoint(address)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [coordinatorOperator.toLowerCase()]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
return self._strictEncodeArguments(functionSignature, [coordinatorOperator.toLowerCase()]);
},
};
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -108,9 +108,11 @@ export class ERC20TokenContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -348,118 +350,40 @@ export class ERC20TokenContract extends BaseContract {
const self = (this as any) as ERC20TokenContract;
assert.isString('_spender', _spender);
assert.isBigNumber('_value', _value);
const functionSignature = 'approve(address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [
_spender.toLowerCase(),
_value,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [_spender.toLowerCase(), _value]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [
_spender.toLowerCase(),
_value,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [_spender.toLowerCase(), _value]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<boolean> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [
_spender.toLowerCase(),
_value,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [_spender.toLowerCase(), _value]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [
_spender.toLowerCase(),
_value,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_spender.toLowerCase(), _value]);
},
};
}
@@ -469,48 +393,18 @@ export class ERC20TokenContract extends BaseContract {
*/
public totalSupply(): ContractFunctionObj<BigNumber> {
const self = (this as any) as ERC20TokenContract;
const functionSignature = 'totalSupply()';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('totalSupply()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('totalSupply()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('totalSupply()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}
@@ -526,122 +420,52 @@ export class ERC20TokenContract extends BaseContract {
assert.isString('_from', _from);
assert.isString('_to', _to);
assert.isBigNumber('_value', _value);
const functionSignature = 'transferFrom(address,address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_value,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_value,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<boolean> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_value,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
_from.toLowerCase(),
_to.toLowerCase(),
_value,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_from.toLowerCase(), _to.toLowerCase(), _value]);
},
};
}
@@ -653,50 +477,18 @@ export class ERC20TokenContract extends BaseContract {
public balanceOf(_owner: string): ContractFunctionObj<BigNumber> {
const self = (this as any) as ERC20TokenContract;
assert.isString('_owner', _owner);
const functionSignature = 'balanceOf(address)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('balanceOf(address)', [_owner.toLowerCase()]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('balanceOf(address)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [_owner.toLowerCase()]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('balanceOf(address)', [
_owner.toLowerCase(),
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_owner.toLowerCase()]);
},
};
}
@@ -710,118 +502,40 @@ export class ERC20TokenContract extends BaseContract {
const self = (this as any) as ERC20TokenContract;
assert.isString('_to', _to);
assert.isBigNumber('_value', _value);
const functionSignature = 'transfer(address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('transfer(address,uint256)', [
_to.toLowerCase(),
_value,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [_to.toLowerCase(), _value]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('transfer(address,uint256)', [
_to.toLowerCase(),
_value,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [_to.toLowerCase(), _value]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<boolean> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('transfer(address,uint256)', [
_to.toLowerCase(),
_value,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('transfer(address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [_to.toLowerCase(), _value]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('transfer(address,uint256)', [
_to.toLowerCase(),
_value,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_to.toLowerCase(), _value]);
},
};
}
@@ -829,54 +543,21 @@ export class ERC20TokenContract extends BaseContract {
const self = (this as any) as ERC20TokenContract;
assert.isString('_owner', _owner);
assert.isString('_spender', _spender);
const functionSignature = 'allowance(address,address)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('allowance(address,address)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
_owner.toLowerCase(),
_spender.toLowerCase(),
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('allowance(address,address)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('allowance(address,address)', [
_owner.toLowerCase(),
_spender.toLowerCase(),
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_owner.toLowerCase(), _spender.toLowerCase()]);
},
};
}

View File

@@ -118,9 +118,11 @@ export class ERC721TokenContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -439,118 +441,40 @@ export class ERC721TokenContract extends BaseContract {
const self = (this as any) as ERC721TokenContract;
assert.isString('_approved', _approved);
assert.isBigNumber('_tokenId', _tokenId);
const functionSignature = 'approve(address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [
_approved.toLowerCase(),
_tokenId,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [_approved.toLowerCase(), _tokenId]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [
_approved.toLowerCase(),
_tokenId,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [_approved.toLowerCase(), _tokenId]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [
_approved.toLowerCase(),
_tokenId,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [_approved.toLowerCase(), _tokenId]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [
_approved.toLowerCase(),
_tokenId,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_approved.toLowerCase(), _tokenId]);
},
};
}
@@ -563,50 +487,18 @@ export class ERC721TokenContract extends BaseContract {
public balanceOf(_owner: string): ContractFunctionObj<BigNumber> {
const self = (this as any) as ERC721TokenContract;
assert.isString('_owner', _owner);
const functionSignature = 'balanceOf(address)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('balanceOf(address)', [_owner.toLowerCase()]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('balanceOf(address)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [_owner.toLowerCase()]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('balanceOf(address)', [
_owner.toLowerCase(),
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_owner.toLowerCase()]);
},
};
}
@@ -618,48 +510,18 @@ export class ERC721TokenContract extends BaseContract {
public getApproved(_tokenId: BigNumber): ContractFunctionObj<string> {
const self = (this as any) as ERC721TokenContract;
assert.isBigNumber('_tokenId', _tokenId);
const functionSignature = 'getApproved(uint256)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('getApproved(uint256)', [_tokenId]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('getApproved(uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [_tokenId]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('getApproved(uint256)', [_tokenId]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_tokenId]);
},
};
}
@@ -667,54 +529,21 @@ export class ERC721TokenContract extends BaseContract {
const self = (this as any) as ERC721TokenContract;
assert.isString('_owner', _owner);
assert.isString('_operator', _operator);
const functionSignature = 'isApprovedForAll(address,address)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<boolean> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('isApprovedForAll(address,address)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
_owner.toLowerCase(),
_operator.toLowerCase(),
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('isApprovedForAll(address,address)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('isApprovedForAll(address,address)', [
_owner.toLowerCase(),
_operator.toLowerCase(),
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_owner.toLowerCase(), _operator.toLowerCase()]);
},
};
}
@@ -727,48 +556,18 @@ export class ERC721TokenContract extends BaseContract {
public ownerOf(_tokenId: BigNumber): ContractFunctionObj<string> {
const self = (this as any) as ERC721TokenContract;
assert.isBigNumber('_tokenId', _tokenId);
const functionSignature = 'ownerOf(uint256)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('ownerOf(uint256)', [_tokenId]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('ownerOf(uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [_tokenId]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('ownerOf(uint256)', [_tokenId]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_tokenId]);
},
};
}
@@ -784,121 +583,56 @@ export class ERC721TokenContract extends BaseContract {
assert.isString('_from', _from);
assert.isString('_to', _to);
assert.isBigNumber('_tokenId', _tokenId);
const functionSignature = 'safeTransferFrom(address,address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('safeTransferFrom(address,address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'safeTransferFrom(address,address,uint256)',
[_from.toLowerCase(), _to.toLowerCase(), _tokenId],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
]);
},
};
}
@@ -926,124 +660,60 @@ export class ERC721TokenContract extends BaseContract {
assert.isString('_to', _to);
assert.isBigNumber('_tokenId', _tokenId);
assert.isString('_data', _data);
const functionSignature = 'safeTransferFrom(address,address,uint256,bytes)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
_data,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
_data,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('safeTransferFrom(address,address,uint256,bytes)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
_data,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('safeTransferFrom(address,address,uint256,bytes)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'safeTransferFrom(address,address,uint256,bytes)',
[_from.toLowerCase(), _to.toLowerCase(), _tokenId, _data],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
_data,
]);
},
};
}
@@ -1057,118 +727,49 @@ export class ERC721TokenContract extends BaseContract {
const self = (this as any) as ERC721TokenContract;
assert.isString('_operator', _operator);
assert.isBoolean('_approved', _approved);
const functionSignature = 'setApprovalForAll(address,bool)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_operator.toLowerCase(),
_approved,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_operator.toLowerCase(),
_approved,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
_operator.toLowerCase(),
_approved,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('setApprovalForAll(address,bool)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('setApprovalForAll(address,bool)', [
_operator.toLowerCase(),
_approved,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [_operator.toLowerCase(), _approved]);
},
};
}
@@ -1186,122 +787,56 @@ export class ERC721TokenContract extends BaseContract {
assert.isString('_from', _from);
assert.isString('_to', _to);
assert.isBigNumber('_tokenId', _tokenId);
const functionSignature = 'transferFrom(address,address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
return self._strictEncodeArguments(functionSignature, [
_from.toLowerCase(),
_to.toLowerCase(),
_tokenId,
]);
return abiEncodedTransactionData;
},
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -102,9 +102,11 @@ export class ForwarderContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [_exchange, _wethAssetData]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -449,108 +451,40 @@ export class ForwarderContract extends BaseContract {
public approveMakerAssetProxy(assetData: string): ContractTxFunctionObj<void> {
const self = (this as any) as ForwarderContract;
assert.isString('assetData', assetData);
const functionSignature = 'approveMakerAssetProxy(bytes)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('approveMakerAssetProxy(bytes)', [assetData]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [assetData]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('approveMakerAssetProxy(bytes)', [assetData]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [assetData]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('approveMakerAssetProxy(bytes)', [assetData]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('approveMakerAssetProxy(bytes)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [assetData]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('approveMakerAssetProxy(bytes)', [
assetData,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [assetData]);
},
};
}
@@ -596,123 +530,68 @@ export class ForwarderContract extends BaseContract {
assert.isArray('signatures', signatures);
assert.isBigNumber('feePercentage', feePercentage);
assert.isString('feeRecipient', feeRecipient);
const functionSignature =
'marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments(
'marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)',
[orders, makerAssetBuyAmount, signatures, feePercentage, feeRecipient.toLowerCase()],
);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [
orders,
makerAssetBuyAmount,
signatures,
feePercentage,
feeRecipient.toLowerCase(),
]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments(
'marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)',
[orders, makerAssetBuyAmount, signatures, feePercentage, feeRecipient.toLowerCase()],
);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [
orders,
makerAssetBuyAmount,
signatures,
feePercentage,
feeRecipient.toLowerCase(),
]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[BigNumber, BigNumber, BigNumber]> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
orders,
makerAssetBuyAmount,
signatures,
feePercentage,
feeRecipient.toLowerCase(),
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments(
'marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)',
[orders, makerAssetBuyAmount, signatures, feePercentage, feeRecipient.toLowerCase()],
);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder(
'marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)',
);
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber, BigNumber]>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber, BigNumber]>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256,address)',
[orders, makerAssetBuyAmount, signatures, feePercentage, feeRecipient.toLowerCase()],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [
orders,
makerAssetBuyAmount,
signatures,
feePercentage,
feeRecipient.toLowerCase(),
]);
},
};
}
@@ -753,278 +632,121 @@ export class ForwarderContract extends BaseContract {
assert.isArray('signatures', signatures);
assert.isBigNumber('feePercentage', feePercentage);
assert.isString('feeRecipient', feeRecipient);
const functionSignature =
'marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments(
'marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)',
[orders, signatures, feePercentage, feeRecipient.toLowerCase()],
);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [
orders,
signatures,
feePercentage,
feeRecipient.toLowerCase(),
]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments(
'marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)',
[orders, signatures, feePercentage, feeRecipient.toLowerCase()],
);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [
orders,
signatures,
feePercentage,
feeRecipient.toLowerCase(),
]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[BigNumber, BigNumber, BigNumber]> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
orders,
signatures,
feePercentage,
feeRecipient.toLowerCase(),
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments(
'marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)',
[orders, signatures, feePercentage, feeRecipient.toLowerCase()],
);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder(
'marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)',
);
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber, BigNumber]>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber, BigNumber]>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256,address)',
[orders, signatures, feePercentage, feeRecipient.toLowerCase()],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [
orders,
signatures,
feePercentage,
feeRecipient.toLowerCase(),
]);
},
};
}
public owner(): ContractFunctionObj<string> {
const self = (this as any) as ForwarderContract;
const functionSignature = 'owner()';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('owner()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('owner()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('owner()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}
public transferOwnership(newOwner: string): ContractTxFunctionObj<void> {
const self = (this as any) as ForwarderContract;
assert.isString('newOwner', newOwner);
const functionSignature = 'transferOwnership(address)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner.toLowerCase()]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [newOwner.toLowerCase()]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner.toLowerCase()]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [newOwner.toLowerCase()]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('transferOwnership(address)', [newOwner.toLowerCase()]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('transferOwnership(address)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [newOwner.toLowerCase()]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('transferOwnership(address)', [
newOwner.toLowerCase(),
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [newOwner.toLowerCase()]);
},
};
}
@@ -1039,109 +761,40 @@ export class ForwarderContract extends BaseContract {
const self = (this as any) as ForwarderContract;
assert.isString('assetData', assetData);
assert.isBigNumber('amount', amount);
const functionSignature = 'withdrawAsset(bytes,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('withdrawAsset(bytes,uint256)', [assetData, amount]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [assetData, amount]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('withdrawAsset(bytes,uint256)', [assetData, amount]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [assetData, amount]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('withdrawAsset(bytes,uint256)', [assetData, amount]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('withdrawAsset(bytes,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [assetData, amount]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('withdrawAsset(bytes,uint256)', [
assetData,
amount,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [assetData, amount]);
},
};
}

View File

@@ -86,9 +86,11 @@ export class IValidatorContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -180,55 +182,22 @@ export class IValidatorContract extends BaseContract {
assert.isString('hash', hash);
assert.isString('signerAddress', signerAddress);
assert.isString('signature', signature);
const functionSignature = 'isValidSignature(bytes32,address,bytes)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('isValidSignature(bytes32,address,bytes)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
hash,
signerAddress.toLowerCase(),
signature,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('isValidSignature(bytes32,address,bytes)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'isValidSignature(bytes32,address,bytes)',
[hash, signerAddress.toLowerCase(), signature],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [hash, signerAddress.toLowerCase(), signature]);
},
};
}

View File

@@ -86,9 +86,11 @@ export class IWalletContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -174,51 +176,18 @@ export class IWalletContract extends BaseContract {
const self = (this as any) as IWalletContract;
assert.isString('hash', hash);
assert.isString('signature', signature);
const functionSignature = 'isValidSignature(bytes32,bytes)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('isValidSignature(bytes32,bytes)', [hash, signature]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('isValidSignature(bytes32,bytes)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [hash, signature]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('isValidSignature(bytes32,bytes)', [
hash,
signature,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [hash, signature]);
},
};
}

View File

@@ -102,9 +102,11 @@ export class OrderValidatorContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [_exchange, _zrxAssetData]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -748,6 +750,8 @@ export class OrderValidatorContract extends BaseContract {
const self = (this as any) as OrderValidatorContract;
assert.isString('takerAddress', takerAddress);
const functionSignature =
'getOrderAndTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)';
return {
async callAsync(
@@ -768,44 +772,11 @@ export class OrderValidatorContract extends BaseContract {
}
]
> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments(
'getOrderAndTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)',
[order, takerAddress.toLowerCase()],
);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder(
'getOrderAndTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)',
);
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [order, takerAddress.toLowerCase()]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<
[
{ orderStatus: number; orderHash: string; orderTakerAssetFilledAmount: BigNumber },
{
@@ -820,15 +791,9 @@ export class OrderValidatorContract extends BaseContract {
}
]
>(rawCallResult);
// tslint:enable boolean-naming
return result;
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'getOrderAndTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)',
[order, takerAddress.toLowerCase()],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [order, takerAddress.toLowerCase()]);
},
};
}
@@ -836,57 +801,21 @@ export class OrderValidatorContract extends BaseContract {
const self = (this as any) as OrderValidatorContract;
assert.isString('target', target);
assert.isString('assetData', assetData);
const functionSignature = 'getBalanceAndAllowance(address,bytes)';
return {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[BigNumber, BigNumber]> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('getBalanceAndAllowance(address,bytes)', [
target.toLowerCase(),
assetData,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('getBalanceAndAllowance(address,bytes)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber]>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [target.toLowerCase(), assetData]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<[BigNumber, BigNumber]>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('getBalanceAndAllowance(address,bytes)', [
target.toLowerCase(),
assetData,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [target.toLowerCase(), assetData]);
},
};
}
@@ -924,6 +853,8 @@ export class OrderValidatorContract extends BaseContract {
const self = (this as any) as OrderValidatorContract;
assert.isArray('orders', orders);
assert.isArray('takerAddresses', takerAddresses);
const functionSignature =
'getOrdersAndTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])';
return {
async callAsync(
@@ -944,44 +875,11 @@ export class OrderValidatorContract extends BaseContract {
}>
]
> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments(
'getOrdersAndTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])',
[orders, takerAddresses],
);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder(
'getOrdersAndTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])',
);
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [orders, takerAddresses]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<
[
Array<{ orderStatus: number; orderHash: string; orderTakerAssetFilledAmount: BigNumber }>,
Array<{
@@ -996,15 +894,9 @@ export class OrderValidatorContract extends BaseContract {
}>
]
>(rawCallResult);
// tslint:enable boolean-naming
return result;
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'getOrdersAndTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])',
[orders, takerAddresses],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [orders, takerAddresses]);
},
};
}
@@ -1039,6 +931,8 @@ export class OrderValidatorContract extends BaseContract {
const self = (this as any) as OrderValidatorContract;
assert.isArray('orders', orders);
assert.isArray('takerAddresses', takerAddresses);
const functionSignature =
'getTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])';
return {
async callAsync(
@@ -1056,44 +950,11 @@ export class OrderValidatorContract extends BaseContract {
takerZrxAllowance: BigNumber;
}>
> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments(
'getTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])',
[orders, takerAddresses],
);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder(
'getTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])',
);
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [orders, takerAddresses]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<
Array<{
makerBalance: BigNumber;
makerAllowance: BigNumber;
@@ -1105,15 +966,9 @@ export class OrderValidatorContract extends BaseContract {
takerZrxAllowance: BigNumber;
}>
>(rawCallResult);
// tslint:enable boolean-naming
return result;
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'getTradersInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address[])',
[orders, takerAddresses],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [orders, takerAddresses]);
},
};
}
@@ -1121,54 +976,18 @@ export class OrderValidatorContract extends BaseContract {
const self = (this as any) as OrderValidatorContract;
assert.isString('token', token);
assert.isBigNumber('tokenId', tokenId);
const functionSignature = 'getERC721TokenOwner(address,uint256)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('getERC721TokenOwner(address,uint256)', [
token.toLowerCase(),
tokenId,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('getERC721TokenOwner(address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [token.toLowerCase(), tokenId]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('getERC721TokenOwner(address,uint256)', [
token.toLowerCase(),
tokenId,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [token.toLowerCase(), tokenId]);
},
};
}
@@ -1179,57 +998,21 @@ export class OrderValidatorContract extends BaseContract {
const self = (this as any) as OrderValidatorContract;
assert.isString('target', target);
assert.isArray('assetData', assetData);
const functionSignature = 'getBalancesAndAllowances(address,bytes[])';
return {
async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<[BigNumber[], BigNumber[]]> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('getBalancesAndAllowances(address,bytes[])', [
target.toLowerCase(),
assetData,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('getBalancesAndAllowances(address,bytes[])');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<[BigNumber[], BigNumber[]]>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [target.toLowerCase(), assetData]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<[BigNumber[], BigNumber[]]>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'getBalancesAndAllowances(address,bytes[])',
[target.toLowerCase(), assetData],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [target.toLowerCase(), assetData]);
},
};
}
@@ -1262,6 +1045,8 @@ export class OrderValidatorContract extends BaseContract {
const self = (this as any) as OrderValidatorContract;
assert.isString('takerAddress', takerAddress);
const functionSignature =
'getTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)';
return {
async callAsync(
@@ -1277,44 +1062,11 @@ export class OrderValidatorContract extends BaseContract {
takerZrxBalance: BigNumber;
takerZrxAllowance: BigNumber;
}> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments(
'getTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)',
[order, takerAddress.toLowerCase()],
);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder(
'getTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)',
);
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<{
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [order, takerAddress.toLowerCase()]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<{
makerBalance: BigNumber;
makerAllowance: BigNumber;
takerBalance: BigNumber;
@@ -1324,15 +1076,9 @@ export class OrderValidatorContract extends BaseContract {
takerZrxBalance: BigNumber;
takerZrxAllowance: BigNumber;
}>(rawCallResult);
// tslint:enable boolean-naming
return result;
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments(
'getTraderInfo((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes),address)',
[order, takerAddress.toLowerCase()],
);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [order, takerAddress.toLowerCase()]);
},
};
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -124,9 +124,11 @@ export class WETH9Contract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -464,48 +466,18 @@ export class WETH9Contract extends BaseContract {
public name(): ContractFunctionObj<string> {
const self = (this as any) as WETH9Contract;
const functionSignature = 'name()';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('name()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('name()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('name()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}
@@ -513,156 +485,57 @@ export class WETH9Contract extends BaseContract {
const self = (this as any) as WETH9Contract;
assert.isString('guy', guy);
assert.isBigNumber('wad', wad);
const functionSignature = 'approve(address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [guy.toLowerCase(), wad]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [guy.toLowerCase(), wad]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [guy.toLowerCase(), wad]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [guy.toLowerCase(), wad]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<boolean> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('approve(address,uint256)', [guy.toLowerCase(), wad]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('approve(address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [guy.toLowerCase(), wad]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('approve(address,uint256)', [
guy.toLowerCase(),
wad,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [guy.toLowerCase(), wad]);
},
};
}
public totalSupply(): ContractFunctionObj<BigNumber> {
const self = (this as any) as WETH9Contract;
const functionSignature = 'totalSupply()';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('totalSupply()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('totalSupply()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('totalSupply()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}
@@ -671,372 +544,144 @@ export class WETH9Contract extends BaseContract {
assert.isString('src', src);
assert.isString('dst', dst);
assert.isBigNumber('wad', wad);
const functionSignature = 'transferFrom(address,address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
src.toLowerCase(),
dst.toLowerCase(),
wad,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
const encodedData = self._strictEncodeArguments(functionSignature, [
src.toLowerCase(),
dst.toLowerCase(),
wad,
]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<boolean> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
src.toLowerCase(),
dst.toLowerCase(),
wad,
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('transferFrom(address,address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('transferFrom(address,address,uint256)', [
src.toLowerCase(),
dst.toLowerCase(),
wad,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [src.toLowerCase(), dst.toLowerCase(), wad]);
},
};
}
public withdraw(wad: BigNumber): ContractTxFunctionObj<void> {
const self = (this as any) as WETH9Contract;
assert.isBigNumber('wad', wad);
const functionSignature = 'withdraw(uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('withdraw(uint256)', [wad]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [wad]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('withdraw(uint256)', [wad]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [wad]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('withdraw(uint256)', [wad]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('withdraw(uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [wad]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('withdraw(uint256)', [wad]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [wad]);
},
};
}
public decimals(): ContractFunctionObj<number> {
const self = (this as any) as WETH9Contract;
const functionSignature = 'decimals()';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<number> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('decimals()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('decimals()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<number>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<number>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('decimals()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}
public balanceOf(index_0: string): ContractFunctionObj<BigNumber> {
const self = (this as any) as WETH9Contract;
assert.isString('index_0', index_0);
const functionSignature = 'balanceOf(address)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('balanceOf(address)', [index_0.toLowerCase()]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('balanceOf(address)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [index_0.toLowerCase()]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('balanceOf(address)', [
index_0.toLowerCase(),
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [index_0.toLowerCase()]);
},
};
}
public symbol(): ContractFunctionObj<string> {
const self = (this as any) as WETH9Contract;
const functionSignature = 'symbol()';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<string> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('symbol()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('symbol()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<string>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('symbol()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}
@@ -1044,214 +689,79 @@ export class WETH9Contract extends BaseContract {
const self = (this as any) as WETH9Contract;
assert.isString('dst', dst);
assert.isBigNumber('wad', wad);
const functionSignature = 'transfer(address,uint256)';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('transfer(address,uint256)', [dst.toLowerCase(), wad]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [dst.toLowerCase(), wad]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('transfer(address,uint256)', [dst.toLowerCase(), wad]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [dst.toLowerCase(), wad]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<boolean> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('transfer(address,uint256)', [dst.toLowerCase(), wad]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('transfer(address,uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [dst.toLowerCase(), wad]);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<boolean>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('transfer(address,uint256)', [
dst.toLowerCase(),
wad,
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [dst.toLowerCase(), wad]);
},
};
}
public deposit(): ContractTxFunctionObj<void> {
const self = (this as any) as WETH9Contract;
const functionSignature = 'deposit()';
return {
async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('deposit()', []);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, []);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
if (opts.shouldValidate !== false) {
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(txData?: Partial<TxData> | undefined): Promise<number> {
const encodedData = self._strictEncodeArguments('deposit()', []);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, []);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<void> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('deposit()', []);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('deposit()');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, []);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<void>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('deposit()', []);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, []);
},
};
}
@@ -1259,54 +769,21 @@ export class WETH9Contract extends BaseContract {
const self = (this as any) as WETH9Contract;
assert.isString('index_0', index_0);
assert.isString('index_1', index_1);
const functionSignature = 'allowance(address,address)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('allowance(address,address)', [
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [
index_0.toLowerCase(),
index_1.toLowerCase(),
]);
let rawCallResult;
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from
? callDataWithDefaults.from.toLowerCase()
: callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('allowance(address,address)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('allowance(address,address)', [
index_0.toLowerCase(),
index_1.toLowerCase(),
]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [index_0.toLowerCase(), index_1.toLowerCase()]);
},
};
}

View File

@@ -121,9 +121,11 @@ export class {{contractName}}Contract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, [{{> params inputs=ctor.inputs}}]);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{data: txData},
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -209,7 +211,8 @@ export class {{contractName}}Contract extends BaseContract {
{{#each inputs}}
{{#assertionType name type}}{{/assertionType}}
{{/each}}
const functionSignature = '{{this.functionSignature}}';
return {
{{^this.constant}}
{{> method_tx}}
@@ -309,7 +312,7 @@ export class {{contractName}}Contract extends BaseContract {
}
})
}
}
}
// tslint:disable:max-file-line-count
// tslint:enable:no-unbound-method no-parameter-reassignment no-consecutive-blank-lines ordered-imports align

View File

@@ -2,47 +2,16 @@ async callAsync(
callData: Partial<CallData> = {},
defaultBlock?: BlockParam,
): Promise<{{> return_type outputs=outputs}}> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('{{this.functionSignature}}', [{{> normalized_params inputs=inputs}}]);
let rawCallResult;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [{{> normalized_params inputs=inputs}}]);
{{#ifEquals this.stateMutability "pure"}}
const encodedDataBytes = Buffer.from(encodedData.substr(2), 'hex');
try {
rawCallResult = await self._evmExecAsync(encodedDataBytes);
const rawCallResult = await self._evmExecAsync(encodedData);
{{else}}
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...callData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
callDataWithDefaults.from = callDataWithDefaults.from ? callDataWithDefaults.from.toLowerCase() : callDataWithDefaults.from;
try {
rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
const rawCallResult = await self._performCallAsync({ ...callData, data: encodedData }, defaultBlock);
{{/ifEquals}}
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('{{this.functionSignature}}');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<{{> return_type outputs=outputs}}>(rawCallResult);
// tslint:enable boolean-naming
return result;
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<{{> return_type outputs=outputs}}>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('{{this.functionSignature}}', [{{> normalized_params inputs=inputs}}]);
return abiEncodedTransactionData;
return self._strictEncodeArguments(functionSignature, [{{> normalized_params inputs=inputs}}]);
},

View File

@@ -2,61 +2,23 @@ async sendTransactionAsync(
txData?: Partial<TxData> | undefined,
opts: SendTransactionOpts = { shouldValidate: true },
): Promise<string> {
const encodedData = self._strictEncodeArguments('{{this.functionSignature}}', [{{> normalized_params inputs=inputs}}]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const encodedData = self._strictEncodeArguments(functionSignature, [{{> normalized_params inputs=inputs}}]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({...txData, data: encodedData});
if (opts.shouldValidate !== false) {
await this.callAsync(
txDataWithDefaults,
);
await this.callAsync(txDataWithDefaults);
}
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
return txHash;
return self._web3Wrapper.sendTransactionAsync(txDataWithDefaults);
},
awaitTransactionSuccessAsync(
txData?: Partial<TxData>,
opts: AwaitTransactionSuccessOpts = { shouldValidate: true },
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
const txHashPromise = this.sendTransactionAsync(txData, opts);
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return self._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
return self._promiseWithTransactionHash(this.sendTransactionAsync(txData, opts), opts);
},
async estimateGasAsync(
txData?: Partial<TxData> | undefined,
): Promise<number> {
const encodedData = self._strictEncodeArguments('{{this.functionSignature}}', [{{> normalized_params inputs=inputs}}]);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{
to: self.address,
...txData,
data: encodedData,
},
self._web3Wrapper.getContractDefaults(),
);
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
return gas;
const encodedData = self._strictEncodeArguments(functionSignature, [{{> normalized_params inputs=inputs}}]);
const txDataWithDefaults = await self._applyDefaultsToTxDataAsync({ ...txData, data: encodedData, });
return self._web3Wrapper.estimateGasAsync(txDataWithDefaults);
},

File diff suppressed because it is too large Load Diff

View File

@@ -86,9 +86,11 @@ export class LibDummyContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);

View File

@@ -87,9 +87,11 @@ export class TestLibDummyContract extends BaseContract {
const deployInfo = iface.deployFunction;
const txData = deployInfo.encode(bytecode, []);
const web3Wrapper = new Web3Wrapper(provider);
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync(
{ data: txData },
txDefaults,
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
{
data: txData,
...txDefaults,
},
web3Wrapper.estimateGasAsync.bind(web3Wrapper),
);
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults);
@@ -183,37 +185,18 @@ export class TestLibDummyContract extends BaseContract {
public publicAddConstant(x: BigNumber): ContractFunctionObj<BigNumber> {
const self = (this as any) as TestLibDummyContract;
assert.isBigNumber('x', x);
const functionSignature = 'publicAddConstant(uint256)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('publicAddConstant(uint256)', [x]);
let rawCallResult;
const encodedDataBytes = Buffer.from(encodedData.substr(2), 'hex');
try {
rawCallResult = await self._evmExecAsync(encodedDataBytes);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('publicAddConstant(uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [x]);
const rawCallResult = await self._evmExecAsync(encodedData);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('publicAddConstant(uint256)', [x]);
const abiEncodedTransactionData = self._strictEncodeArguments(functionSignature, [x]);
return abiEncodedTransactionData;
},
};
@@ -221,37 +204,18 @@ export class TestLibDummyContract extends BaseContract {
public publicAddOne(x: BigNumber): ContractFunctionObj<BigNumber> {
const self = (this as any) as TestLibDummyContract;
assert.isBigNumber('x', x);
const functionSignature = 'publicAddOne(uint256)';
return {
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber> {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
const encodedData = self._strictEncodeArguments('publicAddOne(uint256)', [x]);
let rawCallResult;
const encodedDataBytes = Buffer.from(encodedData.substr(2), 'hex');
try {
rawCallResult = await self._evmExecAsync(encodedDataBytes);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
const abiEncoder = self._lookupAbiEncoder('publicAddOne(uint256)');
// tslint:disable boolean-naming
const result = abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
// tslint:enable boolean-naming
return result;
BaseContract._assertCallParams(callData, defaultBlock);
const encodedData = self._strictEncodeArguments(functionSignature, [x]);
const rawCallResult = await self._evmExecAsync(encodedData);
const abiEncoder = self._lookupAbiEncoder(functionSignature);
return abiEncoder.strictDecodeReturnValue<BigNumber>(rawCallResult);
},
getABIEncodedTransactionData(): string {
const abiEncodedTransactionData = self._strictEncodeArguments('publicAddOne(uint256)', [x]);
const abiEncodedTransactionData = self._strictEncodeArguments(functionSignature, [x]);
return abiEncodedTransactionData;
},
};

View File

@@ -14,12 +14,14 @@ import { Web3Wrapper } from '@0x/web3-wrapper';
import {
AbiDefinition,
AbiType,
BlockParam,
CallData,
ConstructorAbi,
ContractAbi,
DataItem,
MethodAbi,
SupportedProvider,
TransactionReceiptWithDecodedLogs,
TxData,
TxDataPayable,
} from 'ethereum-types';
@@ -31,6 +33,7 @@ import * as _ from 'lodash';
export { methodAbiToFunctionSignature } from './utils';
import { AwaitTransactionSuccessOpts } from './types';
import { formatABIDataItem } from './utils';
export { SubscriptionManager } from './subscription_manager';
@@ -125,26 +128,6 @@ export class BaseContract {
return defaultConstructorAbi;
}
}
protected static async _applyDefaultsToTxDataAsync<T extends Partial<TxData | TxDataPayable>>(
txData: T,
txDefaults: Partial<TxData> | undefined,
estimateGasAsync?: (txData: T) => Promise<number>,
): Promise<TxData> {
// Gas amount sourced with the following priorities:
// 1. Optional param passed in to public method call
// 2. Global config passed in at library instantiation
// 3. Gas estimate calculation + safety margin
const removeUndefinedProperties = _.pickBy.bind(_);
const finalTxDefaults: Partial<TxData> = txDefaults || {};
const txDataWithDefaults = {
...removeUndefinedProperties(finalTxDefaults),
...removeUndefinedProperties(txData),
};
if (txDataWithDefaults.gas === undefined && estimateGasAsync !== undefined) {
txDataWithDefaults.gas = await estimateGasAsync(txDataWithDefaults);
}
return txDataWithDefaults;
}
protected static _throwIfCallResultIsRevertError(rawCallResult: string): void {
// Try to decode the call result as a revert error.
let revert: RevertError;
@@ -193,7 +176,70 @@ export class BaseContract {
}
return rawEncoded;
}
protected async _evmExecAsync(input: Buffer): Promise<string> {
protected static async _applyDefaultsToContractTxDataAsync<T extends Partial<TxData | TxDataPayable>>(
txData: T,
estimateGasAsync?: (txData: T) => Promise<number>,
): Promise<TxData> {
const removeUndefinedProperties = _.pickBy.bind(_);
const txDataWithDefaults = removeUndefinedProperties(txData);
if (txDataWithDefaults.gas === undefined && estimateGasAsync !== undefined) {
txDataWithDefaults.gas = await estimateGasAsync(txDataWithDefaults);
}
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
return txDataWithDefaults;
}
protected static _assertCallParams(callData: Partial<CallData>, defaultBlock?: BlockParam): void {
assert.doesConformToSchema('callData', callData, schemas.callDataSchema, [
schemas.addressSchema,
schemas.numberSchema,
schemas.jsNumber,
]);
if (defaultBlock !== undefined) {
assert.isBlockParam('defaultBlock', defaultBlock);
}
}
protected _promiseWithTransactionHash(
txHashPromise: Promise<string>,
opts: AwaitTransactionSuccessOpts,
): PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs> {
return new PromiseWithTransactionHash<TransactionReceiptWithDecodedLogs>(
txHashPromise,
(async (): Promise<TransactionReceiptWithDecodedLogs> => {
// When the transaction hash resolves, wait for it to be mined.
return this._web3Wrapper.awaitTransactionSuccessAsync(
await txHashPromise,
opts.pollingIntervalMs,
opts.timeoutMs,
);
})(),
);
}
protected async _applyDefaultsToTxDataAsync<T extends Partial<TxData | TxDataPayable>>(
txData: T,
estimateGasAsync?: (txData: T) => Promise<number>,
): Promise<TxData> {
// Gas amount sourced with the following priorities:
// 1. Optional param passed in to public method call
// 2. Global config passed in at library instantiation
// 3. Gas estimate calculation + safety margin
const removeUndefinedProperties = _.pickBy.bind(_);
const txDataWithDefaults = {
to: this.address,
...removeUndefinedProperties(this._web3Wrapper.getContractDefaults()),
...removeUndefinedProperties(txData),
};
if (txDataWithDefaults.gas === undefined && estimateGasAsync !== undefined) {
txDataWithDefaults.gas = await estimateGasAsync(txDataWithDefaults);
}
if (txDataWithDefaults.from !== undefined) {
txDataWithDefaults.from = txDataWithDefaults.from.toLowerCase();
}
return txDataWithDefaults;
}
protected async _evmExecAsync(encodedData: string): Promise<string> {
const encodedDataBytes = Buffer.from(encodedData.substr(2), 'hex');
const addressBuf = Buffer.from(this.address.substr(2), 'hex');
// should only run once, the first time it is called
if (this._evmIfExists === undefined) {
@@ -217,15 +263,34 @@ export class BaseContract {
this._evmIfExists = vm;
this._evmAccountIfExists = accountAddress;
}
const result = await this._evmIfExists.runCall({
to: addressBuf,
caller: this._evmAccountIfExists,
origin: this._evmAccountIfExists,
data: input,
});
let rawCallResult;
try {
const result = await this._evmIfExists.runCall({
to: addressBuf,
caller: this._evmAccountIfExists,
origin: this._evmAccountIfExists,
data: encodedDataBytes,
});
rawCallResult = `0x${result.execResult.returnValue.toString('hex')}`;
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
const hexReturnValue = `0x${result.execResult.returnValue.toString('hex')}`;
return hexReturnValue;
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
return rawCallResult;
}
protected async _performCallAsync(callData: Partial<CallData>, defaultBlock?: BlockParam): Promise<string> {
const callDataWithDefaults = await this._applyDefaultsToTxDataAsync(callData);
let rawCallResult: string;
try {
rawCallResult = await this._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock);
} catch (err) {
BaseContract._throwIfThrownErrorIsRevertError(err);
throw err;
}
BaseContract._throwIfCallResultIsRevertError(rawCallResult);
return rawCallResult;
}
protected _lookupAbiEncoder(functionSignature: string): AbiEncoder.Method {
const abiEncoder = this._abiEncoderByFunctionSignature[functionSignature];