Skip to content

Commit 571ffe0

Browse files
committed
fix: update examples to use unwrap
1 parent 73a7b82 commit 571ffe0

12 files changed

Lines changed: 41 additions & 102 deletions

File tree

examples/03-transfer-balance-threshold/src/task.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,7 @@ import { inputs } from './types'
55

66
export default function main(): void {
77
const tokenContract = new ERC20(inputs.token, inputs.chainId)
8-
const balanceResult = tokenContract.balanceOf(inputs.recipient)
9-
if (balanceResult.isError) throw new Error(balanceResult.error)
10-
const balance = balanceResult.value
11-
8+
const balance = tokenContract.balanceOf(inputs.recipient).unwrap()
129
const token = ERC20Token.fromAddress(inputs.token, inputs.chainId)
1310
const threshold = BigInt.fromStringDecimal(inputs.threshold, token.decimals)
1411

examples/04-transfer-balance-threshold-with-oracles/src/task.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,10 @@ import { inputs } from './types'
55

66
export default function main(): void {
77
const tokenContract = new ERC20(inputs.token, inputs.chainId)
8-
const balanceResult = tokenContract.balanceOf(inputs.recipient)
9-
if (balanceResult.isError) throw new Error(balanceResult.error)
10-
const balance = balanceResult.value
8+
const balance = tokenContract.balanceOf(inputs.recipient).unwrap()
119

1210
const token = ERC20Token.fromAddress(inputs.token, inputs.chainId)
13-
const balanceInUsdResult = TokenAmount.fromBigInt(token, balance).toUsd()
14-
if (balanceInUsdResult.isError) throw new Error(balanceInUsdResult.error)
15-
const balanceInUsd = balanceInUsdResult.value
11+
const balanceInUsd = TokenAmount.fromBigInt(token, balance).toUsd().unwrap()
1612
const thresholdUsd = USD.fromStringDecimal(inputs.thresholdUsd)
1713
log.info(`Balance in USD: ${balanceInUsd}`)
1814

examples/05-invest-aave-idle-balance/src/task.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,17 @@ export default function main(): void {
99
const aToken = ERC20Token.fromAddress(inputs.aToken, inputs.chainId)
1010
const aTokenContract = new AaveToken(aToken.address, aToken.chainId)
1111

12-
const underlyingTokenAddressResult = aTokenContract.UNDERLYING_ASSET_ADDRESS()
13-
if (underlyingTokenAddressResult.isError) throw new Error(underlyingTokenAddressResult.error)
14-
const underlyingTokenAddress = underlyingTokenAddressResult.value
12+
const underlyingTokenAddress = aTokenContract.UNDERLYING_ASSET_ADDRESS().unwrap()
1513
const underlyingToken = ERC20Token.fromAddress(underlyingTokenAddress, aToken.chainId)
1614

17-
const aavePoolAddressResult = aTokenContract.POOL()
18-
if (aavePoolAddressResult.isError) throw new Error(aavePoolAddressResult.error)
19-
const aavePoolAddress = aavePoolAddressResult.value
15+
const aavePoolAddress = aTokenContract.POOL().unwrap()
2016
const aavePool = new AavePool(aavePoolAddress, inputs.chainId)
2117

2218
const underlyingTokenContract = new ERC20(underlyingToken.address, underlyingToken.chainId)
23-
const underlyingTokenBalanceAmountResult = underlyingTokenContract.balanceOf(inputs.smartAccount)
24-
if (underlyingTokenBalanceAmountResult.isError) throw new Error(underlyingTokenBalanceAmountResult.error)
25-
const underlyingTokenBalanceAmount = underlyingTokenBalanceAmountResult.value
19+
const underlyingTokenBalanceAmount = underlyingTokenContract.balanceOf(inputs.smartAccount).unwrap()
2620

2721
const underlyingTokenBalance = TokenAmount.fromBigInt(underlyingToken, underlyingTokenBalanceAmount)
28-
const underlyingTokenBalanceInUsdResult = underlyingTokenBalance.toUsd()
29-
if (underlyingTokenBalanceInUsdResult.isError) throw new Error(underlyingTokenBalanceInUsdResult.error)
30-
const underlyingTokenBalanceInUsd = underlyingTokenBalanceInUsdResult.value
22+
const underlyingTokenBalanceInUsd = underlyingTokenBalance.toUsd().unwrap()
3123
const thresholdUsd = USD.fromStringDecimal(inputs.thresholdUsd)
3224
log.info(`Underlying balance in USD: ${underlyingTokenBalanceInUsd}`)
3325

examples/06-withdraw-from-aave-balance-threshold/src/task.ts

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,30 @@ export default function main(): void {
88
const aToken = ERC20Token.fromAddress(inputs.aToken, inputs.chainId)
99
const aTokenContract = new AaveToken(aToken.address, aToken.chainId)
1010

11-
const underlyingTokenAddressResult = aTokenContract.UNDERLYING_ASSET_ADDRESS()
12-
if (underlyingTokenAddressResult.isError) throw new Error(underlyingTokenAddressResult.error)
13-
const underlyingTokenAddress = underlyingTokenAddressResult.value
11+
const underlyingTokenAddress = aTokenContract.UNDERLYING_ASSET_ADDRESS().unwrap()
1412
const underlyingToken = ERC20Token.fromAddress(underlyingTokenAddress, aToken.chainId)
1513

1614
const underlyingTokenContract = new ERC20(underlyingToken.address, underlyingToken.chainId)
17-
const underlyingTokenBalanceAmountResult = underlyingTokenContract.balanceOf(inputs.recipient)
18-
if (underlyingTokenBalanceAmountResult.isError) throw new Error(underlyingTokenBalanceAmountResult.error)
19-
const underlyingTokenBalanceAmount = underlyingTokenBalanceAmountResult.value
15+
const underlyingTokenBalanceAmount = underlyingTokenContract.balanceOf(inputs.recipient).unwrap()
2016
const underlyingTokenBalance = TokenAmount.fromBigInt(underlyingToken, underlyingTokenBalanceAmount)
2117

22-
const underlyingTokenBalanceInUsdResult = underlyingTokenBalance.toUsd()
23-
if (underlyingTokenBalanceInUsdResult.isError) throw new Error(underlyingTokenBalanceInUsdResult.error)
24-
const underlyingTokenBalanceInUsd = underlyingTokenBalanceInUsdResult.value
18+
const underlyingTokenBalanceInUsd = underlyingTokenBalance.toUsd().unwrap()
2519
const thresholdUsd = USD.fromStringDecimal(inputs.thresholdUsd)
2620
log.info(`Recipient underlying balance in USD: ${underlyingTokenBalanceInUsd}`)
2721

2822
if (underlyingTokenBalanceInUsd.gt(thresholdUsd)) log.info('Recipient threshold not met')
2923
else {
3024
const depositAmountUsd = thresholdUsd.times(BigInt.fromI32(2)).minus(underlyingTokenBalanceInUsd)
31-
const aTokenDepositAmountResult = depositAmountUsd.toTokenAmount(aToken)
32-
if (aTokenDepositAmountResult.isError) throw new Error(aTokenDepositAmountResult.error)
33-
const aTokenDepositAmount = aTokenDepositAmountResult.value
25+
const aTokenDepositAmount = depositAmountUsd.toTokenAmount(aToken).unwrap()
3426

3527
const me = environment.getContext().user
36-
const aTokenBalanceAmountResult = aTokenContract.balanceOf(me)
37-
if (aTokenBalanceAmountResult.isError) throw new Error(aTokenBalanceAmountResult.error)
38-
const aTokenBalanceAmount = aTokenBalanceAmountResult.value
28+
const aTokenBalanceAmount = aTokenContract.balanceOf(me).unwrap()
3929
const aTokenBalance = TokenAmount.fromBigInt(aToken, aTokenBalanceAmount)
4030

4131
if (aTokenBalance.lt(aTokenDepositAmount)) log.info('Sender balance not enough')
4232
else {
43-
const expectedOutResult = aTokenDepositAmount.toTokenAmount(underlyingToken)
44-
if (expectedOutResult.isError) throw new Error(expectedOutResult.error)
45-
const minAmountOut = expectedOutResult.value.applySlippageBps(inputs.slippageBps as i32)
33+
const expectedOut = aTokenDepositAmount.toTokenAmount(underlyingToken).unwrap()
34+
const minAmountOut = expectedOut.applySlippageBps(inputs.slippageBps as i32)
4635
log.info(`Min amount out: ${minAmountOut}`)
4736

4837
SwapBuilder.forChain(inputs.chainId)

examples/07-withdraw-from-aave-swap-and-transfer/src/task.ts

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,13 @@ export default function main(): void {
2828

2929
const context = environment.getContext()
3030

31-
const userTokensResult = environment.relevantTokensQuery(
32-
context.user,
33-
[chainId],
34-
USD.zero(),
35-
[USDC, aUSDC],
36-
ListType.AllowList
37-
)
38-
if (userTokensResult.isError) throw new Error(userTokensResult.error)
39-
const userTokens = userTokensResult.value
31+
const userTokens = environment
32+
.relevantTokensQuery(context.user, [chainId], USD.zero(), [USDC, aUSDC], ListType.AllowList)
33+
.unwrap()
4034

41-
const smartAccountTokensResult = environment.relevantTokensQuery(
42-
inputs.smartAccount,
43-
[chainId],
44-
USD.zero(),
45-
[aUSDC],
46-
ListType.AllowList
47-
)
48-
if (smartAccountTokensResult.isError) throw new Error(smartAccountTokensResult.error)
49-
const smartAccountTokens = smartAccountTokensResult.value
35+
const smartAccountTokens = environment
36+
.relevantTokensQuery(inputs.smartAccount, [chainId], USD.zero(), [aUSDC], ListType.AllowList)
37+
.unwrap()
5038

5139
const aUsdcSmartAccount = findTokenAmount(smartAccountTokens, aUSDC)
5240
const usdcUser = findTokenAmount(userTokens, USDC)

examples/08-relevant-tokens-query/src/task.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,9 @@ import { inputs } from './types'
44

55
export default function main(): void {
66
const context = environment.getContext()
7-
const tokensResult = environment.relevantTokensQuery(
8-
context.user,
9-
[inputs.chainId],
10-
USD.zero(),
11-
[],
12-
ListType.DenyList
13-
)
14-
if (tokensResult.isError) throw new Error(tokensResult.error)
15-
const tokens = tokensResult.value
7+
const tokens = environment
8+
.relevantTokensQuery(context.user, [inputs.chainId], USD.zero(), [], ListType.DenyList)
9+
.unwrap()
1610
const builder = TransferBuilder.forChain(inputs.chainId)
1711

1812
for (let i = 0; i < tokens.length; i++) {

examples/09-subgraph-query/src/task.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,7 @@ export default function main(): void {
2525
if (BigInt.fromI32(inputs.slippageBps as i32) > BPS_DENOMINATOR) throw new Error('Slippage must be between 0 and 100')
2626

2727
const me = environment.getContext().user
28-
const amountInResult = new ERC20(inputs.tokenIn, inputs.chainId).balanceOf(me)
29-
if (amountInResult.isError) throw new Error(amountInResult.error)
30-
const amountIn = amountInResult.value
28+
const amountIn = new ERC20(inputs.tokenIn, inputs.chainId).balanceOf(me).unwrap()
3129
if (amountIn.isZero()) throw new Error('No amount in to swap')
3230

3331
const price = getTokenPrice(inputs.chainId, inputs.subgraphId, inputs.tokenIn, inputs.tokenOut)
@@ -55,8 +53,7 @@ function getTokenPrice(chainId: i32, subgraphId: string, tokenIn: Address, token
5553

5654
const query = `{pools(where: { token0: "${token0}", token1: "${token1}" }) {token0Price token1Price}}`
5755
const queryResult = environment.subgraphQuery(chainId, subgraphId, query, null)
58-
if (queryResult.isError) throw new Error(queryResult.error)
59-
const data = JSON.parse<UniswapPoolsData>(queryResult.value.data)
56+
const data = JSON.parse<UniswapPoolsData>(queryResult.unwrap().data)
6057

6158
if (tokenIn == token0 && tokenOut === token1) {
6259
return BigInt.fromStringDecimal(data.pools[0].token1Price, PRICE_PRECISION)

examples/10-rebalancing-tokens/src/task.ts

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@ function shareByBps(amountUSD: USD, bps: i32): USD {
1717
function getTokenAmount(chainId: u32, tokenAddress: Address): TokenAmount {
1818
const me = environment.getContext().user
1919
const contract = new ERC20(tokenAddress, chainId)
20-
const balanceResult = contract.balanceOf(me)
21-
if (balanceResult.isError) throw new Error(balanceResult.error)
22-
const balance = balanceResult.value
20+
const balance = contract.balanceOf(me).unwrap()
2321
const token = ERC20Token.fromAddress(tokenAddress, chainId)
2422
return TokenAmount.fromBigInt(token, balance)
2523
}
@@ -51,9 +49,9 @@ export default function main(): void {
5149
]
5250

5351
const currentBalancesUsd = [
54-
tokenAmounts[0].toUsd().value,
55-
tokenAmounts[1].toUsd().value,
56-
tokenAmounts[2].toUsd().value,
52+
tokenAmounts[0].toUsd().unwrap(),
53+
tokenAmounts[1].toUsd().unwrap(),
54+
tokenAmounts[2].toUsd().unwrap(),
5755
]
5856
const totalPortfolioUSD = currentBalancesUsd[0].plus(currentBalancesUsd[1]).plus(currentBalancesUsd[2])
5957
if (totalPortfolioUSD.le(USD.zero())) {
@@ -90,12 +88,8 @@ export default function main(): void {
9088
const surplusTokenIndex = surpluses[surplusIndex].index
9189
const deficitTokenIndex = deficits[deficitIndex].index
9290

93-
const tokenInAmountResult = movedUSD.toTokenAmount(tokensMetadata[surplusTokenIndex])
94-
if (tokenInAmountResult.isError) throw new Error(tokenInAmountResult.error)
95-
const tokenInAmount = tokenInAmountResult.value
96-
const expectedTokenOutAmounResult = movedUSD.toTokenAmount(tokensMetadata[deficitTokenIndex])
97-
if (expectedTokenOutAmounResult.isError) throw new Error(expectedTokenOutAmounResult.error)
98-
const expectedTokenOutAmount = expectedTokenOutAmounResult.value
91+
const tokenInAmount = movedUSD.toTokenAmount(tokensMetadata[surplusTokenIndex]).unwrap()
92+
const expectedTokenOutAmount = movedUSD.toTokenAmount(tokensMetadata[deficitTokenIndex]).unwrap()
9993

10094
const slippageFactor = BPS_DENOMINATOR.minus(BigInt.fromI32(inputs.slippageBps as i32))
10195
const minAmountOut = expectedTokenOutAmount.amount.times(slippageFactor).div(BPS_DENOMINATOR)

examples/12-dollar-cost-averaging/src/task.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,7 @@ export default function main(): void {
1414

1515
// Create amount from decimal string and estimate amount out
1616
const amountIn = TokenAmount.fromStringDecimal(tokenIn, inputs.amount)
17-
const expectedOutResult = amountIn.toTokenAmount(tokenOut)
18-
if (expectedOutResult.isError) throw new Error(expectedOutResult.error)
19-
const expectedOut = expectedOutResult.value
20-
17+
const expectedOut = amountIn.toTokenAmount(tokenOut).unwrap()
2118
// Apply slippage to calculate the expected minimum amount out
2219
const minAmountOut = expectedOut.applySlippageBps(inputs.slippageBps as i32)
2320
log.info(`Calculated minOut: ${minAmountOut} (equivalent=${expectedOut}, slippageBps=${inputs.slippageBps})`)

examples/13-bridge-and-invest-aave/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"compile:invest": "mimic compile -t src/invest.ts -m manifest.invest.yaml -o ./build/invest",
1515
"deploy:bridge": "yarn codegen:bridge && yarn compile:bridge && mimic deploy --input ./build/bridge --output ./build/bridge --skip-compile",
1616
"deploy:invest": "yarn codegen:invest && yarn compile:invest && mimic deploy --input ./build/invest --output ./build/invest --skip-compile",
17-
"test": "yarn build && mimic test --skipCompile",
17+
"test": "yarn build && mimic test --skip-compile",
1818
"create-config:invest": "tsc -p tsconfig.create-config.json && tsx src/create-config.invest.ts",
1919
"lint": "eslint ."
2020
},

0 commit comments

Comments
 (0)