@amadeus-protocol/sdk 1.0.8 → 1.1.1
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/README.md +215 -30
- package/dist/api/chain.d.ts +144 -117
- package/dist/api/chain.d.ts.map +1 -1
- package/dist/api/chain.js +175 -146
- package/dist/api/chain.js.map +1 -1
- package/dist/api/contract.d.ts +78 -60
- package/dist/api/contract.d.ts.map +1 -1
- package/dist/api/contract.js +102 -75
- package/dist/api/contract.js.map +1 -1
- package/dist/api/epoch.d.ts +65 -66
- package/dist/api/epoch.d.ts.map +1 -1
- package/dist/api/epoch.js +90 -98
- package/dist/api/epoch.js.map +1 -1
- package/dist/api/peer.d.ts +77 -78
- package/dist/api/peer.d.ts.map +1 -1
- package/dist/api/peer.js +93 -94
- package/dist/api/peer.js.map +1 -1
- package/dist/api/proof.d.ts +44 -23
- package/dist/api/proof.d.ts.map +1 -1
- package/dist/api/proof.js +56 -29
- package/dist/api/proof.js.map +1 -1
- package/dist/api/transaction.d.ts +68 -69
- package/dist/api/transaction.d.ts.map +1 -1
- package/dist/api/transaction.js +84 -84
- package/dist/api/transaction.js.map +1 -1
- package/dist/api/wallet.d.ts +36 -37
- package/dist/api/wallet.d.ts.map +1 -1
- package/dist/api/wallet.js +47 -50
- package/dist/api/wallet.js.map +1 -1
- package/dist/client.d.ts +66 -68
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +231 -276
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +13 -10
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +49 -45
- package/dist/constants.js.map +1 -1
- package/dist/contract-state.d.ts +6 -3
- package/dist/contract-state.d.ts.map +1 -1
- package/dist/contract-state.js +88 -106
- package/dist/contract-state.js.map +1 -1
- package/dist/contracts/abi-types.d.ts +32 -32
- package/dist/contracts/abi-types.d.ts.map +1 -1
- package/dist/contracts/coin.d.ts +13 -20
- package/dist/contracts/coin.d.ts.map +1 -1
- package/dist/contracts/coin.js +42 -38
- package/dist/contracts/coin.js.map +1 -1
- package/dist/contracts/contract-call.d.ts +14 -16
- package/dist/contracts/contract-call.d.ts.map +1 -1
- package/dist/contracts/contract-call.js +45 -54
- package/dist/contracts/contract-call.js.map +1 -1
- package/dist/contracts/contract.d.ts +24 -55
- package/dist/contracts/contract.d.ts.map +1 -1
- package/dist/contracts/contract.js +63 -101
- package/dist/contracts/contract.js.map +1 -1
- package/dist/contracts/lockup/abi.d.ts +54 -51
- package/dist/contracts/lockup/abi.d.ts.map +1 -1
- package/dist/contracts/lockup/abi.js +65 -74
- package/dist/contracts/lockup/abi.js.map +1 -1
- package/dist/contracts/lockup/helpers.d.ts +22 -18
- package/dist/contracts/lockup/helpers.d.ts.map +1 -1
- package/dist/contracts/lockup/helpers.js +44 -47
- package/dist/contracts/lockup/helpers.js.map +1 -1
- package/dist/contracts/lockup/parsers.d.ts +7 -3
- package/dist/contracts/lockup/parsers.d.ts.map +1 -1
- package/dist/contracts/lockup/parsers.js +51 -55
- package/dist/contracts/lockup/parsers.js.map +1 -1
- package/dist/contracts/lockup/storage-keys.d.ts +5 -2
- package/dist/contracts/lockup/storage-keys.d.ts.map +1 -1
- package/dist/contracts/lockup/storage-keys.js +54 -70
- package/dist/contracts/lockup/storage-keys.js.map +1 -1
- package/dist/contracts/lockup/types.d.ts +73 -70
- package/dist/contracts/lockup/types.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/abi.d.ts +328 -325
- package/dist/contracts/lockup-prime/abi.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/abi.js +397 -417
- package/dist/contracts/lockup-prime/abi.js.map +1 -1
- package/dist/contracts/lockup-prime/helpers.d.ts +35 -31
- package/dist/contracts/lockup-prime/helpers.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/helpers.js +131 -137
- package/dist/contracts/lockup-prime/helpers.js.map +1 -1
- package/dist/contracts/lockup-prime/parsers.d.ts +9 -5
- package/dist/contracts/lockup-prime/parsers.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/parsers.js +61 -61
- package/dist/contracts/lockup-prime/parsers.js.map +1 -1
- package/dist/contracts/lockup-prime/storage-keys.d.ts +7 -4
- package/dist/contracts/lockup-prime/storage-keys.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/storage-keys.js +64 -80
- package/dist/contracts/lockup-prime/storage-keys.js.map +1 -1
- package/dist/contracts/lockup-prime/types.d.ts +92 -89
- package/dist/contracts/lockup-prime/types.d.ts.map +1 -1
- package/dist/contracts/lockup-prime/types.js +12 -13
- package/dist/contracts/lockup-prime/types.js.map +1 -1
- package/dist/contracts/nft/abi.d.ts +104 -0
- package/dist/contracts/nft/abi.d.ts.map +1 -0
- package/dist/contracts/nft/abi.js +135 -0
- package/dist/contracts/nft/abi.js.map +1 -0
- package/dist/contracts/nft/helpers.d.ts +21 -0
- package/dist/contracts/nft/helpers.d.ts.map +1 -0
- package/dist/contracts/nft/helpers.js +61 -0
- package/dist/contracts/nft/helpers.js.map +1 -0
- package/dist/contracts/nft/types.d.ts +47 -0
- package/dist/contracts/nft/types.d.ts.map +1 -0
- package/dist/conversion.d.ts +5 -2
- package/dist/conversion.d.ts.map +1 -1
- package/dist/conversion.js +45 -50
- package/dist/conversion.js.map +1 -1
- package/dist/crypto.d.ts +14 -16
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +121 -140
- package/dist/crypto.js.map +1 -1
- package/dist/encoding.d.ts +11 -8
- package/dist/encoding.d.ts.map +1 -1
- package/dist/encoding.js +123 -144
- package/dist/encoding.js.map +1 -1
- package/dist/encryption.d.ts +15 -12
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +119 -117
- package/dist/encryption.js.map +1 -1
- package/dist/explorer.d.ts +10 -7
- package/dist/explorer.d.ts.map +1 -1
- package/dist/explorer.js +51 -48
- package/dist/explorer.js.map +1 -1
- package/dist/formatters.d.ts +8 -5
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +67 -68
- package/dist/formatters.js.map +1 -1
- package/dist/index.d.ts +42 -55
- package/dist/index.js +39 -55
- package/dist/mnemonic.d.ts +12 -9
- package/dist/mnemonic.d.ts.map +1 -1
- package/dist/mnemonic.js +105 -114
- package/dist/mnemonic.js.map +1 -1
- package/dist/networks.d.ts +14 -17
- package/dist/networks.d.ts.map +1 -1
- package/dist/networks.js +40 -36
- package/dist/networks.js.map +1 -1
- package/dist/schemas.js +75 -79
- package/dist/schemas.js.map +1 -1
- package/dist/sdk.d.ts +69 -65
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +126 -117
- package/dist/sdk.js.map +1 -1
- package/dist/serialization.d.ts +8 -18
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +207 -260
- package/dist/serialization.js.map +1 -1
- package/dist/signing.js +67 -67
- package/dist/signing.js.map +1 -1
- package/dist/transaction-builder.d.ts +175 -184
- package/dist/transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder.js +295 -344
- package/dist/transaction-builder.js.map +1 -1
- package/dist/transaction-errors.d.ts +10 -12
- package/dist/transaction-errors.d.ts.map +1 -1
- package/dist/transaction-errors.js +145 -166
- package/dist/transaction-errors.js.map +1 -1
- package/dist/types.d.ts +530 -450
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +169 -183
- package/dist/types.js.map +1 -1
- package/dist/validation.d.ts +24 -26
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +194 -192
- package/dist/validation.js.map +1 -1
- package/package.json +4 -3
- package/dist/api/index.d.ts +0 -8
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -8
- package/dist/api/index.js.map +0 -1
- package/dist/contracts/abi-types.js +0 -8
- package/dist/contracts/abi-types.js.map +0 -1
- package/dist/contracts/index.d.ts +0 -7
- package/dist/contracts/index.d.ts.map +0 -1
- package/dist/contracts/index.js +0 -7
- package/dist/contracts/index.js.map +0 -1
- package/dist/contracts/lockup/calls.d.ts +0 -23
- package/dist/contracts/lockup/calls.d.ts.map +0 -1
- package/dist/contracts/lockup/calls.js +0 -25
- package/dist/contracts/lockup/calls.js.map +0 -1
- package/dist/contracts/lockup/index.d.ts +0 -6
- package/dist/contracts/lockup/index.d.ts.map +0 -1
- package/dist/contracts/lockup/index.js +0 -6
- package/dist/contracts/lockup/index.js.map +0 -1
- package/dist/contracts/lockup/types.js +0 -7
- package/dist/contracts/lockup/types.js.map +0 -1
- package/dist/contracts/lockup-prime/calls.d.ts +0 -53
- package/dist/contracts/lockup-prime/calls.d.ts.map +0 -1
- package/dist/contracts/lockup-prime/calls.js +0 -60
- package/dist/contracts/lockup-prime/calls.js.map +0 -1
- package/dist/contracts/lockup-prime/index.d.ts +0 -6
- package/dist/contracts/lockup-prime/index.d.ts.map +0 -1
- package/dist/contracts/lockup-prime/index.js +0 -6
- package/dist/contracts/lockup-prime/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/schemas.d.ts +0 -67
- package/dist/schemas.d.ts.map +0 -1
- package/dist/signing.d.ts +0 -39
- package/dist/signing.d.ts.map +0 -1
|
@@ -1,60 +1,56 @@
|
|
|
1
|
-
import { fromAtomicAma } from
|
|
1
|
+
import { fromAtomicAma } from "../../conversion.js";
|
|
2
|
+
//#region src/contracts/lockup/parsers.ts
|
|
2
3
|
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
4
|
+
* Parse raw lockup vault data string into intermediate format
|
|
5
|
+
* Format: {unlock_height}-{amount}-{symbol}
|
|
6
|
+
*
|
|
7
|
+
* @param dataStr - Raw vault data string from contract state
|
|
8
|
+
* @returns Parsed data or null if invalid
|
|
9
|
+
*/
|
|
10
|
+
function parseRawLockupVaultData(dataStr) {
|
|
11
|
+
const match = dataStr.match(/^(\d+)-(\d+)-([A-Za-z]+)$/);
|
|
12
|
+
if (!match) return null;
|
|
13
|
+
const unlockHeight = Number.parseInt(match[1], 10);
|
|
14
|
+
const amountFlat = Number.parseInt(match[2], 10);
|
|
15
|
+
const symbol = match[3];
|
|
16
|
+
if (Number.isNaN(unlockHeight) || unlockHeight < 0) return null;
|
|
17
|
+
if (Number.isNaN(amountFlat) || amountFlat < 0) return null;
|
|
18
|
+
if (symbol !== "AMA") return null;
|
|
19
|
+
return {
|
|
20
|
+
unlockHeight,
|
|
21
|
+
amountFlat,
|
|
22
|
+
symbol
|
|
23
|
+
};
|
|
23
24
|
}
|
|
24
25
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
vaultIndex,
|
|
52
|
-
vaultType: 'vesting',
|
|
53
|
-
unlockHeight
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
catch {
|
|
57
|
-
return null;
|
|
58
|
-
}
|
|
26
|
+
* Parse lockup vault data from contract state
|
|
27
|
+
* Format: {unlock_height}-{amount}-{symbol}
|
|
28
|
+
* These vaults are locked for 5 epochs (100,000 * 5 = 500,000 heights)
|
|
29
|
+
*
|
|
30
|
+
* @param vaultData - Raw vault data from contract state (string or Uint8Array)
|
|
31
|
+
* @param vaultIndex - The vault index
|
|
32
|
+
* @returns Parsed vault or null if invalid
|
|
33
|
+
*/
|
|
34
|
+
function parseLockupVaultData(vaultData, vaultIndex) {
|
|
35
|
+
try {
|
|
36
|
+
const rawData = parseRawLockupVaultData(typeof vaultData === "string" ? vaultData : new TextDecoder().decode(vaultData));
|
|
37
|
+
if (!rawData) return null;
|
|
38
|
+
const { unlockHeight, amountFlat } = rawData;
|
|
39
|
+
const amount = fromAtomicAma(amountFlat);
|
|
40
|
+
const lockHeight = Math.max(0, unlockHeight - 5e5);
|
|
41
|
+
return {
|
|
42
|
+
unlockEpoch: Math.floor(unlockHeight / 1e5),
|
|
43
|
+
lockEpoch: Math.floor(lockHeight / 1e5),
|
|
44
|
+
amount,
|
|
45
|
+
vaultIndex,
|
|
46
|
+
vaultType: "vesting",
|
|
47
|
+
unlockHeight
|
|
48
|
+
};
|
|
49
|
+
} catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
59
52
|
}
|
|
53
|
+
//#endregion
|
|
54
|
+
export { parseLockupVaultData, parseRawLockupVaultData };
|
|
55
|
+
|
|
60
56
|
//# sourceMappingURL=parsers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsers.js","
|
|
1
|
+
{"version":3,"file":"parsers.js","names":[],"sources":["../../../src/contracts/lockup/parsers.ts"],"sourcesContent":["import { fromAtomicAma } from '../../conversion'\n\nimport type { LockupVault, RawLockupVaultData } from './types'\n\n/**\n * Parse raw lockup vault data string into intermediate format\n * Format: {unlock_height}-{amount}-{symbol}\n *\n * @param dataStr - Raw vault data string from contract state\n * @returns Parsed data or null if invalid\n */\nexport function parseRawLockupVaultData(dataStr: string): RawLockupVaultData | null {\n\tconst match = dataStr.match(/^(\\d+)-(\\d+)-([A-Za-z]+)$/)\n\tif (!match) return null\n\n\tconst unlockHeight = Number.parseInt(match[1]!, 10)\n\tconst amountFlat = Number.parseInt(match[2]!, 10)\n\tconst symbol = match[3]!\n\n\tif (Number.isNaN(unlockHeight) || unlockHeight < 0) return null\n\tif (Number.isNaN(amountFlat) || amountFlat < 0) return null\n\tif (symbol !== 'AMA') return null\n\n\treturn { unlockHeight, amountFlat, symbol }\n}\n\n/**\n * Parse lockup vault data from contract state\n * Format: {unlock_height}-{amount}-{symbol}\n * These vaults are locked for 5 epochs (100,000 * 5 = 500,000 heights)\n *\n * @param vaultData - Raw vault data from contract state (string or Uint8Array)\n * @param vaultIndex - The vault index\n * @returns Parsed vault or null if invalid\n */\nexport function parseLockupVaultData(\n\tvaultData: string | Uint8Array,\n\tvaultIndex: number\n): LockupVault | null {\n\ttry {\n\t\tconst dataStr =\n\t\t\ttypeof vaultData === 'string' ? vaultData : new TextDecoder().decode(vaultData)\n\n\t\tconst rawData = parseRawLockupVaultData(dataStr)\n\t\tif (!rawData) return null\n\n\t\tconst { unlockHeight, amountFlat } = rawData\n\n\t\tconst amount = fromAtomicAma(amountFlat)\n\n\t\t// Regular lockup vaults created from early unlock are locked for 5 epochs\n\t\t// 5 epochs = 100,000 * 5 = 500,000 heights\n\t\tconst lockHeight = Math.max(0, unlockHeight - 500_000)\n\n\t\t// Approximate epochs: 1 epoch ~ 100,000 heights\n\t\tconst unlockEpoch = Math.floor(unlockHeight / 100_000)\n\t\tconst lockEpoch = Math.floor(lockHeight / 100_000)\n\n\t\treturn {\n\t\t\tunlockEpoch,\n\t\t\tlockEpoch,\n\t\t\tamount,\n\t\t\tvaultIndex,\n\t\t\tvaultType: 'vesting',\n\t\t\tunlockHeight\n\t\t}\n\t} catch {\n\t\treturn null\n\t}\n}\n"],"mappings":";;;;;;;;;AAWA,SAAgB,wBAAwB,SAA4C;CACnF,MAAM,QAAQ,QAAQ,MAAM,4BAA4B;CACxD,IAAI,CAAC,OAAO,OAAO;CAEnB,MAAM,eAAe,OAAO,SAAS,MAAM,IAAK,GAAG;CACnD,MAAM,aAAa,OAAO,SAAS,MAAM,IAAK,GAAG;CACjD,MAAM,SAAS,MAAM;CAErB,IAAI,OAAO,MAAM,aAAa,IAAI,eAAe,GAAG,OAAO;CAC3D,IAAI,OAAO,MAAM,WAAW,IAAI,aAAa,GAAG,OAAO;CACvD,IAAI,WAAW,OAAO,OAAO;CAE7B,OAAO;EAAE;EAAc;EAAY;EAAQ;;;;;;;;;;;AAY5C,SAAgB,qBACf,WACA,YACqB;CACrB,IAAI;EAIH,MAAM,UAAU,wBAFf,OAAO,cAAc,WAAW,YAAY,IAAI,aAAa,CAAC,OAAO,UAAU,CAEhC;EAChD,IAAI,CAAC,SAAS,OAAO;EAErB,MAAM,EAAE,cAAc,eAAe;EAErC,MAAM,SAAS,cAAc,WAAW;EAIxC,MAAM,aAAa,KAAK,IAAI,GAAG,eAAe,IAAQ;EAMtD,OAAO;GACN,aAJmB,KAAK,MAAM,eAAe,IAIlC;GACX,WAJiB,KAAK,MAAM,aAAa,IAIhC;GACT;GACA;GACA,WAAW;GACX;GACA;SACM;EACP,OAAO"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
//#region src/contracts/lockup/storage-keys.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Build vault key prefix for an account
|
|
3
4
|
* Format: bic:lockup:vault:{account_48bytes}:
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
+
declare function buildLockupVaultKeyPrefix(accountBinary: Uint8Array): Uint8Array;
|
|
6
7
|
/**
|
|
7
8
|
* Extract vault index from key
|
|
8
9
|
* Key format: bic:lockup:vault:{account_48bytes}:{vault_index}
|
|
@@ -11,5 +12,7 @@ export declare function buildLockupVaultKeyPrefix(accountBinary: Uint8Array): Ui
|
|
|
11
12
|
* - Full key: bic:lockup:vault:{account_48bytes}:{vault_index}
|
|
12
13
|
* - Suffix only: {vault_index} (just the part after the prefix)
|
|
13
14
|
*/
|
|
14
|
-
|
|
15
|
+
declare function extractLockupVaultIndexFromKey(key: string | Uint8Array): number | null;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { buildLockupVaultKeyPrefix, extractLockupVaultIndexFromKey };
|
|
15
18
|
//# sourceMappingURL=storage-keys.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-keys.d.ts","
|
|
1
|
+
{"version":3,"file":"storage-keys.d.ts","names":[],"sources":["../../../src/contracts/lockup/storage-keys.ts"],"mappings":";;AAsCA;;;iBAAgB,yBAAA,CAA0B,aAAA,EAAe,UAAA,GAAa,UAAA;;;;;;AAYtE;;;iBAAgB,8BAAA,CAA+B,GAAA,WAAc,UAAA"}
|
|
@@ -1,78 +1,62 @@
|
|
|
1
|
-
import { Lockup } from
|
|
1
|
+
import { Lockup } from "./helpers.js";
|
|
2
|
+
//#region src/contracts/lockup/storage-keys.ts
|
|
2
3
|
/**
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
* Generic function to build a storage key for an account
|
|
5
|
+
*/
|
|
5
6
|
function buildStorageKey(keyName, accountBinary, appendColon = false) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const result = new Uint8Array(resultLength);
|
|
17
|
-
result.set(prefixBytes, 0);
|
|
18
|
-
result.set(accountBinary, prefixBytes.length);
|
|
19
|
-
if (appendColon) {
|
|
20
|
-
result[result.length - 1] = 0x3a; // ':'
|
|
21
|
-
}
|
|
22
|
-
return result;
|
|
7
|
+
if (!Lockup.getStorageKey(keyName)) throw new Error(`Storage key '${keyName}' not found in ABI`);
|
|
8
|
+
const prefix = Lockup.getKeyPrefix(keyName);
|
|
9
|
+
if (!prefix) throw new Error(`Could not extract prefix for storage key '${keyName}'`);
|
|
10
|
+
const prefixBytes = new TextEncoder().encode(prefix);
|
|
11
|
+
const resultLength = prefixBytes.length + accountBinary.length + (appendColon ? 1 : 0);
|
|
12
|
+
const result = new Uint8Array(resultLength);
|
|
13
|
+
result.set(prefixBytes, 0);
|
|
14
|
+
result.set(accountBinary, prefixBytes.length);
|
|
15
|
+
if (appendColon) result[result.length - 1] = 58;
|
|
16
|
+
return result;
|
|
23
17
|
}
|
|
24
18
|
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
* Build vault key prefix for an account
|
|
20
|
+
* Format: bic:lockup:vault:{account_48bytes}:
|
|
21
|
+
*/
|
|
22
|
+
function buildLockupVaultKeyPrefix(accountBinary) {
|
|
23
|
+
return buildStorageKey("vault", accountBinary, true);
|
|
30
24
|
}
|
|
31
25
|
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if (lastColonIndex === -1 || lastColonIndex === keyBytes.length - 1) {
|
|
65
|
-
const wholeKeyParse = Number.parseInt(keyStr, 10);
|
|
66
|
-
return Number.isNaN(wholeKeyParse) ? null : wholeKeyParse;
|
|
67
|
-
}
|
|
68
|
-
// Extract vault index from after the last colon
|
|
69
|
-
const indexBytes = keyBytes.slice(lastColonIndex + 1);
|
|
70
|
-
const indexStr = new TextDecoder().decode(indexBytes);
|
|
71
|
-
const vaultIndex = Number.parseInt(indexStr, 10);
|
|
72
|
-
return Number.isNaN(vaultIndex) ? null : vaultIndex;
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
26
|
+
* Extract vault index from key
|
|
27
|
+
* Key format: bic:lockup:vault:{account_48bytes}:{vault_index}
|
|
28
|
+
*
|
|
29
|
+
* Note: When using prefix queries, the key might be:
|
|
30
|
+
* - Full key: bic:lockup:vault:{account_48bytes}:{vault_index}
|
|
31
|
+
* - Suffix only: {vault_index} (just the part after the prefix)
|
|
32
|
+
*/
|
|
33
|
+
function extractLockupVaultIndexFromKey(key) {
|
|
34
|
+
try {
|
|
35
|
+
const keyBytes = typeof key === "string" ? new TextEncoder().encode(key) : key;
|
|
36
|
+
const keyStr = typeof key === "string" ? key : new TextDecoder().decode(key);
|
|
37
|
+
if (/^\d+-\d+-[A-Za-z]+$/.test(keyStr)) return null;
|
|
38
|
+
if (keyBytes.length < 10) {
|
|
39
|
+
const directParse = Number.parseInt(keyStr, 10);
|
|
40
|
+
if (!Number.isNaN(directParse) && directParse >= 0) return directParse;
|
|
41
|
+
}
|
|
42
|
+
let lastColonIndex = -1;
|
|
43
|
+
for (let i = keyBytes.length - 1; i >= 0; i--) if (keyBytes[i] === 58) {
|
|
44
|
+
lastColonIndex = i;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
if (lastColonIndex === -1 || lastColonIndex === keyBytes.length - 1) {
|
|
48
|
+
const wholeKeyParse = Number.parseInt(keyStr, 10);
|
|
49
|
+
return Number.isNaN(wholeKeyParse) ? null : wholeKeyParse;
|
|
50
|
+
}
|
|
51
|
+
const indexBytes = keyBytes.slice(lastColonIndex + 1);
|
|
52
|
+
const indexStr = new TextDecoder().decode(indexBytes);
|
|
53
|
+
const vaultIndex = Number.parseInt(indexStr, 10);
|
|
54
|
+
return Number.isNaN(vaultIndex) ? null : vaultIndex;
|
|
55
|
+
} catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
77
58
|
}
|
|
59
|
+
//#endregion
|
|
60
|
+
export { buildLockupVaultKeyPrefix, extractLockupVaultIndexFromKey };
|
|
61
|
+
|
|
78
62
|
//# sourceMappingURL=storage-keys.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-keys.js","
|
|
1
|
+
{"version":3,"file":"storage-keys.js","names":[],"sources":["../../../src/contracts/lockup/storage-keys.ts"],"sourcesContent":["import { Lockup } from './helpers'\n\n/**\n * Generic function to build a storage key for an account\n */\nfunction buildStorageKey(\n\tkeyName: string,\n\taccountBinary: Uint8Array,\n\tappendColon = false\n): Uint8Array {\n\tconst storageKey = Lockup.getStorageKey(keyName)\n\tif (!storageKey) {\n\t\tthrow new Error(`Storage key '${keyName}' not found in ABI`)\n\t}\n\n\tconst prefix = Lockup.getKeyPrefix(keyName)\n\tif (!prefix) {\n\t\tthrow new Error(`Could not extract prefix for storage key '${keyName}'`)\n\t}\n\n\tconst prefixBytes = new TextEncoder().encode(prefix)\n\tconst resultLength = prefixBytes.length + accountBinary.length + (appendColon ? 1 : 0)\n\tconst result = new Uint8Array(resultLength)\n\n\tresult.set(prefixBytes, 0)\n\tresult.set(accountBinary, prefixBytes.length)\n\n\tif (appendColon) {\n\t\tresult[result.length - 1] = 0x3a // ':'\n\t}\n\n\treturn result\n}\n\n/**\n * Build vault key prefix for an account\n * Format: bic:lockup:vault:{account_48bytes}:\n */\nexport function buildLockupVaultKeyPrefix(accountBinary: Uint8Array): Uint8Array {\n\treturn buildStorageKey('vault', accountBinary, true)\n}\n\n/**\n * Extract vault index from key\n * Key format: bic:lockup:vault:{account_48bytes}:{vault_index}\n *\n * Note: When using prefix queries, the key might be:\n * - Full key: bic:lockup:vault:{account_48bytes}:{vault_index}\n * - Suffix only: {vault_index} (just the part after the prefix)\n */\nexport function extractLockupVaultIndexFromKey(key: string | Uint8Array): number | null {\n\ttry {\n\t\tconst keyBytes = typeof key === 'string' ? new TextEncoder().encode(key) : key\n\t\tconst keyStr = typeof key === 'string' ? key : new TextDecoder().decode(key)\n\n\t\t// Check if key is vault data format FIRST\n\t\t// If key looks like vault data (e.g., '229427-75000000000000-AMA'), don't try to extract index\n\t\tconst isVaultDataFormat = /^\\d+-\\d+-[A-Za-z]+$/.test(keyStr)\n\t\tif (isVaultDataFormat) {\n\t\t\treturn null\n\t\t}\n\n\t\t// If the key is very short (likely just the vault index suffix from prefix query)\n\t\tif (keyBytes.length < 10) {\n\t\t\tconst directParse = Number.parseInt(keyStr, 10)\n\t\t\tif (!Number.isNaN(directParse) && directParse >= 0) {\n\t\t\t\treturn directParse\n\t\t\t}\n\t\t}\n\n\t\t// Find the last colon (':') byte (0x3A)\n\t\tlet lastColonIndex = -1\n\t\tfor (let i = keyBytes.length - 1; i >= 0; i--) {\n\t\t\tif (keyBytes[i] === 0x3a) {\n\t\t\t\tlastColonIndex = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif (lastColonIndex === -1 || lastColonIndex === keyBytes.length - 1) {\n\t\t\tconst wholeKeyParse = Number.parseInt(keyStr, 10)\n\t\t\treturn Number.isNaN(wholeKeyParse) ? null : wholeKeyParse\n\t\t}\n\n\t\t// Extract vault index from after the last colon\n\t\tconst indexBytes = keyBytes.slice(lastColonIndex + 1)\n\t\tconst indexStr = new TextDecoder().decode(indexBytes)\n\t\tconst vaultIndex = Number.parseInt(indexStr, 10)\n\n\t\treturn Number.isNaN(vaultIndex) ? null : vaultIndex\n\t} catch {\n\t\treturn null\n\t}\n}\n"],"mappings":";;;;;AAKA,SAAS,gBACR,SACA,eACA,cAAc,OACD;CAEb,IAAI,CADe,OAAO,cAAc,QACzB,EACd,MAAM,IAAI,MAAM,gBAAgB,QAAQ,oBAAoB;CAG7D,MAAM,SAAS,OAAO,aAAa,QAAQ;CAC3C,IAAI,CAAC,QACJ,MAAM,IAAI,MAAM,6CAA6C,QAAQ,GAAG;CAGzE,MAAM,cAAc,IAAI,aAAa,CAAC,OAAO,OAAO;CACpD,MAAM,eAAe,YAAY,SAAS,cAAc,UAAU,cAAc,IAAI;CACpF,MAAM,SAAS,IAAI,WAAW,aAAa;CAE3C,OAAO,IAAI,aAAa,EAAE;CAC1B,OAAO,IAAI,eAAe,YAAY,OAAO;CAE7C,IAAI,aACH,OAAO,OAAO,SAAS,KAAK;CAG7B,OAAO;;;;;;AAOR,SAAgB,0BAA0B,eAAuC;CAChF,OAAO,gBAAgB,SAAS,eAAe,KAAK;;;;;;;;;;AAWrD,SAAgB,+BAA+B,KAAyC;CACvF,IAAI;EACH,MAAM,WAAW,OAAO,QAAQ,WAAW,IAAI,aAAa,CAAC,OAAO,IAAI,GAAG;EAC3E,MAAM,SAAS,OAAO,QAAQ,WAAW,MAAM,IAAI,aAAa,CAAC,OAAO,IAAI;EAK5E,IAD0B,sBAAsB,KAAK,OAChC,EACpB,OAAO;EAIR,IAAI,SAAS,SAAS,IAAI;GACzB,MAAM,cAAc,OAAO,SAAS,QAAQ,GAAG;GAC/C,IAAI,CAAC,OAAO,MAAM,YAAY,IAAI,eAAe,GAChD,OAAO;;EAKT,IAAI,iBAAiB;EACrB,KAAK,IAAI,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KACzC,IAAI,SAAS,OAAO,IAAM;GACzB,iBAAiB;GACjB;;EAIF,IAAI,mBAAmB,MAAM,mBAAmB,SAAS,SAAS,GAAG;GACpE,MAAM,gBAAgB,OAAO,SAAS,QAAQ,GAAG;GACjD,OAAO,OAAO,MAAM,cAAc,GAAG,OAAO;;EAI7C,MAAM,aAAa,SAAS,MAAM,iBAAiB,EAAE;EACrD,MAAM,WAAW,IAAI,aAAa,CAAC,OAAO,WAAW;EACrD,MAAM,aAAa,OAAO,SAAS,UAAU,GAAG;EAEhD,OAAO,OAAO,MAAM,WAAW,GAAG,OAAO;SAClC;EACP,OAAO"}
|
|
@@ -1,90 +1,93 @@
|
|
|
1
|
+
//#region src/contracts/lockup/types.d.ts
|
|
1
2
|
/**
|
|
2
3
|
* Type Definitions for Lockup smart contract
|
|
3
4
|
*
|
|
4
5
|
* Replaces Zod schemas with plain TypeScript types.
|
|
5
6
|
*/
|
|
6
7
|
/** Parsed Lockup vault (vesting vault) */
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
interface LockupVault {
|
|
9
|
+
unlockEpoch: number;
|
|
10
|
+
lockEpoch: number;
|
|
11
|
+
amount: number;
|
|
12
|
+
vaultIndex: number;
|
|
13
|
+
vaultType: 'vesting';
|
|
14
|
+
unlockHeight?: number;
|
|
14
15
|
}
|
|
15
16
|
/** Intermediate parse result from raw vault data string */
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
interface RawLockupVaultData {
|
|
18
|
+
unlockHeight: number;
|
|
19
|
+
amountFlat: number;
|
|
20
|
+
symbol: string;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
interface LockupAbiFunction {
|
|
23
|
+
type: 'function';
|
|
24
|
+
name: string;
|
|
25
|
+
inputs: LockupAbiInput[];
|
|
26
|
+
outputs: LockupAbiOutput[];
|
|
27
|
+
stateMutability: 'nonpayable' | 'payable' | 'view' | 'pure';
|
|
28
|
+
description?: string;
|
|
29
|
+
requirements?: string[];
|
|
30
|
+
storage?: {
|
|
31
|
+
reads?: LockupAbiStorageRead[];
|
|
32
|
+
writes?: LockupAbiStorageWrite[];
|
|
33
|
+
};
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
35
|
+
interface LockupAbiInput {
|
|
36
|
+
name: string;
|
|
37
|
+
type: string;
|
|
38
|
+
description?: string;
|
|
39
|
+
validation?: {
|
|
40
|
+
min?: string;
|
|
41
|
+
max?: string;
|
|
42
|
+
type?: string;
|
|
43
|
+
};
|
|
44
|
+
enum?: string[];
|
|
44
45
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
interface LockupAbiOutput {
|
|
47
|
+
name: string;
|
|
48
|
+
type: string;
|
|
49
|
+
description?: string;
|
|
49
50
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
interface LockupAbiError {
|
|
52
|
+
name: string;
|
|
53
|
+
code: string;
|
|
54
|
+
description: string;
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
|
|
56
|
+
interface LockupAbiStorage {
|
|
57
|
+
keys: LockupAbiStorageKey[];
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
interface LockupAbiStorageKey {
|
|
60
|
+
name: string;
|
|
61
|
+
pattern: string;
|
|
62
|
+
type: 'mapping' | 'value' | 'array';
|
|
63
|
+
description: string;
|
|
64
|
+
valueFormat?: string;
|
|
65
|
+
valueSchema?: Record<string, any>;
|
|
66
|
+
query?: {
|
|
67
|
+
method: string;
|
|
68
|
+
endpoint: string;
|
|
69
|
+
prefix?: string;
|
|
70
|
+
key?: string;
|
|
62
71
|
description: string;
|
|
63
|
-
|
|
64
|
-
valueSchema?: Record<string, any>;
|
|
65
|
-
query?: {
|
|
66
|
-
method: string;
|
|
67
|
-
endpoint: string;
|
|
68
|
-
prefix?: string;
|
|
69
|
-
key?: string;
|
|
70
|
-
description: string;
|
|
71
|
-
};
|
|
72
|
+
};
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
interface LockupAbiStorageRead {
|
|
75
|
+
key: string;
|
|
76
|
+
description?: string;
|
|
77
|
+
value?: string;
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
79
|
+
interface LockupAbiStorageWrite {
|
|
80
|
+
key: string;
|
|
81
|
+
value?: string;
|
|
82
|
+
operation?: 'increment' | 'decrement' | 'create' | 'delete' | 'mint';
|
|
83
|
+
amount?: string;
|
|
84
|
+
duration?: string;
|
|
85
|
+
description?: string;
|
|
86
|
+
condition?: string;
|
|
87
|
+
writes?: LockupAbiStorageWrite[];
|
|
87
88
|
}
|
|
88
89
|
/** @deprecated Use `LockupVault` instead */
|
|
89
|
-
|
|
90
|
+
type LockupVaultSchema = LockupVault;
|
|
91
|
+
//#endregion
|
|
92
|
+
export { LockupAbiError, LockupAbiFunction, LockupAbiInput, LockupAbiOutput, LockupAbiStorage, LockupAbiStorageKey, LockupAbiStorageRead, LockupAbiStorageWrite, LockupVault, LockupVaultSchema, RawLockupVaultData };
|
|
90
93
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/contracts/lockup/types.ts"],"mappings":";;AASA;;;;;UAAiB,WAAA;EAChB,WAAA;EACA,SAAA;EACA,MAAA;EACA,UAAA;EACA,SAAA;EACA,YAAA;AAAA;;UAIgB,kBAAA;EAChB,YAAA;EACA,UAAA;EACA,MAAA;AAAA;AAAA,UAKgB,iBAAA;EAChB,IAAA;EACA,IAAA;EACA,MAAA,EAAQ,cAAA;EACR,OAAA,EAAS,eAAA;EACT,eAAA;EACA,WAAA;EACA,YAAA;EACA,OAAA;IACC,KAAA,GAAQ,oBAAA;IACR,MAAA,GAAS,qBAAA;EAAA;AAAA;AAAA,UAIM,cAAA;EAChB,IAAA;EACA,IAAA;EACA,WAAA;EACA,UAAA;IACC,GAAA;IACA,GAAA;IACA,IAAA;EAAA;EAED,IAAA;AAAA;AAAA,UAGgB,eAAA;EAChB,IAAA;EACA,IAAA;EACA,WAAA;AAAA;AAAA,UAGgB,cAAA;EAChB,IAAA;EACA,IAAA;EACA,WAAA;AAAA;AAAA,UAGgB,gBAAA;EAChB,IAAA,EAAM,mBAAA;AAAA;AAAA,UAGU,mBAAA;EAChB,IAAA;EACA,OAAA;EACA,IAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA,GAAc,MAAA;EACd,KAAA;IACC,MAAA;IACA,QAAA;IACA,MAAA;IACA,GAAA;IACA,WAAA;EAAA;AAAA;AAAA,UAIe,oBAAA;EAChB,GAAA;EACA,WAAA;EACA,KAAA;AAAA;AAAA,UAGgB,qBAAA;EAChB,GAAA;EACA,KAAA;EACA,SAAA;EACA,MAAA;EACA,QAAA;EACA,WAAA;EACA,SAAA;EACA,MAAA,GAAS,qBAAA;AAAA;;KAME,iBAAA,GAAoB,WAAA"}
|