Skip to content

Commit 2ade127

Browse files
authored
Merge pull request #571 from InjectiveLabs/feat/v1.15.0
feat: 1.15.0
2 parents 7e58934 + a9d7021 commit 2ade127

File tree

16 files changed

+433
-141
lines changed

16 files changed

+433
-141
lines changed

packages/exceptions/src/exceptions/types/modules.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export enum ChainErrorModule {
2222
WasmX = 'chain-wasmx',
2323
Tendermint = 'chain-tendermint',
2424
Permissions = 'chain-permissions',
25+
TxFees = 'chain-tx-fees',
2526
}
2627

2728
export enum IndexerErrorModule {

packages/sdk-ts/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122
"@cosmjs/proto-signing": "^0.33.0",
123123
"@cosmjs/stargate": "^0.33.0",
124124
"@injectivelabs/abacus-proto-ts": "1.14.0",
125-
"@injectivelabs/core-proto-ts": "1.14.3",
125+
"@injectivelabs/core-proto-ts": "1.15.0",
126126
"@injectivelabs/exceptions": "^1.15.32",
127127
"@injectivelabs/grpc-web": "^0.0.1",
128128
"@injectivelabs/grpc-web-node-http-transport": "^0.0.2",

packages/sdk-ts/src/client/chain/grpc/ChainGrpcPermissionsApi.ts

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
4141
throw new GrpcUnaryRequestException(new Error(e.toString()), {
4242
code: grpcErrorCodeToErrorCode(e.code),
4343
context: 'Params',
44-
contextModule: this.module
44+
contextModule: this.module,
4545
})
4646
}
4747

4848
throw new GrpcUnaryRequestException(e as Error, {
4949
code: UnspecifiedErrorCode,
5050
context: 'Params',
51-
contextModule: this.module
51+
contextModule: this.module,
5252
})
5353
}
5454
}
@@ -70,15 +70,15 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
7070
if (e instanceof InjectivePermissionsV1Beta1Query.GrpcWebError) {
7171
throw new GrpcUnaryRequestException(new Error(e.toString()), {
7272
code: grpcErrorCodeToErrorCode(e.code),
73-
context: 'NamespaceByDenoms',
74-
contextModule: this.module
73+
context: 'NamespaceDenoms',
74+
contextModule: this.module,
7575
})
7676
}
7777

7878
throw new GrpcUnaryRequestException(e as Error, {
7979
code: UnspecifiedErrorCode,
8080
context: 'NamespaceDenoms',
81-
contextModule: this.module
81+
contextModule: this.module,
8282
})
8383
}
8484
}
@@ -101,14 +101,14 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
101101
throw new GrpcUnaryRequestException(new Error(e.toString()), {
102102
code: grpcErrorCodeToErrorCode(e.code),
103103
context: 'Namespaces',
104-
contextModule: this.module
104+
contextModule: this.module,
105105
})
106106
}
107107

108108
throw new GrpcUnaryRequestException(e as Error, {
109109
code: UnspecifiedErrorCode,
110110
context: 'Namespaces',
111-
contextModule: this.module
111+
contextModule: this.module,
112112
})
113113
}
114114
}
@@ -133,14 +133,14 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
133133
throw new GrpcUnaryRequestException(new Error(e.toString()), {
134134
code: grpcErrorCodeToErrorCode(e.code),
135135
context: 'Namespace',
136-
contextModule: this.module
136+
contextModule: this.module,
137137
})
138138
}
139139

140140
throw new GrpcUnaryRequestException(e as Error, {
141141
code: UnspecifiedErrorCode,
142142
context: 'Namespace',
143-
contextModule: this.module
143+
contextModule: this.module,
144144
})
145145
}
146146
}
@@ -166,14 +166,14 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
166166
throw new GrpcUnaryRequestException(new Error(e.toString()), {
167167
code: grpcErrorCodeToErrorCode(e.code),
168168
context: 'ActorsByRole',
169-
contextModule: this.module
169+
contextModule: this.module,
170170
})
171171
}
172172

