@threnn/acap-sdk 0.2.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.
@@ -0,0 +1,293 @@
1
+ import { AttestationRun, CapabilityCertificate, VerificationResult, NutritionLabel, RegistryListing, BenchmarkSuite, CapabilityDriftEvent, NistExport, OpenBadgeCredential, AgentAdapter, RunProgress } from '@threnn/acap-core';
2
+ export { AgentAdapter, AgentMetadata, AgentResponse, AttestationRun, BenchmarkSuite, CapabilityCertificate, CapabilityDriftEvent, ComparisonResult, DimensionScore, DriftSummary, InteroperabilityLevel, NistExport, NutritionLabel, OpenBadgeCredential, RegistryListing, RegistrySearchParams, RegistrySearchResult, RunProgress, TaskResult, VerificationResult } from '@threnn/acap-core';
3
+
4
+ /**
5
+ * SDK-specific types for the ACAP client.
6
+ */
7
+ interface PaginatedResult<T> {
8
+ data: T[];
9
+ total: number;
10
+ page: number;
11
+ pageSize: number;
12
+ }
13
+ interface ListCertificatesOptions {
14
+ agentId?: string;
15
+ domain?: string;
16
+ status?: string;
17
+ page?: number;
18
+ pageSize?: number;
19
+ }
20
+ interface SearchRegistryOptions {
21
+ domain?: string;
22
+ minScore?: number;
23
+ maxScore?: number;
24
+ tier?: string;
25
+ query?: string;
26
+ sortBy?: 'score' | 'recent' | 'name';
27
+ page?: number;
28
+ pageSize?: number;
29
+ }
30
+ interface ListSuitesOptions {
31
+ domain?: string;
32
+ isPublic?: boolean;
33
+ }
34
+ interface LeaderboardEntry {
35
+ rank: number;
36
+ id: string;
37
+ certificate_id: string;
38
+ agent_name: string;
39
+ agent_description: string;
40
+ overall_score: number;
41
+ capability_tier: string;
42
+ listed_at: string;
43
+ }
44
+ /** Options for starting an attestation run */
45
+ interface StartAttestationOptions {
46
+ /** Agent identifier */
47
+ agentId: string;
48
+ /** Benchmark suite ID (UUID) */
49
+ suiteId: string;
50
+ /** Agent's HTTP endpoint URL */
51
+ agentEndpoint: string;
52
+ /** API key for authenticating with the agent (optional) */
53
+ agentApiKey?: string;
54
+ /** Adapter type (default: 'http') */
55
+ agentAdapter?: 'http' | 'anthropic' | 'openai' | 'mcp';
56
+ /** Model ID for Anthropic/OpenAI adapters */
57
+ agentModel?: string;
58
+ /** System prompt for the agent (optional) */
59
+ agentSystemPrompt?: string;
60
+ /** MCP tool name (required if agentAdapter='mcp') */
61
+ mcpToolName?: string;
62
+ /** Agent metadata overrides */
63
+ agentMetadata?: {
64
+ modelProvider?: string;
65
+ modelVersion?: string;
66
+ temperature?: number;
67
+ };
68
+ /** Max parallel tasks (1-10, default: 1) */
69
+ concurrency?: number;
70
+ /** Per-task timeout in ms (1000-300000, default: 30000) */
71
+ timeout_ms?: number;
72
+ }
73
+ interface ListRunsOptions {
74
+ agentId?: string;
75
+ suiteId?: string;
76
+ status?: string;
77
+ page?: number;
78
+ pageSize?: number;
79
+ }
80
+ interface ListDriftOptions {
81
+ agentId?: string;
82
+ severity?: string;
83
+ acknowledged?: boolean;
84
+ page?: number;
85
+ pageSize?: number;
86
+ }
87
+ interface AcknowledgeDriftResult {
88
+ success: boolean;
89
+ acknowledged: number;
90
+ }
91
+ /** Result from a completed attestation */
92
+ interface AttestationResult {
93
+ id: string;
94
+ status: string;
95
+ agentId: string;
96
+ benchmarkSuiteId: string;
97
+ certificateId?: string;
98
+ overallScore?: number;
99
+ capabilityTier?: string;
100
+ duration_ms?: number;
101
+ taskProgress?: {
102
+ totalTasks: number;
103
+ completedTasks: number;
104
+ passedTasks: number;
105
+ failedTasks: number;
106
+ };
107
+ certificate?: unknown;
108
+ error?: string;
109
+ }
110
+
111
+ /**
112
+ * ACAP SDK Client — submit attestations, query certificates, search the registry.
113
+ */
114
+
115
+ interface ACAPClientConfig {
116
+ /** Base URL of the ACAP API (e.g., 'https://app.threnn.ai') */
117
+ baseUrl: string;
118
+ /** API key for authentication */
119
+ apiKey: string;
120
+ /** Custom fetch implementation (defaults to global fetch) */
121
+ fetch?: typeof globalThis.fetch;
122
+ }
123
+ declare class ACAPClient {
124
+ private baseUrl;
125
+ private apiKey;
126
+ private fetchFn;
127
+ constructor(config: ACAPClientConfig);
128
+ private headers;
129
+ private get;
130
+ private post;
131
+ private put;
132
+ private del;
133
+ private patch;
134
+ private handleResponse;
135
+ /**
136
+ * Start an attestation run — executes the benchmark and returns the result with certificate.
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * const result = await client.startAttestation({
141
+ * agentId: 'my-agent',
142
+ * suiteId: 'suite-uuid',
143
+ * agentEndpoint: 'https://my-agent.example.com/api/chat',
144
+ * agentAdapter: 'http',
145
+ * });
146
+ * console.log(result.certificate); // Signed CapabilityCertificate
147
+ * ```
148
+ */
149
+ startAttestation(opts: StartAttestationOptions): Promise<AttestationResult>;
150
+ /** Get the status of an attestation run */
151
+ getAttestationStatus(runId: string): Promise<AttestationRun>;
152
+ /** Cancel a running attestation */
153
+ cancelAttestation(runId: string): Promise<void>;
154
+ /** List attestation runs with optional filters */
155
+ listRuns(opts?: ListRunsOptions): Promise<PaginatedResult<AttestationRun>>;
156
+ /** Get a certificate by ID */
157
+ getCertificate(id: string): Promise<CapabilityCertificate>;
158
+ /** List certificates with optional filters */
159
+ listCertificates(opts?: ListCertificatesOptions): Promise<PaginatedResult<CapabilityCertificate>>;
160
+ /** Get certificates for a specific agent */
161
+ getCertificatesForAgent(agentId: string, opts?: {
162
+ domain?: string;
163
+ status?: string;
164
+ page?: number;
165
+ pageSize?: number;
166
+ }): Promise<PaginatedResult<CapabilityCertificate>>;
167
+ /** Verify a certificate's integrity and validity */
168
+ verifyCertificate(id: string): Promise<VerificationResult>;
169
+ /** Revoke a certificate */
170
+ revokeCertificate(id: string, reason?: string): Promise<void>;
171
+ /** Get a nutrition label for a certificate */
172
+ getNutritionLabel(id: string): Promise<NutritionLabel>;
173
+ /** Publish a certificate to the public registry */
174
+ publishToRegistry(certificateId: string, agentName: string, agentDescription: string): Promise<RegistryListing>;
175
+ /** Search the public registry */
176
+ searchRegistry(opts?: SearchRegistryOptions): Promise<PaginatedResult<RegistryListing>>;
177
+ /** Get leaderboard for a domain */
178
+ getLeaderboard(domain: string, limit?: number): Promise<{
179
+ domain: string;
180
+ entries: LeaderboardEntry[];
181
+ }>;
182
+ /** Get a benchmark suite by ID */
183
+ getSuite(id: string): Promise<BenchmarkSuite>;
184
+ /** List benchmark suites (public + own) */
185
+ listSuites(opts?: ListSuitesOptions): Promise<BenchmarkSuite[]>;
186
+ /** Create a custom benchmark suite */
187
+ createSuite(input: Partial<BenchmarkSuite>): Promise<BenchmarkSuite>;
188
+ /** Update a benchmark suite */
189
+ updateSuite(id: string, input: Partial<BenchmarkSuite>): Promise<BenchmarkSuite>;
190
+ /** Delete a benchmark suite */
191
+ deleteSuite(id: string): Promise<{
192
+ success: boolean;
193
+ }>;
194
+ /** List capability drift events with optional filters */
195
+ listDrift(opts?: ListDriftOptions): Promise<PaginatedResult<CapabilityDriftEvent>>;
196
+ /** Acknowledge drift events by IDs */
197
+ acknowledgeDrift(eventIds: string[], note?: string): Promise<AcknowledgeDriftResult>;
198
+ /** Compare multiple certificates side-by-side */
199
+ compareAgents(certIds: string[]): Promise<{
200
+ certificates: Array<{
201
+ id: string;
202
+ agentId: string;
203
+ domain: string;
204
+ overallScore: number;
205
+ tier: string;
206
+ issuedAt: string;
207
+ }>;
208
+ dimensionComparisons: Array<{
209
+ dimension: string;
210
+ scores: Array<{
211
+ certificateId: string;
212
+ agentId: string;
213
+ score: number;
214
+ }>;
215
+ maxDelta: number;
216
+ }>;
217
+ overallRanking: Array<{
218
+ certificateId: string;
219
+ agentId: string;
220
+ overallScore: number;
221
+ tier: string;
222
+ }>;
223
+ }>;
224
+ /** Get NIST-aligned JSON-LD export for a certificate */
225
+ getNistExport(id: string): Promise<NistExport>;
226
+ /** Get OpenBadges v3 (W3C Verifiable Credential) export for a certificate */
227
+ getOpenBadge(id: string): Promise<OpenBadgeCredential>;
228
+ /** Get Markdown nutrition label for a certificate */
229
+ getMarkdownLabel(id: string): Promise<string>;
230
+ /** Get current webhook configuration */
231
+ getWebhookConfig(): Promise<{
232
+ url: string | null;
233
+ }>;
234
+ /** Set webhook URL (auto-generates secret, returned once) */
235
+ setWebhookConfig(url: string): Promise<{
236
+ url: string;
237
+ secret: string;
238
+ }>;
239
+ /** Remove webhook configuration */
240
+ deleteWebhookConfig(): Promise<{
241
+ success: boolean;
242
+ }>;
243
+ }
244
+
245
+ interface AttesterConfig {
246
+ agentAdapter: AgentAdapter;
247
+ suite: BenchmarkSuite;
248
+ concurrency?: number;
249
+ timeout_ms?: number;
250
+ signerCredential: string;
251
+ onProgress?: (progress: RunProgress) => void;
252
+ }
253
+ /**
254
+ * ACAP Attester — runs benchmark suites against agents locally and produces certificates.
255
+ *
256
+ * @beta Local attestation is not yet implemented. Use `ACAPClient.startAttestation()`
257
+ * for server-side attestation, which is fully functional.
258
+ *
259
+ * @example
260
+ * ```typescript
261
+ * // Server-side attestation (recommended):
262
+ * const client = new ACAPClient({ baseUrl: '...', apiKey: '...' });
263
+ * const run = await client.startAttestation({ agentId: '...', suiteId: '...' });
264
+ * ```
265
+ */
266
+ declare class Attester {
267
+ private config;
268
+ constructor(config: AttesterConfig);
269
+ /**
270
+ * Run the benchmark suite against the configured agent.
271
+ * @beta Not yet implemented. Use `ACAPClient.startAttestation()` instead.
272
+ */
273
+ run(): Promise<AttestationRun & {
274
+ certificate: CapabilityCertificate;
275
+ }>;
276
+ /**
277
+ * Cancel a running attestation.
278
+ * @beta Not yet implemented. Use `ACAPClient.cancelAttestation()` instead.
279
+ */
280
+ cancel(): Promise<void>;
281
+ getProgress(): RunProgress;
282
+ }
283
+
284
+ /**
285
+ * Error class for ACAP SDK operations.
286
+ */
287
+ declare class ACAPError extends Error {
288
+ status: number;
289
+ code?: string | undefined;
290
+ constructor(message: string, status: number, code?: string | undefined);
291
+ }
292
+
293
+ export { ACAPClient, type ACAPClientConfig, ACAPError, type AcknowledgeDriftResult, type AttestationResult, Attester, type AttesterConfig, type LeaderboardEntry, type ListCertificatesOptions, type ListDriftOptions, type ListRunsOptions, type ListSuitesOptions, type PaginatedResult, type SearchRegistryOptions, type StartAttestationOptions };
@@ -0,0 +1,293 @@
1
+ import { AttestationRun, CapabilityCertificate, VerificationResult, NutritionLabel, RegistryListing, BenchmarkSuite, CapabilityDriftEvent, NistExport, OpenBadgeCredential, AgentAdapter, RunProgress } from '@threnn/acap-core';
2
+ export { AgentAdapter, AgentMetadata, AgentResponse, AttestationRun, BenchmarkSuite, CapabilityCertificate, CapabilityDriftEvent, ComparisonResult, DimensionScore, DriftSummary, InteroperabilityLevel, NistExport, NutritionLabel, OpenBadgeCredential, RegistryListing, RegistrySearchParams, RegistrySearchResult, RunProgress, TaskResult, VerificationResult } from '@threnn/acap-core';
3
+
4
+ /**
5
+ * SDK-specific types for the ACAP client.
6
+ */
7
+ interface PaginatedResult<T> {
8
+ data: T[];
9
+ total: number;
10
+ page: number;
11
+ pageSize: number;
12
+ }
13
+ interface ListCertificatesOptions {
14
+ agentId?: string;
15
+ domain?: string;
16
+ status?: string;
17
+ page?: number;
18
+ pageSize?: number;
19
+ }
20
+ interface SearchRegistryOptions {
21
+ domain?: string;
22
+ minScore?: number;
23
+ maxScore?: number;
24
+ tier?: string;
25
+ query?: string;
26
+ sortBy?: 'score' | 'recent' | 'name';
27
+ page?: number;
28
+ pageSize?: number;
29
+ }
30
+ interface ListSuitesOptions {
31
+ domain?: string;
32
+ isPublic?: boolean;
33
+ }
34
+ interface LeaderboardEntry {
35
+ rank: number;
36
+ id: string;
37
+ certificate_id: string;
38
+ agent_name: string;
39
+ agent_description: string;
40
+ overall_score: number;
41
+ capability_tier: string;
42
+ listed_at: string;
43
+ }
44
+ /** Options for starting an attestation run */
45
+ interface StartAttestationOptions {
46
+ /** Agent identifier */
47
+ agentId: string;
48
+ /** Benchmark suite ID (UUID) */
49
+ suiteId: string;
50
+ /** Agent's HTTP endpoint URL */
51
+ agentEndpoint: string;
52
+ /** API key for authenticating with the agent (optional) */
53
+ agentApiKey?: string;
54
+ /** Adapter type (default: 'http') */
55
+ agentAdapter?: 'http' | 'anthropic' | 'openai' | 'mcp';
56
+ /** Model ID for Anthropic/OpenAI adapters */
57
+ agentModel?: string;
58
+ /** System prompt for the agent (optional) */
59
+ agentSystemPrompt?: string;
60
+ /** MCP tool name (required if agentAdapter='mcp') */
61
+ mcpToolName?: string;
62
+ /** Agent metadata overrides */
63
+ agentMetadata?: {
64
+ modelProvider?: string;
65
+ modelVersion?: string;
66
+ temperature?: number;
67
+ };
68
+ /** Max parallel tasks (1-10, default: 1) */
69
+ concurrency?: number;
70
+ /** Per-task timeout in ms (1000-300000, default: 30000) */
71
+ timeout_ms?: number;
72
+ }
73
+ interface ListRunsOptions {
74
+ agentId?: string;
75
+ suiteId?: string;
76
+ status?: string;
77
+ page?: number;
78
+ pageSize?: number;
79
+ }
80
+ interface ListDriftOptions {
81
+ agentId?: string;
82
+ severity?: string;
83
+ acknowledged?: boolean;
84
+ page?: number;
85
+ pageSize?: number;
86
+ }
87
+ interface AcknowledgeDriftResult {
88
+ success: boolean;
89
+ acknowledged: number;
90
+ }
91
+ /** Result from a completed attestation */
92
+ interface AttestationResult {
93
+ id: string;
94
+ status: string;
95
+ agentId: string;
96
+ benchmarkSuiteId: string;
97
+ certificateId?: string;
98
+ overallScore?: number;
99
+ capabilityTier?: string;
100
+ duration_ms?: number;
101
+ taskProgress?: {
102
+ totalTasks: number;
103
+ completedTasks: number;
104
+ passedTasks: number;
105
+ failedTasks: number;
106
+ };
107
+ certificate?: unknown;
108
+ error?: string;
109
+ }
110
+
111
+ /**
112
+ * ACAP SDK Client — submit attestations, query certificates, search the registry.
113
+ */
114
+
115
+ interface ACAPClientConfig {
116
+ /** Base URL of the ACAP API (e.g., 'https://app.threnn.ai') */
117
+ baseUrl: string;
118
+ /** API key for authentication */
119
+ apiKey: string;
120
+ /** Custom fetch implementation (defaults to global fetch) */
121
+ fetch?: typeof globalThis.fetch;
122
+ }
123
+ declare class ACAPClient {
124
+ private baseUrl;
125
+ private apiKey;
126
+ private fetchFn;
127
+ constructor(config: ACAPClientConfig);
128
+ private headers;
129
+ private get;
130
+ private post;
131
+ private put;
132
+ private del;
133
+ private patch;
134
+ private handleResponse;
135
+ /**
136
+ * Start an attestation run — executes the benchmark and returns the result with certificate.
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * const result = await client.startAttestation({
141
+ * agentId: 'my-agent',
142
+ * suiteId: 'suite-uuid',
143
+ * agentEndpoint: 'https://my-agent.example.com/api/chat',
144
+ * agentAdapter: 'http',
145
+ * });
146
+ * console.log(result.certificate); // Signed CapabilityCertificate
147
+ * ```
148
+ */
149
+ startAttestation(opts: StartAttestationOptions): Promise<AttestationResult>;
150
+ /** Get the status of an attestation run */
151
+ getAttestationStatus(runId: string): Promise<AttestationRun>;
152
+ /** Cancel a running attestation */
153
+ cancelAttestation(runId: string): Promise<void>;
154
+ /** List attestation runs with optional filters */
155
+ listRuns(opts?: ListRunsOptions): Promise<PaginatedResult<AttestationRun>>;
156
+ /** Get a certificate by ID */
157
+ getCertificate(id: string): Promise<CapabilityCertificate>;
158
+ /** List certificates with optional filters */
159
+ listCertificates(opts?: ListCertificatesOptions): Promise<PaginatedResult<CapabilityCertificate>>;
160
+ /** Get certificates for a specific agent */
161
+ getCertificatesForAgent(agentId: string, opts?: {
162
+ domain?: string;
163
+ status?: string;
164
+ page?: number;
165
+ pageSize?: number;
166
+ }): Promise<PaginatedResult<CapabilityCertificate>>;
167
+ /** Verify a certificate's integrity and validity */
168
+ verifyCertificate(id: string): Promise<VerificationResult>;
169
+ /** Revoke a certificate */
170
+ revokeCertificate(id: string, reason?: string): Promise<void>;
171
+ /** Get a nutrition label for a certificate */
172
+ getNutritionLabel(id: string): Promise<NutritionLabel>;
173
+ /** Publish a certificate to the public registry */
174
+ publishToRegistry(certificateId: string, agentName: string, agentDescription: string): Promise<RegistryListing>;
175
+ /** Search the public registry */
176
+ searchRegistry(opts?: SearchRegistryOptions): Promise<PaginatedResult<RegistryListing>>;
177
+ /** Get leaderboard for a domain */
178
+ getLeaderboard(domain: string, limit?: number): Promise<{
179
+ domain: string;
180
+ entries: LeaderboardEntry[];
181
+ }>;
182
+ /** Get a benchmark suite by ID */
183
+ getSuite(id: string): Promise<BenchmarkSuite>;
184
+ /** List benchmark suites (public + own) */
185
+ listSuites(opts?: ListSuitesOptions): Promise<BenchmarkSuite[]>;
186
+ /** Create a custom benchmark suite */
187
+ createSuite(input: Partial<BenchmarkSuite>): Promise<BenchmarkSuite>;
188
+ /** Update a benchmark suite */
189
+ updateSuite(id: string, input: Partial<BenchmarkSuite>): Promise<BenchmarkSuite>;
190
+ /** Delete a benchmark suite */
191
+ deleteSuite(id: string): Promise<{
192
+ success: boolean;
193
+ }>;
194
+ /** List capability drift events with optional filters */
195
+ listDrift(opts?: ListDriftOptions): Promise<PaginatedResult<CapabilityDriftEvent>>;
196
+ /** Acknowledge drift events by IDs */
197
+ acknowledgeDrift(eventIds: string[], note?: string): Promise<AcknowledgeDriftResult>;
198
+ /** Compare multiple certificates side-by-side */
199
+ compareAgents(certIds: string[]): Promise<{
200
+ certificates: Array<{
201
+ id: string;
202
+ agentId: string;
203
+ domain: string;
204
+ overallScore: number;
205
+ tier: string;
206
+ issuedAt: string;
207
+ }>;
208
+ dimensionComparisons: Array<{
209
+ dimension: string;
210
+ scores: Array<{
211
+ certificateId: string;
212
+ agentId: string;
213
+ score: number;
214
+ }>;
215
+ maxDelta: number;
216
+ }>;
217
+ overallRanking: Array<{
218
+ certificateId: string;
219
+ agentId: string;
220
+ overallScore: number;
221
+ tier: string;
222
+ }>;
223
+ }>;
224
+ /** Get NIST-aligned JSON-LD export for a certificate */
225
+ getNistExport(id: string): Promise<NistExport>;
226
+ /** Get OpenBadges v3 (W3C Verifiable Credential) export for a certificate */
227
+ getOpenBadge(id: string): Promise<OpenBadgeCredential>;
228
+ /** Get Markdown nutrition label for a certificate */
229
+ getMarkdownLabel(id: string): Promise<string>;
230
+ /** Get current webhook configuration */
231
+ getWebhookConfig(): Promise<{
232
+ url: string | null;
233
+ }>;
234
+ /** Set webhook URL (auto-generates secret, returned once) */
235
+ setWebhookConfig(url: string): Promise<{
236
+ url: string;
237
+ secret: string;
238
+ }>;
239
+ /** Remove webhook configuration */
240
+ deleteWebhookConfig(): Promise<{
241
+ success: boolean;
242
+ }>;
243
+ }
244
+
245
+ interface AttesterConfig {
246
+ agentAdapter: AgentAdapter;
247
+ suite: BenchmarkSuite;
248
+ concurrency?: number;
249
+ timeout_ms?: number;
250
+ signerCredential: string;
251
+ onProgress?: (progress: RunProgress) => void;
252
+ }
253
+ /**
254
+ * ACAP Attester — runs benchmark suites against agents locally and produces certificates.
255
+ *
256
+ * @beta Local attestation is not yet implemented. Use `ACAPClient.startAttestation()`
257
+ * for server-side attestation, which is fully functional.
258
+ *
259
+ * @example
260
+ * ```typescript
261
+ * // Server-side attestation (recommended):
262
+ * const client = new ACAPClient({ baseUrl: '...', apiKey: '...' });
263
+ * const run = await client.startAttestation({ agentId: '...', suiteId: '...' });
264
+ * ```
265
+ */
266
+ declare class Attester {
267
+ private config;
268
+ constructor(config: AttesterConfig);
269
+ /**
270
+ * Run the benchmark suite against the configured agent.
271
+ * @beta Not yet implemented. Use `ACAPClient.startAttestation()` instead.
272
+ */
273
+ run(): Promise<AttestationRun & {
274
+ certificate: CapabilityCertificate;
275
+ }>;
276
+ /**
277
+ * Cancel a running attestation.
278
+ * @beta Not yet implemented. Use `ACAPClient.cancelAttestation()` instead.
279
+ */
280
+ cancel(): Promise<void>;
281
+ getProgress(): RunProgress;
282
+ }
283
+
284
+ /**
285
+ * Error class for ACAP SDK operations.
286
+ */
287
+ declare class ACAPError extends Error {
288
+ status: number;
289
+ code?: string | undefined;
290
+ constructor(message: string, status: number, code?: string | undefined);
291
+ }
292
+
293
+ export { ACAPClient, type ACAPClientConfig, ACAPError, type AcknowledgeDriftResult, type AttestationResult, Attester, type AttesterConfig, type LeaderboardEntry, type ListCertificatesOptions, type ListDriftOptions, type ListRunsOptions, type ListSuitesOptions, type PaginatedResult, type SearchRegistryOptions, type StartAttestationOptions };