This repository has been archived by the owner on Jul 9, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 465
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Renamed tec package to coordinator package
- Loading branch information
Showing
45 changed files
with
1,426 additions
and
0 deletions.
There are no files selected for viewing
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
351 changes: 351 additions & 0 deletions
351
contracts/coordinator/generated-artifacts/Coordinator.json
Large diffs are not rendered by default.
Oops, something went wrong.
149 changes: 149 additions & 0 deletions
149
contracts/coordinator/generated-artifacts/TestLibs.json
Large diffs are not rendered by default.
Oops, something went wrong.
284 changes: 284 additions & 0 deletions
284
contracts/coordinator/generated-artifacts/TestMixins.json
Large diffs are not rendered by default.
Oops, something went wrong.
302 changes: 302 additions & 0 deletions
302
contracts/coordinator/generated-wrappers/coordinator.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,302 @@ | ||
// tslint:disable:no-consecutive-blank-lines ordered-imports align trailing-comma whitespace class-name | ||
// tslint:disable:no-unused-variable | ||
// tslint:disable:no-unbound-method | ||
import { BaseContract } from '@0x/base-contract'; | ||
import { BlockParam, BlockParamLiteral, CallData, ContractAbi, ContractArtifact, DecodedLogArgs, MethodAbi, TxData, TxDataPayable, SupportedProvider } from 'ethereum-types'; | ||
import { BigNumber, classUtils, logUtils, providerUtils } from '@0x/utils'; | ||
import { SimpleContractArtifact } from '@0x/types'; | ||
import { Web3Wrapper } from '@0x/web3-wrapper'; | ||
import * as ethers from 'ethers'; | ||
import * as _ from 'lodash'; | ||
// tslint:enable:no-unused-variable | ||
|
||
|
||
/* istanbul ignore next */ | ||
// tslint:disable:no-parameter-reassignment | ||
// tslint:disable-next-line:class-name | ||
export class CoordinatorContract extends BaseContract { | ||
public getSignerAddress = { | ||
async callAsync( | ||
hash: string, | ||
signature: string, | ||
callData: Partial<CallData> = {}, | ||
defaultBlock?: BlockParam, | ||
): Promise<string | ||
> { | ||
const self = this as any as CoordinatorContract; | ||
const encodedData = self._strictEncodeArguments('getSignerAddress(bytes32,bytes)', [hash, | ||
signature | ||
]); | ||
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( | ||
{ | ||
to: self.address, | ||
...callData, | ||
data: encodedData, | ||
}, | ||
self._web3Wrapper.getContractDefaults(), | ||
); | ||
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); | ||
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); | ||
const abiEncoder = self._lookupAbiEncoder('getSignerAddress(bytes32,bytes)'); | ||
// tslint:disable boolean-naming | ||
const result = abiEncoder.strictDecodeReturnValue<string | ||
>(rawCallResult); | ||
// tslint:enable boolean-naming | ||
return result; | ||
}, | ||
}; | ||
public assertValidTransactionOrdersApproval = { | ||
async callAsync( | ||
transaction: {salt: BigNumber;signerAddress: string;data: string}, | ||
orders: Array<{makerAddress: string;takerAddress: string;feeRecipientAddress: string;senderAddress: string;makerAssetAmount: BigNumber;takerAssetAmount: BigNumber;makerFee: BigNumber;takerFee: BigNumber;expirationTimeSeconds: BigNumber;salt: BigNumber;makerAssetData: string;takerAssetData: string}>, | ||
transactionSignature: string, | ||
approvalExpirationTimeSeconds: BigNumber[], | ||
approvalSignatures: string[], | ||
callData: Partial<CallData> = {}, | ||
defaultBlock?: BlockParam, | ||
): Promise<void | ||
> { | ||
const self = this as any as CoordinatorContract; | ||
const encodedData = self._strictEncodeArguments('assertValidTransactionOrdersApproval((uint256,address,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes,uint256[],bytes[])', [transaction, | ||
orders, | ||
transactionSignature, | ||
approvalExpirationTimeSeconds, | ||
approvalSignatures | ||
]); | ||
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( | ||
{ | ||
to: self.address, | ||
...callData, | ||
data: encodedData, | ||
}, | ||
self._web3Wrapper.getContractDefaults(), | ||
); | ||
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); | ||
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); | ||
const abiEncoder = self._lookupAbiEncoder('assertValidTransactionOrdersApproval((uint256,address,bytes),(address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],bytes,uint256[],bytes[])'); | ||
// tslint:disable boolean-naming | ||
const result = abiEncoder.strictDecodeReturnValue<void | ||
>(rawCallResult); | ||
// tslint:enable boolean-naming | ||
return result; | ||
}, | ||
}; | ||
public assertValidCoordinatorApprovals = { | ||
async callAsync( | ||
transaction: {salt: BigNumber;signerAddress: string;data: string}, | ||
transactionSignature: string, | ||
approvalExpirationTimeSeconds: BigNumber[], | ||
approvalSignatures: string[], | ||
callData: Partial<CallData> = {}, | ||
defaultBlock?: BlockParam, | ||
): Promise<void | ||
> { | ||
const self = this as any as CoordinatorContract; | ||
const encodedData = self._strictEncodeArguments('assertValidCoordinatorApprovals((uint256,address,bytes),bytes,uint256[],bytes[])', [transaction, | ||
transactionSignature, | ||
approvalExpirationTimeSeconds, | ||
approvalSignatures | ||
]); | ||
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( | ||
{ | ||
to: self.address, | ||
...callData, | ||
data: encodedData, | ||
}, | ||
self._web3Wrapper.getContractDefaults(), | ||
); | ||
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); | ||
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); | ||
const abiEncoder = self._lookupAbiEncoder('assertValidCoordinatorApprovals((uint256,address,bytes),bytes,uint256[],bytes[])'); | ||
// tslint:disable boolean-naming | ||
const result = abiEncoder.strictDecodeReturnValue<void | ||
>(rawCallResult); | ||
// tslint:enable boolean-naming | ||
return result; | ||
}, | ||
}; | ||
public EIP712_DOMAIN_HASH = { | ||
async callAsync( | ||
callData: Partial<CallData> = {}, | ||
defaultBlock?: BlockParam, | ||
): Promise<string | ||
> { | ||
const self = this as any as CoordinatorContract; | ||
const encodedData = self._strictEncodeArguments('EIP712_DOMAIN_HASH()', []); | ||
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( | ||
{ | ||
to: self.address, | ||
...callData, | ||
data: encodedData, | ||
}, | ||
self._web3Wrapper.getContractDefaults(), | ||
); | ||
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); | ||
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); | ||
const abiEncoder = self._lookupAbiEncoder('EIP712_DOMAIN_HASH()'); | ||
// tslint:disable boolean-naming | ||
const result = abiEncoder.strictDecodeReturnValue<string | ||
>(rawCallResult); | ||
// tslint:enable boolean-naming | ||
return result; | ||
}, | ||
}; | ||
public executeTransaction = { | ||
async sendTransactionAsync( | ||
transaction: {salt: BigNumber;signerAddress: string;data: string}, | ||
transactionSignature: string, | ||
approvalExpirationTimeSeconds: BigNumber[], | ||
approvalSignatures: string[], | ||
txData: Partial<TxData> = {}, | ||
): Promise<string> { | ||
const self = this as any as CoordinatorContract; | ||
const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),bytes,uint256[],bytes[])', [transaction, | ||
transactionSignature, | ||
approvalExpirationTimeSeconds, | ||
approvalSignatures | ||
]); | ||
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( | ||
{ | ||
to: self.address, | ||
...txData, | ||
data: encodedData, | ||
}, | ||
self._web3Wrapper.getContractDefaults(), | ||
self.executeTransaction.estimateGasAsync.bind( | ||
self, | ||
transaction, | ||
transactionSignature, | ||
approvalExpirationTimeSeconds, | ||
approvalSignatures | ||
), | ||
); | ||
const txHash = await self._web3Wrapper.sendTransactionAsync(txDataWithDefaults); | ||
return txHash; | ||
}, | ||
async estimateGasAsync( | ||
transaction: {salt: BigNumber;signerAddress: string;data: string}, | ||
transactionSignature: string, | ||
approvalExpirationTimeSeconds: BigNumber[], | ||
approvalSignatures: string[], | ||
txData: Partial<TxData> = {}, | ||
): Promise<number> { | ||
const self = this as any as CoordinatorContract; | ||
const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),bytes,uint256[],bytes[])', [transaction, | ||
transactionSignature, | ||
approvalExpirationTimeSeconds, | ||
approvalSignatures | ||
]); | ||
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( | ||
{ | ||
to: self.address, | ||
...txData, | ||
data: encodedData, | ||
}, | ||
self._web3Wrapper.getContractDefaults(), | ||
); | ||
const gas = await self._web3Wrapper.estimateGasAsync(txDataWithDefaults); | ||
return gas; | ||
}, | ||
getABIEncodedTransactionData( | ||
transaction: {salt: BigNumber;signerAddress: string;data: string}, | ||
transactionSignature: string, | ||
approvalExpirationTimeSeconds: BigNumber[], | ||
approvalSignatures: string[], | ||
): string { | ||
const self = this as any as CoordinatorContract; | ||
const abiEncodedTransactionData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),bytes,uint256[],bytes[])', [transaction, | ||
transactionSignature, | ||
approvalExpirationTimeSeconds, | ||
approvalSignatures | ||
]); | ||
return abiEncodedTransactionData; | ||
}, | ||
async callAsync( | ||
transaction: {salt: BigNumber;signerAddress: string;data: string}, | ||
transactionSignature: string, | ||
approvalExpirationTimeSeconds: BigNumber[], | ||
approvalSignatures: string[], | ||
callData: Partial<CallData> = {}, | ||
defaultBlock?: BlockParam, | ||
): Promise<void | ||
> { | ||
const self = this as any as CoordinatorContract; | ||
const encodedData = self._strictEncodeArguments('executeTransaction((uint256,address,bytes),bytes,uint256[],bytes[])', [transaction, | ||
transactionSignature, | ||
approvalExpirationTimeSeconds, | ||
approvalSignatures | ||
]); | ||
const callDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( | ||
{ | ||
to: self.address, | ||
...callData, | ||
data: encodedData, | ||
}, | ||
self._web3Wrapper.getContractDefaults(), | ||
); | ||
const rawCallResult = await self._web3Wrapper.callAsync(callDataWithDefaults, defaultBlock); | ||
BaseContract._throwIfRevertWithReasonCallResult(rawCallResult); | ||
const abiEncoder = self._lookupAbiEncoder('executeTransaction((uint256,address,bytes),bytes,uint256[],bytes[])'); | ||
// tslint:disable boolean-naming | ||
const result = abiEncoder.strictDecodeReturnValue<void | ||
>(rawCallResult); | ||
// tslint:enable boolean-naming | ||
return result; | ||
}, | ||
}; | ||
public static async deployFrom0xArtifactAsync( | ||
artifact: ContractArtifact | SimpleContractArtifact, | ||
supportedProvider: SupportedProvider, | ||
txDefaults: Partial<TxData>, | ||
_exchange: string, | ||
): Promise<CoordinatorContract> { | ||
if (_.isUndefined(artifact.compilerOutput)) { | ||
throw new Error('Compiler output not found in the artifact file'); | ||
} | ||
const provider = providerUtils.standardizeOrThrow(supportedProvider); | ||
const bytecode = artifact.compilerOutput.evm.bytecode.object; | ||
const abi = artifact.compilerOutput.abi; | ||
return CoordinatorContract.deployAsync(bytecode, abi, provider, txDefaults, _exchange | ||
); | ||
} | ||
public static async deployAsync( | ||
bytecode: string, | ||
abi: ContractAbi, | ||
supportedProvider: SupportedProvider, | ||
txDefaults: Partial<TxData>, | ||
_exchange: string, | ||
): Promise<CoordinatorContract> { | ||
const provider = providerUtils.standardizeOrThrow(supportedProvider); | ||
const constructorAbi = BaseContract._lookupConstructorAbi(abi); | ||
[_exchange | ||
] = BaseContract._formatABIDataItemList( | ||
constructorAbi.inputs, | ||
[_exchange | ||
], | ||
BaseContract._bigNumberToString, | ||
); | ||
const iface = new ethers.utils.Interface(abi); | ||
const deployInfo = iface.deployFunction; | ||
const txData = deployInfo.encode(bytecode, [_exchange | ||
]); | ||
const web3Wrapper = new Web3Wrapper(provider); | ||
const txDataWithDefaults = await BaseContract._applyDefaultsToTxDataAsync( | ||
{data: txData}, | ||
txDefaults, | ||
web3Wrapper.estimateGasAsync.bind(web3Wrapper), | ||
); | ||
const txHash = await web3Wrapper.sendTransactionAsync(txDataWithDefaults); | ||
logUtils.log(`transactionHash: ${txHash}`); | ||
const txReceipt = await web3Wrapper.awaitTransactionSuccessAsync(txHash); | ||
logUtils.log(`Coordinator successfully deployed at ${txReceipt.contractAddress}`); | ||
const contractInstance = new CoordinatorContract(abi, txReceipt.contractAddress as string, provider, txDefaults); | ||
contractInstance.constructorArgs = [_exchange | ||
]; | ||
return contractInstance; | ||
} | ||
constructor(abi: ContractAbi, address: string, supportedProvider: SupportedProvider, txDefaults?: Partial<TxData>) { | ||
super('Coordinator', abi, address, supportedProvider, txDefaults); | ||
classUtils.bindAll(this, ['_abiEncoderByFunctionSignature', 'address', 'abi', '_web3Wrapper']); | ||
} | ||
} // tslint:disable:max-file-line-count | ||
// tslint:enable:no-unbound-method |
Oops, something went wrong.