Skip to content

Commit 27c4a06

Browse files
committed
feat(types): add EVM_APPROVE and TRON_APPROVE prerequisite types
1 parent e72f989 commit 27c4a06

7 files changed

Lines changed: 128 additions & 0 deletions

File tree

‎packages/rango-types/src/api/shared/prerequisites/base.ts‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
import { EvmApprovePrerequisite } from './evm.js'
12
import { StellarChangeTrustLinePrerequisite } from './stellar.js'
3+
import { TronApprovePrerequisite } from './tron.js'
24
import { XrplChangeTrustLinePrerequisite } from './xrpl.js'
35

46
export type TransactionPrerequisiteType =
57
| StellarChangeTrustLinePrerequisite['type']
68
| XrplChangeTrustLinePrerequisite['type']
9+
| EvmApprovePrerequisite['type']
10+
| TronApprovePrerequisite['type']
711
export interface BaseTransactionPrerequisite {
812
type: TransactionPrerequisiteType
913
blockChain: string
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
export const XRPL_CHANGE_TRUSTLINE_TYPE = 'XRPL_CHANGE_TRUSTLINE' as const
22
export const STELLAR_CHANGE_TRUSTLINE_TYPE = 'STELLAR_CHANGE_TRUSTLINE' as const
3+
export const EVM_APPROVE_TYPE = 'EVM_APPROVE' as const
4+
export const TRON_APPROVE_TYPE = 'TRON_APPROVE' as const
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { BaseTransactionPrerequisite } from './base.js'
2+
import { EVM_APPROVE_TYPE } from './constants.js'
3+
4+
/**
5+
* EVM Approve Prerequisite Type
6+
*
7+
*/
8+
export interface EvmApprovePrerequisite extends BaseTransactionPrerequisite {
9+
/** equals to "EVM_APPROVE" **/
10+
type: typeof EVM_APPROVE_TYPE
11+
/** The EVM-based blockchain that the approval is required on, e.g. ARBITRUM **/
12+
blockChain: string
13+
/** User's wallet address which must approve the token **/
14+
wallet: string
15+
/** The ERC-20 token contract address that must be approved **/
16+
token: string
17+
/** The contract address which will be allowed to spend the token **/
18+
spender: string
19+
/** The minimum required allowance, as an integer string in the token's smallest unit **/
20+
amount: string
21+
}
22+
23+
export const isEvmApprovePrerequisite = (
24+
prerequisite: BaseTransactionPrerequisite,
25+
): prerequisite is EvmApprovePrerequisite =>
26+
prerequisite.type === EVM_APPROVE_TYPE

‎packages/rango-types/src/api/shared/prerequisites/index.ts‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1+
import { EvmApprovePrerequisite } from './evm.js'
12
import { StellarChangeTrustLinePrerequisite } from './stellar.js'
3+
import { TronApprovePrerequisite } from './tron.js'
24
import { XrplChangeTrustLinePrerequisite } from './xrpl.js'
35

46
export type TransactionPrerequisiteType =
57
| StellarChangeTrustLinePrerequisite['type']
68
| XrplChangeTrustLinePrerequisite['type']
9+
| EvmApprovePrerequisite['type']
10+
| TronApprovePrerequisite['type']
711

812
export type TransactionPrerequisite =
913
| XrplChangeTrustLinePrerequisite
1014
| StellarChangeTrustLinePrerequisite
15+
| EvmApprovePrerequisite
16+
| TronApprovePrerequisite
1117

1218
export {
1319
XrplChangeTrustLinePrerequisite,
@@ -17,8 +23,12 @@ export {
1723
StellarChangeTrustLinePrerequisite,
1824
isStellarChangeTrustLinePrerequisite,
1925
} from './stellar.js'
26+
export { EvmApprovePrerequisite, isEvmApprovePrerequisite } from './evm.js'
27+
export { TronApprovePrerequisite, isTronApprovePrerequisite } from './tron.js'
2028

2129
export {
2230
XRPL_CHANGE_TRUSTLINE_TYPE,
2331
STELLAR_CHANGE_TRUSTLINE_TYPE,
32+
EVM_APPROVE_TYPE,
33+
TRON_APPROVE_TYPE,
2434
} from './constants.js'
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { BaseTransactionPrerequisite } from './base.js'
2+
import { TRON_APPROVE_TYPE } from './constants.js'
3+
4+
/**
5+
* Tron Approve Prerequisite Type
6+
*
7+
*/
8+
export interface TronApprovePrerequisite extends BaseTransactionPrerequisite {
9+
/** equals to "TRON_APPROVE" **/
10+
type: typeof TRON_APPROVE_TYPE
11+
/** equals to "TRON" **/
12+
blockChain: string
13+
/** User's wallet address which must approve the token (0x-hex form) **/
14+
wallet: string
15+
/** The TRC-20 token contract address that must be approved (0x-hex form) **/
16+
token: string
17+
/** The contract address which will be allowed to spend the token (0x-hex form) **/
18+
spender: string
19+
/** The minimum required allowance, as an integer string in the token's smallest unit **/
20+
amount: string
21+
}
22+
23+
export const isTronApprovePrerequisite = (
24+
prerequisite: BaseTransactionPrerequisite,
25+
): prerequisite is TronApprovePrerequisite =>
26+
prerequisite.type === TRON_APPROVE_TYPE

‎packages/rango-types/src/execution/index.ts‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,15 @@ export type PendingSwap = {
146146
export {
147147
isXrplChangeTrustLinePrerequisiteResult,
148148
isStellarChangeTrustLinePrerequisiteResult,
149+
isEvmApprovePrerequisiteResult,
150+
isTronApprovePrerequisiteResult,
149151
XrplChangeTrustLinePrerequisiteResult,
150152
StellarChangeTrustLinePrerequisiteResult,
153+
EvmApprovePrerequisiteResult,
154+
EvmExecutedApprovePrerequisiteResult,
155+
EvmSkippedApprovePrerequisiteResult,
156+
TronApprovePrerequisiteResult,
157+
TronExecutedApprovePrerequisiteResult,
158+
TronSkippedApprovePrerequisiteResult,
151159
TransactionPrerequisiteResult,
152160
} from './prerequisites.js'

‎packages/rango-types/src/execution/prerequisites.ts‎

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import {
2+
EVM_APPROVE_TYPE,
23
STELLAR_CHANGE_TRUSTLINE_TYPE,
4+
TRON_APPROVE_TYPE,
35
XRPL_CHANGE_TRUSTLINE_TYPE,
46
TransactionPrerequisiteType,
57
} from '../api/shared/prerequisites/index.js'
@@ -65,6 +67,56 @@ export const isXrplChangeTrustLinePrerequisiteResult = (
6567
): prerequisiteResult is XrplChangeTrustLinePrerequisiteResult =>
6668
prerequisiteResult.prerequisiteType === XRPL_CHANGE_TRUSTLINE_TYPE
6769

70+
// Evm Approve Prerequisite Result
71+
72+
export type EvmApprovePrerequisiteResultData = {
73+
executedTransactionHash: string
74+
}
75+
76+
export interface EvmExecutedApprovePrerequisiteResult extends BaseExecutedTransactionPrerequisiteResult {
77+
prerequisiteType: typeof EVM_APPROVE_TYPE
78+
data: EvmApprovePrerequisiteResultData
79+
}
80+
81+
export interface EvmSkippedApprovePrerequisiteResult extends BaseSkippedTransactionPrerequisiteResult {
82+
prerequisiteType: typeof EVM_APPROVE_TYPE
83+
}
84+
85+
export type EvmApprovePrerequisiteResult =
86+
| EvmExecutedApprovePrerequisiteResult
87+
| EvmSkippedApprovePrerequisiteResult
88+
89+
export const isEvmApprovePrerequisiteResult = (
90+
prerequisiteResult: BaseTransactionPrerequisiteResult,
91+
): prerequisiteResult is EvmApprovePrerequisiteResult =>
92+
prerequisiteResult.prerequisiteType === EVM_APPROVE_TYPE
93+
94+
// Tron Approve Prerequisite Result
95+
96+
export type TronApprovePrerequisiteResultData = {
97+
executedTransactionHash: string
98+
}
99+
100+
export interface TronExecutedApprovePrerequisiteResult extends BaseExecutedTransactionPrerequisiteResult {
101+
prerequisiteType: typeof TRON_APPROVE_TYPE
102+
data: TronApprovePrerequisiteResultData
103+
}
104+
105+
export interface TronSkippedApprovePrerequisiteResult extends BaseSkippedTransactionPrerequisiteResult {
106+
prerequisiteType: typeof TRON_APPROVE_TYPE
107+
}
108+
109+
export type TronApprovePrerequisiteResult =
110+
| TronExecutedApprovePrerequisiteResult
111+
| TronSkippedApprovePrerequisiteResult
112+
113+
export const isTronApprovePrerequisiteResult = (
114+
prerequisiteResult: BaseTransactionPrerequisiteResult,
115+
): prerequisiteResult is TronApprovePrerequisiteResult =>
116+
prerequisiteResult.prerequisiteType === TRON_APPROVE_TYPE
117+
68118
export type TransactionPrerequisiteResult =
69119
| StellarChangeTrustLinePrerequisiteResult
70120
| XrplChangeTrustLinePrerequisiteResult
121+
| EvmApprovePrerequisiteResult
122+
| TronApprovePrerequisiteResult

0 commit comments

Comments
 (0)