@ritbit/v4-client-js 2.2.3 → 2.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/helpers/constants.ts +2 -1
- package/__tests__/lib/validation.test.ts +2 -2
- package/build/cjs/__tests__/helpers/constants.js +1 -1
- package/build/cjs/__tests__/lib/validation.test.js +1 -1
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event.js +89 -2
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event_info.js +45 -2
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/genesis.js +12 -11
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/params.js +12 -3
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.js +164 -30
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.lcd.js +65 -18
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.rpc.Query.js +13 -4
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.js +259 -8
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.rpc.msg.js +13 -1
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/withdrawal.js +81 -37
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/bridge/bridge.js +84 -4
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/signer/signer.js +19 -3
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/indexer/events/events.js +47 -7
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/transfer.js +72 -4
- package/build/cjs/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.js +4 -4
- package/build/cjs/src/clients/composite-client.js +4 -4
- package/build/cjs/src/clients/modules/composer.js +1 -1
- package/build/cjs/src/clients/modules/get.js +45 -36
- package/build/cjs/src/clients/modules/markets.js +5 -1
- package/build/cjs/src/clients/modules/post.js +30 -10
- package/build/cjs/src/clients/validator-client.js +3 -2
- package/build/cjs/src/index.js +2 -5
- package/build/cjs/src/lib/validation.js +1 -1
- package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/build/esm/__tests__/helpers/constants.d.ts +2 -2
- package/build/esm/__tests__/helpers/constants.d.ts.map +1 -1
- package/build/esm/__tests__/helpers/constants.js +1 -1
- package/build/esm/__tests__/lib/validation.test.js +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event.d.ts +31 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event.js +88 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event_info.d.ts +17 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event_info.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/bridge_event_info.js +44 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/genesis.d.ts +7 -11
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/genesis.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/genesis.js +13 -12
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/params.d.ts +8 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/params.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/params.js +12 -3
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.d.ts +70 -51
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.js +164 -30
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.lcd.d.ts +5 -4
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.lcd.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.lcd.js +65 -18
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.rpc.Query.d.ts +18 -22
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.rpc.Query.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/query.rpc.Query.js +14 -5
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.d.ts +93 -2
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.js +260 -9
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.rpc.msg.d.ts +10 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.rpc.msg.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/tx.rpc.msg.js +14 -2
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/withdrawal.d.ts +33 -16
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/withdrawal.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/bridge/withdrawal.js +80 -36
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/bridge/bridge.d.ts +37 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/bridge/bridge.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/bridge/bridge.js +84 -4
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/signer/signer.d.ts +4 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/signer/signer.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/daemons/signer/signer.js +19 -3
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/indexer/events/events.d.ts +23 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/indexer/events/events.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/indexer/events/events.js +47 -7
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.d.ts +4 -3
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/rpc.query.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/transfer.d.ts +26 -0
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/transfer.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/transfer.js +71 -3
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.d.ts +3 -3
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.d.ts.map +1 -1
- package/build/esm/node_modules/@ritbit/v4-proto/src/codegen/ritbit/sending/tx.js +5 -5
- package/build/esm/src/clients/composite-client.d.ts +5 -2
- package/build/esm/src/clients/composite-client.d.ts.map +1 -1
- package/build/esm/src/clients/composite-client.js +4 -4
- package/build/esm/src/clients/modules/composer.js +1 -1
- package/build/esm/src/clients/modules/get.d.ts +24 -18
- package/build/esm/src/clients/modules/get.d.ts.map +1 -1
- package/build/esm/src/clients/modules/get.js +45 -36
- package/build/esm/src/clients/modules/markets.d.ts +1 -0
- package/build/esm/src/clients/modules/markets.d.ts.map +1 -1
- package/build/esm/src/clients/modules/markets.js +5 -1
- package/build/esm/src/clients/modules/post.d.ts +6 -2
- package/build/esm/src/clients/modules/post.d.ts.map +1 -1
- package/build/esm/src/clients/modules/post.js +30 -10
- package/build/esm/src/clients/validator-client.d.ts +4 -1
- package/build/esm/src/clients/validator-client.d.ts.map +1 -1
- package/build/esm/src/clients/validator-client.js +3 -2
- package/build/esm/src/index.d.ts +0 -1
- package/build/esm/src/index.d.ts.map +1 -1
- package/build/esm/src/index.js +1 -2
- package/build/esm/src/lib/validation.d.ts +2 -2
- package/build/esm/src/lib/validation.d.ts.map +1 -1
- package/build/esm/src/lib/validation.js +1 -1
- package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/ritbit-v4-client-js-2.2.5.tgz +0 -0
- package/scripts/publish-if-not-exists.sh +2 -2
- package/src/clients/composite-client.ts +9 -3
- package/src/clients/modules/composer.ts +2 -2
- package/src/clients/modules/get.ts +66 -43
- package/src/clients/modules/markets.ts +5 -0
- package/src/clients/modules/post.ts +32 -5
- package/src/clients/validator-client.ts +5 -2
- package/src/index.ts +0 -6
- package/src/lib/validation.ts +2 -2
- package/tsconfig.json +6 -0
- package/build/cjs/src/lib/vesting.js +0 -170
- package/build/esm/src/lib/vesting.d.ts +0 -42
- package/build/esm/src/lib/vesting.d.ts.map +0 -1
- package/build/esm/src/lib/vesting.js +0 -133
- package/ritbit-v4-client-js-2.2.1.tgz +0 -0
- package/src/lib/vesting.ts +0 -153
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ritbit/v4-client-js",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.5",
|
|
4
4
|
"description": "General client library for the new RITBIT Chain",
|
|
5
5
|
"main": "build/cjs/src/index.js",
|
|
6
6
|
"module": "build/esm/src/index.js",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@cosmjs/tendermint-rpc": "^0.32.4",
|
|
58
58
|
"@cosmjs/utils": "^0.32.4",
|
|
59
59
|
"@osmonauts/lcd": "^0.6.0",
|
|
60
|
-
"@ritbit/v4-proto": "^2.0.
|
|
60
|
+
"@ritbit/v4-proto": "^2.0.4",
|
|
61
61
|
"@scure/bip32": "^1.1.5",
|
|
62
62
|
"@scure/bip39": "^1.1.1",
|
|
63
63
|
"axios": "1.1.3",
|
|
Binary file
|
|
@@ -10,12 +10,12 @@ if [ $? -eq 0 ]; then
|
|
|
10
10
|
|
|
11
11
|
# git config --global user.email "ci@ritbit.trade"
|
|
12
12
|
# git config --global user.name "gitlab_actions"
|
|
13
|
+
|
|
14
|
+
npm publish
|
|
13
15
|
|
|
14
16
|
# Get version and tag
|
|
15
17
|
git tag ritbit-client-js@${VERSION}
|
|
16
18
|
git push --tags
|
|
17
|
-
|
|
18
|
-
npm publish
|
|
19
19
|
else
|
|
20
20
|
echo "skipping publish, package $NAME@$VERSION already published"
|
|
21
21
|
fi
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Coin } from '@cosmjs/amino';
|
|
1
2
|
import { EncodeObject } from '@cosmjs/proto-signing';
|
|
2
3
|
import { Account, GasPrice, IndexedTx, StdFee } from '@cosmjs/stargate';
|
|
3
4
|
import { Method, tendermint37 } from '@cosmjs/tendermint-rpc';
|
|
@@ -147,9 +148,11 @@ export class CompositeClient {
|
|
|
147
148
|
this._validatorClient.setSelectedGasDenom(gasDenom);
|
|
148
149
|
}
|
|
149
150
|
|
|
150
|
-
async populateAccountNumberCache(
|
|
151
|
+
async populateAccountNumberCache(
|
|
152
|
+
address: string
|
|
153
|
+
): Promise<{ typeUrl: string } | undefined> {
|
|
151
154
|
if (!this._validatorClient) throw new Error('Validator client not initialized');
|
|
152
|
-
|
|
155
|
+
return this._validatorClient.populateAccountNumberCache(address);
|
|
153
156
|
}
|
|
154
157
|
|
|
155
158
|
/**
|
|
@@ -187,6 +190,8 @@ export class CompositeClient {
|
|
|
187
190
|
memo?: string,
|
|
188
191
|
broadcastMode?: BroadcastMode,
|
|
189
192
|
account?: () => Promise<Account>,
|
|
193
|
+
gasAdjustment?: number,
|
|
194
|
+
additionalFeeCoins?: Coin[],
|
|
190
195
|
): Promise<BroadcastTxAsyncResponse | BroadcastTxSyncResponse | IndexedTx> {
|
|
191
196
|
return this.validatorClient.post.send(
|
|
192
197
|
subaccount,
|
|
@@ -196,7 +201,8 @@ export class CompositeClient {
|
|
|
196
201
|
memo,
|
|
197
202
|
broadcastMode,
|
|
198
203
|
account,
|
|
199
|
-
|
|
204
|
+
gasAdjustment,
|
|
205
|
+
additionalFeeCoins,
|
|
200
206
|
);
|
|
201
207
|
}
|
|
202
208
|
|
|
@@ -69,7 +69,7 @@ import {
|
|
|
69
69
|
SubaccountId,
|
|
70
70
|
MsgCreateMarketPermissionless,
|
|
71
71
|
MsgCreateTransfer,
|
|
72
|
-
|
|
72
|
+
MsgTransfer,
|
|
73
73
|
MsgDepositToSubaccount,
|
|
74
74
|
MsgWithdrawFromSubaccount,
|
|
75
75
|
} from './proto-includes';
|
|
@@ -270,7 +270,7 @@ export class Composer {
|
|
|
270
270
|
number: recipientSubaccountNumber,
|
|
271
271
|
};
|
|
272
272
|
|
|
273
|
-
const transfer:
|
|
273
|
+
const transfer: MsgTransfer = {
|
|
274
274
|
sender,
|
|
275
275
|
recipient,
|
|
276
276
|
assetId,
|
|
@@ -14,15 +14,10 @@ import {
|
|
|
14
14
|
import { UserStats } from '@ritbit/v4-proto/src/codegen/ritbit/stats/stats';
|
|
15
15
|
import * as AuthModule from 'cosmjs-types/cosmos/auth/v1beta1/query';
|
|
16
16
|
import * as BankModule from 'cosmjs-types/cosmos/bank/v1beta1/query';
|
|
17
|
-
import { Any } from 'cosmjs-types/google/protobuf/any';
|
|
18
17
|
import Long from 'long';
|
|
19
18
|
import protobuf from 'protobufjs';
|
|
20
19
|
|
|
21
20
|
import { bigIntToBytes } from '../../lib/helpers';
|
|
22
|
-
import {
|
|
23
|
-
computeUnlockedAmount,
|
|
24
|
-
decodeVestingFromAny,
|
|
25
|
-
} from '../../lib/vesting';
|
|
26
21
|
import { PAGE_REQUEST } from '../constants';
|
|
27
22
|
import { UnexpectedClientError } from '../lib/errors';
|
|
28
23
|
import {
|
|
@@ -173,6 +168,46 @@ export class Get {
|
|
|
173
168
|
return coin;
|
|
174
169
|
}
|
|
175
170
|
|
|
171
|
+
/**
|
|
172
|
+
* @description Get spendable (unlocked) balance of one denom for an account.
|
|
173
|
+
* For vesting accounts returns only the unlocked portion; for regular accounts equals full balance.
|
|
174
|
+
*
|
|
175
|
+
* @returns Coin spendable balance for denom.
|
|
176
|
+
*/
|
|
177
|
+
async getSpendableBalance(address: string, denom: string): Promise<Coin | undefined> {
|
|
178
|
+
const requestData: Uint8Array = Uint8Array.from(
|
|
179
|
+
BankModule.QuerySpendableBalanceByDenomRequest.encode({
|
|
180
|
+
address,
|
|
181
|
+
denom,
|
|
182
|
+
}).finish(),
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
const data: Uint8Array = await this.sendQuery(
|
|
186
|
+
'/cosmos.bank.v1beta1.Query/SpendableBalanceByDenom',
|
|
187
|
+
requestData,
|
|
188
|
+
);
|
|
189
|
+
const coin = BankModule.QuerySpendableBalanceByDenomResponse.decode(data).balance;
|
|
190
|
+
return coin;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @description Get all spendable (unlocked) balances for an account.
|
|
195
|
+
* For vesting accounts returns only unlocked portions; for regular accounts equals full balances.
|
|
196
|
+
*
|
|
197
|
+
* @returns Array of Coin spendable balances.
|
|
198
|
+
*/
|
|
199
|
+
async getSpendableBalances(address: string): Promise<Coin[]> {
|
|
200
|
+
const requestData: Uint8Array = Uint8Array.from(
|
|
201
|
+
BankModule.QuerySpendableBalancesRequest.encode({ address }).finish(),
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
const data: Uint8Array = await this.sendQuery(
|
|
205
|
+
'/cosmos.bank.v1beta1.Query/SpendableBalances',
|
|
206
|
+
requestData,
|
|
207
|
+
);
|
|
208
|
+
return BankModule.QuerySpendableBalancesResponse.decode(data).balances;
|
|
209
|
+
}
|
|
210
|
+
|
|
176
211
|
/**
|
|
177
212
|
* @description Get all subaccounts
|
|
178
213
|
*
|
|
@@ -328,14 +363,13 @@ export class Get {
|
|
|
328
363
|
}
|
|
329
364
|
|
|
330
365
|
/**
|
|
331
|
-
* @description Get
|
|
332
|
-
* does not exist on-chain.
|
|
333
|
-
* ContinuousVestingAccount) instead of the normalized Account from getAccount.
|
|
366
|
+
* @description Get Account for an address or the promise is rejected if the account
|
|
367
|
+
* does not exist on-chain.
|
|
334
368
|
*
|
|
335
369
|
* @throws UnexpectedClientError if a malformed response is returned with no GRPC error.
|
|
336
|
-
* @returns
|
|
370
|
+
* @returns An account with typeUrl for a given address.
|
|
337
371
|
*/
|
|
338
|
-
async
|
|
372
|
+
async getAccount(address: string): Promise<Account & { typeUrl: string }> {
|
|
339
373
|
const requestData: Uint8Array = Uint8Array.from(
|
|
340
374
|
AuthModule.QueryAccountRequest.encode({ address }).finish(),
|
|
341
375
|
);
|
|
@@ -344,43 +378,15 @@ export class Get {
|
|
|
344
378
|
'/cosmos.auth.v1beta1.Query/Account',
|
|
345
379
|
requestData,
|
|
346
380
|
);
|
|
347
|
-
const rawAccount
|
|
381
|
+
const rawAccount = AuthModule.QueryAccountResponse.decode(data).account;
|
|
348
382
|
|
|
349
383
|
if (rawAccount === undefined) {
|
|
350
384
|
throw new UnexpectedClientError();
|
|
351
385
|
}
|
|
352
|
-
return
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
* @description Get Account for an address or the promise is rejected if the account
|
|
357
|
-
* does not exist on-chain.
|
|
358
|
-
*
|
|
359
|
-
* @throws UnexpectedClientError if a malformed response is returned with no GRPC error.
|
|
360
|
-
* @returns An account for a given address.
|
|
361
|
-
*/
|
|
362
|
-
async getAccount(address: string): Promise<Account> {
|
|
363
|
-
const rawAccount = await this.getAccountRaw(address);
|
|
364
|
-
return accountFromAny(rawAccount);
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* @description Get unlocked native amount for a vesting account (by denom).
|
|
369
|
-
* Uses getAccountRaw and decodes vesting types (Continuous/Delayed/Periodic/Base).
|
|
370
|
-
* @returns Unlocked amount in base units (string), or undefined if not vesting or denom not found.
|
|
371
|
-
*/
|
|
372
|
-
async getAccountVesting(
|
|
373
|
-
address: string,
|
|
374
|
-
nativeDenom: string
|
|
375
|
-
): Promise<string | undefined> {
|
|
376
|
-
try {
|
|
377
|
-
const raw = await this.getAccountRaw(address);
|
|
378
|
-
const info = decodeVestingFromAny(raw);
|
|
379
|
-
if (!info) return undefined;
|
|
380
|
-
return computeUnlockedAmount(info, nativeDenom);
|
|
381
|
-
} catch {
|
|
382
|
-
return undefined;
|
|
383
|
-
}
|
|
386
|
+
return {
|
|
387
|
+
...accountFromAny(rawAccount),
|
|
388
|
+
typeUrl: rawAccount.typeUrl,
|
|
389
|
+
};
|
|
384
390
|
}
|
|
385
391
|
|
|
386
392
|
/**
|
|
@@ -468,6 +474,23 @@ export class Get {
|
|
|
468
474
|
return DistributionModule.QueryDelegationTotalRewardsResponse.decode(data);
|
|
469
475
|
}
|
|
470
476
|
|
|
477
|
+
/**
|
|
478
|
+
* @description Get bridge EventParams (chains, token mappings, withdrawal fees).
|
|
479
|
+
*
|
|
480
|
+
* @returns EventParams with bridge config including withdrawal_fee per TokenMapping
|
|
481
|
+
*/
|
|
482
|
+
async getBridgeEventParams(): Promise<BridgeModule.QueryEventParamsResponse> {
|
|
483
|
+
const requestData = Uint8Array.from(
|
|
484
|
+
BridgeModule.QueryEventParamsRequest.encode({}).finish(),
|
|
485
|
+
);
|
|
486
|
+
|
|
487
|
+
const data: Uint8Array = await this.sendQuery(
|
|
488
|
+
'/ritbit.bridge.Query/EventParams',
|
|
489
|
+
requestData,
|
|
490
|
+
);
|
|
491
|
+
return BridgeModule.QueryEventParamsResponse.decode(data);
|
|
492
|
+
}
|
|
493
|
+
|
|
471
494
|
/**
|
|
472
495
|
* @description Get all delayed complete bridge messages, optionally filtered by address.
|
|
473
496
|
*
|
|
@@ -6,6 +6,11 @@ import RestClient from './rest';
|
|
|
6
6
|
* @description REST endpoints for data unrelated to a particular address.
|
|
7
7
|
*/
|
|
8
8
|
export default class MarketsClient extends RestClient {
|
|
9
|
+
async getAssets(): Promise<Data> {
|
|
10
|
+
const uri = '/v4/assets';
|
|
11
|
+
return this.get(uri);
|
|
12
|
+
}
|
|
13
|
+
|
|
9
14
|
async getPerpetualMarkets(market?: string): Promise<Data> {
|
|
10
15
|
const uri = '/v4/perpetualMarkets';
|
|
11
16
|
return this.get(uri, { ticker: market });
|
|
@@ -92,12 +92,17 @@ export class Post {
|
|
|
92
92
|
* @description Retrieves the account number for the given wallet address and populates the accountNumberCache.
|
|
93
93
|
* The account number is required for txOptions when signing a transaction.
|
|
94
94
|
* Pre-populating the cache avoids a round-trip request during the first transaction creation in the session, preventing it from being a performance blocker.
|
|
95
|
+
* @returns { typeUrl } при первом вызове; undefined при cache hit (данные уже в кеше).
|
|
95
96
|
*/
|
|
96
|
-
public async populateAccountNumberCache(
|
|
97
|
-
|
|
97
|
+
public async populateAccountNumberCache(
|
|
98
|
+
address: string
|
|
99
|
+
): Promise<{ typeUrl: string } | undefined> {
|
|
100
|
+
if (this.accountNumberCache.has(address)) return undefined;
|
|
98
101
|
|
|
99
|
-
const
|
|
102
|
+
const result = await this.get.getAccount(address);
|
|
103
|
+
const { typeUrl, ...account } = result;
|
|
100
104
|
this.accountNumberCache.set(address, account);
|
|
105
|
+
return typeUrl != null ? { typeUrl } : undefined;
|
|
101
106
|
}
|
|
102
107
|
|
|
103
108
|
setSelectedGasDenom(selectedGasDenom: SelectedGasDenom): void {
|
|
@@ -188,6 +193,7 @@ export class Post {
|
|
|
188
193
|
broadcastMode?: BroadcastMode,
|
|
189
194
|
account?: () => Promise<Account>,
|
|
190
195
|
gasAdjustment: number = GAS_MULTIPLIER,
|
|
196
|
+
additionalFeeCoins?: Coin[],
|
|
191
197
|
): Promise<BroadcastTxAsyncResponse | BroadcastTxSyncResponse | IndexedTx> {
|
|
192
198
|
const msgsPromise = messaging();
|
|
193
199
|
const accountPromise = account ? await account() : this.account(subaccount.address);
|
|
@@ -203,6 +209,7 @@ export class Post {
|
|
|
203
209
|
memo ?? this.defaultClientMemo,
|
|
204
210
|
broadcastMode ?? this.defaultBroadcastMode(msgs),
|
|
205
211
|
gasAdjustment,
|
|
212
|
+
additionalFeeCoins,
|
|
206
213
|
);
|
|
207
214
|
}
|
|
208
215
|
|
|
@@ -248,13 +255,14 @@ export class Post {
|
|
|
248
255
|
gasPrice: GasPrice = this.getGasPrice(),
|
|
249
256
|
memo?: string,
|
|
250
257
|
gasAdjustment: number = GAS_MULTIPLIER,
|
|
258
|
+
additionalFeeCoins?: Coin[],
|
|
251
259
|
): Promise<Uint8Array> {
|
|
252
260
|
// protocol expects timestamp nonce in UTC milliseconds, which is the unit returned by Date.now()
|
|
253
261
|
const sequence = this.useTimestampNonce
|
|
254
262
|
? Date.now() + this.timestampNonceOffsetMs
|
|
255
263
|
: account.sequence;
|
|
256
264
|
// Simulate transaction if no fee is specified.
|
|
257
|
-
|
|
265
|
+
let fee: StdFee = zeroFee
|
|
258
266
|
? {
|
|
259
267
|
amount: [],
|
|
260
268
|
gas: '1000000',
|
|
@@ -268,6 +276,22 @@ export class Post {
|
|
|
268
276
|
gasAdjustment,
|
|
269
277
|
);
|
|
270
278
|
|
|
279
|
+
if (additionalFeeCoins && additionalFeeCoins.length > 0) {
|
|
280
|
+
const byDenom = new Map<string, string>();
|
|
281
|
+
for (const c of fee.amount) {
|
|
282
|
+
const cur = byDenom.get(c.denom) ?? '0';
|
|
283
|
+
byDenom.set(c.denom, (BigInt(cur) + BigInt(c.amount)).toString());
|
|
284
|
+
}
|
|
285
|
+
for (const c of additionalFeeCoins) {
|
|
286
|
+
const cur = byDenom.get(c.denom) ?? '0';
|
|
287
|
+
byDenom.set(c.denom, (BigInt(cur) + BigInt(c.amount)).toString());
|
|
288
|
+
}
|
|
289
|
+
fee = {
|
|
290
|
+
...fee,
|
|
291
|
+
amount: Array.from(byDenom.entries()).map(([denom, amount]) => ({ denom, amount })),
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
|
|
271
295
|
const txOptions: TransactionOptions = {
|
|
272
296
|
sequence,
|
|
273
297
|
accountNumber: account.accountNumber,
|
|
@@ -291,7 +315,8 @@ export class Post {
|
|
|
291
315
|
return this.accountNumberCache.get(address)!;
|
|
292
316
|
}
|
|
293
317
|
}
|
|
294
|
-
const
|
|
318
|
+
const result = await this.get.getAccount(address);
|
|
319
|
+
const { typeUrl: _typeUrl, ...account } = result;
|
|
295
320
|
this.accountNumberCache.set(address, account);
|
|
296
321
|
return account;
|
|
297
322
|
}
|
|
@@ -310,6 +335,7 @@ export class Post {
|
|
|
310
335
|
memo?: string,
|
|
311
336
|
broadcastMode?: BroadcastMode,
|
|
312
337
|
gasAdjustment: number = GAS_MULTIPLIER,
|
|
338
|
+
additionalFeeCoins?: Coin[],
|
|
313
339
|
): Promise<BroadcastTxAsyncResponse | BroadcastTxSyncResponse | IndexedTx> {
|
|
314
340
|
const signedTransaction = await this.signTransaction(
|
|
315
341
|
subaccount,
|
|
@@ -319,6 +345,7 @@ export class Post {
|
|
|
319
345
|
gasPrice,
|
|
320
346
|
memo,
|
|
321
347
|
gasAdjustment,
|
|
348
|
+
additionalFeeCoins,
|
|
322
349
|
);
|
|
323
350
|
return this.sendSignedTransaction(signedTransaction, broadcastMode);
|
|
324
351
|
}
|
|
@@ -71,10 +71,13 @@ export class ValidatorClient {
|
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
73
|
* @description populate account number cache in the Post module for performance.
|
|
74
|
+
* @returns { typeUrl } при первом вызове; undefined при cache hit.
|
|
74
75
|
*/
|
|
75
|
-
async populateAccountNumberCache(
|
|
76
|
+
async populateAccountNumberCache(
|
|
77
|
+
address: string
|
|
78
|
+
): Promise<{ typeUrl: string } | undefined> {
|
|
76
79
|
if (!this._post) throw new Error('Post module not initialized');
|
|
77
|
-
|
|
80
|
+
return this._post.populateAccountNumberCache(address);
|
|
78
81
|
}
|
|
79
82
|
|
|
80
83
|
private async initialize(): Promise<void> {
|
package/src/index.ts
CHANGED
|
@@ -7,12 +7,6 @@ export * as onboarding from './lib/onboarding';
|
|
|
7
7
|
export * as tradingKeyUtils from './lib/trading-key-utils';
|
|
8
8
|
export * as utils from './lib/utils';
|
|
9
9
|
export * as validation from './lib/validation';
|
|
10
|
-
export {
|
|
11
|
-
type VestingInfo,
|
|
12
|
-
decodeVestingFromAny,
|
|
13
|
-
computeUnlockedAmount,
|
|
14
|
-
} from './lib/vesting';
|
|
15
|
-
|
|
16
10
|
export { CompositeClient } from './clients/composite-client';
|
|
17
11
|
export { FaucetClient } from './clients/faucet-client';
|
|
18
12
|
export { IndexerClient } from './clients/indexer-client';
|
package/src/lib/validation.ts
CHANGED
|
@@ -3,7 +3,7 @@ import Long from 'long';
|
|
|
3
3
|
|
|
4
4
|
import { BECH32_PREFIX, MAX_SUBACCOUNT_NUMBER, MAX_UINT_32 } from '../clients/constants';
|
|
5
5
|
import {
|
|
6
|
-
|
|
6
|
+
MsgTransfer,
|
|
7
7
|
OrderFlags,
|
|
8
8
|
ICancelOrder,
|
|
9
9
|
IPlaceOrder,
|
|
@@ -116,7 +116,7 @@ export function validateBatchCancelOrderMessage(
|
|
|
116
116
|
* @describe validateTransferMessage validates that a transfer to place has fields that would be
|
|
117
117
|
* valid on-chain.
|
|
118
118
|
*/
|
|
119
|
-
export function validateTransferMessage(transfer:
|
|
119
|
+
export function validateTransferMessage(transfer: MsgTransfer): UserError | undefined {
|
|
120
120
|
if (!verifySubaccountNumber(transfer.sender!!.number || 0)) {
|
|
121
121
|
return new UserError(
|
|
122
122
|
`senderSubaccountNumber: ${
|
package/tsconfig.json
ADDED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.decodeVestingFromAny = decodeVestingFromAny;
|
|
37
|
-
exports.computeUnlockedAmount = computeUnlockedAmount;
|
|
38
|
-
const Vesting = __importStar(require("cosmjs-types/cosmos/vesting/v1beta1/vesting"));
|
|
39
|
-
const VESTING_TYPE_URLS = [
|
|
40
|
-
'/cosmos.vesting.v1beta1.ContinuousVestingAccount',
|
|
41
|
-
'/cosmos.vesting.v1beta1.DelayedVestingAccount',
|
|
42
|
-
'/cosmos.vesting.v1beta1.PeriodicVestingAccount',
|
|
43
|
-
'/cosmos.vesting.v1beta1.BaseVestingAccount',
|
|
44
|
-
];
|
|
45
|
-
function bigintToNumber(value) {
|
|
46
|
-
if (value == null || value === undefined)
|
|
47
|
-
return 0;
|
|
48
|
-
return Number(value);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Декодирует сырой аккаунт (Any из getAccountRaw) в VestingInfo.
|
|
52
|
-
* Возвращает null, если тип аккаунта не vesting или нет original_vesting.
|
|
53
|
-
*/
|
|
54
|
-
function decodeVestingFromAny(raw) {
|
|
55
|
-
var _a, _b, _c, _d;
|
|
56
|
-
const { typeUrl, value } = raw;
|
|
57
|
-
if (!VESTING_TYPE_URLS.some((u) => typeUrl === u)) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
try {
|
|
61
|
-
switch (typeUrl) {
|
|
62
|
-
case '/cosmos.vesting.v1beta1.ContinuousVestingAccount': {
|
|
63
|
-
const acc = Vesting.ContinuousVestingAccount.decode(value);
|
|
64
|
-
const base = acc.baseVestingAccount;
|
|
65
|
-
if (!((_a = base === null || base === void 0 ? void 0 : base.originalVesting) === null || _a === void 0 ? void 0 : _a.length))
|
|
66
|
-
return null;
|
|
67
|
-
return {
|
|
68
|
-
originalVesting: base.originalVesting.map((c) => ({
|
|
69
|
-
denom: c.denom,
|
|
70
|
-
amount: c.amount,
|
|
71
|
-
})),
|
|
72
|
-
startTimeSec: bigintToNumber(acc.startTime),
|
|
73
|
-
endTimeSec: bigintToNumber(base.endTime),
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
case '/cosmos.vesting.v1beta1.DelayedVestingAccount': {
|
|
77
|
-
const acc = Vesting.DelayedVestingAccount.decode(value);
|
|
78
|
-
const base = acc.baseVestingAccount;
|
|
79
|
-
if (!((_b = base === null || base === void 0 ? void 0 : base.originalVesting) === null || _b === void 0 ? void 0 : _b.length))
|
|
80
|
-
return null;
|
|
81
|
-
return {
|
|
82
|
-
originalVesting: base.originalVesting.map((c) => ({
|
|
83
|
-
denom: c.denom,
|
|
84
|
-
amount: c.amount,
|
|
85
|
-
})),
|
|
86
|
-
startTimeSec: 0,
|
|
87
|
-
endTimeSec: bigintToNumber(base.endTime),
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
case '/cosmos.vesting.v1beta1.PeriodicVestingAccount': {
|
|
91
|
-
const acc = Vesting.PeriodicVestingAccount.decode(value);
|
|
92
|
-
const base = acc.baseVestingAccount;
|
|
93
|
-
if (!((_c = base === null || base === void 0 ? void 0 : base.originalVesting) === null || _c === void 0 ? void 0 : _c.length))
|
|
94
|
-
return null;
|
|
95
|
-
return {
|
|
96
|
-
originalVesting: base.originalVesting.map((c) => ({
|
|
97
|
-
denom: c.denom,
|
|
98
|
-
amount: c.amount,
|
|
99
|
-
})),
|
|
100
|
-
startTimeSec: bigintToNumber(acc.startTime),
|
|
101
|
-
endTimeSec: bigintToNumber(base.endTime),
|
|
102
|
-
vestingPeriods: acc.vestingPeriods.map((p) => ({
|
|
103
|
-
lengthSec: bigintToNumber(p.length),
|
|
104
|
-
amount: p.amount.map((c) => ({ denom: c.denom, amount: c.amount })),
|
|
105
|
-
})),
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
case '/cosmos.vesting.v1beta1.BaseVestingAccount': {
|
|
109
|
-
const base = Vesting.BaseVestingAccount.decode(value);
|
|
110
|
-
if (!((_d = base === null || base === void 0 ? void 0 : base.originalVesting) === null || _d === void 0 ? void 0 : _d.length))
|
|
111
|
-
return null;
|
|
112
|
-
return {
|
|
113
|
-
originalVesting: base.originalVesting.map((c) => ({
|
|
114
|
-
denom: c.denom,
|
|
115
|
-
amount: c.amount,
|
|
116
|
-
})),
|
|
117
|
-
startTimeSec: 0,
|
|
118
|
-
endTimeSec: bigintToNumber(base.endTime),
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
default:
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
return null;
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Считает разблокированную сумму в base units для денома по VestingInfo.
|
|
131
|
-
*
|
|
132
|
-
* - Continuous / Delayed / Base: линейная разблокировка от startTimeSec до endTimeSec.
|
|
133
|
-
* - Periodic: каждый период — клифф; сумма периода разблокируется целиком
|
|
134
|
-
* по истечении его длительности (start + Σ lengths предыдущих + length текущего).
|
|
135
|
-
*/
|
|
136
|
-
function computeUnlockedAmount(info, denom) {
|
|
137
|
-
var _a, _b, _c;
|
|
138
|
-
const entry = info.originalVesting.find((c) => c.denom === denom);
|
|
139
|
-
if (!entry)
|
|
140
|
-
return undefined;
|
|
141
|
-
const total = BigInt(entry.amount);
|
|
142
|
-
const { startTimeSec, endTimeSec } = info;
|
|
143
|
-
if (startTimeSec === 0 && endTimeSec === 0)
|
|
144
|
-
return entry.amount;
|
|
145
|
-
const nowSec = Math.floor(Date.now() / 1000);
|
|
146
|
-
if (nowSec <= startTimeSec)
|
|
147
|
-
return '0';
|
|
148
|
-
if (nowSec >= endTimeSec)
|
|
149
|
-
return entry.amount;
|
|
150
|
-
// Periodic: считаем по периодам (клиффы)
|
|
151
|
-
if ((_a = info.vestingPeriods) === null || _a === void 0 ? void 0 : _a.length) {
|
|
152
|
-
let unlocked = BigInt(0);
|
|
153
|
-
let periodStartSec = startTimeSec;
|
|
154
|
-
for (const p of info.vestingPeriods) {
|
|
155
|
-
const periodEndSec = periodStartSec + p.lengthSec;
|
|
156
|
-
if (nowSec >= periodEndSec) {
|
|
157
|
-
const periodAmount = (_c = (_b = p.amount.find((c) => c.denom === denom)) === null || _b === void 0 ? void 0 : _b.amount) !== null && _c !== void 0 ? _c : '0';
|
|
158
|
-
unlocked += BigInt(periodAmount);
|
|
159
|
-
}
|
|
160
|
-
periodStartSec = periodEndSec;
|
|
161
|
-
}
|
|
162
|
-
return String(unlocked);
|
|
163
|
-
}
|
|
164
|
-
// Linear (Continuous / Delayed / Base)
|
|
165
|
-
const period = endTimeSec - startTimeSec;
|
|
166
|
-
const elapsed = nowSec - startTimeSec;
|
|
167
|
-
const unlocked = (total * BigInt(elapsed)) / BigInt(period);
|
|
168
|
-
return String(unlocked);
|
|
169
|
-
}
|
|
170
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVzdGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBDQSxvREFvRUM7QUFTRCxzREFpQ0M7QUF2SkQscUZBQXVFO0FBeUJ2RSxNQUFNLGlCQUFpQixHQUFHO0lBQ3hCLGtEQUFrRDtJQUNsRCwrQ0FBK0M7SUFDL0MsZ0RBQWdEO0lBQ2hELDRDQUE0QztDQUNwQyxDQUFDO0FBRVgsU0FBUyxjQUFjLENBQUMsS0FBeUI7SUFDL0MsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLEdBQVE7O0lBQzNDLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDO0lBQy9CLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2xELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksQ0FBQztRQUNILFFBQVEsT0FBTyxFQUFFLENBQUM7WUFDaEIsS0FBSyxrREFBa0QsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNELE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLENBQUEsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsZUFBZSwwQ0FBRSxNQUFNLENBQUE7b0JB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
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Any } from 'cosmjs-types/google/protobuf/any';
|
|
2
|
-
/** Один период вестинга (для PeriodicVestingAccount). */
|
|
3
|
-
export interface VestingPeriod {
|
|
4
|
-
/** Длительность периода в секундах. */
|
|
5
|
-
lengthSec: number;
|
|
6
|
-
/** Монеты, разблокируемые в конце периода. */
|
|
7
|
-
amount: Array<{
|
|
8
|
-
denom: string;
|
|
9
|
-
amount: string;
|
|
10
|
-
}>;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Нормализованная информация о вестинг-аккаунте, достаточная для расчёта
|
|
14
|
-
* разблокированной суммы. Типы Continuous/Delayed/Periodic/Base сводятся к этому виду.
|
|
15
|
-
*/
|
|
16
|
-
export interface VestingInfo {
|
|
17
|
-
/** Монеты original_vesting (деном + количество в base units). */
|
|
18
|
-
originalVesting: Array<{
|
|
19
|
-
denom: string;
|
|
20
|
-
amount: string;
|
|
21
|
-
}>;
|
|
22
|
-
/** Начало вестинга (Unix секунды). */
|
|
23
|
-
startTimeSec: number;
|
|
24
|
-
/** Конец вестинга (Unix секунды). */
|
|
25
|
-
endTimeSec: number;
|
|
26
|
-
/** Периоды (только для PeriodicVestingAccount). */
|
|
27
|
-
vestingPeriods?: VestingPeriod[];
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Декодирует сырой аккаунт (Any из getAccountRaw) в VestingInfo.
|
|
31
|
-
* Возвращает null, если тип аккаунта не vesting или нет original_vesting.
|
|
32
|
-
*/
|
|
33
|
-
export declare function decodeVestingFromAny(raw: Any): VestingInfo | null;
|
|
34
|
-
/**
|
|
35
|
-
* Считает разблокированную сумму в base units для денома по VestingInfo.
|
|
36
|
-
*
|
|
37
|
-
* - Continuous / Delayed / Base: линейная разблокировка от startTimeSec до endTimeSec.
|
|
38
|
-
* - Periodic: каждый период — клифф; сумма периода разблокируется целиком
|
|
39
|
-
* по истечении его длительности (start + Σ lengths предыдущих + length текущего).
|
|
40
|
-
*/
|
|
41
|
-
export declare function computeUnlockedAmount(info: VestingInfo, denom: string): string | undefined;
|
|
42
|
-
//# sourceMappingURL=vesting.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"vesting.d.ts","sourceRoot":"","sources":["../../../../src/lib/vesting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kCAAkC,CAAC;AAGvD,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC5B,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,eAAe,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAcD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,GAAG,IAAI,CAoEjE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,SAAS,CA8BpB"}
|