@galaxy-kj/core-stellar-sdk 2.0.0
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/LICENSE +21 -0
- package/README.md +576 -0
- package/dist/claimable-balances/claimable-balance-manager.d.ts +99 -0
- package/dist/claimable-balances/claimable-balance-manager.d.ts.map +1 -0
- package/dist/claimable-balances/claimable-balance-manager.js +352 -0
- package/dist/claimable-balances/claimable-balance-manager.js.map +1 -0
- package/dist/claimable-balances/helpers.d.ts +66 -0
- package/dist/claimable-balances/helpers.d.ts.map +1 -0
- package/dist/claimable-balances/helpers.js +179 -0
- package/dist/claimable-balances/helpers.js.map +1 -0
- package/dist/claimable-balances/index.d.ts +12 -0
- package/dist/claimable-balances/index.d.ts.map +1 -0
- package/dist/claimable-balances/index.js +14 -0
- package/dist/claimable-balances/index.js.map +1 -0
- package/dist/claimable-balances/predicate-builder.d.ts +66 -0
- package/dist/claimable-balances/predicate-builder.d.ts.map +1 -0
- package/dist/claimable-balances/predicate-builder.js +169 -0
- package/dist/claimable-balances/predicate-builder.js.map +1 -0
- package/dist/claimable-balances/types.d.ts +123 -0
- package/dist/claimable-balances/types.d.ts.map +1 -0
- package/dist/claimable-balances/types.js +9 -0
- package/dist/claimable-balances/types.js.map +1 -0
- package/dist/hooks/use-stellar.d.ts +48 -0
- package/dist/hooks/use-stellar.d.ts.map +1 -0
- package/dist/hooks/use-stellar.js +510 -0
- package/dist/hooks/use-stellar.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/liquidity-pools/calculations.d.ts +113 -0
- package/dist/liquidity-pools/calculations.d.ts.map +1 -0
- package/dist/liquidity-pools/calculations.js +291 -0
- package/dist/liquidity-pools/calculations.js.map +1 -0
- package/dist/liquidity-pools/helpers.d.ts +102 -0
- package/dist/liquidity-pools/helpers.d.ts.map +1 -0
- package/dist/liquidity-pools/helpers.js +219 -0
- package/dist/liquidity-pools/helpers.js.map +1 -0
- package/dist/liquidity-pools/index.d.ts +13 -0
- package/dist/liquidity-pools/index.d.ts.map +1 -0
- package/dist/liquidity-pools/index.js +18 -0
- package/dist/liquidity-pools/index.js.map +1 -0
- package/dist/liquidity-pools/liquidity-pool-manager.d.ts +106 -0
- package/dist/liquidity-pools/liquidity-pool-manager.d.ts.map +1 -0
- package/dist/liquidity-pools/liquidity-pool-manager.js +387 -0
- package/dist/liquidity-pools/liquidity-pool-manager.js.map +1 -0
- package/dist/liquidity-pools/types.d.ts +135 -0
- package/dist/liquidity-pools/types.d.ts.map +1 -0
- package/dist/liquidity-pools/types.js +6 -0
- package/dist/liquidity-pools/types.js.map +1 -0
- package/dist/liquidity-pools/validation.d.ts +75 -0
- package/dist/liquidity-pools/validation.d.ts.map +1 -0
- package/dist/liquidity-pools/validation.js +218 -0
- package/dist/liquidity-pools/validation.js.map +1 -0
- package/dist/services/stellar-service.d.ts +231 -0
- package/dist/services/stellar-service.d.ts.map +1 -0
- package/dist/services/stellar-service.js +674 -0
- package/dist/services/stellar-service.js.map +1 -0
- package/dist/soroban/helpers/contract-factory.d.ts +45 -0
- package/dist/soroban/helpers/contract-factory.d.ts.map +1 -0
- package/dist/soroban/helpers/contract-factory.js +84 -0
- package/dist/soroban/helpers/contract-factory.js.map +1 -0
- package/dist/soroban/helpers/token-contract-wrapper.d.ts +104 -0
- package/dist/soroban/helpers/token-contract-wrapper.d.ts.map +1 -0
- package/dist/soroban/helpers/token-contract-wrapper.js +286 -0
- package/dist/soroban/helpers/token-contract-wrapper.js.map +1 -0
- package/dist/soroban/index.d.ts +19 -0
- package/dist/soroban/index.d.ts.map +1 -0
- package/dist/soroban/index.js +19 -0
- package/dist/soroban/index.js.map +1 -0
- package/dist/soroban/soroban-contract-manager.d.ts +71 -0
- package/dist/soroban/soroban-contract-manager.d.ts.map +1 -0
- package/dist/soroban/soroban-contract-manager.js +376 -0
- package/dist/soroban/soroban-contract-manager.js.map +1 -0
- package/dist/soroban/types/contract-types.d.ts +156 -0
- package/dist/soroban/types/contract-types.d.ts.map +1 -0
- package/dist/soroban/types/contract-types.js +3 -0
- package/dist/soroban/types/contract-types.js.map +1 -0
- package/dist/soroban/utils/abi-parser.d.ts +90 -0
- package/dist/soroban/utils/abi-parser.d.ts.map +1 -0
- package/dist/soroban/utils/abi-parser.js +308 -0
- package/dist/soroban/utils/abi-parser.js.map +1 -0
- package/dist/soroban/utils/error-parser.d.ts +70 -0
- package/dist/soroban/utils/error-parser.d.ts.map +1 -0
- package/dist/soroban/utils/error-parser.js +302 -0
- package/dist/soroban/utils/error-parser.js.map +1 -0
- package/dist/soroban/utils/event-decoder.d.ts +91 -0
- package/dist/soroban/utils/event-decoder.d.ts.map +1 -0
- package/dist/soroban/utils/event-decoder.js +307 -0
- package/dist/soroban/utils/event-decoder.js.map +1 -0
- package/dist/soroban/utils/event-monitor.d.ts +93 -0
- package/dist/soroban/utils/event-monitor.d.ts.map +1 -0
- package/dist/soroban/utils/event-monitor.js +282 -0
- package/dist/soroban/utils/event-monitor.js.map +1 -0
- package/dist/soroban/utils/function-signature-builder.d.ts +98 -0
- package/dist/soroban/utils/function-signature-builder.d.ts.map +1 -0
- package/dist/soroban/utils/function-signature-builder.js +272 -0
- package/dist/soroban/utils/function-signature-builder.js.map +1 -0
- package/dist/soroban/utils/scval-converter.d.ts +48 -0
- package/dist/soroban/utils/scval-converter.d.ts.map +1 -0
- package/dist/soroban/utils/scval-converter.js +320 -0
- package/dist/soroban/utils/scval-converter.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-account-builder.d.ts +58 -0
- package/dist/sponsored-reserves/builders/sponsored-account-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-account-builder.js +159 -0
- package/dist/sponsored-reserves/builders/sponsored-account-builder.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-claimable-balance-builder.d.ts +104 -0
- package/dist/sponsored-reserves/builders/sponsored-claimable-balance-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-claimable-balance-builder.js +258 -0
- package/dist/sponsored-reserves/builders/sponsored-claimable-balance-builder.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-data-entry-builder.d.ts +96 -0
- package/dist/sponsored-reserves/builders/sponsored-data-entry-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-data-entry-builder.js +320 -0
- package/dist/sponsored-reserves/builders/sponsored-data-entry-builder.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-signer-builder.d.ts +100 -0
- package/dist/sponsored-reserves/builders/sponsored-signer-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-signer-builder.js +271 -0
- package/dist/sponsored-reserves/builders/sponsored-signer-builder.js.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-trustline-builder.d.ts +87 -0
- package/dist/sponsored-reserves/builders/sponsored-trustline-builder.d.ts.map +1 -0
- package/dist/sponsored-reserves/builders/sponsored-trustline-builder.js +281 -0
- package/dist/sponsored-reserves/builders/sponsored-trustline-builder.js.map +1 -0
- package/dist/sponsored-reserves/index.d.ts +20 -0
- package/dist/sponsored-reserves/index.d.ts.map +1 -0
- package/dist/sponsored-reserves/index.js +24 -0
- package/dist/sponsored-reserves/index.js.map +1 -0
- package/dist/sponsored-reserves/services/sponsored-reserves-manager.d.ts +144 -0
- package/dist/sponsored-reserves/services/sponsored-reserves-manager.d.ts.map +1 -0
- package/dist/sponsored-reserves/services/sponsored-reserves-manager.js +536 -0
- package/dist/sponsored-reserves/services/sponsored-reserves-manager.js.map +1 -0
- package/dist/sponsored-reserves/templates/claimable-balance-template.d.ts +96 -0
- package/dist/sponsored-reserves/templates/claimable-balance-template.d.ts.map +1 -0
- package/dist/sponsored-reserves/templates/claimable-balance-template.js +306 -0
- package/dist/sponsored-reserves/templates/claimable-balance-template.js.map +1 -0
- package/dist/sponsored-reserves/templates/multi-operation-template.d.ts +99 -0
- package/dist/sponsored-reserves/templates/multi-operation-template.d.ts.map +1 -0
- package/dist/sponsored-reserves/templates/multi-operation-template.js +313 -0
- package/dist/sponsored-reserves/templates/multi-operation-template.js.map +1 -0
- package/dist/sponsored-reserves/templates/user-onboarding-template.d.ts +79 -0
- package/dist/sponsored-reserves/templates/user-onboarding-template.d.ts.map +1 -0
- package/dist/sponsored-reserves/templates/user-onboarding-template.js +262 -0
- package/dist/sponsored-reserves/templates/user-onboarding-template.js.map +1 -0
- package/dist/sponsored-reserves/types/sponsored-reserves-types.d.ts +364 -0
- package/dist/sponsored-reserves/types/sponsored-reserves-types.d.ts.map +1 -0
- package/dist/sponsored-reserves/types/sponsored-reserves-types.js +9 -0
- package/dist/sponsored-reserves/types/sponsored-reserves-types.js.map +1 -0
- package/dist/sponsored-reserves/utils/cost-calculator.d.ts +98 -0
- package/dist/sponsored-reserves/utils/cost-calculator.d.ts.map +1 -0
- package/dist/sponsored-reserves/utils/cost-calculator.js +238 -0
- package/dist/sponsored-reserves/utils/cost-calculator.js.map +1 -0
- package/dist/sponsored-reserves/utils/sponsorship-validation.d.ts +112 -0
- package/dist/sponsored-reserves/utils/sponsorship-validation.d.ts.map +1 -0
- package/dist/sponsored-reserves/utils/sponsorship-validation.js +394 -0
- package/dist/sponsored-reserves/utils/sponsorship-validation.js.map +1 -0
- package/dist/types/stellar-sdk-compat.d.ts +25 -0
- package/dist/types/stellar-sdk-compat.d.ts.map +1 -0
- package/dist/types/stellar-sdk-compat.js +44 -0
- package/dist/types/stellar-sdk-compat.js.map +1 -0
- package/dist/types/stellar-types.d.ts +160 -0
- package/dist/types/stellar-types.d.ts.map +1 -0
- package/dist/types/stellar-types.js +9 -0
- package/dist/types/stellar-types.js.map +1 -0
- package/dist/utils/encryption.utils.d.ts +9 -0
- package/dist/utils/encryption.utils.d.ts.map +1 -0
- package/dist/utils/encryption.utils.js +44 -0
- package/dist/utils/encryption.utils.js.map +1 -0
- package/dist/utils/network-utils.d.ts +138 -0
- package/dist/utils/network-utils.d.ts.map +1 -0
- package/dist/utils/network-utils.js +240 -0
- package/dist/utils/network-utils.js.map +1 -0
- package/dist/utils/stellar-utils.d.ts +114 -0
- package/dist/utils/stellar-utils.d.ts.map +1 -0
- package/dist/utils/stellar-utils.js +186 -0
- package/dist/utils/stellar-utils.js.map +1 -0
- package/dist/utils/supabase-client.d.ts +2 -0
- package/dist/utils/supabase-client.d.ts.map +1 -0
- package/dist/utils/supabase-client.js +9 -0
- package/dist/utils/supabase-client.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Claimable Balance Manager
|
|
3
|
+
* @description Manages creation, claiming, and querying of claimable balances
|
|
4
|
+
* @author Galaxy DevKit Team
|
|
5
|
+
* @version 1.0.0
|
|
6
|
+
* @since 2024-12-01
|
|
7
|
+
*/
|
|
8
|
+
import { Keypair, Asset, Operation, TransactionBuilder, Memo, BASE_FEE, } from '@stellar/stellar-sdk';
|
|
9
|
+
import { toStellarPredicate, validatePredicate, } from './predicate-builder';
|
|
10
|
+
import { decryptPrivateKey } from '../utils/encryption.utils';
|
|
11
|
+
import { NetworkUtils } from '../utils/network-utils';
|
|
12
|
+
/**
|
|
13
|
+
* Claimable Balance Manager class
|
|
14
|
+
* @class ClaimableBalanceManager
|
|
15
|
+
* @description Handles all claimable balance operations
|
|
16
|
+
*/
|
|
17
|
+
export class ClaimableBalanceManager {
|
|
18
|
+
constructor(server, networkPassphrase) {
|
|
19
|
+
this.server = server;
|
|
20
|
+
this.networkPassphrase = networkPassphrase;
|
|
21
|
+
this.networkUtils = new NetworkUtils();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a claimable balance
|
|
25
|
+
* @param wallet - Source wallet
|
|
26
|
+
* @param params - Create claimable balance parameters
|
|
27
|
+
* @param password - Wallet password
|
|
28
|
+
* @returns Promise<ClaimableBalanceResult>
|
|
29
|
+
*/
|
|
30
|
+
async createClaimableBalance(wallet, params, password) {
|
|
31
|
+
try {
|
|
32
|
+
// Validate parameters
|
|
33
|
+
this.validateCreateParams(params);
|
|
34
|
+
// Decrypt private key
|
|
35
|
+
const decryptedPrivateKey = decryptPrivateKey(wallet.privateKey, password);
|
|
36
|
+
const keypair = Keypair.fromSecret(decryptedPrivateKey);
|
|
37
|
+
// Load source account
|
|
38
|
+
const sourceAccount = await this.server.loadAccount(wallet.publicKey);
|
|
39
|
+
// Build claimants with Stellar predicates
|
|
40
|
+
const stellarClaimants = params.claimants.map((claimant) => ({
|
|
41
|
+
destination: claimant.destination,
|
|
42
|
+
predicate: toStellarPredicate(claimant.predicate),
|
|
43
|
+
}));
|
|
44
|
+
// Estimate fee
|
|
45
|
+
const fee = params.fee || (await this.estimateFee());
|
|
46
|
+
// Build transaction
|
|
47
|
+
const transactionBuilder = new TransactionBuilder(sourceAccount, {
|
|
48
|
+
fee: fee.toString(),
|
|
49
|
+
networkPassphrase: this.networkPassphrase,
|
|
50
|
+
});
|
|
51
|
+
// Add create claimable balance operation
|
|
52
|
+
transactionBuilder.addOperation(Operation.createClaimableBalance({
|
|
53
|
+
asset: params.asset,
|
|
54
|
+
amount: params.amount,
|
|
55
|
+
claimants: stellarClaimants,
|
|
56
|
+
}));
|
|
57
|
+
// Add memo if provided
|
|
58
|
+
if (params.memo) {
|
|
59
|
+
transactionBuilder.addMemo(Memo.text(params.memo));
|
|
60
|
+
}
|
|
61
|
+
transactionBuilder.setTimeout(180);
|
|
62
|
+
// Sign and submit transaction
|
|
63
|
+
const transaction = transactionBuilder.build();
|
|
64
|
+
transaction.sign(keypair);
|
|
65
|
+
const result = await this.server.submitTransaction(transaction);
|
|
66
|
+
// Extract balance ID from transaction result
|
|
67
|
+
const balanceId = await this.extractBalanceId(result);
|
|
68
|
+
return {
|
|
69
|
+
balanceId,
|
|
70
|
+
hash: result.hash,
|
|
71
|
+
status: result.successful ? 'success' : 'failed',
|
|
72
|
+
ledger: result.ledger.toString(),
|
|
73
|
+
createdAt: new Date(),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
throw new Error(`Failed to create claimable balance: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Claims a claimable balance
|
|
82
|
+
* @param wallet - Claimant wallet
|
|
83
|
+
* @param params - Claim parameters
|
|
84
|
+
* @param password - Wallet password
|
|
85
|
+
* @returns Promise<ClaimableBalanceResult>
|
|
86
|
+
*/
|
|
87
|
+
async claimBalance(wallet, params, password) {
|
|
88
|
+
try {
|
|
89
|
+
if (!this.isValidBalanceId(params.balanceId)) {
|
|
90
|
+
throw new Error('Invalid balance ID format');
|
|
91
|
+
}
|
|
92
|
+
// Decrypt private key
|
|
93
|
+
const decryptedPrivateKey = decryptPrivateKey(wallet.privateKey, password);
|
|
94
|
+
const keypair = Keypair.fromSecret(decryptedPrivateKey);
|
|
95
|
+
// Load account
|
|
96
|
+
const account = await this.server.loadAccount(wallet.publicKey);
|
|
97
|
+
// Estimate fee
|
|
98
|
+
const fee = params.fee || (await this.estimateFee());
|
|
99
|
+
// Build transaction
|
|
100
|
+
const transactionBuilder = new TransactionBuilder(account, {
|
|
101
|
+
fee: fee.toString(),
|
|
102
|
+
networkPassphrase: this.networkPassphrase,
|
|
103
|
+
});
|
|
104
|
+
// Add claim operation
|
|
105
|
+
transactionBuilder.addOperation(Operation.claimClaimableBalance({
|
|
106
|
+
balanceId: params.balanceId,
|
|
107
|
+
}));
|
|
108
|
+
// Add memo if provided
|
|
109
|
+
if (params.memo) {
|
|
110
|
+
transactionBuilder.addMemo(Memo.text(params.memo));
|
|
111
|
+
}
|
|
112
|
+
transactionBuilder.setTimeout(180);
|
|
113
|
+
// Sign and submit transaction
|
|
114
|
+
const transaction = transactionBuilder.build();
|
|
115
|
+
transaction.sign(keypair);
|
|
116
|
+
const result = await this.server.submitTransaction(transaction);
|
|
117
|
+
return {
|
|
118
|
+
balanceId: params.balanceId,
|
|
119
|
+
hash: result.hash,
|
|
120
|
+
status: result.successful ? 'success' : 'failed',
|
|
121
|
+
ledger: result.ledger.toString(),
|
|
122
|
+
createdAt: new Date(),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
throw new Error(`Failed to claim balance: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Gets claimable balance details by ID
|
|
131
|
+
* @param balanceId - Balance ID
|
|
132
|
+
* @returns Promise<ClaimableBalance>
|
|
133
|
+
*/
|
|
134
|
+
async getBalanceDetails(balanceId) {
|
|
135
|
+
try {
|
|
136
|
+
if (!this.isValidBalanceId(balanceId)) {
|
|
137
|
+
throw new Error('Invalid balance ID format');
|
|
138
|
+
}
|
|
139
|
+
const balance = await this.server
|
|
140
|
+
.claimableBalances()
|
|
141
|
+
.claimableBalance(balanceId)
|
|
142
|
+
.call();
|
|
143
|
+
return this.mapHorizonBalanceToClaimableBalance(balance);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
147
|
+
throw new Error(`Claimable balance not found: ${balanceId}`);
|
|
148
|
+
}
|
|
149
|
+
throw new Error(`Failed to get balance details: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Queries claimable balances
|
|
154
|
+
* @param params - Query parameters
|
|
155
|
+
* @returns Promise<ClaimableBalance[]>
|
|
156
|
+
*/
|
|
157
|
+
async getClaimableBalances(params = {}) {
|
|
158
|
+
try {
|
|
159
|
+
let callBuilder = this.server.claimableBalances();
|
|
160
|
+
// Filter by claimant
|
|
161
|
+
if (params.claimant) {
|
|
162
|
+
if (!this.networkUtils.isValidPublicKey(params.claimant)) {
|
|
163
|
+
throw new Error('Invalid claimant public key');
|
|
164
|
+
}
|
|
165
|
+
callBuilder = callBuilder.claimant(params.claimant);
|
|
166
|
+
}
|
|
167
|
+
// Filter by asset
|
|
168
|
+
if (params.asset) {
|
|
169
|
+
callBuilder = callBuilder.asset(params.asset);
|
|
170
|
+
}
|
|
171
|
+
// Filter by sponsor
|
|
172
|
+
if (params.sponsor) {
|
|
173
|
+
if (!this.networkUtils.isValidPublicKey(params.sponsor)) {
|
|
174
|
+
throw new Error('Invalid sponsor public key');
|
|
175
|
+
}
|
|
176
|
+
callBuilder = callBuilder.sponsor(params.sponsor);
|
|
177
|
+
}
|
|
178
|
+
// Set limit
|
|
179
|
+
if (params.limit) {
|
|
180
|
+
callBuilder = callBuilder.limit(params.limit);
|
|
181
|
+
}
|
|
182
|
+
// Set cursor for pagination
|
|
183
|
+
if (params.cursor) {
|
|
184
|
+
callBuilder = callBuilder.cursor(params.cursor);
|
|
185
|
+
}
|
|
186
|
+
const response = await callBuilder.call();
|
|
187
|
+
return response.records.map((balance) => this.mapHorizonBalanceToClaimableBalance(balance));
|
|
188
|
+
}
|
|
189
|
+
catch (error) {
|
|
190
|
+
throw new Error(`Failed to query claimable balances: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Gets claimable balances for a specific account (as claimant)
|
|
195
|
+
* @param publicKey - Account public key
|
|
196
|
+
* @param limit - Number of results to return
|
|
197
|
+
* @returns Promise<ClaimableBalance[]>
|
|
198
|
+
*/
|
|
199
|
+
async getClaimableBalancesForAccount(publicKey, limit = 10) {
|
|
200
|
+
if (!this.networkUtils.isValidPublicKey(publicKey)) {
|
|
201
|
+
throw new Error('Invalid public key format');
|
|
202
|
+
}
|
|
203
|
+
return this.getClaimableBalances({
|
|
204
|
+
claimant: publicKey,
|
|
205
|
+
limit,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Gets claimable balances by asset
|
|
210
|
+
* @param asset - Asset to filter by
|
|
211
|
+
* @param limit - Number of results to return
|
|
212
|
+
* @returns Promise<ClaimableBalance[]>
|
|
213
|
+
*/
|
|
214
|
+
async getClaimableBalancesByAsset(asset, limit = 10) {
|
|
215
|
+
return this.getClaimableBalances({
|
|
216
|
+
asset,
|
|
217
|
+
limit,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Validates create claimable balance parameters
|
|
222
|
+
* @param params - Parameters to validate
|
|
223
|
+
* @throws Error if invalid
|
|
224
|
+
*/
|
|
225
|
+
validateCreateParams(params) {
|
|
226
|
+
if (!params.asset) {
|
|
227
|
+
throw new Error('Asset is required');
|
|
228
|
+
}
|
|
229
|
+
if (!params.amount || parseFloat(params.amount) <= 0) {
|
|
230
|
+
throw new Error('Amount must be greater than 0');
|
|
231
|
+
}
|
|
232
|
+
if (!params.claimants || params.claimants.length === 0) {
|
|
233
|
+
throw new Error('At least one claimant is required');
|
|
234
|
+
}
|
|
235
|
+
// Validate each claimant
|
|
236
|
+
params.claimants.forEach((claimant, index) => {
|
|
237
|
+
if (!this.networkUtils.isValidPublicKey(claimant.destination)) {
|
|
238
|
+
throw new Error(`Invalid claimant destination at index ${index}`);
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
validatePredicate(claimant.predicate);
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
throw new Error(`Invalid predicate for claimant at index ${index}: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Validates balance ID format
|
|
250
|
+
* @param balanceId - Balance ID to validate
|
|
251
|
+
* @returns boolean
|
|
252
|
+
*/
|
|
253
|
+
isValidBalanceId(balanceId) {
|
|
254
|
+
// Balance ID is a 64-character hex string
|
|
255
|
+
return /^[0-9a-f]{64}$/i.test(balanceId);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Extracts balance ID from transaction result
|
|
259
|
+
* @param result - Transaction result
|
|
260
|
+
* @returns Promise<Balance ID>
|
|
261
|
+
*/
|
|
262
|
+
async extractBalanceId(result) {
|
|
263
|
+
try {
|
|
264
|
+
// Query operations for this transaction to get the balance ID
|
|
265
|
+
const operations = await this.server
|
|
266
|
+
.operations()
|
|
267
|
+
.forTransaction(result.hash)
|
|
268
|
+
.call();
|
|
269
|
+
// Find the createClaimableBalance operation
|
|
270
|
+
const createOp = operations.records.find((op) => op.type === 'create_claimable_balance');
|
|
271
|
+
if (createOp && createOp.balance_id) {
|
|
272
|
+
return createOp.balance_id;
|
|
273
|
+
}
|
|
274
|
+
// If balance_id is not directly available, it might be in the response
|
|
275
|
+
if (result.balance_id) {
|
|
276
|
+
return result.balance_id;
|
|
277
|
+
}
|
|
278
|
+
throw new Error('Could not extract balance ID from transaction result. Please query the operation to get the balance ID.');
|
|
279
|
+
}
|
|
280
|
+
catch (error) {
|
|
281
|
+
throw new Error(`Failed to extract balance ID: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Maps Horizon API balance to our ClaimableBalance type
|
|
286
|
+
* @param horizonBalance - Horizon API balance
|
|
287
|
+
* @returns ClaimableBalance
|
|
288
|
+
*/
|
|
289
|
+
mapHorizonBalanceToClaimableBalance(horizonBalance) {
|
|
290
|
+
const asset = horizonBalance.asset_type === 'native'
|
|
291
|
+
? Asset.native()
|
|
292
|
+
: new Asset(horizonBalance.asset_code, horizonBalance.asset_issuer);
|
|
293
|
+
const claimants = horizonBalance.claimants.map((c) => ({
|
|
294
|
+
destination: c.destination,
|
|
295
|
+
predicate: this.mapHorizonPredicateToPredicate(c.predicate),
|
|
296
|
+
}));
|
|
297
|
+
return {
|
|
298
|
+
id: horizonBalance.id,
|
|
299
|
+
asset,
|
|
300
|
+
amount: horizonBalance.amount,
|
|
301
|
+
sponsor: horizonBalance.sponsor,
|
|
302
|
+
claimants,
|
|
303
|
+
lastModified: horizonBalance.last_modified_time,
|
|
304
|
+
lastModifiedLedger: parseInt(horizonBalance.last_modified_ledger, 10),
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Maps Horizon predicate to our ClaimPredicate type
|
|
309
|
+
* @param horizonPredicate - Horizon predicate
|
|
310
|
+
* @returns ClaimPredicate
|
|
311
|
+
*/
|
|
312
|
+
mapHorizonPredicateToPredicate(horizonPredicate) {
|
|
313
|
+
if (horizonPredicate.unconditional) {
|
|
314
|
+
return { unconditional: true };
|
|
315
|
+
}
|
|
316
|
+
if (horizonPredicate.not) {
|
|
317
|
+
return { not: this.mapHorizonPredicateToPredicate(horizonPredicate.not) };
|
|
318
|
+
}
|
|
319
|
+
if (horizonPredicate.and) {
|
|
320
|
+
return {
|
|
321
|
+
and: horizonPredicate.and.map((p) => this.mapHorizonPredicateToPredicate(p)),
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
if (horizonPredicate.or) {
|
|
325
|
+
return {
|
|
326
|
+
or: horizonPredicate.or.map((p) => this.mapHorizonPredicateToPredicate(p)),
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
if (horizonPredicate.abs_before) {
|
|
330
|
+
const timestamp = new Date(parseInt(horizonPredicate.abs_before, 10) * 1000);
|
|
331
|
+
return { abs_before: timestamp.toISOString() };
|
|
332
|
+
}
|
|
333
|
+
if (horizonPredicate.rel_before) {
|
|
334
|
+
return { rel_before: horizonPredicate.rel_before };
|
|
335
|
+
}
|
|
336
|
+
return { unconditional: true }; // Default fallback
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Estimates transaction fee
|
|
340
|
+
* @returns Promise<string>
|
|
341
|
+
*/
|
|
342
|
+
async estimateFee() {
|
|
343
|
+
try {
|
|
344
|
+
const feeStats = await this.server.feeStats();
|
|
345
|
+
return feeStats.max_fee.mode;
|
|
346
|
+
}
|
|
347
|
+
catch (error) {
|
|
348
|
+
return BASE_FEE;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=claimable-balance-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claimable-balance-manager.js","sourceRoot":"","sources":["../../src/claimable-balances/claimable-balance-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Helper functions for common claimable balance patterns
|
|
3
|
+
* @description Provides utilities for time-locked balances, vesting schedules, and escrow
|
|
4
|
+
* @author Galaxy DevKit Team
|
|
5
|
+
* @version 1.0.0
|
|
6
|
+
* @since 2024-12-01
|
|
7
|
+
*/
|
|
8
|
+
import { Asset, Operation, Account } from '@stellar/stellar-sdk';
|
|
9
|
+
import { TimeLockedBalanceParams, VestingScheduleParams, EscrowParams } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Creates a time-locked claimable balance operation
|
|
12
|
+
* @param params - Time-locked balance parameters
|
|
13
|
+
* @returns Operation
|
|
14
|
+
*/
|
|
15
|
+
export declare function createTimeLockedBalance(params: TimeLockedBalanceParams): any;
|
|
16
|
+
/**
|
|
17
|
+
* Creates a vesting schedule with multiple claimable balances
|
|
18
|
+
* @param sourceAccount - Source account
|
|
19
|
+
* @param params - Vesting schedule parameters
|
|
20
|
+
* @returns Array of operations
|
|
21
|
+
*/
|
|
22
|
+
export declare function createVestingSchedule(sourceAccount: Account, params: VestingScheduleParams): Operation[];
|
|
23
|
+
/**
|
|
24
|
+
* Creates a multi-party escrow claimable balance
|
|
25
|
+
* @param params - Escrow parameters
|
|
26
|
+
* @returns Operation
|
|
27
|
+
*/
|
|
28
|
+
export declare function createEscrow(params: EscrowParams): any;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a two-party escrow with time lock and arbitrator
|
|
31
|
+
* @param params - Escrow parameters with buyer, seller, and arbitrator
|
|
32
|
+
* @returns Operation
|
|
33
|
+
*/
|
|
34
|
+
export declare function createTwoPartyEscrow(params: {
|
|
35
|
+
asset: Asset;
|
|
36
|
+
amount: string;
|
|
37
|
+
buyer: string;
|
|
38
|
+
seller: string;
|
|
39
|
+
arbitrator: string;
|
|
40
|
+
releaseDate: Date;
|
|
41
|
+
}): any;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a conditional release balance (requires both time and condition)
|
|
44
|
+
* @param params - Conditional release parameters
|
|
45
|
+
* @returns Operation
|
|
46
|
+
*/
|
|
47
|
+
export declare function createConditionalRelease(params: {
|
|
48
|
+
asset: Asset;
|
|
49
|
+
amount: string;
|
|
50
|
+
claimant: string;
|
|
51
|
+
releaseDate: Date;
|
|
52
|
+
conditionPredicate: any;
|
|
53
|
+
}): any;
|
|
54
|
+
/**
|
|
55
|
+
* Creates a refundable balance (sender can reclaim if not claimed within time limit)
|
|
56
|
+
* @param params - Refundable balance parameters
|
|
57
|
+
* @returns Operation
|
|
58
|
+
*/
|
|
59
|
+
export declare function createRefundableBalance(params: {
|
|
60
|
+
asset: Asset;
|
|
61
|
+
amount: string;
|
|
62
|
+
recipient: string;
|
|
63
|
+
sender: string;
|
|
64
|
+
expirationDate: Date;
|
|
65
|
+
}): any;
|
|
66
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/claimable-balances/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,KAAK,EACL,SAAS,EAET,OAAO,EACR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,GAAG,CAaL;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,OAAO,EACtB,MAAM,EAAE,qBAAqB,GAC5B,SAAS,EAAE,CAsCb;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,GAAG,CAyCtD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,IAAI,CAAC;CACnB,GAAG,GAAG,CAuBN;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,IAAI,CAAC;IAClB,kBAAkB,EAAE,GAAG,CAAC;CACzB,GAAG,GAAG,CAcN;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,IAAI,CAAC;CACtB,GAAG,GAAG,CAwBN"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Helper functions for common claimable balance patterns
|
|
3
|
+
* @description Provides utilities for time-locked balances, vesting schedules, and escrow
|
|
4
|
+
* @author Galaxy DevKit Team
|
|
5
|
+
* @version 1.0.0
|
|
6
|
+
* @since 2024-12-01
|
|
7
|
+
*/
|
|
8
|
+
import { Operation, } from '@stellar/stellar-sdk';
|
|
9
|
+
import { beforeAbsoluteTime, unconditional, and } from './predicate-builder';
|
|
10
|
+
import { toStellarPredicate } from './predicate-builder';
|
|
11
|
+
/**
|
|
12
|
+
* Creates a time-locked claimable balance operation
|
|
13
|
+
* @param params - Time-locked balance parameters
|
|
14
|
+
* @returns Operation
|
|
15
|
+
*/
|
|
16
|
+
export function createTimeLockedBalance(params) {
|
|
17
|
+
const predicate = beforeAbsoluteTime(params.unlockDate);
|
|
18
|
+
return Operation.createClaimableBalance({
|
|
19
|
+
asset: params.asset,
|
|
20
|
+
amount: params.amount,
|
|
21
|
+
claimants: [
|
|
22
|
+
{
|
|
23
|
+
destination: params.claimant,
|
|
24
|
+
predicate: toStellarPredicate(predicate),
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates a vesting schedule with multiple claimable balances
|
|
31
|
+
* @param sourceAccount - Source account
|
|
32
|
+
* @param params - Vesting schedule parameters
|
|
33
|
+
* @returns Array of operations
|
|
34
|
+
*/
|
|
35
|
+
export function createVestingSchedule(sourceAccount, params) {
|
|
36
|
+
const operations = [];
|
|
37
|
+
const totalAmount = parseFloat(params.totalAmount);
|
|
38
|
+
// Validate percentages sum to 100
|
|
39
|
+
const totalPercentage = params.vestingPeriods.reduce((sum, period) => sum + period.percentage, 0);
|
|
40
|
+
if (Math.abs(totalPercentage - 100) > 0.01) {
|
|
41
|
+
throw new Error('Vesting periods must sum to 100%');
|
|
42
|
+
}
|
|
43
|
+
// Sort periods by date
|
|
44
|
+
const sortedPeriods = [...params.vestingPeriods].sort((a, b) => a.date.getTime() - b.date.getTime());
|
|
45
|
+
// Create a claimable balance for each vesting period
|
|
46
|
+
sortedPeriods.forEach((period) => {
|
|
47
|
+
const amount = ((totalAmount * period.percentage) / 100).toFixed(7);
|
|
48
|
+
const predicate = beforeAbsoluteTime(period.date);
|
|
49
|
+
operations.push(Operation.createClaimableBalance({
|
|
50
|
+
asset: params.asset,
|
|
51
|
+
amount,
|
|
52
|
+
claimants: [
|
|
53
|
+
{
|
|
54
|
+
destination: params.claimant,
|
|
55
|
+
predicate: toStellarPredicate(predicate),
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
}));
|
|
59
|
+
});
|
|
60
|
+
return operations;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates a multi-party escrow claimable balance
|
|
64
|
+
* @param params - Escrow parameters
|
|
65
|
+
* @returns Operation
|
|
66
|
+
*/
|
|
67
|
+
export function createEscrow(params) {
|
|
68
|
+
if (params.parties.length < 2) {
|
|
69
|
+
throw new Error('Escrow requires at least 2 parties');
|
|
70
|
+
}
|
|
71
|
+
const claimants = [];
|
|
72
|
+
// Add all parties as claimants
|
|
73
|
+
params.parties.forEach((party) => {
|
|
74
|
+
let predicate;
|
|
75
|
+
if (params.releaseDate) {
|
|
76
|
+
// Time-locked: can claim after release date
|
|
77
|
+
predicate = beforeAbsoluteTime(params.releaseDate);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Unconditional: can claim anytime
|
|
81
|
+
predicate = unconditional();
|
|
82
|
+
}
|
|
83
|
+
claimants.push({
|
|
84
|
+
destination: party,
|
|
85
|
+
predicate,
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
// Add arbitrator if provided (can claim anytime for dispute resolution)
|
|
89
|
+
if (params.arbitrator) {
|
|
90
|
+
claimants.push({
|
|
91
|
+
destination: params.arbitrator,
|
|
92
|
+
predicate: unconditional(),
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return Operation.createClaimableBalance({
|
|
96
|
+
asset: params.asset,
|
|
97
|
+
amount: params.amount,
|
|
98
|
+
claimants: claimants.map((c) => ({
|
|
99
|
+
destination: c.destination,
|
|
100
|
+
predicate: toStellarPredicate(c.predicate),
|
|
101
|
+
})),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Creates a two-party escrow with time lock and arbitrator
|
|
106
|
+
* @param params - Escrow parameters with buyer, seller, and arbitrator
|
|
107
|
+
* @returns Operation
|
|
108
|
+
*/
|
|
109
|
+
export function createTwoPartyEscrow(params) {
|
|
110
|
+
const buyerPredicate = beforeAbsoluteTime(params.releaseDate);
|
|
111
|
+
const sellerPredicate = beforeAbsoluteTime(params.releaseDate);
|
|
112
|
+
const arbitratorPredicate = unconditional();
|
|
113
|
+
return Operation.createClaimableBalance({
|
|
114
|
+
asset: params.asset,
|
|
115
|
+
amount: params.amount,
|
|
116
|
+
claimants: [
|
|
117
|
+
{
|
|
118
|
+
destination: params.buyer,
|
|
119
|
+
predicate: toStellarPredicate(buyerPredicate),
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
destination: params.seller,
|
|
123
|
+
predicate: toStellarPredicate(sellerPredicate),
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
destination: params.arbitrator,
|
|
127
|
+
predicate: toStellarPredicate(arbitratorPredicate),
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Creates a conditional release balance (requires both time and condition)
|
|
134
|
+
* @param params - Conditional release parameters
|
|
135
|
+
* @returns Operation
|
|
136
|
+
*/
|
|
137
|
+
export function createConditionalRelease(params) {
|
|
138
|
+
const timePredicate = beforeAbsoluteTime(params.releaseDate);
|
|
139
|
+
const combinedPredicate = and(timePredicate, params.conditionPredicate);
|
|
140
|
+
return Operation.createClaimableBalance({
|
|
141
|
+
asset: params.asset,
|
|
142
|
+
amount: params.amount,
|
|
143
|
+
claimants: [
|
|
144
|
+
{
|
|
145
|
+
destination: params.claimant,
|
|
146
|
+
predicate: toStellarPredicate(combinedPredicate),
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Creates a refundable balance (sender can reclaim if not claimed within time limit)
|
|
153
|
+
* @param params - Refundable balance parameters
|
|
154
|
+
* @returns Operation
|
|
155
|
+
*/
|
|
156
|
+
export function createRefundableBalance(params) {
|
|
157
|
+
// Recipient can claim before expiration
|
|
158
|
+
const recipientPredicate = beforeAbsoluteTime(params.expirationDate);
|
|
159
|
+
// Sender can claim after expiration (using NOT predicate)
|
|
160
|
+
// Note: Stellar doesn't support "after" directly, so we use unconditional
|
|
161
|
+
// and rely on the fact that only one can claim
|
|
162
|
+
// For true "after" behavior, we'd need to structure this differently
|
|
163
|
+
const senderPredicate = unconditional();
|
|
164
|
+
return Operation.createClaimableBalance({
|
|
165
|
+
asset: params.asset,
|
|
166
|
+
amount: params.amount,
|
|
167
|
+
claimants: [
|
|
168
|
+
{
|
|
169
|
+
destination: params.recipient,
|
|
170
|
+
predicate: toStellarPredicate(recipientPredicate),
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
destination: params.sender,
|
|
174
|
+
predicate: toStellarPredicate(senderPredicate),
|
|
175
|
+
},
|
|
176
|
+
],
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/claimable-balances/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Claimable balances module exports
|
|
3
|
+
* @description Main entry point for claimable balance functionality
|
|
4
|
+
* @author Galaxy DevKit Team
|
|
5
|
+
* @version 1.0.0
|
|
6
|
+
* @since 2024-12-01
|
|
7
|
+
*/
|
|
8
|
+
export type { ClaimableBalance, Claimant, ClaimPredicate, CreateClaimableBalanceParams, ClaimBalanceParams, QueryClaimableBalancesParams, ClaimableBalanceResult, TimeLockedBalanceParams, VestingScheduleParams, EscrowParams, } from './types';
|
|
9
|
+
export { ClaimableBalanceManager } from './claimable-balance-manager';
|
|
10
|
+
export { unconditional, beforeAbsoluteTime, beforeRelativeTime, not, and, or, toStellarPredicate, validatePredicate, isPredicateClaimable, } from './predicate-builder';
|
|
11
|
+
export { createTimeLockedBalance, createVestingSchedule, createEscrow, createTwoPartyEscrow, createConditionalRelease, createRefundableBalance, } from './helpers';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/claimable-balances/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,4BAA4B,EAC5B,kBAAkB,EAClB,4BAA4B,EAC5B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAGtE,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,GAAG,EACH,GAAG,EACH,EAAE,EACF,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Claimable balances module exports
|
|
3
|
+
* @description Main entry point for claimable balance functionality
|
|
4
|
+
* @author Galaxy DevKit Team
|
|
5
|
+
* @version 1.0.0
|
|
6
|
+
* @since 2024-12-01
|
|
7
|
+
*/
|
|
8
|
+
// Export manager
|
|
9
|
+
export { ClaimableBalanceManager } from './claimable-balance-manager';
|
|
10
|
+
// Export predicate builders
|
|
11
|
+
export { unconditional, beforeAbsoluteTime, beforeRelativeTime, not, and, or, toStellarPredicate, validatePredicate, isPredicateClaimable, } from './predicate-builder';
|
|
12
|
+
// Export helpers
|
|
13
|
+
export { createTimeLockedBalance, createVestingSchedule, createEscrow, createTwoPartyEscrow, createConditionalRelease, createRefundableBalance, } from './helpers';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/claimable-balances/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,iBAAiB;AACjB,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,GAAG,EACH,GAAG,EACH,EAAE,EACF,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,WAAW,CAAC"}
|