@superfluid-finance/sdk-core
Version:
SDK Core for building with Superfluid Protocol
503 lines (319 loc) • 19.3 kB
Markdown
# Changelog
All notable changes to the SDK-core will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Added
### Changed
### Fixed
## [0.9.0] - 2024-12-13
### Added
- Handle new Operation types with BatchCall
- Forward ETH value with BatchCall and Operation
## [0.8.0] - 2024-08-01
### Breaking
- Removed all FlowNFT related functionality, because deprecated from the protocol
## [0.7.1] - 2024-06-19
### Updated
- Metadata changes for recently added networks
## [0.7.0] - 2023-05-01
### Added
- Added Degen chain support
- Added `getTotalAmountReceivedByMember`
### Changed
- Map the name from subgraph to an unknown event, instead of "\_Unknown".
- Don't lock metadata version to a specific version, use semver (^).
- Allow infinite pagination with 'skip: 0' value (previously had to be undefined)
- Add subgraphs queries for Pools, PoolMembers and PoolDistributors
- Map `isNFTApproval` and `isNFTTransfer` onto events
## [0.6.12] - 2023-10-23
### Fixed
- Support for `CustomSuperToken` contracts without `CONSTANT_OUTFLOW_NFT()` and `CONSTANT_INFLOW_NFT()` function implemented
## [0.6.11] - 2023-10-20
### Fixed
- Handle the case when `networkData.addresses.governance` is null. This was due to a removal of the `governance` address from the metadata for test networks in `metadata@v1.1.17`.
## [0.6.10] - 2023-10-16
### Added
- Support for `ConstantOutflowNFT` and `ConstantInflowNFT` functions
### Fixed
- Support for `CustomSuperToken` contracts without `getUnderlyingToken()` function implemented
## [0.6.9] - 2023-09-11
### Added
- Support for new `increaseFlowRateAllowanceWithPermissions` and `decreaseFlowRateAllowanceWithPermissions` functions on `CFAv1` class
### Changed
- Node dependency updates.
## [0.6.8] - 2023-07-25
### Updated
- Metadata changes for recently added networks
## [0.6.7] - 2023-07-13
### Added
- `BatchCall.toOperation` function which unifies `BatchCall` to `Operation` type
- `Operation.toOperationStruct` moved from `BatchCall` to `Operation` class
### Updated
- Bump version to support metadata v1.1.8.
## [0.6.6] - 2023-05-17
### Added
- Subgraph query support for `FlowOperator`
## [0.6.5] - 2023-05-12
### Fixed
- `hostedEndpoint` might be nullable so we handle this case.
### Added
- Support for `sepolia` network
## [0.6.4] - 2023-05-07
### Changed
- `getPopulatedTransactionRequest` doesn't use the signer to populate the transaction anymore as `signer.sendTransaction` does it already. The double `signer.populateTransaction` was causing issues with some wallets (e.g. Rainbow Wallet)
- Map `isNativeAssetSuperToken` to `Token` from Subgraph
## [0.6.3] - 2023-03-14
### Added
- `increaseAllowance` and `decreaseAllowance` functions to SuperToken class
- Batch call support for `increaseAllowance` and `decreaseAllowance`
- `increaseFlowRateAllowance` and `decreaseFlowRateAllowance` functions to CFAv1 class
- Add support for `activeOutgoingStreamCount`, `activeIncomingStreamCount`, `inactiveOutgoingStreamCount`, `inactiveIncomingStreamCount` properties in query for `AccountTokenSnapshot` entity
- Add support for `rewardAddress`, `liquidationPeriod`, `patricianPeriod`, and `minimumDeposit` properties in query for `Token` entity
- Add support for `userData` property in query for `Stream` entity
- Add `index` (the Subgraph entity ID) field to Index events when querying from Subgraph
### Changed
- `.exec` or `.execForward` will throw an error if the operations array is empty
## [0.6.2] - 2023-02-07
### Added
- `streamId` to `FlowUpdatedEvent` when querying from Subgraph
- Support for Celo
## [0.6.1] - 2022-12-20
### Changed
- Subgraph endpoints all use hosted service endpoints by default
## [0.6.0] - 2022-12-19
### Added
- `SuperToken` class has `send` function
- `batchCall` supports new `send` batch operation
- Added `downgradeTo` function on `SuperToken` class
- Added toga events to be part of query
### Changed
- Make `sender` field optional in CFAv1 write functions
## [0.5.9] - 2022-12-05
### Added
- Map `deposit` to Stream when querying from Subgraph
### Fixes
- Fix `@nomiclabs/hardhat-ethers/types` dependency error
## [0.5.8] - 2022-11-02
### Added
- Support for mainnet
### Changed
- Framework initialization for supported networks utilizes `@superfluid-finance/metadata`, but still uses the resolver for unsupported/local testing environments
- > NOTE: This will not create any changes when doing `Framework.create` and is just a minor optimization.
- All transactions executed via SDK-Core have a default multiplier (1.2x) applied to the provider estimated gas limit **unless** an ethers `Overrides` object is passed during creation of the `Operation`.
- There is also the option to pass in an explicit multiplier when executing transactions: `Operation.exec(signer, 1.32)`.
## [0.5.7] - 2022-10-13
### Breaking
- `CFAv1Forwarder` integrated into SDK-Core and will be the default way of calling CFA agreements and `sender` is now a required property.
- Migration: pass sender into the affected CFAv1 callAgreement functions - `create/update/deleteFlow`.
> NOTE: You must pass `shouldUseCallAgreement` explicitly as a property if you want to execute these calls via the Host.
### Added
- typechain files consumed from `@superfluid-finance/ethereum-contracts` and exported from SDK-Core
## [0.5.6] - 2022-09-07
### Fixes
- Correct `subgraphAPIEndpoint` in `getResolverData`
### Breaking
- Don't wrap `SubgraphClient` with `SFError`
## [0.5.5] - 2022-08-31
### Added
- Support for: `optimism-goerli` and `arbitrum-goerli` added
### Breaking
- Support for: `rinkeby`, `ropsten`, `kovan`, `optimism-kovan` and `arbitrum-rinkeby` removed
- Don't throw `SFError` when executing `Operation` or `BatchCall`; let the original error bubble up
### Fixes
- Serialize a much smaller version of the cause in `SFError` (only `name`, `message`, `code`)
- Change `SFError.name` from "Error" to "SFError"
# [0.5.4] - 2022-08-19
### Fixes
- Properly console the cause, not the caught serialization error
## [0.5.3] - 2022-08-15
### Added
- Map `indexId` to `IndexSubscription` when querying from Subgraph
### Fixes
- Catch and handle serialization error
## [0.5.2] - 2022-07-26
### Added
- Support for `isNativeAssetSuperToken` property on SuperToken entity queries
- `callAppAction` Operation creator added to `Host` class
### Breaking
- `BatchCall.getCallDataFunctionArgs` deprecates the old `BatchCall.getCallAgreementFunctionArgs`
- Migration:
- Replace `getCallAgreementFunctionArgs` with `getCallDataFunctionArgs` and pass in the fragment/ABI as the first argument, whilst keeping the same `callData` argument.
- `Host.populateCallAgreementTxnAndReturnOperation` is replaced by `Host.callAgreement`
- Migration:
- Replace instances of `populateCallAgreementTxnAndReturnOperation` with `callAgreement`
### Fixes
- Handle `CALL_APP_ACTION` operation type correctly in SDK-Core when doing a batch call
- Undefined `process` in `constants.ts` in React and client-side apps using SDK-Core directly
## [0.5.1] - 2022-07-26
### Fixes
- Patch fix serializeError strange serialization
## [0.5.0] - 2022-07-14
### Added
- Support for SetEvent and Subgraph v1.4.4
- `Framework.operation` method for easily creating `Operation` instances
### Fixes
- Compile AJV validations to prevent unsafe-eval and did not allow SDK-Core usage inside Google Chrome extension due to unsafe-eval CSP
### Changed
- `SFError` refactor to be more conventional. It inherits `Error` and uses `cause` to wrap internal errors.
- Use `serialize-error` for serializing error object inside the message.
- Export Operation & OperationType
### Breaking
- `SFError.errorObject` renamed to `SFError.cause`
## [0.4.4] - 2022-06-30
### Added
- Support for new event properties for Subgraph v1.4.1
### Breaking
- Subgraph Query: `rewardAccount` renamed to `rewardAmountReceiver` on `AgreementLiquidatedV2Event` entity
- `chainId` is a required property for framework initialization
- `networkId` and `dataMode` no longer exist as properties for framework initialization
## [0.4.3] - 2022-06-29
### Added
- BNB Chain support added
### Changed
- `maybeCriticalAtTimestamp` is a nullable property now
## [0.4.2] - 2022-05-17
### Added
- `QueryHandler` for transfer events
## [0.4.2] - 2022-05-17
### Fixed
- Patched SDK-Core Subgraph files to be in sync with V1 Subgraph endpoint
## [0.4.1] - 2022-05-14
### Added
- Avalanche Network Support
### Changed
- Network constants consistent with canonical Superfluid name
## [0.4.0] - 2022-05-06
### Added
- Added option to specify block details when querying through a `SubgraphQueryHandler`
- Added Subgraph's `_meta` table query
- Added `tokenSymbol` for `SubgraphQueryHandler` entity queries where `token` (token ID) was previously included
- Added `PageNumberPaging` for UI development friendly pagination API
- Added `AllPaging` to recursively query all results from Subgraph
- Added support for `TypedDocumentNode` for `SubgraphClient`
- Expose underlying ethers.js contracts for each class: CFAv1, Host, IDAv1 and `contracts` property in `Framework` class
- Added new ACL function support: authorizing flow operator permissions and create/update/delete flow by operator
- Added `nativeTokenSymbol` property to `constants.ts`
- Split `SuperToken` class into: `WrapperSuperToken`, `PureSuperToken` and `NativeAssetSuperToken` classes
- Added `loadWrapperSuperToken`, `loadNativeAssetSuperToken`, and `loadPureSuperToken` super token initialization functions
- Support `upgrade`, `upgradeTo` and `downgrade` functions via `NativeAssetSuperToken`
- Added `upgradeTo` to `WrapperSuperToken` class as this was missing as well
### Changed
- Renamed `Token` to `ERC20Token`
- Exported `ERC20Token`
- Renamed `PagedResult.data` to `PagedResult.items`
- Moved `listAllResults` into separate function from `Query` object
- Removed `SubgraphClient.batchRequests` because Subgraph Node didn't support it
### Internal
- Use `eslint-plugin-prettier` over separate `prettier` instance
### Breaking
- The `SuperToken` class is now an abstract base class and no longer contains the functions `upgrade` and `downgrade`.
- `underlyingToken` is possibly undefined on `SuperToken`: `WrapperSuperToken` has `underlyingToken`, but `PureSuperToken` and `NativeAssetSuperToken` do not.
> NOTE: These changes are due to the split of `SuperToken` into `WrapperSuperToken`, `PureSuperToken` and `NativeAssetSuperToken` classes.
- Migration:
- if you are unsure of the type of the super token, you can use: `await framework.loadSuperToken("0x...");`
- if you want to load a wrapper super token, use: `await framework.loadWrapperSuperToken("DAIx");`
- if you want to load a native asset super token, use: `await framework.loadNativeAssetSuperToken("ETHx");`
- if you want to load a pure super token, use: `await framework.loadPureSuperToken("0x...");`
## [0.3.2] - 2022-03-16
### Added
- Added "optimism-mainnet" and "arbitrum-one" support
## [0.3.1] - 2022-02-16
### Added
- Added `indexValueCurrent` to `IndexSubscription` query to optimize calculating "total amount distributed" in consuming applications ([#629])
- Added `indexTotalUnits` to `IndexSubscription` query to optimize calculating "pool percentage" in consuming applications ([#630])
### Fixed
- Typo for `networkName: "arbitrum-rinkeby"` fixed (was expecting `"arbitrium-rinkeby"`) in `Framework.create` ([#637])
### Breaking
- Using `"xdai"` as the `networkName` will no longer work. Updated to `"gnosis"`
- Migration: change `networkName` from `"xdai"` to `"gnosis"`
## [0.3.0] - 2022-02-02
### Added
- New query handlers to cover full spectrum of Subgraph querying capabilities
- Used by the new release of SDK-redux
- Lacks an easy-to-use API for average SDK-core user
### Changed
- `_ethers` is not exported for UMD build anymore. Use `window._ethers` instead.
- `SFError` and `ErrorType` are now exported
- Generated Subgraph types are now exported (`*_Filter` and `*_OrderBy` types)
- There are a lot of Subgraph types, so it does make the namespace crowded. We'll alleviate it in a later release.
## [0.2.1] - 2022-01-31
### Added
- Load `SuperToken` by token symbol as long as the token is listed on the resolver ([#588])
## [0.2.0] - 2022-01-14
### Added
- Support for new testnets: Optimism Kovan, Avalanche Fuji, and Arbitrum Rinkeby ([#526])
- Working UMD build added to package and removed duplicated .d.ts typing files from package ([#535])
- ethers.js overrides object support added to all `Operation` creation functions ([#540])
- `Query` class overhaul: fuller filter and ordering and more generation of types
### Changed
- package.json cleanup and subgraph schema updated ([#522])
- Simpler provider logic for Framework creation ([#537])
- Use V1 instead of devSubgraph endpoints ([#550])
- `superTokenFactoryAddress` removed from `IConfig` interface ([#556])
### Fixed
- Outdated README.md cleanup and updates ([#520], [#524], [#526], [#530], [#537], [#549], [#556])
- `BatchCall` for callAgreement functions fixed, flow rate calculation utils logic fixed ([#526])
- Improper base 18 number for flow rate calculation utils ([#545])
- single network deploy implemented ([#506])
- eslint errors and .json imports fixed ([#535])
### Breaking
- Breaking change: Framework.create interface breaking change:`web3Ethers` and `hardhatEthers` properties removed ([#537])
- Migration: if you were using one of these two properties, change the property `web3Ethers` and `hardhatEthers` to `provider`
- Breaking change: non Framework initialized `batchCall` constructor arguments interface change: `config` property removed ([#556])
- Migration: if you instantiated a `BatchCall` without using Framework, you need to remove the config property and replace it with the property: `hostAddress`
## [0.1.0] - 2021-12-01
### Added
- Initial preview version of SDK-Core
- Features:
- New `Framework` initialization pattern
- Built with `ethers.js` and `TypeScript` from the ground up
- `Query` class which leverages the Subgraph for queries with simple filters
- New `Operation` class for executing transactions/batching transactions
- `ConstantFlowAgreementV1` and `InstantDistributionAgreementV1` helper classes with create, read, update and delete functionality
- New `SuperToken` class with `SuperToken` CRUD functionality and an underlying `Token` class with basic `ERC20` functionality
- New `BatchCall` class for creating and executing batch calls with supported `Operation's`
[Unreleased]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.6.3...HEAD
[0.6.3]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.6.2...sdk-core%40v0.6.3
[0.6.2]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.6.1...sdk-core%40v0.6.2
[0.6.1]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.6.0...sdk-core%40v0.6.1
[0.6.0]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.9...sdk-core%40v0.6.0
[0.5.9]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.8...sdk-core%40v0.5.9
[0.5.8]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.7...sdk-core%40v0.5.8
[0.5.7]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.6...sdk-core%40v0.5.7
[0.5.6]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.5...sdk-core%40v0.5.6
[0.5.5]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.4...sdk-core%40v0.5.5
[0.5.4]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.3...sdk-core%40v0.5.4
[0.5.3]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.2...sdk-core%40v0.5.3
[0.5.2]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.1...sdk-core%40v0.5.2
[0.5.1]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.5.0...sdk-core%40v0.5.1
[0.5.0]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.4.4...sdk-core%40v0.5.0
[0.4.4]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.4.3...sdk-core%40v0.4.4
[0.4.3]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.4.2...sdk-core%40v0.4.3
[0.4.2]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.4.1...sdk-core%40v0.4.2
[0.4.1]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.4.0...sdk-core%40v0.4.1
[0.4.0]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.3.2...sdk-core%40v0.4.0
[0.3.2]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.3.1...sdk-core%40v0.3.2
[0.3.1]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.3.0...sdk-core%40v0.3.1
[0.3.0]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.2.1...sdk-core%40v0.3.0
[0.2.1]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.2.0...sdk-core%40v0.2.1
[0.2.0]: https://github.com/superfluid-finance/protocol-monorepo/compare/sdk-core%40v0.1.0...sdk-core%40v0.2.0
[0.1.0]: https://github.com/superfluid-finance/protocol-monorepo/releases/tag/sdk-core%40v0.1.0
[#506]: https://github.com/superfluid-finance/protocol-monorepo/pull/506
[#515]: https://github.com/superfluid-finance/protocol-monorepo/pull/515
[#520]: https://github.com/superfluid-finance/protocol-monorepo/pull/520
[#522]: https://github.com/superfluid-finance/protocol-monorepo/pull/522
[#524]: https://github.com/superfluid-finance/protocol-monorepo/pull/524
[#526]: https://github.com/superfluid-finance/protocol-monorepo/pull/526
[#530]: https://github.com/superfluid-finance/protocol-monorepo/pull/530
[#535]: https://github.com/superfluid-finance/protocol-monorepo/pull/535
[#537]: https://github.com/superfluid-finance/protocol-monorepo/pull/537
[#540]: https://github.com/superfluid-finance/protocol-monorepo/pull/540
[#545]: https://github.com/superfluid-finance/protocol-monorepo/pull/545
[#549]: https://github.com/superfluid-finance/protocol-monorepo/pull/549
[#550]: https://github.com/superfluid-finance/protocol-monorepo/pull/550
[#556]: https://github.com/superfluid-finance/protocol-monorepo/pull/556
[#588]: https://github.com/superfluid-finance/protocol-monorepo/pull/588
[#629]: https://github.com/superfluid-finance/protocol-monorepo/pull/629
[#630]: https://github.com/superfluid-finance/protocol-monorepo/pull/630
[#630]: https://github.com/superfluid-finance/protocol-monorepo/pull/630
[#637]: https://github.com/superfluid-finance/protocol-monorepo/pull/637