173173
throw new GrpcUnaryRequestException(e as Error, {
174174
code: UnspecifiedErrorCode,
175175
context: 'ActorsByRole',
176-
contextModule: this.module
176+
contextModule: this.module,
177177
})
178178
}
179179
}
@@ -199,14 +199,14 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
199199
throw new GrpcUnaryRequestException(new Error(e.toString()), {
200200
code: grpcErrorCodeToErrorCode(e.code),
201201
context: 'RolesByActor',
202-
contextModule: this.module
202+
contextModule: this.module,
203203
})
204204
}
205205

206206
throw new GrpcUnaryRequestException(e as Error, {
207207
code: UnspecifiedErrorCode,
208208
context: 'RolesByActor',
209-
contextModule: this.module
209+
contextModule: this.module,
210210
})
211211
}
212212
}
@@ -238,14 +238,14 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
238238
throw new GrpcUnaryRequestException(new Error(e.toString()), {
239239
code: grpcErrorCodeToErrorCode(e.code),
240240
context: 'RoleManager',
241-
contextModule: this.module
241+
contextModule: this.module,
242242
})
243243
}
244244

245245
throw new GrpcUnaryRequestException(e as Error, {
246246
code: UnspecifiedErrorCode,
247247
context: 'RoleManager',
248-
contextModule: this.module
248+
contextModule: this.module,
249249
})
250250
}
251251
}
@@ -268,14 +268,14 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
268268
throw new GrpcUnaryRequestException(new Error(e.toString()), {
269269
code: grpcErrorCodeToErrorCode(e.code),
270270
context: 'RoleManagers',
271-
contextModule: this.module
271+
contextModule: this.module,
272272
})
273273
}
274274

275275
throw new GrpcUnaryRequestException(e as Error, {
276276
code: UnspecifiedErrorCode,
277277
context: 'RoleManagers',
278-
contextModule: this.module
278+
contextModule: this.module,
279279
})
280280
}
281281
}
@@ -298,7 +298,7 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
298298
throw new GrpcUnaryRequestException(new Error(e.toString()), {
299299
code: grpcErrorCodeToErrorCode(e.code),
300300
context: 'PolicyStatuses',
301-
contextModule: this.module
301+
contextModule: this.module,
302302
})
303303
}
304304

@@ -329,14 +329,14 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
329329
throw new GrpcUnaryRequestException(new Error(e.toString()), {
330330
code: grpcErrorCodeToErrorCode(e.code),
331331
context: 'PolicyManagerCapabilities',
332-
contextModule: this.module
332+
contextModule: this.module,
333333
})
334334
}
335335

