-
Notifications
You must be signed in to change notification settings - Fork 14
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
BatchTradeExtensionAPI [SIM-251] (#113)
* Initial BatchTradeExtensionAPI * Add batchFetchTradeQuoteAsync to TradeAPI * Batch fetch quotes, decode 0x custom errors, restructure * Add tests * Fix tsc error * Remove unused code / console.log * Update version to 0.6.0-batch.0 * Add DelegatedManager#addExtensions & BatchTradeExtension#initializeExtension * Add DelegatedManagerAPI to Set.ts * Fix DelegatedManagerAPI interface (make multi-instance) * Improve UtilAPI docs about trade/swap quotes * Fix incorrect BatchTradeExtension_factory import * Fix from/to tokenAmount calculation in TradeQuoterAPI * Upgrade version to batch.4 * Update set-v2-strategies to 0.0.11 & update TradeInfo type * Update version to batch.5 * Fix tsc for unit tests * Fix tsc errors in BatchTradeExtensionAPI * Update batchTrade receipt fixture * Revert "Fix from/to tokenAmount calculation in TradeQuoterAPI" This reverts commit c67ffa0. * Update version to batch.6 * Account for Dust Positions in Batch Trade [SIM-286] (#118) * update code comments in set token api + protocol viewer to reflect correct param usage * add null address constant * update validate quotes method to be more generalized * check batch trade does not produce dust positions on utils api layer * update trade quoter to use BigNumber instead of decimal * update validation helper to allow only checking from token quantities option * refactor conversion of tokens from and to pre token positions into helper method * remove remaining comments for checking dust positions * correctly use current token position if max implied + zero ex match * only validate batch trade does not produce dust positions for tokens spread across multiple trades * add more clarity to comments * add comment re: max selling across multiple trades * Upgrade version to batch.7 Co-authored-by: Dylan Tran <[email protected]>
- Loading branch information
Showing
23 changed files
with
1,708 additions
and
272 deletions.
There are no files selected for viewing
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
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
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,74 @@ | ||
/* | ||
Copyright 2022 Set Labs Inc. | ||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
*/ | ||
|
||
'use strict'; | ||
|
||
import { ContractTransaction } from 'ethers'; | ||
import { Provider } from '@ethersproject/providers'; | ||
import { Address } from '@setprotocol/set-protocol-v2/utils/types'; | ||
import { TransactionOverrides } from '@setprotocol/set-protocol-v2/dist/typechain'; | ||
|
||
import DelegatedManagerWrapper from '../wrappers/set-v2-strategies/DelegatedManagerWrapper'; | ||
import Assertions from '../assertions'; | ||
|
||
/** | ||
* @title DelegatedManagerAPI | ||
* @author Set Protocol | ||
* | ||
* The DelegatedManagerAPI exposes methods to call functions only available directly on the | ||
* DelegatedManager contract. For the most part these are owner admin operations to reconfigure | ||
* permissions and add modules / extensions. | ||
* | ||
* (This API will be extended as required by set-ui (tokensets). For other use-cases interacting | ||
* with the contract via the Etherscan write API is the simplest option) | ||
*/ | ||
export default class DelegatedManagerAPI { | ||
private DelegatedManagerWrapper: DelegatedManagerWrapper; | ||
private assert: Assertions; | ||
|
||
public constructor( | ||
provider: Provider, | ||
assertions?: Assertions) { | ||
this.DelegatedManagerWrapper = new DelegatedManagerWrapper(provider); | ||
this.assert = assertions || new Assertions(); | ||
} | ||
|
||
/** | ||
* ONLY OWNER: Add new extension(s) that the DelegatedManager can call. Puts extensions into PENDING | ||
* state, each must be initialized in order to be used. | ||
* | ||
* @param _delegatedManagerAddress DelegatedManager to addExtension for | ||
* @param _extensions New extension(s) to add | ||
* @param callerAddress Address of caller (optional) | ||
* @param txOpts Overrides for transaction (optional) | ||
*/ | ||
public async addExtensionsAsync( | ||
delegatedManagerAddress: Address, | ||
extensions: Address[], | ||
callerAddress: Address = undefined, | ||
txOpts: TransactionOverrides = {} | ||
): Promise<ContractTransaction> { | ||
this.assert.schema.isValidAddress('delegatedManagerAddress', delegatedManagerAddress); | ||
this.assert.schema.isValidAddressList('extensions', extensions); | ||
|
||
return await this.DelegatedManagerWrapper.addExtensions( | ||
delegatedManagerAddress, | ||
extensions, | ||
callerAddress, | ||
txOpts | ||
); | ||
} | ||
} |
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
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
Oops, something went wrong.