@sequence0/sdk 1.2.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/atomic.d.ts +76 -0
- package/dist/core/atomic.d.ts.map +1 -0
- package/dist/core/atomic.js +39 -0
- package/dist/core/atomic.js.map +1 -0
- package/dist/core/client.d.ts +238 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +536 -4
- package/dist/core/client.js.map +1 -1
- package/dist/core/delegation.d.ts +184 -0
- package/dist/core/delegation.d.ts.map +1 -0
- package/dist/core/delegation.js +37 -0
- package/dist/core/delegation.js.map +1 -0
- package/dist/core/programmable.d.ts +66 -0
- package/dist/core/programmable.d.ts.map +1 -0
- package/dist/core/programmable.js +36 -0
- package/dist/core/programmable.js.map +1 -0
- package/dist/core/solvency.d.ts +223 -0
- package/dist/core/solvency.d.ts.map +1 -0
- package/dist/core/solvency.js +267 -0
- package/dist/core/solvency.js.map +1 -0
- package/dist/core/types.d.ts +11 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/universal-account.d.ts +438 -0
- package/dist/core/universal-account.d.ts.map +1 -0
- package/dist/core/universal-account.js +597 -0
- package/dist/core/universal-account.js.map +1 -0
- package/dist/core/witness.d.ts +197 -0
- package/dist/core/witness.d.ts.map +1 -0
- package/dist/core/witness.js +298 -0
- package/dist/core/witness.js.map +1 -0
- package/dist/erc4337/types.js +2 -2
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -3
- package/dist/index.js.map +1 -1
- package/dist/settlement/settlement.d.ts +152 -0
- package/dist/settlement/settlement.d.ts.map +1 -0
- package/dist/settlement/settlement.js +172 -0
- package/dist/settlement/settlement.js.map +1 -0
- package/dist/utils/discovery.js +4 -5
- package/dist/utils/discovery.js.map +1 -1
- package/dist/utils/eip712.js +2 -2
- package/dist/utils/fee.d.ts +2 -2
- package/dist/utils/fee.js +2 -2
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +6 -1
- package/dist/utils/http.js.map +1 -1
- package/dist/utils/logger.d.ts +3 -3
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/wallet/wallet.d.ts +52 -0
- package/dist/wallet/wallet.d.ts.map +1 -1
- package/dist/wallet/wallet.js +204 -0
- package/dist/wallet/wallet.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRISM: Verifiable Solvency Protocol
|
|
3
|
+
*
|
|
4
|
+
* Continuous, cryptographic proof-of-reserves across 81 chains.
|
|
5
|
+
* Exchanges prove solvency in real-time via threshold attestations
|
|
6
|
+
* and ZK range proofs. WASM policies prevent transactions that
|
|
7
|
+
* would cause insolvency.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { SolvencyClient } from '@sequence0/sdk';
|
|
12
|
+
*
|
|
13
|
+
* const solvency = new SolvencyClient({ baseUrl: 'http://agent:8080' });
|
|
14
|
+
* const exchange = await solvency.registerExchange({
|
|
15
|
+
* name: 'MyExchange',
|
|
16
|
+
* chains: ['ethereum', 'bitcoin', 'solana'],
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* const attestation = await solvency.requestAttestation({
|
|
20
|
+
* exchangeId: exchange.exchangeId,
|
|
21
|
+
* addresses: {
|
|
22
|
+
* ethereum: ['0x...hot', '0x...cold'],
|
|
23
|
+
* bitcoin: ['bc1q...'],
|
|
24
|
+
* solana: ['DYw8j...'],
|
|
25
|
+
* },
|
|
26
|
+
* liabilitiesRoot: '0x...',
|
|
27
|
+
* });
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
/**
|
|
31
|
+
* Options for registering an exchange with the Verifiable Solvency Protocol.
|
|
32
|
+
*/
|
|
33
|
+
export interface RegisterExchangeOptions {
|
|
34
|
+
/** Human-readable exchange name */
|
|
35
|
+
name: string;
|
|
36
|
+
/** Chains the exchange operates on (e.g., ['ethereum', 'bitcoin', 'solana']) */
|
|
37
|
+
chains: string[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Information about a registered exchange.
|
|
41
|
+
*/
|
|
42
|
+
export interface ExchangeInfo {
|
|
43
|
+
/** Unique exchange identifier */
|
|
44
|
+
exchangeId: string;
|
|
45
|
+
/** Human-readable exchange name */
|
|
46
|
+
name: string;
|
|
47
|
+
/** On-chain owner address of the exchange registration */
|
|
48
|
+
ownerAddress: string;
|
|
49
|
+
/** Chains the exchange has registered for solvency proofs */
|
|
50
|
+
chains: string[];
|
|
51
|
+
/** ISO 8601 timestamp of registration */
|
|
52
|
+
registeredAt: string;
|
|
53
|
+
/** Whether the exchange is currently active */
|
|
54
|
+
isActive: boolean;
|
|
55
|
+
/** Total number of attestations completed */
|
|
56
|
+
totalAttestations: number;
|
|
57
|
+
/** ISO 8601 timestamp of the most recent attestation (undefined if none) */
|
|
58
|
+
lastAttestationAt?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Request for a solvency attestation across multiple chains.
|
|
62
|
+
* The exchange provides its addresses on each chain and a
|
|
63
|
+
* Merkle root of its liabilities for ZK verification.
|
|
64
|
+
*/
|
|
65
|
+
export interface AttestationRequest {
|
|
66
|
+
/** Exchange ID to attest solvency for */
|
|
67
|
+
exchangeId: string;
|
|
68
|
+
/** Map of chain name to list of addresses (hot + cold wallets) */
|
|
69
|
+
addresses: Record<string, string[]>;
|
|
70
|
+
/** Hex-encoded Merkle root of the exchange's liabilities tree */
|
|
71
|
+
liabilitiesRoot: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Cryptographic proof of a balance on a single chain/address.
|
|
75
|
+
* Verified by threshold agents reading on-chain state.
|
|
76
|
+
*/
|
|
77
|
+
export interface BalanceProof {
|
|
78
|
+
/** Chain the balance was verified on */
|
|
79
|
+
chain: string;
|
|
80
|
+
/** Address whose balance was verified */
|
|
81
|
+
address: string;
|
|
82
|
+
/** Verified balance in the chain's smallest denomination */
|
|
83
|
+
balance: string;
|
|
84
|
+
/** Block number at which the balance was read */
|
|
85
|
+
blockNumber: number;
|
|
86
|
+
/** Whether the balance proof was verified by threshold agents */
|
|
87
|
+
verified: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A completed solvency attestation — the cryptographic proof that
|
|
91
|
+
* an exchange's total assets exceed its total liabilities across
|
|
92
|
+
* all registered chains.
|
|
93
|
+
*/
|
|
94
|
+
export interface SolvencyAttestation {
|
|
95
|
+
/** Unique attestation identifier */
|
|
96
|
+
attestationId: string;
|
|
97
|
+
/** Exchange this attestation is for */
|
|
98
|
+
exchangeId: string;
|
|
99
|
+
/** Hex-encoded hash of the aggregated asset proofs */
|
|
100
|
+
assetsHash: string;
|
|
101
|
+
/** Hex-encoded hash of the liabilities Merkle root */
|
|
102
|
+
liabilitiesHash: string;
|
|
103
|
+
/** Whether assets >= liabilities (the solvency verdict) */
|
|
104
|
+
isSolvent: boolean;
|
|
105
|
+
/** Unix timestamp of the attestation */
|
|
106
|
+
timestamp: number;
|
|
107
|
+
/** Block number on the Sequence0 chain where the attestation was anchored */
|
|
108
|
+
blockNumber: number;
|
|
109
|
+
/** Number of chains included in the attestation */
|
|
110
|
+
totalChains: number;
|
|
111
|
+
/** Hex-encoded threshold signature from the agent committee */
|
|
112
|
+
signature: string;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Status of an in-progress solvency attestation.
|
|
116
|
+
*
|
|
117
|
+
* - `pending` — request received, agents are being coordinated
|
|
118
|
+
* - `verifying` — agents are reading on-chain balances and computing proofs
|
|
119
|
+
* - `complete` — attestation is finalized with a threshold signature
|
|
120
|
+
* - `failed` — attestation could not be completed (e.g., insufficient agents)
|
|
121
|
+
*/
|
|
122
|
+
export type AttestationStatus = 'pending' | 'verifying' | 'complete' | 'failed';
|
|
123
|
+
/**
|
|
124
|
+
* Response for polling the status of an attestation request.
|
|
125
|
+
*/
|
|
126
|
+
export interface AttestationStatusResponse {
|
|
127
|
+
/** The attestation request ID */
|
|
128
|
+
attestationId: string;
|
|
129
|
+
/** Current status of the attestation process */
|
|
130
|
+
status: AttestationStatus;
|
|
131
|
+
/** Number of chains verified so far (only during 'verifying' status) */
|
|
132
|
+
chainsVerified?: number;
|
|
133
|
+
/** Total number of chains to verify (only during 'verifying' status) */
|
|
134
|
+
chainsTotal?: number;
|
|
135
|
+
/** The completed attestation (only when status is 'complete') */
|
|
136
|
+
attestation?: SolvencyAttestation;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Client for the PRISM Verifiable Solvency Protocol.
|
|
140
|
+
*
|
|
141
|
+
* Communicates with solvency endpoints on the agent node to register
|
|
142
|
+
* exchanges, request attestations, and query attestation history.
|
|
143
|
+
*/
|
|
144
|
+
export declare class SolvencyClient {
|
|
145
|
+
private baseUrl;
|
|
146
|
+
/**
|
|
147
|
+
* Create a new SolvencyClient.
|
|
148
|
+
*
|
|
149
|
+
* @param options - Client configuration
|
|
150
|
+
* @param options.baseUrl - Agent node REST API URL (e.g., 'http://agent:8080')
|
|
151
|
+
*/
|
|
152
|
+
constructor(options: {
|
|
153
|
+
baseUrl: string;
|
|
154
|
+
});
|
|
155
|
+
/**
|
|
156
|
+
* Register a new exchange with the Verifiable Solvency Protocol.
|
|
157
|
+
*
|
|
158
|
+
* @param options - Exchange registration details
|
|
159
|
+
* @returns The registered exchange information
|
|
160
|
+
*
|
|
161
|
+
* @throws {Sequence0Error} If the registration parameters are invalid
|
|
162
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
163
|
+
*/
|
|
164
|
+
registerExchange(options: RegisterExchangeOptions): Promise<ExchangeInfo>;
|
|
165
|
+
/**
|
|
166
|
+
* Request a solvency attestation for an exchange.
|
|
167
|
+
*
|
|
168
|
+
* Agents will read on-chain balances for all provided addresses,
|
|
169
|
+
* verify the liabilities root, and produce a threshold-signed
|
|
170
|
+
* attestation if the exchange is solvent.
|
|
171
|
+
*
|
|
172
|
+
* @param request - Attestation request details
|
|
173
|
+
* @returns The attestation request ID for polling status
|
|
174
|
+
*
|
|
175
|
+
* @throws {Sequence0Error} If the request parameters are invalid
|
|
176
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
177
|
+
*/
|
|
178
|
+
requestAttestation(request: AttestationRequest): Promise<{
|
|
179
|
+
attestationId: string;
|
|
180
|
+
}>;
|
|
181
|
+
/**
|
|
182
|
+
* Get the current status of an attestation request.
|
|
183
|
+
*
|
|
184
|
+
* @param attestationId - The attestation request ID
|
|
185
|
+
* @returns Current status and, if complete, the attestation
|
|
186
|
+
*
|
|
187
|
+
* @throws {Sequence0Error} If the attestation ID is invalid
|
|
188
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
189
|
+
*/
|
|
190
|
+
getAttestationStatus(attestationId: string): Promise<AttestationStatusResponse>;
|
|
191
|
+
/**
|
|
192
|
+
* Get the latest completed solvency attestation for an exchange.
|
|
193
|
+
*
|
|
194
|
+
* @param exchangeId - The exchange ID
|
|
195
|
+
* @returns The latest attestation, or null if no attestations exist
|
|
196
|
+
*
|
|
197
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
198
|
+
*/
|
|
199
|
+
getLatestAttestation(exchangeId: string): Promise<SolvencyAttestation | null>;
|
|
200
|
+
/**
|
|
201
|
+
* Get attestation history for an exchange.
|
|
202
|
+
*
|
|
203
|
+
* @param exchangeId - The exchange ID
|
|
204
|
+
* @param limit - Max number of attestations to return (default: 20)
|
|
205
|
+
* @returns Array of attestations, most recent first
|
|
206
|
+
*
|
|
207
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
208
|
+
*/
|
|
209
|
+
getAttestationHistory(exchangeId: string, limit?: number): Promise<SolvencyAttestation[]>;
|
|
210
|
+
/**
|
|
211
|
+
* List all registered exchanges.
|
|
212
|
+
*
|
|
213
|
+
* @returns Array of exchange info objects
|
|
214
|
+
*
|
|
215
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
216
|
+
*/
|
|
217
|
+
listExchanges(): Promise<ExchangeInfo[]>;
|
|
218
|
+
private get;
|
|
219
|
+
private post;
|
|
220
|
+
private mapExchangeResponse;
|
|
221
|
+
private mapAttestationResponse;
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=solvency.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solvency.d.ts","sourceRoot":"","sources":["../../src/core/solvency.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PRISM: Verifiable Solvency Protocol
|
|
4
|
+
*
|
|
5
|
+
* Continuous, cryptographic proof-of-reserves across 81 chains.
|
|
6
|
+
* Exchanges prove solvency in real-time via threshold attestations
|
|
7
|
+
* and ZK range proofs. WASM policies prevent transactions that
|
|
8
|
+
* would cause insolvency.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { SolvencyClient } from '@sequence0/sdk';
|
|
13
|
+
*
|
|
14
|
+
* const solvency = new SolvencyClient({ baseUrl: 'http://agent:8080' });
|
|
15
|
+
* const exchange = await solvency.registerExchange({
|
|
16
|
+
* name: 'MyExchange',
|
|
17
|
+
* chains: ['ethereum', 'bitcoin', 'solana'],
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* const attestation = await solvency.requestAttestation({
|
|
21
|
+
* exchangeId: exchange.exchangeId,
|
|
22
|
+
* addresses: {
|
|
23
|
+
* ethereum: ['0x...hot', '0x...cold'],
|
|
24
|
+
* bitcoin: ['bc1q...'],
|
|
25
|
+
* solana: ['DYw8j...'],
|
|
26
|
+
* },
|
|
27
|
+
* liabilitiesRoot: '0x...',
|
|
28
|
+
* });
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.SolvencyClient = void 0;
|
|
33
|
+
const errors_1 = require("../utils/errors");
|
|
34
|
+
// ── Solvency Client ──
|
|
35
|
+
/**
|
|
36
|
+
* Client for the PRISM Verifiable Solvency Protocol.
|
|
37
|
+
*
|
|
38
|
+
* Communicates with solvency endpoints on the agent node to register
|
|
39
|
+
* exchanges, request attestations, and query attestation history.
|
|
40
|
+
*/
|
|
41
|
+
class SolvencyClient {
|
|
42
|
+
/**
|
|
43
|
+
* Create a new SolvencyClient.
|
|
44
|
+
*
|
|
45
|
+
* @param options - Client configuration
|
|
46
|
+
* @param options.baseUrl - Agent node REST API URL (e.g., 'http://agent:8080')
|
|
47
|
+
*/
|
|
48
|
+
constructor(options) {
|
|
49
|
+
this.baseUrl = options.baseUrl.replace(/\/+$/, '');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Register a new exchange with the Verifiable Solvency Protocol.
|
|
53
|
+
*
|
|
54
|
+
* @param options - Exchange registration details
|
|
55
|
+
* @returns The registered exchange information
|
|
56
|
+
*
|
|
57
|
+
* @throws {Sequence0Error} If the registration parameters are invalid
|
|
58
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
59
|
+
*/
|
|
60
|
+
async registerExchange(options) {
|
|
61
|
+
if (!options.name || typeof options.name !== 'string') {
|
|
62
|
+
throw new errors_1.Sequence0Error('name must be a non-empty string');
|
|
63
|
+
}
|
|
64
|
+
if (!Array.isArray(options.chains) || options.chains.length === 0) {
|
|
65
|
+
throw new errors_1.Sequence0Error('chains must be a non-empty array of chain names');
|
|
66
|
+
}
|
|
67
|
+
const response = await this.post('/solvency/register', {
|
|
68
|
+
name: options.name,
|
|
69
|
+
chains: options.chains,
|
|
70
|
+
});
|
|
71
|
+
return this.mapExchangeResponse(response);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Request a solvency attestation for an exchange.
|
|
75
|
+
*
|
|
76
|
+
* Agents will read on-chain balances for all provided addresses,
|
|
77
|
+
* verify the liabilities root, and produce a threshold-signed
|
|
78
|
+
* attestation if the exchange is solvent.
|
|
79
|
+
*
|
|
80
|
+
* @param request - Attestation request details
|
|
81
|
+
* @returns The attestation request ID for polling status
|
|
82
|
+
*
|
|
83
|
+
* @throws {Sequence0Error} If the request parameters are invalid
|
|
84
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
85
|
+
*/
|
|
86
|
+
async requestAttestation(request) {
|
|
87
|
+
if (!request.exchangeId || typeof request.exchangeId !== 'string') {
|
|
88
|
+
throw new errors_1.Sequence0Error('exchangeId must be a non-empty string');
|
|
89
|
+
}
|
|
90
|
+
if (!request.addresses || typeof request.addresses !== 'object') {
|
|
91
|
+
throw new errors_1.Sequence0Error('addresses must be a non-empty object mapping chains to address arrays');
|
|
92
|
+
}
|
|
93
|
+
if (!request.liabilitiesRoot || typeof request.liabilitiesRoot !== 'string') {
|
|
94
|
+
throw new errors_1.Sequence0Error('liabilitiesRoot must be a non-empty hex string');
|
|
95
|
+
}
|
|
96
|
+
const response = await this.post('/solvency/attest', {
|
|
97
|
+
exchange_id: request.exchangeId,
|
|
98
|
+
addresses: request.addresses,
|
|
99
|
+
liabilities_root: request.liabilitiesRoot,
|
|
100
|
+
});
|
|
101
|
+
if (!response || typeof response.attestation_id !== 'string') {
|
|
102
|
+
throw new errors_1.Sequence0Error('Invalid response from /solvency/attest: missing attestation_id');
|
|
103
|
+
}
|
|
104
|
+
return { attestationId: response.attestation_id };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get the current status of an attestation request.
|
|
108
|
+
*
|
|
109
|
+
* @param attestationId - The attestation request ID
|
|
110
|
+
* @returns Current status and, if complete, the attestation
|
|
111
|
+
*
|
|
112
|
+
* @throws {Sequence0Error} If the attestation ID is invalid
|
|
113
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
114
|
+
*/
|
|
115
|
+
async getAttestationStatus(attestationId) {
|
|
116
|
+
if (!attestationId || typeof attestationId !== 'string') {
|
|
117
|
+
throw new errors_1.Sequence0Error('attestationId must be a non-empty string');
|
|
118
|
+
}
|
|
119
|
+
const response = await this.get(`/solvency/attestation/${attestationId}/status`);
|
|
120
|
+
const validStatuses = ['pending', 'verifying', 'complete', 'failed'];
|
|
121
|
+
const status = validStatuses.includes(response.status)
|
|
122
|
+
? response.status
|
|
123
|
+
: 'pending';
|
|
124
|
+
return {
|
|
125
|
+
attestationId: response.attestation_id,
|
|
126
|
+
status,
|
|
127
|
+
chainsVerified: response.chains_verified,
|
|
128
|
+
chainsTotal: response.chains_total,
|
|
129
|
+
attestation: response.attestation
|
|
130
|
+
? this.mapAttestationResponse(response.attestation)
|
|
131
|
+
: undefined,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Get the latest completed solvency attestation for an exchange.
|
|
136
|
+
*
|
|
137
|
+
* @param exchangeId - The exchange ID
|
|
138
|
+
* @returns The latest attestation, or null if no attestations exist
|
|
139
|
+
*
|
|
140
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
141
|
+
*/
|
|
142
|
+
async getLatestAttestation(exchangeId) {
|
|
143
|
+
if (!exchangeId || typeof exchangeId !== 'string') {
|
|
144
|
+
throw new errors_1.Sequence0Error('exchangeId must be a non-empty string');
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
const response = await this.get(`/solvency/exchange/${exchangeId}/latest`);
|
|
148
|
+
if (!response || !response.attestation_id) {
|
|
149
|
+
return null;
|
|
150
|
+
}
|
|
151
|
+
return this.mapAttestationResponse(response);
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
// 404 means no attestations exist yet
|
|
155
|
+
if (err instanceof errors_1.NetworkError && err.statusCode === 404) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
throw err;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get attestation history for an exchange.
|
|
163
|
+
*
|
|
164
|
+
* @param exchangeId - The exchange ID
|
|
165
|
+
* @param limit - Max number of attestations to return (default: 20)
|
|
166
|
+
* @returns Array of attestations, most recent first
|
|
167
|
+
*
|
|
168
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
169
|
+
*/
|
|
170
|
+
async getAttestationHistory(exchangeId, limit) {
|
|
171
|
+
if (!exchangeId || typeof exchangeId !== 'string') {
|
|
172
|
+
throw new errors_1.Sequence0Error('exchangeId must be a non-empty string');
|
|
173
|
+
}
|
|
174
|
+
const queryLimit = limit && limit > 0 ? limit : 20;
|
|
175
|
+
const response = await this.get(`/solvency/exchange/${exchangeId}/history?limit=${queryLimit}`);
|
|
176
|
+
if (!response || !Array.isArray(response.attestations)) {
|
|
177
|
+
throw new errors_1.Sequence0Error('Invalid response from /solvency/exchange/history: missing attestations array');
|
|
178
|
+
}
|
|
179
|
+
return response.attestations.map((a) => this.mapAttestationResponse(a));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* List all registered exchanges.
|
|
183
|
+
*
|
|
184
|
+
* @returns Array of exchange info objects
|
|
185
|
+
*
|
|
186
|
+
* @throws {NetworkError} If the agent is unreachable
|
|
187
|
+
*/
|
|
188
|
+
async listExchanges() {
|
|
189
|
+
const response = await this.get('/solvency/exchanges');
|
|
190
|
+
if (!response || !Array.isArray(response.exchanges)) {
|
|
191
|
+
throw new errors_1.Sequence0Error('Invalid response from /solvency/exchanges: missing exchanges array');
|
|
192
|
+
}
|
|
193
|
+
return response.exchanges.map((e) => this.mapExchangeResponse(e));
|
|
194
|
+
}
|
|
195
|
+
// ── Internal HTTP helpers ──
|
|
196
|
+
async get(path) {
|
|
197
|
+
const url = `${this.baseUrl}${path}`;
|
|
198
|
+
let res;
|
|
199
|
+
try {
|
|
200
|
+
res = await fetch(url, {
|
|
201
|
+
method: 'GET',
|
|
202
|
+
headers: { 'Content-Type': 'application/json' },
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
throw new errors_1.NetworkError(`Failed to reach agent at ${url}: ${err.message}`);
|
|
207
|
+
}
|
|
208
|
+
if (!res.ok) {
|
|
209
|
+
const body = await res.text().catch(() => '');
|
|
210
|
+
throw new errors_1.NetworkError(`GET ${path} failed with status ${res.status}: ${body}`, res.status);
|
|
211
|
+
}
|
|
212
|
+
return res.json();
|
|
213
|
+
}
|
|
214
|
+
async post(path, body) {
|
|
215
|
+
const url = `${this.baseUrl}${path}`;
|
|
216
|
+
let res;
|
|
217
|
+
try {
|
|
218
|
+
res = await fetch(url, {
|
|
219
|
+
method: 'POST',
|
|
220
|
+
headers: { 'Content-Type': 'application/json' },
|
|
221
|
+
body: JSON.stringify(body),
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
throw new errors_1.NetworkError(`Failed to reach agent at ${url}: ${err.message}`);
|
|
226
|
+
}
|
|
227
|
+
if (!res.ok) {
|
|
228
|
+
const errBody = await res.text().catch(() => '');
|
|
229
|
+
throw new errors_1.NetworkError(`POST ${path} failed with status ${res.status}: ${errBody}`, res.status);
|
|
230
|
+
}
|
|
231
|
+
return res.json();
|
|
232
|
+
}
|
|
233
|
+
// ── Response Mappers ──
|
|
234
|
+
mapExchangeResponse(response) {
|
|
235
|
+
if (!response || typeof response.exchange_id !== 'string') {
|
|
236
|
+
throw new errors_1.Sequence0Error('Invalid exchange response: missing exchange_id');
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
exchangeId: response.exchange_id,
|
|
240
|
+
name: response.name,
|
|
241
|
+
ownerAddress: response.owner_address,
|
|
242
|
+
chains: response.chains ?? [],
|
|
243
|
+
registeredAt: response.registered_at,
|
|
244
|
+
isActive: response.is_active ?? true,
|
|
245
|
+
totalAttestations: response.total_attestations ?? 0,
|
|
246
|
+
lastAttestationAt: response.last_attestation_at,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
mapAttestationResponse(response) {
|
|
250
|
+
if (!response || typeof response.attestation_id !== 'string') {
|
|
251
|
+
throw new errors_1.Sequence0Error('Invalid attestation response: missing attestation_id');
|
|
252
|
+
}
|
|
253
|
+
return {
|
|
254
|
+
attestationId: response.attestation_id,
|
|
255
|
+
exchangeId: response.exchange_id,
|
|
256
|
+
assetsHash: response.assets_hash,
|
|
257
|
+
liabilitiesHash: response.liabilities_hash,
|
|
258
|
+
isSolvent: response.is_solvent,
|
|
259
|
+
timestamp: response.timestamp,
|
|
260
|
+
blockNumber: response.block_number,
|
|
261
|
+
totalChains: response.total_chains,
|
|
262
|
+
signature: response.signature,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
exports.SolvencyClient = SolvencyClient;
|
|
267
|
+
//# sourceMappingURL=solvency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solvency.js","sourceRoot":"","sources":["../../src/core/solvency.ts"],"names":[],"mappings":"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"}
|
package/dist/core/types.d.ts
CHANGED
|
@@ -54,6 +54,17 @@ export interface NetworkConfig {
|
|
|
54
54
|
* Does not affect explicitly-provided `agentUrl`.
|
|
55
55
|
*/
|
|
56
56
|
useHttps?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Optional: delegate's private key for signing as a delegated authority.
|
|
59
|
+
* When provided along with `delegationId`, signing requests use
|
|
60
|
+
* `delegation_id` and `delegate_signature` instead of `owner_signature`.
|
|
61
|
+
*/
|
|
62
|
+
delegatePrivateKey?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Optional: delegation grant ID for delegate signing.
|
|
65
|
+
* Must be provided together with `delegatePrivateKey`.
|
|
66
|
+
*/
|
|
67
|
+
delegationId?: string;
|
|
57
68
|
}
|
|
58
69
|
/** Agent node info from on-chain registry */
|
|
59
70
|
export interface AgentInfo {
|
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,WAAW,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAIvE,MAAM,MAAM,KAAK,GAEX,UAAU,GACV,SAAS,GACT,KAAK,GACL,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,UAAU,GACV,WAAW,GACX,SAAS,GACT,MAAM,GACN,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,MAAM,GACN,OAAO,GACP,MAAM,GACN,OAAO,GACP,OAAO,GACP,WAAW,GACX,OAAO,GACP,aAAa,GAEb,UAAU,GACV,UAAU,GACV,MAAM,GACN,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,MAAM,GACN,OAAO,GACP,eAAe,GACf,OAAO,GACP,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,OAAO,GACP,SAAS,GACT,YAAY,GACZ,MAAM,GACN,UAAU,GACV,OAAO,GACP,MAAM,GACN,KAAK,GACL,KAAK,GACL,OAAO,GACP,aAAa,GACb,WAAW,GACX,OAAO,GACP,UAAU,GACV,KAAK,GACL,UAAU,GACV,SAAS,GACT,SAAS,GACT,aAAa,GAEb,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,KAAK,GACL,OAAO,GACP,UAAU,GACV,SAAS,GACT,MAAM,GACN,UAAU,GACV,UAAU,GACV,SAAS,GACT,KAAK,GACL,UAAU,GACV,OAAO,GACP,QAAQ,GACR,aAAa,GACb,WAAW,GACX,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,KAAK,CAAC;AAIZ,MAAM,WAAW,aAAa;IAC1B,sCAAsC;IACtC,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,WAAW,CAAC,EAAE,OAAO,uBAAuB,EAAE,kBAAkB,GAAG,KAAK,CAAC;IACzE,8FAA8F;IAC9F,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,iBAAiB,EAAE,MAAM,CAAC;IAC1C;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
|