336336
throw new GrpcUnaryRequestException(e as Error, {
337337
code: UnspecifiedErrorCode,
338338
context: 'PolicyManagerCapabilities',
339-
contextModule: this.module
339+
contextModule: this.module,
340340
})
341341
}
342342
}
@@ -360,7 +360,7 @@ export class ChainGrpcPermissionsApi extends BaseGrpcConsumer {
360360
throw new GrpcUnaryRequestException(new Error(e.toString()), {
361361
code: grpcErrorCodeToErrorCode(e.code),
362362
context: 'Voucher',
363-
contextModule: this.module
363+
contextModule: this.module,
364364
})
365365
}
366366

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { getNetworkEndpoints, Network } from '@injectivelabs/networks'
2+
import { ChainGrpcTxFeesTransformer } from '../transformers/index.js'
3+
import { ChainGrpcTxFeesApi } from './ChainGrpcTxFeesApi.js'
4+
5+
const endpoints = getNetworkEndpoints(Network.MainnetSentry)
6+
const chainGrpcTxFeesApi = new ChainGrpcTxFeesApi(endpoints.grpc)
7+
8+
describe('ChainGrpcTxFeesApi', () => {
9+
test('fetchModuleParams', async () => {
10+
try {
11+
const response = await chainGrpcTxFeesApi.fetchModuleParams()
12+
13+
expect(response).toBeDefined()
14+
expect(response).toEqual(
15+
expect.objectContaining<
16+
ReturnType<
17+
typeof ChainGrpcTxFeesTransformer.moduleParamsResponseToModuleParams
18+
>
19+
>(response),
20+
)
21+
} catch (e) {
22+
console.error(
23+
'ChainGrpcTxFeesApi.fetchModuleParams => ' + (e as any).message,
24+
)
25+
}
26+
})
27+
28+
test('fetchLastAuctionResult', async () => {
29+
try {
30+
const response = await chainGrpcTxFeesApi.fetchEipBaseFee()
31+
32+
expect(response).toBeDefined()
33+
expect(response).toEqual(
34+
expect.objectContaining<
35+
ReturnType<
36+
typeof ChainGrpcTxFeesTransformer.eipBaseFeeResponseToEipBaseFee
37+
>
38+
>(response),
39+
)
40+
} catch (e) {
41+
console.error(
42+
'ChainGrpcTxFeesApi.fetchLastAuctionResult => ' + (e as any).message,
43+
)
44+
}
45+
})
46+
})
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import {
2+
UnspecifiedErrorCode,
3+
grpcErrorCodeToErrorCode,
4+
GrpcUnaryRequestException,
5+
} from '@injectivelabs/exceptions'
6+
import { InjectiveTxFeesV1Beta1Query } from '@injectivelabs/core-proto-ts'
7+
import BaseGrpcConsumer from '../../base/BaseGrpcConsumer.js'
8+
import { ChainGrpcTxFeesTransformer } from '../transformers/index.js'
9+
import { ChainModule } from '../types/index.js'
10+
11+
/**
12+
* @category Chain Grpc API
13+
*/
14+
export class ChainGrpcTxFeesApi extends BaseGrpcConsumer {
15+
protected module: string = ChainModule.TxFees
16+
17+
protected client: InjectiveTxFeesV1Beta1Query.QueryClientImpl
18+
19+
constructor(endpoint: string) {
20+
super(endpoint)
21+
22+
this.client = new InjectiveTxFeesV1Beta1Query.QueryClientImpl(
23+
this.getGrpcWebImpl(endpoint),
24+
)
25+
}
26+
27+
async fetchModuleParams() {
28+
const request = InjectiveTxFeesV1Beta1Query.QueryParamsRequest.create()
29+
30+
try {
31+
const response =
32+
await this.retry<InjectiveTxFeesV1Beta1Query.QueryParamsResponse>(() =>
33+
this.client.Params(request, this.metadata),
34+
)
35+
36+
return ChainGrpcTxFeesTransformer.moduleParamsResponseToModuleParams(
37+
response,
38+
)
39+
} catch (e: unknown) {
40+
if (e instanceof InjectiveTxFeesV1Beta1Query.GrpcWebError) {
41+
throw new GrpcUnaryRequestException(new Error(e.toString()), {
42+
code: grpcErrorCodeToErrorCode(e.code),
43+
context: 'Params',
44+
contextModule: this.module,
45+
})
46+
}
47+
48+
throw new GrpcUnaryRequestException(e as Error, {
49+
code: UnspecifiedErrorCode,
50+
context: 'Params',
51+
contextModule: this.module,
52+
})
53+
}
54+
}
55+
56+
async fetchEipBaseFee() {
57+
const request = InjectiveTxFeesV1Beta1Query.QueryEipBaseFeeRequest.create()
58+
59+
try {
60+
const response =
61+
await this.retry<InjectiveTxFeesV1Beta1Query.QueryEipBaseFeeResponse>(
62+
() => this.client.GetEipBaseFee(request, this.metadata),
63+
)
64+
65+
return ChainGrpcTxFeesTransformer.eipBaseFeeResponseToEipBaseFee(response)
66+
} catch (e: unknown) {
67+
if (e instanceof InjectiveTxFeesV1Beta1Query.GrpcWebError) {
68+
throw new GrpcUnaryRequestException(new Error(e.toString()), {
69+
code: grpcErrorCodeToErrorCode(e.code),
70+
context: 'EipBaseFee',
71+
contextModule: this.module,
72+
})
73+
}
74+
75+
throw new GrpcUnaryRequestException(e as Error, {
76+
code: UnspecifiedErrorCode,
77+
context: 'EipBaseFee',
78+
contextModule: this.module,
79+
})
80+
}
81+
}
82+
}

