@amadeus-protocol/sdk 1.0.6 → 1.0.7
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 +2 -2
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/contract-state.d.ts +59 -0
- package/dist/contract-state.d.ts.map +1 -0
- package/dist/contract-state.js +117 -0
- package/dist/contract-state.js.map +1 -0
- package/dist/contracts/abi-types.d.ts +87 -0
- package/dist/contracts/abi-types.d.ts.map +1 -0
- package/dist/contracts/abi-types.js +8 -0
- package/dist/contracts/abi-types.js.map +1 -0
- package/dist/contracts/coin.d.ts +42 -0
- package/dist/contracts/coin.d.ts.map +1 -0
- package/dist/contracts/coin.js +42 -0
- package/dist/contracts/coin.js.map +1 -0
- package/dist/contracts/contract-call.d.ts +49 -0
- package/dist/contracts/contract-call.d.ts.map +1 -0
- package/dist/contracts/contract-call.js +57 -0
- package/dist/contracts/contract-call.js.map +1 -0
- package/dist/contracts/contract.d.ts +113 -0
- package/dist/contracts/contract.d.ts.map +1 -0
- package/dist/contracts/contract.js +107 -0
- package/dist/contracts/contract.js.map +1 -0
- package/dist/contracts/index.d.ts +7 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +7 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/lockup/abi.d.ts +62 -0
- package/dist/contracts/lockup/abi.d.ts.map +1 -0
- package/dist/contracts/lockup/abi.js +77 -0
- package/dist/contracts/lockup/abi.js.map +1 -0
- package/dist/contracts/lockup/calls.d.ts +23 -0
- package/dist/contracts/lockup/calls.d.ts.map +1 -0
- package/dist/contracts/lockup/calls.js +25 -0
- package/dist/contracts/lockup/calls.js.map +1 -0
- package/dist/contracts/lockup/helpers.d.ts +24 -0
- package/dist/contracts/lockup/helpers.d.ts.map +1 -0
- package/dist/contracts/lockup/helpers.js +49 -0
- package/dist/contracts/lockup/helpers.js.map +1 -0
- package/dist/contracts/lockup/index.d.ts +6 -0
- package/dist/contracts/lockup/index.d.ts.map +1 -0
- package/dist/contracts/lockup/index.js +6 -0
- package/dist/contracts/lockup/index.js.map +1 -0
- package/dist/contracts/lockup/parsers.d.ts +20 -0
- package/dist/contracts/lockup/parsers.d.ts.map +1 -0
- package/dist/contracts/lockup/parsers.js +60 -0
- package/dist/contracts/lockup/parsers.js.map +1 -0
- package/dist/contracts/lockup/storage-keys.d.ts +15 -0
- package/dist/contracts/lockup/storage-keys.d.ts.map +1 -0
- package/dist/contracts/lockup/storage-keys.js +78 -0
- package/dist/contracts/lockup/storage-keys.js.map +1 -0
- package/dist/contracts/lockup/types.d.ts +90 -0
- package/dist/contracts/lockup/types.d.ts.map +1 -0
- package/dist/contracts/lockup/types.js +7 -0
- package/dist/contracts/lockup/types.js.map +1 -0
- package/dist/contracts/lockup-prime/abi.d.ts +348 -0
- package/dist/contracts/lockup-prime/abi.d.ts.map +1 -0
- package/dist/contracts/lockup-prime/abi.js +420 -0
- package/dist/contracts/lockup-prime/abi.js.map +1 -0
- package/dist/contracts/lockup-prime/calls.d.ts +53 -0
- package/dist/contracts/lockup-prime/calls.d.ts.map +1 -0
- package/dist/contracts/lockup-prime/calls.js +60 -0
- package/dist/contracts/lockup-prime/calls.js.map +1 -0
- package/dist/contracts/lockup-prime/helpers.d.ts +38 -0
- package/dist/contracts/lockup-prime/helpers.d.ts.map +1 -0
- package/dist/contracts/lockup-prime/helpers.js +147 -0
- package/dist/contracts/lockup-prime/helpers.js.map +1 -0
- package/dist/contracts/lockup-prime/index.d.ts +6 -0
- package/dist/contracts/lockup-prime/index.d.ts.map +1 -0
- package/dist/contracts/lockup-prime/index.js +6 -0
- package/dist/contracts/lockup-prime/index.js.map +1 -0
- package/dist/contracts/lockup-prime/parsers.d.ts +25 -0
- package/dist/contracts/lockup-prime/parsers.d.ts.map +1 -0
- package/dist/contracts/lockup-prime/parsers.js +68 -0
- package/dist/contracts/lockup-prime/parsers.js.map +1 -0
- package/dist/contracts/lockup-prime/storage-keys.d.ts +25 -0
- package/dist/contracts/lockup-prime/storage-keys.d.ts.map +1 -0
- package/dist/contracts/lockup-prime/storage-keys.js +92 -0
- package/dist/contracts/lockup-prime/storage-keys.js.map +1 -0
- package/dist/contracts/lockup-prime/types.d.ts +116 -0
- package/dist/contracts/lockup-prime/types.d.ts.map +1 -0
- package/dist/contracts/lockup-prime/types.js +18 -0
- package/dist/contracts/lockup-prime/types.js.map +1 -0
- package/dist/crypto.js +1 -1
- package/dist/crypto.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/serialization.d.ts +22 -0
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +39 -2
- package/dist/serialization.js.map +1 -1
- package/dist/signing.d.ts +39 -0
- package/dist/signing.d.ts.map +1 -0
- package/dist/signing.js +84 -0
- package/dist/signing.js.map +1 -0
- package/dist/transaction-builder.d.ts +135 -194
- package/dist/transaction-builder.d.ts.map +1 -1
- package/dist/transaction-builder.js +237 -288
- package/dist/transaction-builder.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ import { AmadeusSDK } from '@amadeus-protocol/sdk'
|
|
|
41
41
|
|
|
42
42
|
// Initialize SDK (uses default node URL if not specified)
|
|
43
43
|
const sdk = new AmadeusSDK({
|
|
44
|
-
baseUrl: 'https://
|
|
44
|
+
baseUrl: 'https://mainnet-rpc.ama.one/api'
|
|
45
45
|
})
|
|
46
46
|
|
|
47
47
|
// Query chain
|
|
@@ -64,7 +64,7 @@ const result = await sdk.transaction.submit(txPacked)
|
|
|
64
64
|
import { AmadeusSDK } from '@amadeus-protocol/sdk'
|
|
65
65
|
|
|
66
66
|
const sdk = new AmadeusSDK({
|
|
67
|
-
baseUrl: 'https://
|
|
67
|
+
baseUrl: 'https://mainnet-rpc.ama.one/api',
|
|
68
68
|
timeout: 30000 // Optional: custom timeout
|
|
69
69
|
})
|
|
70
70
|
|
package/dist/client.js
CHANGED
|
@@ -41,7 +41,7 @@ export class AmadeusClient {
|
|
|
41
41
|
timeout: config.timeout && config.timeout > 0 ? config.timeout : DEFAULT_TIMEOUT,
|
|
42
42
|
headers: {
|
|
43
43
|
'Content-Type': 'application/octet-stream',
|
|
44
|
-
'
|
|
44
|
+
'X-Client-Type': `@amadeus-protocol/sdk/${SDK_VERSION}`,
|
|
45
45
|
...config.headers
|
|
46
46
|
}
|
|
47
47
|
};
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,SAAS,UAAU,CAAC,GAAW;IAC9B,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,OAAO,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAA;IACnE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;AACF,CAAC;AAED,MAAM,OAAO,aAAa;IACjB,MAAM,CAA4B;IAClC,eAAe,GAA2B,IAAI,CAAA;IAEtD;;;;;OAKG;IACH,YAAY,MAAwB;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,YAAY,CAAA;QAE9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,eAAe,CACxB,oBAAoB,OAAO,mCAAmC,CAC9D,CAAA;QACF,CAAC;QAED,0CAA0C;QAC1C,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAErD,IAAI,CAAC,MAAM,GAAG;YACb,OAAO,EAAE,iBAAiB;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAChF,OAAO,EAAE;gBACR,cAAc,EAAE,0BAA0B;gBAC1C,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract State Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for parsing contract state values returned by the Amadeus chain.
|
|
5
|
+
* Contract state values are stored as binary (Uint8Array) and need to be decoded
|
|
6
|
+
* into usable types (numbers, strings, etc.).
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Decode VecPack-encoded contract state and convert keys/values to Base64 strings.
|
|
10
|
+
*
|
|
11
|
+
* Useful for serializing decoded contract state for Redux or other stores
|
|
12
|
+
* that require JSON-serializable values.
|
|
13
|
+
*
|
|
14
|
+
* @param bytes - VecPack-encoded bytes (Uint8Array or ArrayBuffer)
|
|
15
|
+
* @returns Array of [key, value] tuples as Base64 strings
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const buffer = await response.arrayBuffer()
|
|
20
|
+
* const entries = decodeContractStateToBase64(buffer)
|
|
21
|
+
* // entries: [["base64key", "base64value"], ...]
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function decodeContractStateToBase64(bytes: Uint8Array | ArrayBuffer): Array<[string, string]>;
|
|
25
|
+
/**
|
|
26
|
+
* Parse a contract state value as a number.
|
|
27
|
+
*
|
|
28
|
+
* Handles multiple input types:
|
|
29
|
+
* - `number` — returned directly
|
|
30
|
+
* - `string` — parsed as integer
|
|
31
|
+
* - `Uint8Array` — first tries UTF-8 digit string, then little-endian binary
|
|
32
|
+
* - `null`/`undefined` — returns 0
|
|
33
|
+
*
|
|
34
|
+
* @param value - Raw contract state value
|
|
35
|
+
* @returns Parsed number (0 if unparseable)
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* parseStateNumber(new TextEncoder().encode('42')) // 42
|
|
40
|
+
* parseStateNumber(new Uint8Array([0x2a, 0x00])) // 42 (little-endian)
|
|
41
|
+
* parseStateNumber('100') // 100
|
|
42
|
+
* parseStateNumber(null) // 0
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function parseStateNumber(value: string | number | Uint8Array | null | undefined): number;
|
|
46
|
+
/**
|
|
47
|
+
* Parse a contract state value as a string.
|
|
48
|
+
*
|
|
49
|
+
* Handles multiple input types:
|
|
50
|
+
* - `string` — returned directly
|
|
51
|
+
* - `number` — converted to string
|
|
52
|
+
* - `Uint8Array` — decoded as UTF-8
|
|
53
|
+
* - `null`/`undefined` — returns null
|
|
54
|
+
*
|
|
55
|
+
* @param value - Raw contract state value
|
|
56
|
+
* @returns Parsed string or null
|
|
57
|
+
*/
|
|
58
|
+
export declare function parseStateString(value: string | number | Uint8Array | null | undefined): string | null;
|
|
59
|
+
//# sourceMappingURL=contract-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-state.d.ts","sourceRoot":"","sources":["../src/contract-state.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,UAAU,GAAG,WAAW,GAC7B,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAKzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,GACpD,MAAM,CAWR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC/B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,GACpD,MAAM,GAAG,IAAI,CAQf"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract State Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides functions for parsing contract state values returned by the Amadeus chain.
|
|
5
|
+
* Contract state values are stored as binary (Uint8Array) and need to be decoded
|
|
6
|
+
* into usable types (numbers, strings, etc.).
|
|
7
|
+
*/
|
|
8
|
+
import { uint8ArrayToBase64 } from './encoding';
|
|
9
|
+
import { decodeContractState } from './serialization';
|
|
10
|
+
/**
|
|
11
|
+
* Decode VecPack-encoded contract state and convert keys/values to Base64 strings.
|
|
12
|
+
*
|
|
13
|
+
* Useful for serializing decoded contract state for Redux or other stores
|
|
14
|
+
* that require JSON-serializable values.
|
|
15
|
+
*
|
|
16
|
+
* @param bytes - VecPack-encoded bytes (Uint8Array or ArrayBuffer)
|
|
17
|
+
* @returns Array of [key, value] tuples as Base64 strings
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const buffer = await response.arrayBuffer()
|
|
22
|
+
* const entries = decodeContractStateToBase64(buffer)
|
|
23
|
+
* // entries: [["base64key", "base64value"], ...]
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function decodeContractStateToBase64(bytes) {
|
|
27
|
+
const pairs = decodeContractState(bytes);
|
|
28
|
+
return pairs
|
|
29
|
+
.filter(([key, value]) => key.length > 0 && value.length > 0)
|
|
30
|
+
.map(([key, value]) => [uint8ArrayToBase64(key), uint8ArrayToBase64(value)]);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse a contract state value as a number.
|
|
34
|
+
*
|
|
35
|
+
* Handles multiple input types:
|
|
36
|
+
* - `number` — returned directly
|
|
37
|
+
* - `string` — parsed as integer
|
|
38
|
+
* - `Uint8Array` — first tries UTF-8 digit string, then little-endian binary
|
|
39
|
+
* - `null`/`undefined` — returns 0
|
|
40
|
+
*
|
|
41
|
+
* @param value - Raw contract state value
|
|
42
|
+
* @returns Parsed number (0 if unparseable)
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* parseStateNumber(new TextEncoder().encode('42')) // 42
|
|
47
|
+
* parseStateNumber(new Uint8Array([0x2a, 0x00])) // 42 (little-endian)
|
|
48
|
+
* parseStateNumber('100') // 100
|
|
49
|
+
* parseStateNumber(null) // 0
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export function parseStateNumber(value) {
|
|
53
|
+
if (value === null || value === undefined)
|
|
54
|
+
return 0;
|
|
55
|
+
if (typeof value === 'number')
|
|
56
|
+
return Number.isInteger(value) && value >= 0 ? value : 0;
|
|
57
|
+
if (typeof value === 'string') {
|
|
58
|
+
const parsed = parseInt(value, 10);
|
|
59
|
+
return isNaN(parsed) || parsed < 0 ? 0 : parsed;
|
|
60
|
+
}
|
|
61
|
+
if (value instanceof Uint8Array) {
|
|
62
|
+
return decodeUint8ArrayAsNumber(value);
|
|
63
|
+
}
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Parse a contract state value as a string.
|
|
68
|
+
*
|
|
69
|
+
* Handles multiple input types:
|
|
70
|
+
* - `string` — returned directly
|
|
71
|
+
* - `number` — converted to string
|
|
72
|
+
* - `Uint8Array` — decoded as UTF-8
|
|
73
|
+
* - `null`/`undefined` — returns null
|
|
74
|
+
*
|
|
75
|
+
* @param value - Raw contract state value
|
|
76
|
+
* @returns Parsed string or null
|
|
77
|
+
*/
|
|
78
|
+
export function parseStateString(value) {
|
|
79
|
+
if (value === null || value === undefined)
|
|
80
|
+
return null;
|
|
81
|
+
if (typeof value === 'string')
|
|
82
|
+
return value;
|
|
83
|
+
if (typeof value === 'number')
|
|
84
|
+
return value.toString();
|
|
85
|
+
if (value instanceof Uint8Array) {
|
|
86
|
+
return new TextDecoder().decode(value);
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Decode a Uint8Array contract state value as a number.
|
|
92
|
+
* Tries UTF-8 digit string first, falls back to little-endian binary.
|
|
93
|
+
*/
|
|
94
|
+
function decodeUint8ArrayAsNumber(value) {
|
|
95
|
+
if (!value.length)
|
|
96
|
+
return 0;
|
|
97
|
+
// First try to interpret as UTF-8 digits
|
|
98
|
+
try {
|
|
99
|
+
const str = new TextDecoder().decode(value);
|
|
100
|
+
const parsed = parseInt(str, 10);
|
|
101
|
+
if (!isNaN(parsed)) {
|
|
102
|
+
return parsed;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Fallthrough to binary parsing
|
|
107
|
+
}
|
|
108
|
+
// Fallback: parse as little-endian integer (u32/u64)
|
|
109
|
+
let result = 0n;
|
|
110
|
+
const bytesToRead = Math.min(value.length, 8);
|
|
111
|
+
for (let i = 0; i < bytesToRead; i++) {
|
|
112
|
+
result |= BigInt(value[i]) << BigInt(i * 8);
|
|
113
|
+
}
|
|
114
|
+
const asNumber = Number(result);
|
|
115
|
+
return Number.isSafeInteger(asNumber) ? asNumber : 0;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=contract-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-state.js","sourceRoot":"","sources":["../src/contract-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic ABI Type Extractors
|
|
3
|
+
*
|
|
4
|
+
* Type-level utilities that extract TypeScript types from `as const` ABI objects.
|
|
5
|
+
* These enable compile-time safety for contract calls without any runtime overhead.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Shape of an ABI function input
|
|
9
|
+
*/
|
|
10
|
+
export interface AbiInput {
|
|
11
|
+
readonly name: string;
|
|
12
|
+
readonly type: string;
|
|
13
|
+
readonly description?: string;
|
|
14
|
+
readonly validation?: {
|
|
15
|
+
readonly min?: string;
|
|
16
|
+
readonly max?: string;
|
|
17
|
+
readonly type?: string;
|
|
18
|
+
};
|
|
19
|
+
readonly enum?: readonly string[];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Shape of an ABI function entry
|
|
23
|
+
*/
|
|
24
|
+
export interface AbiFunction {
|
|
25
|
+
readonly type: 'function';
|
|
26
|
+
readonly name: string;
|
|
27
|
+
readonly inputs: readonly AbiInput[];
|
|
28
|
+
readonly outputs: readonly unknown[];
|
|
29
|
+
readonly stateMutability: string;
|
|
30
|
+
readonly description?: string;
|
|
31
|
+
readonly requirements?: readonly string[];
|
|
32
|
+
readonly storage?: unknown;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Shape of any ABI definition (contractName, abi[], errors[], storage)
|
|
36
|
+
*/
|
|
37
|
+
export interface AbiDefinition {
|
|
38
|
+
readonly contractName: string;
|
|
39
|
+
readonly contractVersion?: string;
|
|
40
|
+
readonly abi: readonly AbiFunction[];
|
|
41
|
+
readonly errors?: readonly unknown[];
|
|
42
|
+
readonly storage?: unknown;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extract the literal contract name from an ABI definition
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* type Name = ExtractContractName<typeof LOCKUP_PRIME_ABI>
|
|
50
|
+
* // => 'LockupPrime'
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export type ExtractContractName<T extends AbiDefinition> = T['contractName'];
|
|
54
|
+
/**
|
|
55
|
+
* Extract a union of all function names from an ABI definition
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* type Fns = ExtractFunctionNames<typeof LOCKUP_PRIME_ABI>
|
|
60
|
+
* // => 'lock' | 'unlock' | 'daily_checkin'
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export type ExtractFunctionNames<T extends AbiDefinition> = T['abi'][number]['name'];
|
|
64
|
+
/**
|
|
65
|
+
* Find a specific function entry in the ABI by name
|
|
66
|
+
*/
|
|
67
|
+
type FindFunction<TAbi extends AbiDefinition, TFn extends string> = Extract<TAbi['abi'][number], {
|
|
68
|
+
readonly name: TFn;
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* Extract the inputs array for a specific function
|
|
72
|
+
*/
|
|
73
|
+
type FunctionInputs<TAbi extends AbiDefinition, TFn extends string> = FindFunction<TAbi, TFn>['inputs'];
|
|
74
|
+
/**
|
|
75
|
+
* Map an inputs tuple to a params object `{ inputName: string }`
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* type Params = FunctionParams<typeof LOCKUP_PRIME_ABI, 'lock'>
|
|
80
|
+
* // => { amount: string; tier: string }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export type FunctionParams<TAbi extends AbiDefinition, TFn extends string> = {
|
|
84
|
+
[K in FunctionInputs<TAbi, TFn>[number] as K['name']]: string;
|
|
85
|
+
};
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=abi-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi-types.d.ts","sourceRoot":"","sources":["../../src/contracts/abi-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE;QACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAA;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,CAAA;IACpC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,GAAG,EAAE,SAAS,WAAW,EAAE,CAAA;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,CAAC,cAAc,CAAC,CAAA;AAE5E;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAEpF;;GAEG;AACH,KAAK,YAAY,CAChB,IAAI,SAAS,aAAa,EAC1B,GAAG,SAAS,MAAM,IACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CAAA;AAExD;;GAEG;AACH,KAAK,cAAc,CAClB,IAAI,SAAS,aAAa,EAC1B,GAAG,SAAS,MAAM,IACf,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAA;AAErC;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,CACzB,IAAI,SAAS,aAAa,EAC1B,GAAG,SAAS,MAAM,IACf;KACF,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM;CAC7D,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic ABI Type Extractors
|
|
3
|
+
*
|
|
4
|
+
* Type-level utilities that extract TypeScript types from `as const` ABI objects.
|
|
5
|
+
* These enable compile-time safety for contract calls without any runtime overhead.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=abi-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi-types.js","sourceRoot":"","sources":["../../src/contracts/abi-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coin Contract (Special Case)
|
|
3
|
+
*
|
|
4
|
+
* The Coin contract is a built-in native contract with no WASM ABI file.
|
|
5
|
+
* It differs from WASM contracts:
|
|
6
|
+
* - First arg (recipient) is raw binary Uint8Array from fromBase58(), not a UTF-8 string
|
|
7
|
+
* - Amount requires toAtomicAma() conversion
|
|
8
|
+
*
|
|
9
|
+
* This module provides a dedicated builder that handles these special encodings
|
|
10
|
+
* while returning a standard ContractCall for uniform consumption by TransactionBuilder.
|
|
11
|
+
*/
|
|
12
|
+
import type { ContractCall } from './contract-call';
|
|
13
|
+
/**
|
|
14
|
+
* Parameters for building a Coin transfer call
|
|
15
|
+
*/
|
|
16
|
+
export interface CoinTransferParams {
|
|
17
|
+
/** Base58-encoded recipient address */
|
|
18
|
+
recipient: string;
|
|
19
|
+
/** Amount in human-readable units (e.g. 10.5 AMA) */
|
|
20
|
+
amount: number | string;
|
|
21
|
+
/** Token symbol (e.g. 'AMA') */
|
|
22
|
+
symbol: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Build a Coin transfer ContractCall.
|
|
26
|
+
*
|
|
27
|
+
* Handles the special encoding requirements of the Coin contract:
|
|
28
|
+
* - recipient is decoded from Base58 to raw Uint8Array
|
|
29
|
+
* - amount is converted to atomic units via toAtomicAma()
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* const call = buildCoinTransfer({
|
|
34
|
+
* recipient: '5Kd3N...',
|
|
35
|
+
* amount: 10.5,
|
|
36
|
+
* symbol: 'AMA'
|
|
37
|
+
* })
|
|
38
|
+
* TransactionBuilder.signCall(privateKey, call)
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function buildCoinTransfer(params: CoinTransferParams): ContractCall;
|
|
42
|
+
//# sourceMappingURL=coin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coin.d.ts","sourceRoot":"","sources":["../../src/contracts/coin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAU1E"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coin Contract (Special Case)
|
|
3
|
+
*
|
|
4
|
+
* The Coin contract is a built-in native contract with no WASM ABI file.
|
|
5
|
+
* It differs from WASM contracts:
|
|
6
|
+
* - First arg (recipient) is raw binary Uint8Array from fromBase58(), not a UTF-8 string
|
|
7
|
+
* - Amount requires toAtomicAma() conversion
|
|
8
|
+
*
|
|
9
|
+
* This module provides a dedicated builder that handles these special encodings
|
|
10
|
+
* while returning a standard ContractCall for uniform consumption by TransactionBuilder.
|
|
11
|
+
*/
|
|
12
|
+
import { toAtomicAma } from '../conversion';
|
|
13
|
+
import { fromBase58 } from '../encoding';
|
|
14
|
+
/**
|
|
15
|
+
* Build a Coin transfer ContractCall.
|
|
16
|
+
*
|
|
17
|
+
* Handles the special encoding requirements of the Coin contract:
|
|
18
|
+
* - recipient is decoded from Base58 to raw Uint8Array
|
|
19
|
+
* - amount is converted to atomic units via toAtomicAma()
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const call = buildCoinTransfer({
|
|
24
|
+
* recipient: '5Kd3N...',
|
|
25
|
+
* amount: 10.5,
|
|
26
|
+
* symbol: 'AMA'
|
|
27
|
+
* })
|
|
28
|
+
* TransactionBuilder.signCall(privateKey, call)
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function buildCoinTransfer(params) {
|
|
32
|
+
return {
|
|
33
|
+
contract: 'Coin',
|
|
34
|
+
method: 'transfer',
|
|
35
|
+
args: [
|
|
36
|
+
fromBase58(params.recipient),
|
|
37
|
+
toAtomicAma(params.amount).toString(),
|
|
38
|
+
params.symbol
|
|
39
|
+
]
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=coin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coin.js","sourceRoot":"","sources":["../../src/contracts/coin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAexC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC3D,OAAO;QACN,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE;YACL,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;YAC5B,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;YACrC,MAAM,CAAC,MAAM;SACb;KACD,CAAA;AACF,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core ContractCall Abstraction
|
|
3
|
+
*
|
|
4
|
+
* Provides a generic, ABI-driven way to build contract calls with both
|
|
5
|
+
* compile-time type safety and runtime validation.
|
|
6
|
+
*/
|
|
7
|
+
import type { SerializableValue } from '../types';
|
|
8
|
+
import type { AbiDefinition, ExtractFunctionNames, FunctionParams } from './abi-types';
|
|
9
|
+
/**
|
|
10
|
+
* A fully-resolved contract call ready for TransactionBuilder.
|
|
11
|
+
*
|
|
12
|
+
* The type parameters are optional and used only for documentation;
|
|
13
|
+
* at runtime this is just `{ contract, method, args }`.
|
|
14
|
+
*/
|
|
15
|
+
export interface ContractCall<_TAbi extends AbiDefinition = AbiDefinition, _TFn extends string = string> {
|
|
16
|
+
/** Contract name (e.g. 'LockupPrime', 'Lockup', 'Coin') */
|
|
17
|
+
readonly contract: string;
|
|
18
|
+
/** Function/method name (e.g. 'lock', 'unlock', 'transfer') */
|
|
19
|
+
readonly method: string;
|
|
20
|
+
/** Serialized args array ready for VecPack encoding */
|
|
21
|
+
readonly args: SerializableValue[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Build a type-safe ContractCall from an ABI definition.
|
|
25
|
+
*
|
|
26
|
+
* Compile-time:
|
|
27
|
+
* - `functionName` is constrained to the ABI's function name union
|
|
28
|
+
* - `params` is typed per the function's declared inputs
|
|
29
|
+
*
|
|
30
|
+
* Runtime:
|
|
31
|
+
* - Validates function exists in ABI
|
|
32
|
+
* - Validates all required params are present
|
|
33
|
+
* - Validates enum constraints on inputs that declare them
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import { LOCKUP_PRIME_ABI } from './lockup-prime/abi'
|
|
38
|
+
*
|
|
39
|
+
* const call = buildContractCall(LOCKUP_PRIME_ABI, 'lock', {
|
|
40
|
+
* amount: '1000000000',
|
|
41
|
+
* tier: '30d'
|
|
42
|
+
* })
|
|
43
|
+
* // call.contract === 'LockupPrime'
|
|
44
|
+
* // call.method === 'lock'
|
|
45
|
+
* // call.args === ['1000000000', '30d']
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function buildContractCall<TAbi extends AbiDefinition, TFn extends ExtractFunctionNames<TAbi>>(abi: TAbi, functionName: TFn, params: FunctionParams<TAbi, TFn & string>): ContractCall<TAbi, TFn & string>;
|
|
49
|
+
//# sourceMappingURL=contract-call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-call.d.ts","sourceRoot":"","sources":["../../src/contracts/contract-call.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAuB,oBAAoB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE3G;;;;;GAKG;AACH,MAAM,WAAW,YAAY,CAC5B,KAAK,SAAS,aAAa,GAAG,aAAa,EAC3C,IAAI,SAAS,MAAM,GAAG,MAAM;IAE5B,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAA;CAClC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,SAAS,aAAa,EAC1B,GAAG,SAAS,oBAAoB,CAAC,IAAI,CAAC,EAEtC,GAAG,EAAE,IAAI,EACT,YAAY,EAAE,GAAG,EACjB,MAAM,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,GACxC,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC,CAkClC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core ContractCall Abstraction
|
|
3
|
+
*
|
|
4
|
+
* Provides a generic, ABI-driven way to build contract calls with both
|
|
5
|
+
* compile-time type safety and runtime validation.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Build a type-safe ContractCall from an ABI definition.
|
|
9
|
+
*
|
|
10
|
+
* Compile-time:
|
|
11
|
+
* - `functionName` is constrained to the ABI's function name union
|
|
12
|
+
* - `params` is typed per the function's declared inputs
|
|
13
|
+
*
|
|
14
|
+
* Runtime:
|
|
15
|
+
* - Validates function exists in ABI
|
|
16
|
+
* - Validates all required params are present
|
|
17
|
+
* - Validates enum constraints on inputs that declare them
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { LOCKUP_PRIME_ABI } from './lockup-prime/abi'
|
|
22
|
+
*
|
|
23
|
+
* const call = buildContractCall(LOCKUP_PRIME_ABI, 'lock', {
|
|
24
|
+
* amount: '1000000000',
|
|
25
|
+
* tier: '30d'
|
|
26
|
+
* })
|
|
27
|
+
* // call.contract === 'LockupPrime'
|
|
28
|
+
* // call.method === 'lock'
|
|
29
|
+
* // call.args === ['1000000000', '30d']
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function buildContractCall(abi, functionName, params) {
|
|
33
|
+
const fn = abi.abi.find((f) => f.name === functionName);
|
|
34
|
+
if (!fn) {
|
|
35
|
+
throw new Error(`Function "${String(functionName)}" not found in ${abi.contractName} ABI`);
|
|
36
|
+
}
|
|
37
|
+
const args = [];
|
|
38
|
+
for (const input of fn.inputs) {
|
|
39
|
+
const value = params[input.name];
|
|
40
|
+
if (value === undefined || value === null) {
|
|
41
|
+
throw new Error(`Missing required parameter "${input.name}" for ${abi.contractName}.${String(functionName)}`);
|
|
42
|
+
}
|
|
43
|
+
if (input.enum && input.enum.length > 0) {
|
|
44
|
+
if (!input.enum.includes(value)) {
|
|
45
|
+
throw new Error(`Invalid value "${value}" for parameter "${input.name}". ` +
|
|
46
|
+
`Expected one of: ${input.enum.join(', ')}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
args.push(value);
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
contract: abi.contractName,
|
|
53
|
+
method: functionName,
|
|
54
|
+
args
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=contract-call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-call.js","sourceRoot":"","sources":["../../src/contracts/contract-call.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuBH;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,iBAAiB,CAIhC,GAAS,EACT,YAAiB,EACjB,MAA0C;IAE1C,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IACvD,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACd,aAAa,MAAM,CAAC,YAAY,CAAC,kBAAkB,GAAG,CAAC,YAAY,MAAM,CACzE,CAAA;IACF,CAAC;IAED,MAAM,IAAI,GAAwB,EAAE,CAAA;IACpC,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAI,MAAiC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CACd,+BAA+B,KAAK,CAAC,IAAI,SAAS,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,EAAE,CAC5F,CAAA;QACF,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACd,kBAAkB,KAAK,oBAAoB,KAAK,CAAC,IAAI,KAAK;oBAC1D,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3C,CAAA;YACF,CAAC;QACF,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,CAAC;IAED,OAAO;QACN,QAAQ,EAAE,GAAG,CAAC,YAAyC;QACvD,MAAM,EAAE,YAAsB;QAC9B,IAAI;KACJ,CAAA;AACF,CAAC"}
|