Skip to content

Commit 1a73657

Browse files
Add support for USYC (#3889)
* Add support for USYC * Review rework * add USYC to unit test * add usyc to unit test * update test name
1 parent 36fce41 commit 1a73657

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

.changeset/breezy-hairs-yell.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@chainlink/por-address-list-adapter': minor
3+
---
4+
5+
Include USYC token for type tbill in openedenaddress endpoint

packages/sources/por-address-list/src/transport/openEdenUSDOAddress.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { SubscriptionTransport } from '@chainlink/external-adapter-framework/transports/abstract/subscription'
21
import { EndpointContext } from '@chainlink/external-adapter-framework/adapter'
32
import { TransportDependencies } from '@chainlink/external-adapter-framework/transports'
3+
import { SubscriptionTransport } from '@chainlink/external-adapter-framework/transports/abstract/subscription'
44
import { AdapterResponse, sleep } from '@chainlink/external-adapter-framework/util'
5+
import { ethers } from 'ethers'
56
import OpenEdenUSDOPoRAddressList from '../config/OpenEdenUSDOPoRAddressList.json'
67
import { BaseEndpointTypes, inputParameters } from '../endpoint/openEdenUSDOAddress'
7-
import { ethers } from 'ethers'
88
import { addProvider, getProvider } from './providerUtils'
99

1010
export type AddressTransportTypes = BaseEndpointTypes
@@ -21,6 +21,9 @@ interface ResponseSchema {
2121
yourVaultAddress: string
2222
}
2323

24+
// Tokens with Net Asset Value (NAV)-based pricing
25+
const pricedAssets = ['TBILL', 'USYC']
26+
2427
export class AddressTransport extends SubscriptionTransport<AddressTransportTypes> {
2528
providersMap: Record<string, ethers.providers.JsonRpcProvider> = {}
2629
settings!: AddressTransportTypes['Settings']
@@ -110,7 +113,7 @@ export class AddressTransport extends SubscriptionTransport<AddressTransportType
110113

111114
const buildOtherResponse = (addressList: ResponseSchema[]) => {
112115
return addressList
113-
.filter((addr) => addr.tokenSymbol != 'TBILL')
116+
.filter((addr) => !pricedAssets.includes(addr.tokenSymbol))
114117
.map((addr) => ({
115118
contractAddress: addr.tokenAddress,
116119
network: addr.chain,
@@ -123,7 +126,7 @@ const buildOtherResponse = (addressList: ResponseSchema[]) => {
123126

124127
const buildTBILLResponse = (addressList: ResponseSchema[]) => {
125128
return addressList
126-
.filter((addr) => addr.tokenSymbol == 'TBILL')
129+
.filter((addr) => pricedAssets.includes(addr.tokenSymbol))
127130
.map((addr) => ({
128131
contractAddress: addr.tokenAddress,
129132
network: addr.chain,

packages/sources/por-address-list/test/unit/openEdenUSDOAddress.test.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ jest.mock('ethers', () => ({
4747
const walletAddress = '0x5EaFF7af80488033Bc845709806D5Fae5291eB88'
4848
const tbillContractAddress = '0xdd50C053C096CB04A3e3362E2b622529EC5f2e8a'
4949
const tbillPriceOracleAddress = '0xCe9a6626Eb99eaeA829D7fA613d5D0A2eaE45F40'
50+
const usycContractAddress = '0x136471a34f6ef19fE571EFFC1CA711fdb8E49f2b'
51+
const usycPriceOracleAddress = '0x602a1cb1f821a3e8f507a7637a4be7af19578f75'
5052
const usdcContractAddress = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
5153
const tbillAddress = makeStub('tbillAddress', {
5254
chain: 'Ethereem Mainnet',
@@ -56,6 +58,14 @@ const tbillAddress = makeStub('tbillAddress', {
5658
tokenPriceOracle: tbillPriceOracleAddress,
5759
yourVaultAddress: walletAddress,
5860
})
61+
const usycAddress = makeStub('usycAddress', {
62+
chain: 'Ethereem Mainnet',
63+
chainId: 1,
64+
tokenSymbol: 'USYC',
65+
tokenAddress: usycContractAddress,
66+
tokenPriceOracle: usycPriceOracleAddress,
67+
yourVaultAddress: walletAddress,
68+
})
5969
const usdcAddress = makeStub('otherAddress', {
6070
chain: 'Ethereem Mainnet',
6171
chainId: 1,
@@ -121,8 +131,8 @@ describe('AddressTransport', () => {
121131
})
122132
})
123133

124-
it('should return tbill address', async () => {
125-
const addresses = [tbillAddress, usdcAddress]
134+
it('should return tbill and usyc address', async () => {
135+
const addresses = [tbillAddress, usycAddress, usdcAddress]
126136
addressListContract.getPoRAddressList.mockResolvedValue(addresses)
127137
addressListContract.getPoRAddressListLength.mockResolvedValue(addresses.length)
128138

@@ -144,6 +154,14 @@ describe('AddressTransport', () => {
144154
wallets: [walletAddress],
145155
priceOracleAddress: tbillPriceOracleAddress,
146156
},
157+
{
158+
contractAddress: usycContractAddress,
159+
network: 'Ethereem Mainnet',
160+
chainId: '1',
161+
token: 'USYC',
162+
wallets: [walletAddress],
163+
priceOracleAddress: usycPriceOracleAddress,
164+
},
147165
],
148166
},
149167
result: null,
@@ -155,7 +173,7 @@ describe('AddressTransport', () => {
155173
})
156174

157175
it('should return other address', async () => {
158-
const addresses = [tbillAddress, usdcAddress]
176+
const addresses = [tbillAddress, usdcAddress, usycAddress]
159177
addressListContract.getPoRAddressList.mockResolvedValue(addresses)
160178
addressListContract.getPoRAddressListLength.mockResolvedValue(addresses.length)
161179

0 commit comments

Comments
 (0)