-
Notifications
You must be signed in to change notification settings - Fork 103
/
getStorageDepositFromOutput.ts
26 lines (25 loc) · 1.22 KB
/
getStorageDepositFromOutput.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import { Output } from '@core/wallet/types'
import { IStorageDepositReturnUnlockCondition } from '@iota/types'
import { OUTPUT_TYPE_NFT, UNLOCK_CONDITION_STORAGE_DEPOSIT_RETURN } from '../../../constants'
export function getStorageDepositFromOutput(
output: Output,
rawAmount?: string
): {
storageDeposit: number
giftedStorageDeposit: number
} {
const storageDepositReturnUnlockCondition = <IStorageDepositReturnUnlockCondition>(
output?.unlockConditions?.find(
(unlockCondition) => unlockCondition?.type === UNLOCK_CONDITION_STORAGE_DEPOSIT_RETURN
)
)
if (storageDepositReturnUnlockCondition) {
return { storageDeposit: Number(storageDepositReturnUnlockCondition.amount), giftedStorageDeposit: 0 }
} else if (output.type === OUTPUT_TYPE_NFT || (output?.nativeTokens?.length > 0 && Number(output?.amount) > 0)) {
return { storageDeposit: 0, giftedStorageDeposit: Number(output?.amount) }
} else if (rawAmount && Number(rawAmount) > 0 && Number(output?.amount) > Number(rawAmount)) {
return { storageDeposit: 0, giftedStorageDeposit: Number(output?.amount) - Number(rawAmount) }
} else {
return { storageDeposit: 0, giftedStorageDeposit: 0 }
}
}