@flashbacktech/flashbackclient 0.2.68 → 0.2.70
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.
|
@@ -23,8 +23,8 @@ class DealOps {
|
|
|
23
23
|
{ value: bucket_id, type: 'u32' },
|
|
24
24
|
{ value: fb_repo_id, type: 'string' },
|
|
25
25
|
{ value: params.duration_secs, type: 'u64' },
|
|
26
|
-
{ value: params.
|
|
27
|
-
{ value: params.
|
|
26
|
+
{ value: params.agreed_storage_mb, type: 'u64' },
|
|
27
|
+
{ value: params.agreed_egress_mb, type: 'u64' },
|
|
28
28
|
{ value: params.api_compatibility, type: 'string' }
|
|
29
29
|
]);
|
|
30
30
|
if (!response.isSuccess) {
|
|
@@ -136,11 +136,17 @@ class DealOps {
|
|
|
136
136
|
* @returns Promise resolving to the payment result
|
|
137
137
|
*/
|
|
138
138
|
this.payPendingConsumption = (0, decorator_1.withSignature)(async (provider_id, consumer_id, deal_id) => {
|
|
139
|
-
|
|
139
|
+
const args = [
|
|
140
140
|
{ value: provider_id, type: 'address' },
|
|
141
141
|
{ value: consumer_id, type: 'address' },
|
|
142
142
|
{ value: deal_id, type: 'u32' }
|
|
143
|
-
]
|
|
143
|
+
];
|
|
144
|
+
if (this.context.serverSourceAddress) {
|
|
145
|
+
await (0, transaction_1.executeServerTransaction)(this.context, this.context.serverSourceAddress, "pay_pending_consumption", args);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
await (0, transaction_1.executeWalletTransaction)(this.context, '', "pay_pending_consumption", args);
|
|
149
|
+
}
|
|
144
150
|
});
|
|
145
151
|
/**
|
|
146
152
|
* Updates deal consumption metrics (owner only)
|
|
@@ -151,13 +157,19 @@ class DealOps {
|
|
|
151
157
|
* @returns Promise resolving to the update result
|
|
152
158
|
*/
|
|
153
159
|
this.updateDealConsumption = (0, decorator_1.withSignature)(async (provider_id, consumer_id, deal_id, params) => {
|
|
154
|
-
|
|
160
|
+
const args = [
|
|
155
161
|
{ value: provider_id, type: 'address' },
|
|
156
162
|
{ value: consumer_id, type: 'address' },
|
|
157
163
|
{ value: deal_id, type: 'u32' },
|
|
158
|
-
{ value: params.
|
|
159
|
-
{ value: params.
|
|
160
|
-
]
|
|
164
|
+
{ value: params.storage_mb, type: 'u64' },
|
|
165
|
+
{ value: params.egress_mb, type: 'u64' }
|
|
166
|
+
];
|
|
167
|
+
if (this.context.serverSourceAddress) {
|
|
168
|
+
await (0, transaction_1.executeServerTransaction)(this.context, this.context.serverSourceAddress, "update_deal_consumption", args);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
await (0, transaction_1.executeWalletTransaction)(this.context, '', "update_deal_consumption", args);
|
|
172
|
+
}
|
|
161
173
|
});
|
|
162
174
|
/**
|
|
163
175
|
* Updates deal SLA metrics (owner only)
|
|
@@ -168,13 +180,19 @@ class DealOps {
|
|
|
168
180
|
* @returns Promise resolving to the update result
|
|
169
181
|
*/
|
|
170
182
|
this.updateDealSLA = (0, decorator_1.withSignature)(async (provider_id, consumer_id, deal_id, params) => {
|
|
171
|
-
|
|
183
|
+
const args = [
|
|
172
184
|
{ value: provider_id, type: 'address' },
|
|
173
185
|
{ value: consumer_id, type: 'address' },
|
|
174
186
|
{ value: deal_id, type: 'u32' },
|
|
175
187
|
{ value: params.sla_avg_latency_ms, type: 'u32' },
|
|
176
188
|
{ value: params.sla_avg_uptime_pct, type: 'u32' }
|
|
177
|
-
]
|
|
189
|
+
];
|
|
190
|
+
if (this.context.serverSourceAddress) {
|
|
191
|
+
await (0, transaction_1.executeServerTransaction)(this.context, this.context.serverSourceAddress, "update_deal_sla", args);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
await (0, transaction_1.executeWalletTransaction)(this.context, '', "update_deal_sla", args);
|
|
195
|
+
}
|
|
178
196
|
});
|
|
179
197
|
this.context = context;
|
|
180
198
|
}
|
|
@@ -18,6 +18,13 @@ export interface FlashOnStellarClientConfigV2 {
|
|
|
18
18
|
signTransaction?: (xdrToSign: string) => Promise<string>;
|
|
19
19
|
/** Network configuration for Stellar (testnet/public) */
|
|
20
20
|
network: StellarNetwork;
|
|
21
|
+
/**
|
|
22
|
+
* Stellar public key used as the source account for owner-only
|
|
23
|
+
* server-side operations (e.g. oracle worker calls).
|
|
24
|
+
* When set, owner-only methods use executeServerTransaction
|
|
25
|
+
* which does NOT prepend this address to the contract args.
|
|
26
|
+
*/
|
|
27
|
+
serverSourceAddress?: string;
|
|
21
28
|
}
|
|
22
29
|
export type ClientContext = FlashOnStellarClientConfigV2;
|
|
23
30
|
/**
|
|
@@ -81,19 +81,19 @@ export interface Deal {
|
|
|
81
81
|
api_compatibility: string;
|
|
82
82
|
start_ts: bigint;
|
|
83
83
|
duration_secs: bigint;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
84
|
+
agreed_storage_mb: number;
|
|
85
|
+
agreed_egress_mb: number;
|
|
86
|
+
unpaid_storage_mb: number;
|
|
87
|
+
unpaid_egress_mb: number;
|
|
88
|
+
paid_storage_mb: number;
|
|
89
|
+
paid_egress_mb: number;
|
|
90
90
|
status: DealStatus;
|
|
91
91
|
balance_consumer: bigint;
|
|
92
92
|
balance_provider: bigint;
|
|
93
93
|
sla_avg_latency_ms: number;
|
|
94
94
|
sla_avg_uptime_pct: number;
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
slash_storage_mb: number;
|
|
96
|
+
slash_egress_mb: number;
|
|
97
97
|
slash_amount_usd: bigint;
|
|
98
98
|
/** Ledger timestamp of last settlement. Oracle uses this to query consumption from last_settled_ts to now. */
|
|
99
99
|
last_settled_ts: bigint;
|
|
@@ -150,8 +150,8 @@ export interface BucketCreateParams {
|
|
|
150
150
|
}
|
|
151
151
|
export interface DealCreateParams {
|
|
152
152
|
duration_secs: bigint;
|
|
153
|
-
|
|
154
|
-
|
|
153
|
+
agreed_storage_mb: number;
|
|
154
|
+
agreed_egress_mb: number;
|
|
155
155
|
api_compatibility: string;
|
|
156
156
|
}
|
|
157
157
|
export interface BucketUpdateBasicParams {
|
|
@@ -168,8 +168,8 @@ export interface BucketUpdateConditionsParams {
|
|
|
168
168
|
sla_avg_uptime_pct?: number;
|
|
169
169
|
}
|
|
170
170
|
export interface DealConsumptionUpdateParams {
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
storage_mb: number;
|
|
172
|
+
egress_mb: number;
|
|
173
173
|
}
|
|
174
174
|
export interface DealSLAUpdateParams {
|
|
175
175
|
sla_avg_latency_ms: number;
|
|
@@ -21,6 +21,16 @@ export interface ContractMethodResponse {
|
|
|
21
21
|
result: string | unknown;
|
|
22
22
|
}
|
|
23
23
|
export declare const getHorizonServer: (network: string) => Horizon.Server;
|
|
24
|
+
/**
|
|
25
|
+
* Executes a contract call using a server-side source account.
|
|
26
|
+
* Unlike executeWalletTransaction, this does NOT prepend the source address
|
|
27
|
+
* to the contract args — the args are passed as-is to the contract method.
|
|
28
|
+
* Used for owner-only operations invoked from backend workers.
|
|
29
|
+
*/
|
|
30
|
+
export declare const executeServerTransaction: (context: ClientContext, sourceAddress: string, method: string, args?: Array<{
|
|
31
|
+
value: string | number | bigint | boolean | null | Array<unknown> | undefined;
|
|
32
|
+
type: "string" | "symbol" | "address" | "u32" | "i32" | "u64" | "i64" | "u128" | "i128" | "bool" | "vec";
|
|
33
|
+
}>) => Promise<ContractMethodResponse>;
|
|
24
34
|
export declare const executeWalletTransaction: (context: ClientContext, wallet_address: string, method: string, additionalArgs?: Array<{
|
|
25
35
|
value: string | number | bigint | boolean | null | Array<unknown> | undefined;
|
|
26
36
|
type: "string" | "symbol" | "address" | "u32" | "i32" | "u64" | "i64" | "u128" | "i128" | "bool" | "vec";
|
|
@@ -34,5 +44,10 @@ export declare const executeMultiWalletTransactions: (context: ClientContext, wa
|
|
|
34
44
|
}>, extraOperations?: xdr.Operation[]) => Promise<ContractMethodResponse>;
|
|
35
45
|
declare const prepareTransaction: (context: ClientContext, address: string, contractCalls: ContractMethodCall | ContractMethodCall[], extraOperations?: xdr.Operation[]) => Promise<ContractMethodResponse>;
|
|
36
46
|
declare const signTransaction: (context: ClientContext, xdrToSign: string, privateKey: string) => Promise<Transaction<Memo<MemoType>, Operation[]> | FeeBumpTransaction>;
|
|
47
|
+
/**
|
|
48
|
+
* Creates a signTransaction callback that signs with a private key.
|
|
49
|
+
* Use this for server-side / backend workers where there is no browser wallet.
|
|
50
|
+
*/
|
|
51
|
+
export declare const createPrivateKeySigner: (secretKey: string, networkPassphrase: string) => ((xdrToSign: string) => Promise<string>);
|
|
37
52
|
declare const sendTransaction: (context: ClientContext, signedTransactionXDR: string, bDebug?: boolean) => Promise<any>;
|
|
38
53
|
export { prepareTransaction, sendTransaction, signTransaction, getNetwork, getPublicKeyFromPrivateKey, getServer, };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getServer = exports.getPublicKeyFromPrivateKey = exports.getNetwork = exports.signTransaction = exports.sendTransaction = exports.prepareTransaction = exports.executeMultiWalletTransactions = exports.executeWalletTransaction = exports.getHorizonServer = void 0;
|
|
3
|
+
exports.getServer = exports.getPublicKeyFromPrivateKey = exports.getNetwork = exports.signTransaction = exports.sendTransaction = exports.prepareTransaction = exports.createPrivateKeySigner = exports.executeMultiWalletTransactions = exports.executeWalletTransaction = exports.executeServerTransaction = exports.getHorizonServer = void 0;
|
|
4
4
|
const timing_1 = require("../utils/timing");
|
|
5
5
|
// Polyfill for BigInt JSON serialization
|
|
6
6
|
BigInt.prototype.toJSON = function () {
|
|
@@ -72,6 +72,38 @@ const getHorizonServer = (network) => {
|
|
|
72
72
|
}
|
|
73
73
|
};
|
|
74
74
|
exports.getHorizonServer = getHorizonServer;
|
|
75
|
+
/**
|
|
76
|
+
* Executes a contract call using a server-side source account.
|
|
77
|
+
* Unlike executeWalletTransaction, this does NOT prepend the source address
|
|
78
|
+
* to the contract args — the args are passed as-is to the contract method.
|
|
79
|
+
* Used for owner-only operations invoked from backend workers.
|
|
80
|
+
*/
|
|
81
|
+
const executeServerTransaction = async (context, sourceAddress, method, args = []) => {
|
|
82
|
+
try {
|
|
83
|
+
const response = await prepareTransaction(context, sourceAddress, {
|
|
84
|
+
method,
|
|
85
|
+
args,
|
|
86
|
+
});
|
|
87
|
+
if (response.isSuccess) {
|
|
88
|
+
if (response.isReadOnly) {
|
|
89
|
+
return response;
|
|
90
|
+
}
|
|
91
|
+
const signedTxXDR = await context.signTransaction(response.result);
|
|
92
|
+
const sendResponse = await sendTransaction(context, signedTxXDR);
|
|
93
|
+
return {
|
|
94
|
+
isSuccess: true,
|
|
95
|
+
isReadOnly: false,
|
|
96
|
+
result: sendResponse,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return response;
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.error('executeServerTransaction: Error occurred:', error);
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
exports.executeServerTransaction = executeServerTransaction;
|
|
75
107
|
const executeWalletTransaction = async (context, wallet_address, method, additionalArgs = []) => {
|
|
76
108
|
try {
|
|
77
109
|
const response = await prepareTransaction(context, wallet_address, {
|
|
@@ -225,6 +257,19 @@ const signTransaction = async (context, xdrToSign, privateKey) => {
|
|
|
225
257
|
return preparedTransaction;
|
|
226
258
|
};
|
|
227
259
|
exports.signTransaction = signTransaction;
|
|
260
|
+
/**
|
|
261
|
+
* Creates a signTransaction callback that signs with a private key.
|
|
262
|
+
* Use this for server-side / backend workers where there is no browser wallet.
|
|
263
|
+
*/
|
|
264
|
+
const createPrivateKeySigner = (secretKey, networkPassphrase) => {
|
|
265
|
+
return async (xdrToSign) => {
|
|
266
|
+
const keypair = stellar_sdk_1.Keypair.fromSecret(secretKey);
|
|
267
|
+
const tx = stellar_sdk_1.TransactionBuilder.fromXDR(xdrToSign, networkPassphrase);
|
|
268
|
+
tx.sign(keypair);
|
|
269
|
+
return tx.toXDR();
|
|
270
|
+
};
|
|
271
|
+
};
|
|
272
|
+
exports.createPrivateKeySigner = createPrivateKeySigner;
|
|
228
273
|
const sendTransaction = async (context, signedTransactionXDR, bDebug = false) => {
|
|
229
274
|
try {
|
|
230
275
|
const server = getServer(context.network);
|