packages/sdk-ts/src/client/chain/grpc/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,4 @@ export { ChainGrpcTokenFactoryApi } from './ChainGrpcTokenFactoryApi.js'
1616
export { ChainGrpcWasmApi } from './ChainGrpcWasmApi.js'
1717
export { ChainGrpcWasmXApi } from './ChainGrpcWasmXApi.js'
1818
export { ChainGrpcTendermintApi } from './ChainGrpcTendermintApi.js'
19+
export { ChainGrpcTxFeesApi } from './ChainGrpcTxFeesApi.js'
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { TxFeesEipBaseFee, TxFeesModuleStateParams } from '../types/txFees.js'
2+
import { denomAmountFromGrpcChainDenomAmount } from './../../../utils/numbers.js'
3+
import { InjectiveTxFeesV1Beta1Query } from '@injectivelabs/core-proto-ts'
4+
5+
/**
6+
* @category Chain Grpc Transformer
7+
*/
8+
export class ChainGrpcTxFeesTransformer {
9+
static moduleParamsResponseToModuleParams(
10+
response: InjectiveTxFeesV1Beta1Query.QueryParamsResponse,
11+
): TxFeesModuleStateParams {
12+
const params = response.params!
13+
14+
return {
15+
maxGasWantedPerTx: params.maxGasWantedPerTx,
16+
highGasTxThreshold: params.highGasTxThreshold,
17+
minGasPriceForHighGasTx: params.minGasPriceForHighGasTx,
18+
mempool1559Enabled: params.mempool1559Enabled,
19+
minGasPrice: denomAmountFromGrpcChainDenomAmount(
20+
params.minGasPrice,
21+
).toFixed(),
22+
defaultBaseFeeMultiplier: denomAmountFromGrpcChainDenomAmount(
23+
params.defaultBaseFeeMultiplier,
24+
).toFixed(),
25+
maxBaseFeeMultiplier: denomAmountFromGrpcChainDenomAmount(
26+
params.maxBaseFeeMultiplier,
27+
).toFixed(),
28+
resetInterval: params.resetInterval,
29+
maxBlockChangeRate: denomAmountFromGrpcChainDenomAmount(
30+
params.maxBlockChangeRate,
31+
).toFixed(),
32+
targetBlockSpacePercentRate: denomAmountFromGrpcChainDenomAmount(
33+
params.targetBlockSpacePercentRate,
34+
).toFixed(),
35+
recheckFeeLowBaseFee: denomAmountFromGrpcChainDenomAmount(
36+
params.recheckFeeLowBaseFee,
37+
).toFixed(),
38+
recheckFeeHighBaseFee: denomAmountFromGrpcChainDenomAmount(
39+
params.recheckFeeHighBaseFee,
40+
).toFixed(),
41+
recheckFeeBaseFeeThresholdMultiplier: denomAmountFromGrpcChainDenomAmount(
42+
params.recheckFeeBaseFeeThresholdMultiplier,
43+
).toFixed(),
44+
}
45+
}
46+
47+
static eipBaseFeeResponseToEipBaseFee(
48+
response: InjectiveTxFeesV1Beta1Query.QueryEipBaseFeeResponse,
49+
): TxFeesEipBaseFee {
50+
return {
51+
baseFee: response.baseFee
52+
? denomAmountFromGrpcChainDenomAmount(
53+
response.baseFee.baseFee,
54+
).toFixed()
55+
: undefined,
56+
}
57+
}
58+
}

packages/sdk-ts/src/client/chain/transformers/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ export * from './ChainGrpcPermissionsTransformer.js'
1313
export * from './ChainGrpcStakingTransformer.js'
1414
export * from './ChainGrpcTokenFactoryTransformer.js'
1515
export * from './ChainGrpcWasmTransformer.js'
16+
export * from './ChainGrpcTxFeesTransformer.js'

packages/sdk-ts/src/client/chain/types/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export * from './mint.js'
77
export * from './wasm.js'
88
export * from './authZ.js'
99
export * from './peggy.js'
10+
export * from './txFees.js'
1011
export * from './oracle.js'
1112
export * from './auction.js'
1213
export * from './staking.js'

0 commit comments

Comments
 (0)