@amadeus-protocol/sdk 1.0.5 → 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/formatters.d.ts +1 -1
- package/dist/formatters.d.ts.map +1 -1
- package/dist/formatters.js +2 -2
- package/dist/formatters.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
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ABI-Driven Contract Factory
|
|
3
|
+
*
|
|
4
|
+
* Generates fully-typed contract interfaces from `as const` ABI definitions,
|
|
5
|
+
* similar to viem's getContract() or ethers typechain.
|
|
6
|
+
*
|
|
7
|
+
* Each function declared in the ABI becomes a typed method on the contract
|
|
8
|
+
* object — with autocomplete for function names and typed params derived
|
|
9
|
+
* from the ABI inputs.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { createContract, LOCKUP_PRIME_ABI, toAtomicAma } from '@amadeus-protocol/sdk'
|
|
14
|
+
*
|
|
15
|
+
* // Unsigned — returns ContractCall for TransactionBuilder.signCall()
|
|
16
|
+
* const lockupPrime = createContract(LOCKUP_PRIME_ABI)
|
|
17
|
+
* const call = lockupPrime.lock({ amount: toAtomicAma(100).toString(), tier: '30d' })
|
|
18
|
+
* const { txHash, txPacked } = TransactionBuilder.signCall(privateKey, call)
|
|
19
|
+
*
|
|
20
|
+
* // Signed — bind a private key, methods return BuildTransactionResult directly
|
|
21
|
+
* const signed = createContract(LOCKUP_PRIME_ABI).connect(privateKey)
|
|
22
|
+
* const result = signed.lock({ amount: toAtomicAma(100).toString(), tier: '30d' })
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import type { BuildTransactionResult } from '../types';
|
|
26
|
+
import type { AbiDefinition, AbiInput } from './abi-types';
|
|
27
|
+
import type { ContractCall } from './contract-call';
|
|
28
|
+
/**
|
|
29
|
+
* Map an ABI inputs tuple to a params object: `{ inputName: string }`
|
|
30
|
+
*/
|
|
31
|
+
type InputsToParams<Inputs extends readonly AbiInput[]> = {
|
|
32
|
+
readonly [I in Inputs[number] as I['name']]: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* For each function in the ABI, generate a typed method signature.
|
|
36
|
+
*
|
|
37
|
+
* - Functions with inputs → `(params: { name: string, ... }) => ContractCall`
|
|
38
|
+
* - Functions without inputs → `() => ContractCall`
|
|
39
|
+
*/
|
|
40
|
+
type ContractMethods<TAbi extends AbiDefinition> = {
|
|
41
|
+
readonly [F in TAbi['abi'][number] as F['name']]: F['inputs'] extends readonly [] ? () => ContractCall : (params: InputsToParams<F['inputs']>) => ContractCall;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Same as ContractMethods but methods return signed `BuildTransactionResult`.
|
|
45
|
+
*/
|
|
46
|
+
type SignedContractMethods<TAbi extends AbiDefinition> = {
|
|
47
|
+
readonly [F in TAbi['abi'][number] as F['name']]: F['inputs'] extends readonly [] ? () => BuildTransactionResult : (params: InputsToParams<F['inputs']>) => BuildTransactionResult;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* A typed contract interface generated from an ABI definition.
|
|
51
|
+
*
|
|
52
|
+
* Each ABI function is exposed as a method that returns a `ContractCall`
|
|
53
|
+
* (ready for `TransactionBuilder.signCall()`).
|
|
54
|
+
*
|
|
55
|
+
* Call `.connect(privateKey)` to get a `SignedContract` where methods
|
|
56
|
+
* return `BuildTransactionResult` directly.
|
|
57
|
+
*/
|
|
58
|
+
export type TypedContract<TAbi extends AbiDefinition> = ContractMethods<TAbi> & {
|
|
59
|
+
/** The original ABI definition */
|
|
60
|
+
readonly abi: TAbi;
|
|
61
|
+
/** Contract name extracted from ABI */
|
|
62
|
+
readonly contractName: TAbi['contractName'];
|
|
63
|
+
/**
|
|
64
|
+
* Bind a signer to produce a `SignedContract` where every method
|
|
65
|
+
* derives keys, builds, and signs in one step.
|
|
66
|
+
*
|
|
67
|
+
* @param privateKey - Base58 encoded private key (seed)
|
|
68
|
+
*/
|
|
69
|
+
connect(privateKey: string): SignedContract<TAbi>;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* A signer-bound contract interface.
|
|
73
|
+
*
|
|
74
|
+
* Every ABI function is a method that returns `BuildTransactionResult`
|
|
75
|
+
* (txHash + txPacked ready for submission).
|
|
76
|
+
*/
|
|
77
|
+
export type SignedContract<TAbi extends AbiDefinition> = SignedContractMethods<TAbi> & {
|
|
78
|
+
/** The original ABI definition */
|
|
79
|
+
readonly abi: TAbi;
|
|
80
|
+
/** Contract name extracted from ABI */
|
|
81
|
+
readonly contractName: TAbi['contractName'];
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Create a typed contract interface from an ABI definition.
|
|
85
|
+
*
|
|
86
|
+
* Returns an object where each ABI function is a method with fully typed
|
|
87
|
+
* params (derived from ABI inputs) and autocomplete on function names.
|
|
88
|
+
*
|
|
89
|
+
* @param abi - An ABI definition object (must be declared `as const`)
|
|
90
|
+
* @returns A typed `TypedContract<TAbi>` with methods for each ABI function
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* import { createContract, LOCKUP_PRIME_ABI, LOCKUP_ABI, toAtomicAma } from '@amadeus-protocol/sdk'
|
|
95
|
+
*
|
|
96
|
+
* // Each ABI function becomes a typed method:
|
|
97
|
+
* const lockupPrime = createContract(LOCKUP_PRIME_ABI)
|
|
98
|
+
* lockupPrime.lock({ amount: toAtomicAma(100).toString(), tier: '30d' }) // typed
|
|
99
|
+
* lockupPrime.unlock({ vaultIndex: '3' }) // typed
|
|
100
|
+
* lockupPrime.daily_checkin({ vaultIndex: '7' }) // typed
|
|
101
|
+
*
|
|
102
|
+
* // Sign the call:
|
|
103
|
+
* const call = lockupPrime.lock({ amount: '100000000000', tier: '30d' })
|
|
104
|
+
* const { txHash, txPacked } = TransactionBuilder.signCall(privateKey, call)
|
|
105
|
+
*
|
|
106
|
+
* // Or bind a signer:
|
|
107
|
+
* const signed = lockupPrime.connect(privateKey)
|
|
108
|
+
* const result = signed.lock({ amount: '100000000000', tier: '30d' })
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export declare function createContract<TAbi extends AbiDefinition>(abi: TAbi): TypedContract<TAbi>;
|
|
112
|
+
export {};
|
|
113
|
+
//# sourceMappingURL=contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/contracts/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAKnD;;GAEG;AACH,KAAK,cAAc,CAAC,MAAM,SAAS,SAAS,QAAQ,EAAE,IAAI;IACzD,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,MAAM;CACnD,CAAA;AAED;;;;;GAKG;AACH,KAAK,eAAe,CAAC,IAAI,SAAS,aAAa,IAAI;IAClD,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,SAAS,EAAE,GAC9E,MAAM,YAAY,GAClB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,YAAY;CACxD,CAAA;AAED;;GAEG;AACH,KAAK,qBAAqB,CAAC,IAAI,SAAS,aAAa,IAAI;IACxD,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,SAAS,SAAS,EAAE,GAC9E,MAAM,sBAAsB,GAC5B,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,sBAAsB;CAClE,CAAA;AAID;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,CAAC,IAAI,SAAS,aAAa,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG;IAC/E,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;IAClB,uCAAuC;IACvC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;IAC3C;;;;;OAKG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;CACjD,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,aAAa,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG;IACtF,kCAAkC;IAClC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAA;IAClB,uCAAuC;IACvC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;CAC3C,CAAA;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,cAAc,CAAC,IAAI,SAAS,aAAa,EAAE,GAAG,EAAE,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,CA6CzF"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ABI-Driven Contract Factory
|
|
3
|
+
*
|
|
4
|
+
* Generates fully-typed contract interfaces from `as const` ABI definitions,
|
|
5
|
+
* similar to viem's getContract() or ethers typechain.
|
|
6
|
+
*
|
|
7
|
+
* Each function declared in the ABI becomes a typed method on the contract
|
|
8
|
+
* object — with autocomplete for function names and typed params derived
|
|
9
|
+
* from the ABI inputs.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { createContract, LOCKUP_PRIME_ABI, toAtomicAma } from '@amadeus-protocol/sdk'
|
|
14
|
+
*
|
|
15
|
+
* // Unsigned — returns ContractCall for TransactionBuilder.signCall()
|
|
16
|
+
* const lockupPrime = createContract(LOCKUP_PRIME_ABI)
|
|
17
|
+
* const call = lockupPrime.lock({ amount: toAtomicAma(100).toString(), tier: '30d' })
|
|
18
|
+
* const { txHash, txPacked } = TransactionBuilder.signCall(privateKey, call)
|
|
19
|
+
*
|
|
20
|
+
* // Signed — bind a private key, methods return BuildTransactionResult directly
|
|
21
|
+
* const signed = createContract(LOCKUP_PRIME_ABI).connect(privateKey)
|
|
22
|
+
* const result = signed.lock({ amount: toAtomicAma(100).toString(), tier: '30d' })
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
import { signContractCall } from '../signing';
|
|
26
|
+
import { buildContractCall } from './contract-call';
|
|
27
|
+
// ── Factory functions ───────────────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Create a typed contract interface from an ABI definition.
|
|
30
|
+
*
|
|
31
|
+
* Returns an object where each ABI function is a method with fully typed
|
|
32
|
+
* params (derived from ABI inputs) and autocomplete on function names.
|
|
33
|
+
*
|
|
34
|
+
* @param abi - An ABI definition object (must be declared `as const`)
|
|
35
|
+
* @returns A typed `TypedContract<TAbi>` with methods for each ABI function
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { createContract, LOCKUP_PRIME_ABI, LOCKUP_ABI, toAtomicAma } from '@amadeus-protocol/sdk'
|
|
40
|
+
*
|
|
41
|
+
* // Each ABI function becomes a typed method:
|
|
42
|
+
* const lockupPrime = createContract(LOCKUP_PRIME_ABI)
|
|
43
|
+
* lockupPrime.lock({ amount: toAtomicAma(100).toString(), tier: '30d' }) // typed
|
|
44
|
+
* lockupPrime.unlock({ vaultIndex: '3' }) // typed
|
|
45
|
+
* lockupPrime.daily_checkin({ vaultIndex: '7' }) // typed
|
|
46
|
+
*
|
|
47
|
+
* // Sign the call:
|
|
48
|
+
* const call = lockupPrime.lock({ amount: '100000000000', tier: '30d' })
|
|
49
|
+
* const { txHash, txPacked } = TransactionBuilder.signCall(privateKey, call)
|
|
50
|
+
*
|
|
51
|
+
* // Or bind a signer:
|
|
52
|
+
* const signed = lockupPrime.connect(privateKey)
|
|
53
|
+
* const result = signed.lock({ amount: '100000000000', tier: '30d' })
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export function createContract(abi) {
|
|
57
|
+
if (!abi || typeof abi !== 'object') {
|
|
58
|
+
throw new Error('Invalid ABI: expected an object');
|
|
59
|
+
}
|
|
60
|
+
if (typeof abi.contractName !== 'string' || !abi.contractName) {
|
|
61
|
+
throw new Error('Invalid ABI: missing or empty "contractName"');
|
|
62
|
+
}
|
|
63
|
+
if (!Array.isArray(abi.abi)) {
|
|
64
|
+
throw new Error(`Invalid ABI for ${abi.contractName}: "abi" must be an array of functions`);
|
|
65
|
+
}
|
|
66
|
+
for (const fn of abi.abi) {
|
|
67
|
+
if (fn.type !== 'function') {
|
|
68
|
+
throw new Error(`Invalid ABI for ${abi.contractName}: entry "${fn.name ?? '?'}" has type "${fn.type}", expected "function"`);
|
|
69
|
+
}
|
|
70
|
+
if (typeof fn.name !== 'string' || !fn.name) {
|
|
71
|
+
throw new Error(`Invalid ABI for ${abi.contractName}: function entry missing "name"`);
|
|
72
|
+
}
|
|
73
|
+
if (!Array.isArray(fn.inputs)) {
|
|
74
|
+
throw new Error(`Invalid ABI for ${abi.contractName}: function "${fn.name}" missing "inputs" array`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const contract = {
|
|
78
|
+
abi,
|
|
79
|
+
contractName: abi.contractName,
|
|
80
|
+
connect(privateKey) {
|
|
81
|
+
return createSignedContract(abi, privateKey);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
for (const fn of abi.abi) {
|
|
85
|
+
contract[fn.name] = (params) => {
|
|
86
|
+
return buildContractCall(abi, fn.name, (params ?? {}));
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return contract;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create a signer-bound contract where each method builds + signs in one step.
|
|
93
|
+
*/
|
|
94
|
+
function createSignedContract(abi, privateKey) {
|
|
95
|
+
const contract = {
|
|
96
|
+
abi,
|
|
97
|
+
contractName: abi.contractName
|
|
98
|
+
};
|
|
99
|
+
for (const fn of abi.abi) {
|
|
100
|
+
contract[fn.name] = (params) => {
|
|
101
|
+
const call = buildContractCall(abi, fn.name, (params ?? {}));
|
|
102
|
+
return signContractCall(privateKey, call);
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return contract;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/contracts/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAsEnD,uEAAuE;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,cAAc,CAA6B,GAAS;IACnE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IAChE,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,YAAY,uCAAuC,CAAC,CAAA;IAC5F,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACd,mBAAmB,GAAG,CAAC,YAAY,YAAY,EAAE,CAAC,IAAI,IAAI,GAAG,eAAe,EAAE,CAAC,IAAI,wBAAwB,CAC3G,CAAA;QACF,CAAC;QACD,IAAI,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,YAAY,iCAAiC,CAAC,CAAA;QACtF,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACd,mBAAmB,GAAG,CAAC,YAAY,eAAe,EAAE,CAAC,IAAI,0BAA0B,CACnF,CAAA;QACF,CAAC;IACF,CAAC;IAED,MAAM,QAAQ,GAA4B;QACzC,GAAG;QACH,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,OAAO,CAAC,UAAkB;YACzB,OAAO,oBAAoB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QAC7C,CAAC;KACD,CAAA;IAED,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAA+B,EAAE,EAAE;YACvD,OAAO,iBAAiB,CACvB,GAAG,EACH,EAAE,CAAC,IAAa,EAChB,CAAC,MAAM,IAAI,EAAE,CAAU,CACvB,CAAA;QACF,CAAC,CAAA;IACF,CAAC;IAED,OAAO,QAA+B,CAAA;AACvC,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAC5B,GAAS,EACT,UAAkB;IAElB,MAAM,QAAQ,GAA4B;QACzC,GAAG;QACH,YAAY,EAAE,GAAG,CAAC,YAAY;KAC9B,CAAA;IAED,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;QAC1B,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAA+B,EAAE,EAAE;YACvD,MAAM,IAAI,GAAG,iBAAiB,CAC7B,GAAG,EACH,EAAE,CAAC,IAAa,EAChB,CAAC,MAAM,IAAI,EAAE,CAAU,CACvB,CAAA;YACD,OAAO,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAC1C,CAAC,CAAA;IACF,CAAC;IAED,OAAO,QAAgC,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,gBAAgB,CAAA;AAC9B,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lockup Smart Contract ABI
|
|
3
|
+
*
|
|
4
|
+
* Standard ABI format
|
|
5
|
+
* Based on: /root/node/ex/native/rdb/src/consensus/bic/lockup.rs
|
|
6
|
+
*/
|
|
7
|
+
export declare const LOCKUP_ABI: {
|
|
8
|
+
readonly contractName: "Lockup";
|
|
9
|
+
readonly contractVersion: "1.0.0";
|
|
10
|
+
readonly abi: readonly [{
|
|
11
|
+
readonly type: "function";
|
|
12
|
+
readonly name: "unlock";
|
|
13
|
+
readonly inputs: readonly [{
|
|
14
|
+
readonly name: "vaultIndex";
|
|
15
|
+
readonly type: "string";
|
|
16
|
+
readonly description: "Vault index to unlock (as string, e.g., \"0\", \"1\", \"2\")";
|
|
17
|
+
}];
|
|
18
|
+
readonly outputs: readonly [];
|
|
19
|
+
readonly stateMutability: "nonpayable";
|
|
20
|
+
readonly description: "Unlock a vault and receive locked tokens";
|
|
21
|
+
readonly requirements: readonly ["vault must exist", "vault must belong to caller", "entry_height >= unlock_height"];
|
|
22
|
+
readonly storage: {
|
|
23
|
+
readonly reads: readonly [{
|
|
24
|
+
readonly key: "bic:lockup:vault:{caller}:{vault_index}";
|
|
25
|
+
readonly value: "{unlock_height}-{amount}-{symbol}";
|
|
26
|
+
readonly description: "Reads vault data";
|
|
27
|
+
}];
|
|
28
|
+
readonly writes: readonly [{
|
|
29
|
+
readonly key: "bic:lockup:vault:{caller}:{vault_index}";
|
|
30
|
+
readonly operation: "delete";
|
|
31
|
+
readonly description: "Deletes vault after unlock";
|
|
32
|
+
}, {
|
|
33
|
+
readonly key: "bic:coin:balance:{caller}:AMA";
|
|
34
|
+
readonly operation: "increment";
|
|
35
|
+
readonly amount: "amount";
|
|
36
|
+
readonly description: "Returns locked AMA tokens";
|
|
37
|
+
}];
|
|
38
|
+
};
|
|
39
|
+
}];
|
|
40
|
+
readonly storage: {
|
|
41
|
+
readonly keys: readonly [{
|
|
42
|
+
readonly name: "vault";
|
|
43
|
+
readonly pattern: "bic:lockup:vault:{account}:{index}";
|
|
44
|
+
readonly type: "mapping";
|
|
45
|
+
readonly description: "Lockup vault storage key";
|
|
46
|
+
readonly valueFormat: "string";
|
|
47
|
+
readonly valueSchema: {
|
|
48
|
+
readonly type: "string";
|
|
49
|
+
readonly format: "{unlock_height}-{amount}-{symbol}";
|
|
50
|
+
readonly description: "Vault data format: unlock_height-amount-symbol";
|
|
51
|
+
};
|
|
52
|
+
readonly query: {
|
|
53
|
+
readonly method: "POST";
|
|
54
|
+
readonly endpoint: "/contract/get_prefix";
|
|
55
|
+
readonly prefix: "bic:lockup:vault:{account_binary}:";
|
|
56
|
+
readonly description: "Get all vaults for an account";
|
|
57
|
+
};
|
|
58
|
+
}];
|
|
59
|
+
};
|
|
60
|
+
readonly errors: readonly [];
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=abi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.d.ts","sourceRoot":"","sources":["../../../src/contracts/lockup/abi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEb,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lockup Smart Contract ABI
|
|
3
|
+
*
|
|
4
|
+
* Standard ABI format
|
|
5
|
+
* Based on: /root/node/ex/native/rdb/src/consensus/bic/lockup.rs
|
|
6
|
+
*/
|
|
7
|
+
export const LOCKUP_ABI = {
|
|
8
|
+
contractName: 'Lockup',
|
|
9
|
+
contractVersion: '1.0.0',
|
|
10
|
+
abi: [
|
|
11
|
+
{
|
|
12
|
+
type: 'function',
|
|
13
|
+
name: 'unlock',
|
|
14
|
+
inputs: [
|
|
15
|
+
{
|
|
16
|
+
name: 'vaultIndex',
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'Vault index to unlock (as string, e.g., "0", "1", "2")'
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
outputs: [],
|
|
22
|
+
stateMutability: 'nonpayable',
|
|
23
|
+
description: 'Unlock a vault and receive locked tokens',
|
|
24
|
+
requirements: [
|
|
25
|
+
'vault must exist',
|
|
26
|
+
'vault must belong to caller',
|
|
27
|
+
'entry_height >= unlock_height'
|
|
28
|
+
],
|
|
29
|
+
storage: {
|
|
30
|
+
reads: [
|
|
31
|
+
{
|
|
32
|
+
key: 'bic:lockup:vault:{caller}:{vault_index}',
|
|
33
|
+
value: '{unlock_height}-{amount}-{symbol}',
|
|
34
|
+
description: 'Reads vault data'
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
writes: [
|
|
38
|
+
{
|
|
39
|
+
key: 'bic:lockup:vault:{caller}:{vault_index}',
|
|
40
|
+
operation: 'delete',
|
|
41
|
+
description: 'Deletes vault after unlock'
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: 'bic:coin:balance:{caller}:AMA',
|
|
45
|
+
operation: 'increment',
|
|
46
|
+
amount: 'amount',
|
|
47
|
+
description: 'Returns locked AMA tokens'
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
storage: {
|
|
54
|
+
keys: [
|
|
55
|
+
{
|
|
56
|
+
name: 'vault',
|
|
57
|
+
pattern: 'bic:lockup:vault:{account}:{index}',
|
|
58
|
+
type: 'mapping',
|
|
59
|
+
description: 'Lockup vault storage key',
|
|
60
|
+
valueFormat: 'string',
|
|
61
|
+
valueSchema: {
|
|
62
|
+
type: 'string',
|
|
63
|
+
format: '{unlock_height}-{amount}-{symbol}',
|
|
64
|
+
description: 'Vault data format: unlock_height-amount-symbol'
|
|
65
|
+
},
|
|
66
|
+
query: {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
endpoint: '/contract/get_prefix',
|
|
69
|
+
prefix: 'bic:lockup:vault:{account_binary}:',
|
|
70
|
+
description: 'Get all vaults for an account'
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
},
|
|
75
|
+
errors: []
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../../src/contracts/lockup/abi.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACzB,YAAY,EAAE,QAAQ;IACtB,eAAe,EAAE,OAAO;IACxB,GAAG,EAAE;QACJ;YACC,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACP;oBACC,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wDAAwD;iBACrE;aACD;YACD,OAAO,EAAE,EAAE;YACX,eAAe,EAAE,YAAY;YAC7B,WAAW,EAAE,0CAA0C;YACvD,YAAY,EAAE;gBACb,kBAAkB;gBAClB,6BAA6B;gBAC7B,+BAA+B;aAC/B;YACD,OAAO,EAAE;gBACR,KAAK,EAAE;oBACN;wBACC,GAAG,EAAE,yCAAyC;wBAC9C,KAAK,EAAE,mCAAmC;wBAC1C,WAAW,EAAE,kBAAkB;qBAC/B;iBACD;gBACD,MAAM,EAAE;oBACP;wBACC,GAAG,EAAE,yCAAyC;wBAC9C,SAAS,EAAE,QAAQ;wBACnB,WAAW,EAAE,4BAA4B;qBACzC;oBACD;wBACC,GAAG,EAAE,+BAA+B;wBACpC,SAAS,EAAE,WAAW;wBACtB,MAAM,EAAE,QAAQ;wBAChB,WAAW,EAAE,2BAA2B;qBACxC;iBACD;aACD;SACD;KACD;IACD,OAAO,EAAE;QACR,IAAI,EAAE;YACL;gBACC,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,oCAAoC;gBAC7C,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,0BAA0B;gBACvC,WAAW,EAAE,QAAQ;gBACrB,WAAW,EAAE;oBACZ,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,mCAAmC;oBAC3C,WAAW,EAAE,gDAAgD;iBAC7D;gBACD,KAAK,EAAE;oBACN,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,sBAAsB;oBAChC,MAAM,EAAE,oCAAoC;oBAC5C,WAAW,EAAE,+BAA+B;iBAC5C;aACD;SACD;KACD;IACD,MAAM,EAAE,EAAE;CACD,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lockup Contract Call Builders
|
|
3
|
+
*
|
|
4
|
+
* Typed convenience builders that handle domain-to-ABI translation
|
|
5
|
+
* and return ContractCall objects.
|
|
6
|
+
*/
|
|
7
|
+
import type { ContractCall } from '../contract-call';
|
|
8
|
+
import { LOCKUP_ABI } from './abi';
|
|
9
|
+
/**
|
|
10
|
+
* Build a Lockup `unlock` call.
|
|
11
|
+
*
|
|
12
|
+
* @param params.vaultIndex - Vault index to unlock
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const call = buildLockupUnlock({ vaultIndex: 5 })
|
|
17
|
+
* TransactionBuilder.signCall(privateKey, call)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildLockupUnlock(params: {
|
|
21
|
+
vaultIndex: number | string;
|
|
22
|
+
}): ContractCall<typeof LOCKUP_ABI, 'unlock'>;
|
|
23
|
+
//# sourceMappingURL=calls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../src/contracts/lockup/calls.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACzC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B,GAAG,YAAY,CAAC,OAAO,UAAU,EAAE,QAAQ,CAAC,CAI5C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lockup Contract Call Builders
|
|
3
|
+
*
|
|
4
|
+
* Typed convenience builders that handle domain-to-ABI translation
|
|
5
|
+
* and return ContractCall objects.
|
|
6
|
+
*/
|
|
7
|
+
import { buildContractCall } from '../contract-call';
|
|
8
|
+
import { LOCKUP_ABI } from './abi';
|
|
9
|
+
/**
|
|
10
|
+
* Build a Lockup `unlock` call.
|
|
11
|
+
*
|
|
12
|
+
* @param params.vaultIndex - Vault index to unlock
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```ts
|
|
16
|
+
* const call = buildLockupUnlock({ vaultIndex: 5 })
|
|
17
|
+
* TransactionBuilder.signCall(privateKey, call)
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function buildLockupUnlock(params) {
|
|
21
|
+
return buildContractCall(LOCKUP_ABI, 'unlock', {
|
|
22
|
+
vaultIndex: params.vaultIndex.toString()
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=calls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.js","sourceRoot":"","sources":["../../../src/contracts/lockup/calls.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAElC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAEjC;IACA,OAAO,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE;QAC9C,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE;KACxC,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { LockupAbiError, LockupAbiFunction, LockupAbiStorageKey } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Lockup Contract Interface
|
|
4
|
+
* Provides access to contract ABI and transaction building utilities
|
|
5
|
+
*/
|
|
6
|
+
export declare class Lockup {
|
|
7
|
+
/** Get function ABI by name */
|
|
8
|
+
static getFunction(name: string): LockupAbiFunction | undefined;
|
|
9
|
+
/** Get error by code */
|
|
10
|
+
static getError(_code: string): LockupAbiError | undefined;
|
|
11
|
+
/** Get storage key by name */
|
|
12
|
+
static getStorageKey(name: string): LockupAbiStorageKey | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Build transaction arguments for a function
|
|
15
|
+
* @deprecated Use `buildContractCall(LOCKUP_ABI, functionName, params)` or
|
|
16
|
+
* the typed builder `buildLockupUnlock({ vaultIndex })` instead.
|
|
17
|
+
*/
|
|
18
|
+
static buildArgs(functionName: string, params: Record<string, any>): Uint8Array[];
|
|
19
|
+
/** Get contract name */
|
|
20
|
+
static getContractName(): string;
|
|
21
|
+
/** Get key prefix for a storage key name */
|
|
22
|
+
static getKeyPrefix(keyName: string): string | undefined;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/contracts/lockup/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAErF;;;GAGG;AACH,qBAAa,MAAM;IAClB,+BAA+B;IAC/B,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI/D,wBAAwB;IACxB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI1D,8BAA8B;IAC9B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAInE;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,UAAU,EAAE;IAiBjF,wBAAwB;IACxB,MAAM,CAAC,eAAe,IAAI,MAAM;IAIhC,4CAA4C;IAC5C,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAIxD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { LOCKUP_ABI } from './abi';
|
|
2
|
+
/**
|
|
3
|
+
* Lockup Contract Interface
|
|
4
|
+
* Provides access to contract ABI and transaction building utilities
|
|
5
|
+
*/
|
|
6
|
+
export class Lockup {
|
|
7
|
+
/** Get function ABI by name */
|
|
8
|
+
static getFunction(name) {
|
|
9
|
+
return LOCKUP_ABI.abi.find((f) => f.name === name);
|
|
10
|
+
}
|
|
11
|
+
/** Get error by code */
|
|
12
|
+
static getError(_code) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
/** Get storage key by name */
|
|
16
|
+
static getStorageKey(name) {
|
|
17
|
+
return LOCKUP_ABI.storage.keys.find((k) => k.name === name);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build transaction arguments for a function
|
|
21
|
+
* @deprecated Use `buildContractCall(LOCKUP_ABI, functionName, params)` or
|
|
22
|
+
* the typed builder `buildLockupUnlock({ vaultIndex })` instead.
|
|
23
|
+
*/
|
|
24
|
+
static buildArgs(functionName, params) {
|
|
25
|
+
const func = this.getFunction(functionName);
|
|
26
|
+
if (!func) {
|
|
27
|
+
throw new Error(`Function ${functionName} not found`);
|
|
28
|
+
}
|
|
29
|
+
const args = [];
|
|
30
|
+
for (const input of func.inputs) {
|
|
31
|
+
const value = params[input.name];
|
|
32
|
+
if (value === undefined) {
|
|
33
|
+
throw new Error(`Missing parameter: ${input.name}`);
|
|
34
|
+
}
|
|
35
|
+
args.push(new TextEncoder().encode(String(value)));
|
|
36
|
+
}
|
|
37
|
+
return args;
|
|
38
|
+
}
|
|
39
|
+
/** Get contract name */
|
|
40
|
+
static getContractName() {
|
|
41
|
+
return LOCKUP_ABI.contractName;
|
|
42
|
+
}
|
|
43
|
+
/** Get key prefix for a storage key name */
|
|
44
|
+
static getKeyPrefix(keyName) {
|
|
45
|
+
const storageKey = this.getStorageKey(keyName);
|
|
46
|
+
return storageKey?.pattern.split('{')[0];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/contracts/lockup/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAGlC;;;GAGG;AACH,MAAM,OAAO,MAAM;IAClB,+BAA+B;IAC/B,MAAM,CAAC,WAAW,CAAC,IAAY;QAC9B,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAiC,CAAA;IACnF,CAAC;IAED,wBAAwB;IACxB,MAAM,CAAC,QAAQ,CAAC,KAAa;QAC5B,OAAO,SAAS,CAAA;IACjB,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,aAAa,CAAC,IAAY;QAChC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,YAAoB,EAAE,MAA2B;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,YAAY,YAAY,YAAY,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,IAAI,GAAiB,EAAE,CAAA;QAC7B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;YACpD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACnD,CAAC;QACD,OAAO,IAAI,CAAA;IACZ,CAAC;IAED,wBAAwB;IACxB,MAAM,CAAC,eAAe;QACrB,OAAO,UAAU,CAAC,YAAY,CAAA;IAC/B,CAAC;IAED,4CAA4C;IAC5C,MAAM,CAAC,YAAY,CAAC,OAAe;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contracts/lockup/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contracts/lockup/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { LockupVault, RawLockupVaultData } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Parse raw lockup vault data string into intermediate format
|
|
4
|
+
* Format: {unlock_height}-{amount}-{symbol}
|
|
5
|
+
*
|
|
6
|
+
* @param dataStr - Raw vault data string from contract state
|
|
7
|
+
* @returns Parsed data or null if invalid
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseRawLockupVaultData(dataStr: string): RawLockupVaultData | null;
|
|
10
|
+
/**
|
|
11
|
+
* Parse lockup vault data from contract state
|
|
12
|
+
* Format: {unlock_height}-{amount}-{symbol}
|
|
13
|
+
* These vaults are locked for 5 epochs (100,000 * 5 = 500,000 heights)
|
|
14
|
+
*
|
|
15
|
+
* @param vaultData - Raw vault data from contract state (string or Uint8Array)
|
|
16
|
+
* @param vaultIndex - The vault index
|
|
17
|
+
* @returns Parsed vault or null if invalid
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseLockupVaultData(vaultData: string | Uint8Array, vaultIndex: number): LockupVault | null;
|
|
20
|
+
//# sourceMappingURL=parsers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../src/contracts/lockup/parsers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAE9D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAalF;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,UAAU,EAAE,MAAM,GAChB,WAAW,GAAG,IAAI,CA+BpB"}
|