fix: Update to use KNP getExpectedRateAfterFee (#2629)
* Update to use KNP getExpectedRateAfterFee * hack: use overrides instead of forking in ganache * fix: added some tests using overrides * override sampler * Overrides in bridge_sampler_mainnet_test * use getContracts to fake out tests * chore: supply devUtils address * feat: specify the call override by default * CHANGELOGs * export SamplerOverrides * fix package.json * fix: after rebase
This commit is contained in:
@@ -49,7 +49,6 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
supportedProvider: SupportedProvider,
|
||||
txDefaults: Partial<TxData>,
|
||||
logDecodeDependencies: { [contractName: string]: ContractArtifact | SimpleContractArtifact },
|
||||
devUtilsAddress: string,
|
||||
): Promise<ERC20BridgeSamplerContract> {
|
||||
assert.doesConformToSchema('txDefaults', txDefaults, schemas.txDataSchema, [
|
||||
schemas.addressSchema,
|
||||
@@ -74,7 +73,6 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
provider,
|
||||
txDefaults,
|
||||
logDecodeDependenciesAbiOnly,
|
||||
devUtilsAddress,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -84,7 +82,6 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
supportedProvider: SupportedProvider,
|
||||
txDefaults: Partial<TxData>,
|
||||
logDecodeDependencies: { [contractName: string]: ContractArtifact | SimpleContractArtifact },
|
||||
devUtilsAddress: string,
|
||||
): Promise<ERC20BridgeSamplerContract> {
|
||||
assert.doesConformToSchema('txDefaults', txDefaults, schemas.txDataSchema, [
|
||||
schemas.addressSchema,
|
||||
@@ -115,7 +112,6 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
provider,
|
||||
txDefaults,
|
||||
logDecodeDependenciesAbiOnly,
|
||||
devUtilsAddress,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -125,7 +121,6 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
supportedProvider: SupportedProvider,
|
||||
txDefaults: Partial<TxData>,
|
||||
logDecodeDependencies: { [contractName: string]: ContractAbi },
|
||||
devUtilsAddress: string,
|
||||
): Promise<ERC20BridgeSamplerContract> {
|
||||
assert.isHexString('bytecode', bytecode);
|
||||
assert.doesConformToSchema('txDefaults', txDefaults, schemas.txDataSchema, [
|
||||
@@ -135,14 +130,10 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
]);
|
||||
const provider = providerUtils.standardizeOrThrow(supportedProvider);
|
||||
const constructorAbi = BaseContract._lookupConstructorAbi(abi);
|
||||
[devUtilsAddress] = BaseContract._formatABIDataItemList(
|
||||
constructorAbi.inputs,
|
||||
[devUtilsAddress],
|
||||
BaseContract._bigNumberToString,
|
||||
);
|
||||
[] = BaseContract._formatABIDataItemList(constructorAbi.inputs, [], BaseContract._bigNumberToString);
|
||||
const iface = new ethers.utils.Interface(abi);
|
||||
const deployInfo = iface.deployFunction;
|
||||
const txData = deployInfo.encode(bytecode, [devUtilsAddress]);
|
||||
const txData = deployInfo.encode(bytecode, []);
|
||||
const web3Wrapper = new Web3Wrapper(provider);
|
||||
const txDataWithDefaults = await BaseContract._applyDefaultsToContractTxDataAsync(
|
||||
{
|
||||
@@ -161,7 +152,7 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
txDefaults,
|
||||
logDecodeDependencies,
|
||||
);
|
||||
contractInstance.constructorArgs = [devUtilsAddress];
|
||||
contractInstance.constructorArgs = [];
|
||||
return contractInstance;
|
||||
}
|
||||
|
||||
@@ -170,18 +161,6 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
*/
|
||||
public static ABI(): ContractAbi {
|
||||
const abi = [
|
||||
{
|
||||
inputs: [
|
||||
{
|
||||
name: 'devUtilsAddress',
|
||||
type: 'address',
|
||||
},
|
||||
],
|
||||
outputs: [],
|
||||
payable: false,
|
||||
stateMutability: 'nonpayable',
|
||||
type: 'constructor',
|
||||
},
|
||||
{
|
||||
constant: true,
|
||||
inputs: [
|
||||
@@ -297,6 +276,10 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
name: 'orderSignatures',
|
||||
type: 'bytes[]',
|
||||
},
|
||||
{
|
||||
name: 'devUtilsAddress',
|
||||
type: 'address',
|
||||
},
|
||||
],
|
||||
name: 'getOrderFillableMakerAssetAmounts',
|
||||
outputs: [
|
||||
@@ -378,6 +361,10 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
name: 'orderSignatures',
|
||||
type: 'bytes[]',
|
||||
},
|
||||
{
|
||||
name: 'devUtilsAddress',
|
||||
type: 'address',
|
||||
},
|
||||
],
|
||||
name: 'getOrderFillableTakerAssetAmounts',
|
||||
outputs: [
|
||||
@@ -965,6 +952,7 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
* Effectively ignores orders that have empty signatures or
|
||||
* @param orders Native orders to query.
|
||||
* @param orderSignatures Signatures for each respective order in `orders`.
|
||||
* @param devUtilsAddress Address to the DevUtils contract.
|
||||
* @returns orderFillableMakerAssetAmounts How much maker asset can be filled by each order in `orders`.
|
||||
*/
|
||||
public getOrderFillableMakerAssetAmounts(
|
||||
@@ -985,12 +973,14 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
takerFeeAssetData: string;
|
||||
}>,
|
||||
orderSignatures: string[],
|
||||
devUtilsAddress: string,
|
||||
): ContractFunctionObj<BigNumber[]> {
|
||||
const self = (this as any) as ERC20BridgeSamplerContract;
|
||||
assert.isArray('orders', orders);
|
||||
assert.isArray('orderSignatures', orderSignatures);
|
||||
assert.isString('devUtilsAddress', devUtilsAddress);
|
||||
const functionSignature =
|
||||
'getOrderFillableMakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[])';
|
||||
'getOrderFillableMakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],address)';
|
||||
|
||||
return {
|
||||
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber[]> {
|
||||
@@ -1004,7 +994,11 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
return abiEncoder.strictDecodeReturnValue<BigNumber[]>(rawCallResult);
|
||||
},
|
||||
getABIEncodedTransactionData(): string {
|
||||
return self._strictEncodeArguments(functionSignature, [orders, orderSignatures]);
|
||||
return self._strictEncodeArguments(functionSignature, [
|
||||
orders,
|
||||
orderSignatures,
|
||||
devUtilsAddress.toLowerCase(),
|
||||
]);
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -1014,6 +1008,7 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
* maker/taker asset amounts (returning 0).
|
||||
* @param orders Native orders to query.
|
||||
* @param orderSignatures Signatures for each respective order in `orders`.
|
||||
* @param devUtilsAddress Address to the DevUtils contract.
|
||||
* @returns orderFillableTakerAssetAmounts How much taker asset can be filled by each order in `orders`.
|
||||
*/
|
||||
public getOrderFillableTakerAssetAmounts(
|
||||
@@ -1034,12 +1029,14 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
takerFeeAssetData: string;
|
||||
}>,
|
||||
orderSignatures: string[],
|
||||
devUtilsAddress: string,
|
||||
): ContractFunctionObj<BigNumber[]> {
|
||||
const self = (this as any) as ERC20BridgeSamplerContract;
|
||||
assert.isArray('orders', orders);
|
||||
assert.isArray('orderSignatures', orderSignatures);
|
||||
assert.isString('devUtilsAddress', devUtilsAddress);
|
||||
const functionSignature =
|
||||
'getOrderFillableTakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[])';
|
||||
'getOrderFillableTakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],address)';
|
||||
|
||||
return {
|
||||
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber[]> {
|
||||
@@ -1053,7 +1050,11 @@ export class ERC20BridgeSamplerContract extends BaseContract {
|
||||
return abiEncoder.strictDecodeReturnValue<BigNumber[]>(rawCallResult);
|
||||
},
|
||||
getABIEncodedTransactionData(): string {
|
||||
return self._strictEncodeArguments(functionSignature, [orders, orderSignatures]);
|
||||
return self._strictEncodeArguments(functionSignature, [
|
||||
orders,
|
||||
orderSignatures,
|
||||
devUtilsAddress.toLowerCase(),
|
||||
]);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -276,6 +276,10 @@ export class IERC20BridgeSamplerContract extends BaseContract {
|
||||
name: 'orderSignatures',
|
||||
type: 'bytes[]',
|
||||
},
|
||||
{
|
||||
name: 'devUtilsAddress',
|
||||
type: 'address',
|
||||
},
|
||||
],
|
||||
name: 'getOrderFillableMakerAssetAmounts',
|
||||
outputs: [
|
||||
@@ -357,6 +361,10 @@ export class IERC20BridgeSamplerContract extends BaseContract {
|
||||
name: 'orderSignatures',
|
||||
type: 'bytes[]',
|
||||
},
|
||||
{
|
||||
name: 'devUtilsAddress',
|
||||
type: 'address',
|
||||
},
|
||||
],
|
||||
name: 'getOrderFillableTakerAssetAmounts',
|
||||
outputs: [
|
||||
@@ -912,6 +920,7 @@ export class IERC20BridgeSamplerContract extends BaseContract {
|
||||
* Queries the fillable maker asset amounts of native orders.
|
||||
* @param orders Native orders to query.
|
||||
* @param orderSignatures Signatures for each respective order in `orders`.
|
||||
* @param devUtilsAddress Address to the DevUtils contract.
|
||||
* @returns orderFillableMakerAssetAmounts How much maker asset can be filled by each order in `orders`.
|
||||
*/
|
||||
public getOrderFillableMakerAssetAmounts(
|
||||
@@ -932,12 +941,14 @@ export class IERC20BridgeSamplerContract extends BaseContract {
|
||||
takerFeeAssetData: string;
|
||||
}>,
|
||||
orderSignatures: string[],
|
||||
devUtilsAddress: string,
|
||||
): ContractFunctionObj<BigNumber[]> {
|
||||
const self = (this as any) as IERC20BridgeSamplerContract;
|
||||
assert.isArray('orders', orders);
|
||||
assert.isArray('orderSignatures', orderSignatures);
|
||||
assert.isString('devUtilsAddress', devUtilsAddress);
|
||||
const functionSignature =
|
||||
'getOrderFillableMakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[])';
|
||||
'getOrderFillableMakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],address)';
|
||||
|
||||
return {
|
||||
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber[]> {
|
||||
@@ -951,7 +962,11 @@ export class IERC20BridgeSamplerContract extends BaseContract {
|
||||
return abiEncoder.strictDecodeReturnValue<BigNumber[]>(rawCallResult);
|
||||
},
|
||||
getABIEncodedTransactionData(): string {
|
||||
return self._strictEncodeArguments(functionSignature, [orders, orderSignatures]);
|
||||
return self._strictEncodeArguments(functionSignature, [
|
||||
orders,
|
||||
orderSignatures,
|
||||
devUtilsAddress.toLowerCase(),
|
||||
]);
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -959,6 +974,7 @@ export class IERC20BridgeSamplerContract extends BaseContract {
|
||||
* Queries the fillable taker asset amounts of native orders.
|
||||
* @param orders Native orders to query.
|
||||
* @param orderSignatures Signatures for each respective order in `orders`.
|
||||
* @param devUtilsAddress Address to the DevUtils contract.
|
||||
* @returns orderFillableTakerAssetAmounts How much taker asset can be filled by each order in `orders`.
|
||||
*/
|
||||
public getOrderFillableTakerAssetAmounts(
|
||||
@@ -979,12 +995,14 @@ export class IERC20BridgeSamplerContract extends BaseContract {
|
||||
takerFeeAssetData: string;
|
||||
}>,
|
||||
orderSignatures: string[],
|
||||
devUtilsAddress: string,
|
||||
): ContractFunctionObj<BigNumber[]> {
|
||||
const self = (this as any) as IERC20BridgeSamplerContract;
|
||||
assert.isArray('orders', orders);
|
||||
assert.isArray('orderSignatures', orderSignatures);
|
||||
assert.isString('devUtilsAddress', devUtilsAddress);
|
||||
const functionSignature =
|
||||
'getOrderFillableTakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[])';
|
||||
'getOrderFillableTakerAssetAmounts((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],address)';
|
||||
|
||||
return {
|
||||
async callAsync(callData: Partial<CallData> = {}, defaultBlock?: BlockParam): Promise<BigNumber[]> {
|
||||
@@ -998,7 +1016,11 @@ export class IERC20BridgeSamplerContract extends BaseContract {
|
||||
return abiEncoder.strictDecodeReturnValue<BigNumber[]>(rawCallResult);
|
||||
},
|
||||
getABIEncodedTransactionData(): string {
|
||||
return self._strictEncodeArguments(functionSignature, [orders, orderSignatures]);
|
||||
return self._strictEncodeArguments(functionSignature, [
|
||||
orders,
|
||||
orderSignatures,
|
||||
devUtilsAddress.toLowerCase(),
|
||||
]);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user