@hashgraphonline/standards-agent-kit 0.2.161 → 0.2.162
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/cjs/builders/inscriber/inscriber-builder.d.ts +1 -0
- package/dist/cjs/standards-agent-kit.cjs +1 -1
- package/dist/cjs/standards-agent-kit.cjs.map +1 -1
- package/dist/cjs/utils/inscription-utils.d.ts +1 -1
- package/dist/es/builders/inscriber/inscriber-builder.d.ts +1 -0
- package/dist/es/standards-agent-kit.es51.js +1 -1
- package/dist/es/standards-agent-kit.es51.js.map +1 -1
- package/dist/es/standards-agent-kit.es8.js +78 -17
- package/dist/es/standards-agent-kit.es8.js.map +1 -1
- package/dist/es/utils/inscription-utils.d.ts +1 -1
- package/dist/umd/builders/inscriber/inscriber-builder.d.ts +1 -0
- package/dist/umd/standards-agent-kit.umd.js +16 -16
- package/dist/umd/standards-agent-kit.umd.js.map +1 -1
- package/dist/umd/utils/inscription-utils.d.ts +1 -1
- package/package.json +1 -1
- package/src/builders/inscriber/inscriber-builder.ts +84 -12
- package/src/utils/inscription-utils.ts +3 -2
|
@@ -9,7 +9,7 @@ export interface TopicIds {
|
|
|
9
9
|
* - Prefers jsonTopicId when present (for CDN linking)
|
|
10
10
|
* - Collects topic_id/topicId from either inscription or result
|
|
11
11
|
*/
|
|
12
|
-
export declare function extractTopicIds(inscription: RetrievedInscriptionResult, result?: unknown): TopicIds;
|
|
12
|
+
export declare function extractTopicIds(inscription: RetrievedInscriptionResult | undefined, result?: unknown): TopicIds;
|
|
13
13
|
/**
|
|
14
14
|
* Build HRL/CDN URLs from extracted topic ids.
|
|
15
15
|
* - HRL prefers jsonTopicId, falls back to topicId
|
|
@@ -28,6 +28,7 @@ export interface CompletedInscriptionResponse {
|
|
|
28
28
|
* Builder for Inscription operations
|
|
29
29
|
*/
|
|
30
30
|
type InscriptionSDKInstance = InstanceType<typeof InscriptionSDK>;
|
|
31
|
+
export declare const toDashedTransactionId: (transactionId: string) => string;
|
|
31
32
|
export declare class InscriberBuilder extends BaseServiceBuilder {
|
|
32
33
|
protected inscriptionSDK?: InscriptionSDKInstance;
|
|
33
34
|
private static signerProvider?;
|
|
@@ -4,7 +4,7 @@ function getStringProp(obj, key) {
|
|
|
4
4
|
return typeof val === "string" && val.trim() ? val : void 0;
|
|
5
5
|
}
|
|
6
6
|
function extractTopicIds(inscription, result) {
|
|
7
|
-
const jsonTopicId = inscription
|
|
7
|
+
const jsonTopicId = inscription?.jsonTopicId || getStringProp(inscription, "json_topic_id");
|
|
8
8
|
const imageTopicId = getStringProp(inscription, "topic_id") || getStringProp(inscription, "topicId") || getStringProp(result, "topicId") || getStringProp(result, "topic_id");
|
|
9
9
|
return {
|
|
10
10
|
jsonTopicId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-agent-kit.es51.js","sources":["../../src/utils/inscription-utils.ts"],"sourcesContent":["import { RetrievedInscriptionResult } from '@kiloscribe/inscription-sdk';\n\nexport type NetworkType = 'mainnet' | 'testnet';\n\nexport interface TopicIds {\n jsonTopicId?: string;\n topicId?: string;\n}\n\nfunction getStringProp(obj: unknown, key: string): string | undefined {\n if (!obj || typeof obj !== 'object') return undefined;\n const val = (obj as Record<string, unknown>)[key];\n return typeof val === 'string' && val.trim() ? val : undefined;\n}\n\n/**\n * Extract topic ids from an inscription and/or result object without using any.\n * - Prefers jsonTopicId when present (for CDN linking)\n * - Collects topic_id/topicId from either inscription or result\n */\nexport function extractTopicIds(\n inscription: RetrievedInscriptionResult,\n result?: unknown\n): TopicIds {\n const jsonTopicId =\n inscription
|
|
1
|
+
{"version":3,"file":"standards-agent-kit.es51.js","sources":["../../src/utils/inscription-utils.ts"],"sourcesContent":["import { RetrievedInscriptionResult } from '@kiloscribe/inscription-sdk';\n\nexport type NetworkType = 'mainnet' | 'testnet';\n\nexport interface TopicIds {\n jsonTopicId?: string;\n topicId?: string;\n}\n\nfunction getStringProp(obj: unknown, key: string): string | undefined {\n if (!obj || typeof obj !== 'object') return undefined;\n const val = (obj as Record<string, unknown>)[key];\n return typeof val === 'string' && val.trim() ? val : undefined;\n}\n\n/**\n * Extract topic ids from an inscription and/or result object without using any.\n * - Prefers jsonTopicId when present (for CDN linking)\n * - Collects topic_id/topicId from either inscription or result\n */\nexport function extractTopicIds(\n inscription: RetrievedInscriptionResult | undefined,\n result?: unknown\n): TopicIds {\n const jsonTopicId =\n (inscription as RetrievedInscriptionResult | undefined)?.jsonTopicId ||\n getStringProp(inscription, 'json_topic_id');\n\n const imageTopicId =\n getStringProp(inscription, 'topic_id') ||\n getStringProp(inscription, 'topicId') ||\n getStringProp(result, 'topicId') ||\n getStringProp(result, 'topic_id');\n\n return {\n jsonTopicId: jsonTopicId,\n topicId: imageTopicId,\n };\n}\n\n/**\n * Build HRL/CDN URLs from extracted topic ids.\n * - HRL prefers jsonTopicId, falls back to topicId\n * - CDN URL only provided when jsonTopicId is present\n */\nexport function buildInscriptionLinks(\n ids: TopicIds,\n network: NetworkType,\n fileStandard: string = '1'\n): { hrl?: string; cdnUrl?: string; topicId?: string } {\n const chosen = ids.jsonTopicId || ids.topicId;\n const hrl = chosen ? `hcs://${fileStandard}/${chosen}` : undefined;\n const cdnUrl = ids.jsonTopicId\n ? `https://kiloscribe.com/api/inscription-cdn/${ids.jsonTopicId}?network=${network}`\n : undefined;\n return { hrl, cdnUrl, topicId: chosen };\n}\n"],"names":[],"mappings":"AASA,SAAS,cAAc,KAAc,KAAiC;AACpE,MAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,QAAM,MAAO,IAAgC,GAAG;AAChD,SAAO,OAAO,QAAQ,YAAY,IAAI,KAAA,IAAS,MAAM;AACvD;AAOO,SAAS,gBACd,aACA,QACU;AACV,QAAM,cACH,aAAwD,eACzD,cAAc,aAAa,eAAe;AAE5C,QAAM,eACJ,cAAc,aAAa,UAAU,KACrC,cAAc,aAAa,SAAS,KACpC,cAAc,QAAQ,SAAS,KAC/B,cAAc,QAAQ,UAAU;AAElC,SAAO;AAAA,IACL;AAAA,IACA,SAAS;AAAA,EAAA;AAEb;AAOO,SAAS,sBACd,KACA,SACA,eAAuB,KAC8B;AACrD,QAAM,SAAS,IAAI,eAAe,IAAI;AACtC,QAAM,MAAM,SAAS,SAAS,YAAY,IAAI,MAAM,KAAK;AACzD,QAAM,SAAS,IAAI,cACf,8CAA8C,IAAI,WAAW,YAAY,OAAO,KAChF;AACJ,SAAO,EAAE,KAAK,QAAQ,SAAS,OAAA;AACjC;"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { BaseServiceBuilder } from "hedera-agent-kit";
|
|
2
2
|
import { inscribe, inscribeWithSigner, getTopicId, retrieveInscription } from "@hashgraphonline/standards-sdk";
|
|
3
3
|
import { InscriptionSDK } from "@kiloscribe/inscription-sdk";
|
|
4
|
+
const toDashedTransactionId = (transactionId) => {
|
|
5
|
+
if (transactionId.includes("-")) {
|
|
6
|
+
return transactionId;
|
|
7
|
+
}
|
|
8
|
+
const [account, timePart] = transactionId.split("@");
|
|
9
|
+
if (!account || !timePart) {
|
|
10
|
+
return transactionId;
|
|
11
|
+
}
|
|
12
|
+
const [secondsPart, nanosPart] = timePart.split(".");
|
|
13
|
+
if (!secondsPart) {
|
|
14
|
+
return transactionId;
|
|
15
|
+
}
|
|
16
|
+
const normalizedNanos = (nanosPart ?? "0").padEnd(9, "0").slice(0, 9);
|
|
17
|
+
return `${account}-${secondsPart}-${normalizedNanos}`;
|
|
18
|
+
};
|
|
4
19
|
const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
5
20
|
constructor(hederaKit) {
|
|
6
21
|
super(hederaKit);
|
|
@@ -47,6 +62,10 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
|
47
62
|
const networkType = network.toString().includes("mainnet") ? "mainnet" : "testnet";
|
|
48
63
|
const accountId = this.hederaKit.signer.getAccountId().toString();
|
|
49
64
|
try {
|
|
65
|
+
this.logger.info("Attempting InscriptionSDK.createWithAuth", {
|
|
66
|
+
accountId,
|
|
67
|
+
network: networkType
|
|
68
|
+
});
|
|
50
69
|
const privateKey = this.hederaKit.signer?.getOperatorPrivateKey();
|
|
51
70
|
if (privateKey) {
|
|
52
71
|
this.inscriptionSDK = await InscriptionSDK.createWithAuth({
|
|
@@ -55,6 +74,9 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
|
55
74
|
privateKey: privateKey.toStringRaw(),
|
|
56
75
|
network: networkType
|
|
57
76
|
});
|
|
77
|
+
this.logger.info("Created InscriptionSDK via createWithAuth", {
|
|
78
|
+
network: networkType
|
|
79
|
+
});
|
|
58
80
|
}
|
|
59
81
|
} catch (error) {
|
|
60
82
|
this.logger.warn("Failed to create InscriptionSDK with auth", error);
|
|
@@ -62,19 +84,27 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
|
62
84
|
}
|
|
63
85
|
if (!this.inscriptionSDK) {
|
|
64
86
|
try {
|
|
87
|
+
this.logger.info("Creating fallback InscriptionSDK instance", {
|
|
88
|
+
network: networkType
|
|
89
|
+
});
|
|
65
90
|
this.inscriptionSDK = new InscriptionSDK({
|
|
66
91
|
apiKey: "public-access",
|
|
67
92
|
network: networkType,
|
|
68
93
|
connectionMode: "http"
|
|
69
94
|
});
|
|
95
|
+
this.logger.info("Created fallback InscriptionSDK instance", {
|
|
96
|
+
network: networkType
|
|
97
|
+
});
|
|
98
|
+
return this.inscriptionSDK;
|
|
70
99
|
} catch (fallbackError) {
|
|
71
|
-
this.logger.
|
|
100
|
+
this.logger.error(
|
|
72
101
|
"Failed to create InscriptionSDK fallback instance",
|
|
73
102
|
fallbackError
|
|
74
103
|
);
|
|
75
104
|
}
|
|
76
105
|
}
|
|
77
|
-
|
|
106
|
+
this.logger.error("failed to setup sdk");
|
|
107
|
+
return null;
|
|
78
108
|
}
|
|
79
109
|
/**
|
|
80
110
|
* Inscribe content using server-side authentication
|
|
@@ -165,6 +195,11 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
|
165
195
|
request,
|
|
166
196
|
network
|
|
167
197
|
);
|
|
198
|
+
this.logger.info("inscribeAuto start response", {
|
|
199
|
+
hasTransactionBytes: typeof start.transactionBytes === "string",
|
|
200
|
+
txId: start.tx_id,
|
|
201
|
+
status: start.status
|
|
202
|
+
});
|
|
168
203
|
const completedStart = start;
|
|
169
204
|
const isCompletedResponse = Boolean(completedStart?.inscription) && completedStart?.confirmed;
|
|
170
205
|
if (isCompletedResponse) {
|
|
@@ -189,23 +224,48 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
|
189
224
|
network
|
|
190
225
|
);
|
|
191
226
|
const transactionId = exec?.transactionId || "";
|
|
227
|
+
this.logger.info("inscribeAuto wallet execution", {
|
|
228
|
+
transactionId,
|
|
229
|
+
network
|
|
230
|
+
});
|
|
192
231
|
const shouldWait = options.quoteOnly ? false : options.waitForConfirmation ?? true;
|
|
232
|
+
const canonicalTransactionId = toDashedTransactionId(
|
|
233
|
+
startResponse.tx_id || transactionId
|
|
234
|
+
);
|
|
193
235
|
if (shouldWait) {
|
|
194
|
-
this.logger.debug("Will be retrieving inscription");
|
|
195
236
|
const maxAttempts = options.waitMaxAttempts ?? 60;
|
|
196
237
|
const intervalMs = options.waitIntervalMs ?? 5e3;
|
|
197
|
-
const pollId =
|
|
238
|
+
const pollId = canonicalTransactionId;
|
|
239
|
+
this.logger.debug("Will be retrieving inscription", pollId);
|
|
240
|
+
let retrieved = null;
|
|
198
241
|
const sdk = await this.getInscriptionSDK(options);
|
|
242
|
+
console.log("got an SDK", sdk);
|
|
199
243
|
if (sdk) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
244
|
+
try {
|
|
245
|
+
retrieved = await sdk.waitForInscription(
|
|
246
|
+
pollId,
|
|
247
|
+
maxAttempts,
|
|
248
|
+
intervalMs,
|
|
249
|
+
true,
|
|
250
|
+
(progress) => {
|
|
251
|
+
this.logger.debug("checking inscription", progress);
|
|
252
|
+
}
|
|
253
|
+
);
|
|
254
|
+
} catch (error) {
|
|
255
|
+
this.logger.warn("Primary inscription wait failed", {
|
|
256
|
+
pollId,
|
|
257
|
+
error: error instanceof Error ? error.message : String(error)
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
} else {
|
|
261
|
+
this.logger.warn(
|
|
262
|
+
"No inscription SDK available, using public client",
|
|
263
|
+
{
|
|
264
|
+
pollId
|
|
207
265
|
}
|
|
208
266
|
);
|
|
267
|
+
}
|
|
268
|
+
if (retrieved) {
|
|
209
269
|
const topicIdFromInscription = getTopicId(
|
|
210
270
|
retrieved
|
|
211
271
|
);
|
|
@@ -214,14 +274,14 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
|
214
274
|
quote: false,
|
|
215
275
|
confirmed: true,
|
|
216
276
|
result: {
|
|
217
|
-
jobId: startResponse.tx_id || "",
|
|
218
|
-
transactionId,
|
|
277
|
+
jobId: toDashedTransactionId(startResponse.tx_id || ""),
|
|
278
|
+
transactionId: canonicalTransactionId,
|
|
219
279
|
topicId
|
|
220
280
|
},
|
|
221
281
|
inscription: retrieved
|
|
222
282
|
};
|
|
223
283
|
this.logger.debug(
|
|
224
|
-
"retrieved inscription",
|
|
284
|
+
"retrieved inscription confirmed",
|
|
225
285
|
resultConfirmed,
|
|
226
286
|
retrieved
|
|
227
287
|
);
|
|
@@ -232,8 +292,8 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
|
232
292
|
quote: false,
|
|
233
293
|
confirmed: false,
|
|
234
294
|
result: {
|
|
235
|
-
jobId: startResponse.tx_id || "",
|
|
236
|
-
transactionId,
|
|
295
|
+
jobId: toDashedTransactionId(startResponse.tx_id || ""),
|
|
296
|
+
transactionId: canonicalTransactionId,
|
|
237
297
|
status: startResponse.status,
|
|
238
298
|
completed: startResponse.completed
|
|
239
299
|
},
|
|
@@ -272,6 +332,7 @@ const _InscriberBuilder = class _InscriberBuilder extends BaseServiceBuilder {
|
|
|
272
332
|
_InscriberBuilder.preferWalletOnly = false;
|
|
273
333
|
let InscriberBuilder = _InscriberBuilder;
|
|
274
334
|
export {
|
|
275
|
-
InscriberBuilder
|
|
335
|
+
InscriberBuilder,
|
|
336
|
+
toDashedTransactionId
|
|
276
337
|
};
|
|
277
338
|
//# sourceMappingURL=standards-agent-kit.es8.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-agent-kit.es8.js","sources":["../../src/builders/inscriber/inscriber-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n inscribe,\n inscribeWithSigner,\n retrieveInscription,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResponse,\n RetrievedInscriptionResult,\n HederaClientConfig,\n NetworkType,\n getTopicId,\n} from '@hashgraphonline/standards-sdk';\nimport {\n InscriptionSDK,\n type InscriptionResult,\n type RegistrationProgressData,\n} from '@kiloscribe/inscription-sdk';\nimport type { AgentOperationalMode } from 'hedera-agent-kit';\n\n/**\n * Type definition for DAppSigner interface compatible with inscription SDK\n */\ninterface DAppSigner {\n getAccountId(): { toString(): string };\n [key: string]: unknown;\n}\n\nexport interface PendingInscriptionResponse {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n}\n\nexport interface CompletedInscriptionResponse {\n confirmed?: boolean;\n result?: InscriptionResult;\n inscription?: RetrievedInscriptionResult;\n jsonTopicId?: string;\n network?: string;\n}\n/**\n * Builder for Inscription operations\n */\ntype InscriptionSDKInstance = InstanceType<typeof InscriptionSDK>;\ntype InscriptionSDKAuthParams = Parameters<\n typeof InscriptionSDK.createWithAuth\n>[0];\ntype ClientAuthConfig = Extract<InscriptionSDKAuthParams, { type: 'client' }>;\ntype ServerAuthConfig = Extract<InscriptionSDKAuthParams, { type: 'server' }>;\n\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDKInstance;\n private static signerProvider?: () =>\n | Promise<DAppSigner | null>\n | DAppSigner\n | null;\n private static walletInfoResolver?: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null;\n\n private static startInscriptionDelegate?: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>;\n private static walletExecutor?: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>;\n /** When true, do not allow server fallback; require a wallet path in Provide Bytes */\n private static preferWalletOnly = false;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n public getOperationalMode(): AgentOperationalMode {\n return this.hederaKit.operationalMode as AgentOperationalMode;\n }\n\n static setSignerProvider(\n provider: () => Promise<DAppSigner | null> | DAppSigner | null\n ): void {\n InscriberBuilder.signerProvider = provider;\n }\n\n static setWalletInfoResolver(\n resolver: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null\n ): void {\n InscriberBuilder.walletInfoResolver = resolver;\n }\n\n static setStartInscriptionDelegate(\n delegate: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>\n ): void {\n InscriberBuilder.startInscriptionDelegate = delegate;\n }\n\n static setWalletExecutor(\n executor: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>\n ): void {\n InscriberBuilder.walletExecutor = executor;\n }\n\n /**\n * Control fallback behavior. When true, wallet must be available for execution paths.\n */\n static setPreferWalletOnly(flag: boolean): void {\n InscriberBuilder.preferWalletOnly = !!flag;\n }\n\n async getSigner(): Promise<DAppSigner | null> {\n const provider = InscriberBuilder.signerProvider;\n if (!provider) return null;\n try {\n const maybe = provider();\n return maybe && typeof (maybe as Promise<unknown>).then === 'function'\n ? await (maybe as Promise<DAppSigner | null>)\n : (maybe as DAppSigner | null);\n } catch {\n return null;\n }\n }\n\n /**\n * Get or create Inscription SDK\n */\n protected async getInscriptionSDK(\n _options: InscriptionOptions\n ): Promise<InscriptionSDKInstance | null> {\n if (this.inscriptionSDK) {\n return this.inscriptionSDK;\n }\n\n const network = this.hederaKit.client.network;\n const networkType: 'mainnet' | 'testnet' = network\n .toString()\n .includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n const accountId = this.hederaKit.signer.getAccountId().toString();\n\n try {\n const privateKey = this.hederaKit.signer?.getOperatorPrivateKey();\n if (privateKey) {\n this.inscriptionSDK = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId,\n privateKey:\n privateKey.toStringRaw() as ServerAuthConfig['privateKey'],\n network: networkType,\n });\n }\n } catch (error) {\n this.logger.warn('Failed to create InscriptionSDK with auth', error);\n this.inscriptionSDK = undefined;\n }\n\n if (!this.inscriptionSDK) {\n try {\n this.inscriptionSDK = new InscriptionSDK({\n apiKey: 'public-access',\n network: networkType,\n connectionMode: 'http',\n });\n } catch (fallbackError) {\n this.logger.warn(\n 'Failed to create InscriptionSDK fallback instance',\n fallbackError\n );\n }\n }\n\n return this.inscriptionSDK || null;\n }\n\n /**\n * Inscribe content using server-side authentication\n */\n async inscribe(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n const clientConfig: HederaClientConfig = {\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n network: networkType,\n };\n\n return await inscribe(input, clientConfig, options);\n }\n\n /**\n * Inscribe content using a DApp signer\n */\n async inscribeWithSigner(\n input: InscriptionInput,\n signer: DAppSigner,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n return await inscribeWithSigner(\n input,\n signer as unknown as Parameters<typeof inscribeWithSigner>[1],\n options\n );\n }\n\n async inscribeAuto(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const signer = await this.getSigner();\n if (signer) {\n return this.inscribeWithSigner(input, signer, options);\n }\n\n type WalletInfo = { accountId: string; network: 'mainnet' | 'testnet' };\n\n type WalletExecutorResponse = { transactionId: string };\n\n const infoMaybe: WalletInfo | null = InscriberBuilder.walletInfoResolver\n ? await InscriberBuilder.walletInfoResolver()\n : null;\n\n if (InscriberBuilder.preferWalletOnly && !infoMaybe) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n\n if (\n infoMaybe &&\n InscriberBuilder.startInscriptionDelegate &&\n InscriberBuilder.walletExecutor\n ) {\n const holderId = infoMaybe.accountId;\n const network: 'mainnet' | 'testnet' = infoMaybe.network;\n\n type InscriptionOptionsExt = InscriptionOptions & {\n fileStandard?: string;\n chunkSize?: number;\n jsonFileURL?: string;\n metadata?: Record<string, unknown> & {\n creator?: string;\n description?: string;\n };\n };\n const ext = options as InscriptionOptionsExt;\n\n const baseRequest: Record<string, unknown> = {\n holderId,\n metadata: ext.metadata || {},\n tags: options.tags || [],\n mode: options.mode || 'file',\n };\n if (typeof ext.fileStandard !== 'undefined') {\n (baseRequest as { fileStandard?: string }).fileStandard =\n ext.fileStandard;\n }\n if (typeof ext.chunkSize !== 'undefined') {\n (baseRequest as { chunkSize?: number }).chunkSize = ext.chunkSize;\n }\n\n let request: Record<string, unknown> = { ...baseRequest };\n switch (input.type) {\n case 'url':\n request = { ...baseRequest, file: { type: 'url', url: input.url } };\n break;\n case 'file':\n request = {\n ...baseRequest,\n file: { type: 'path', path: input.path },\n };\n break;\n case 'buffer':\n request = {\n ...baseRequest,\n file: {\n type: 'base64',\n base64: Buffer.from(input.buffer).toString('base64'),\n fileName: input.fileName,\n mimeType: input.mimeType,\n },\n };\n break;\n }\n\n if (options.mode === 'hashinal') {\n (request as { metadataObject?: unknown }).metadataObject = ext.metadata;\n (request as { creator?: string }).creator =\n ext.metadata?.creator || holderId;\n (request as { description?: string }).description =\n ext.metadata?.description;\n if (typeof ext.jsonFileURL === 'string' && ext.jsonFileURL.length > 0) {\n (request as { jsonFileURL?: string }).jsonFileURL = ext.jsonFileURL;\n }\n }\n\n const start = await InscriberBuilder.startInscriptionDelegate(\n request,\n network\n );\n\n const completedStart = start as CompletedInscriptionResponse;\n const isCompletedResponse =\n Boolean(completedStart?.inscription) && completedStart?.confirmed;\n\n if (isCompletedResponse) {\n const completed = start as {\n confirmed?: boolean;\n result?: unknown;\n inscription?: unknown;\n };\n this.logger.info(\n 'inscription already completed, short circuiting',\n start\n );\n return {\n quote: false,\n confirmed: completed.confirmed === true,\n result: completed.result as InscriptionResult,\n inscription: completed.inscription,\n } as unknown as InscriptionResponse;\n }\n\n const startResponse = start as {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n };\n\n if (!startResponse || !startResponse.transactionBytes) {\n throw new Error('Failed to start inscription (no transaction bytes)');\n }\n\n const exec: WalletExecutorResponse =\n await InscriberBuilder.walletExecutor(\n startResponse.transactionBytes,\n network\n );\n const transactionId = exec?.transactionId || '';\n\n const shouldWait = options.quoteOnly\n ? false\n : options.waitForConfirmation ?? true;\n if (shouldWait) {\n this.logger.debug('Will be retrieving inscription');\n const maxAttempts =\n (options as { waitMaxAttempts?: number }).waitMaxAttempts ?? 60;\n const intervalMs =\n (options as { waitIntervalMs?: number }).waitIntervalMs ?? 5000;\n\n const pollId = startResponse.tx_id || transactionId;\n const sdk = await this.getInscriptionSDK(options);\n if (sdk) {\n const retrieved: RetrievedInscriptionResult =\n await sdk.waitForInscription(\n pollId,\n maxAttempts,\n intervalMs,\n true,\n (progress: RegistrationProgressData) => {\n this.logger.info('checking inscription', progress);\n }\n );\n const topicIdFromInscription: string | undefined = getTopicId(\n retrieved as unknown\n );\n const topicId: string | undefined =\n topicIdFromInscription ?? startResponse.topic_id;\n const resultConfirmed: InscriptionResponse = {\n quote: false,\n confirmed: true,\n result: {\n jobId: startResponse.tx_id || '',\n transactionId,\n topicId,\n },\n inscription: retrieved,\n } as unknown as InscriptionResponse;\n this.logger.debug(\n 'retrieved inscription',\n resultConfirmed,\n retrieved\n );\n return resultConfirmed;\n }\n }\n\n const partial: InscriptionResponse = {\n quote: false,\n confirmed: false,\n result: {\n jobId: startResponse.tx_id || '',\n transactionId,\n status: startResponse.status,\n completed: startResponse.completed,\n },\n inscription: startResponse.topic_id\n ? { topic_id: startResponse.topic_id }\n : undefined,\n } as unknown as InscriptionResponse;\n return partial;\n }\n\n if (InscriberBuilder.preferWalletOnly) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n return this.inscribe(input, options);\n }\n\n /**\n * Retrieve an existing inscription\n */\n async retrieveInscription(\n transactionId: string,\n options: InscriptionOptions\n ): Promise<RetrievedInscriptionResult> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n return await retrieveInscription(transactionId, {\n ...options,\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n });\n }\n\n /**\n * Close the inscription SDK\n */\n async close(): Promise<void> {\n this.inscriptionSDK = undefined;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-agent-kit.es8.js","sources":["../../src/builders/inscriber/inscriber-builder.ts"],"sourcesContent":["import { BaseServiceBuilder } from 'hedera-agent-kit';\nimport type { HederaAgentKit } from 'hedera-agent-kit';\nimport {\n inscribe,\n inscribeWithSigner,\n retrieveInscription,\n InscriptionInput,\n InscriptionOptions,\n InscriptionResponse,\n RetrievedInscriptionResult,\n HederaClientConfig,\n NetworkType,\n getTopicId,\n Logger,\n} from '@hashgraphonline/standards-sdk';\nimport {\n InscriptionSDK,\n type InscriptionResult,\n type RegistrationProgressData,\n} from '@kiloscribe/inscription-sdk';\nimport type { AgentOperationalMode } from 'hedera-agent-kit';\n\n/**\n * Type definition for DAppSigner interface compatible with inscription SDK\n */\ninterface DAppSigner {\n getAccountId(): { toString(): string };\n [key: string]: unknown;\n}\n\nexport interface PendingInscriptionResponse {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n}\n\nexport interface CompletedInscriptionResponse {\n confirmed?: boolean;\n result?: InscriptionResult;\n inscription?: RetrievedInscriptionResult;\n jsonTopicId?: string;\n network?: string;\n}\n/**\n * Builder for Inscription operations\n */\ntype InscriptionSDKInstance = InstanceType<typeof InscriptionSDK>;\ntype InscriptionSDKAuthParams = Parameters<\n typeof InscriptionSDK.createWithAuth\n>[0];\ntype ClientAuthConfig = Extract<InscriptionSDKAuthParams, { type: 'client' }>;\ntype ServerAuthConfig = Extract<InscriptionSDKAuthParams, { type: 'server' }>;\n\nexport const toDashedTransactionId = (transactionId: string): string => {\n if (transactionId.includes('-')) {\n return transactionId;\n }\n\n const [account, timePart] = transactionId.split('@');\n if (!account || !timePart) {\n return transactionId;\n }\n\n const [secondsPart, nanosPart] = timePart.split('.');\n if (!secondsPart) {\n return transactionId;\n }\n\n const normalizedNanos = (nanosPart ?? '0').padEnd(9, '0').slice(0, 9);\n return `${account}-${secondsPart}-${normalizedNanos}`;\n};\n\nexport class InscriberBuilder extends BaseServiceBuilder {\n protected inscriptionSDK?: InscriptionSDKInstance;\n private static signerProvider?: () =>\n | Promise<DAppSigner | null>\n | DAppSigner\n | null;\n private static walletInfoResolver?: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null;\n\n private static startInscriptionDelegate?: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>;\n private static walletExecutor?: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>;\n /** When true, do not allow server fallback; require a wallet path in Provide Bytes */\n private static preferWalletOnly = false;\n\n constructor(hederaKit: HederaAgentKit) {\n super(hederaKit);\n }\n\n public getOperationalMode(): AgentOperationalMode {\n return this.hederaKit.operationalMode as AgentOperationalMode;\n }\n\n static setSignerProvider(\n provider: () => Promise<DAppSigner | null> | DAppSigner | null\n ): void {\n InscriberBuilder.signerProvider = provider;\n }\n\n static setWalletInfoResolver(\n resolver: () =>\n | Promise<{ accountId: string; network: 'mainnet' | 'testnet' } | null>\n | { accountId: string; network: 'mainnet' | 'testnet' }\n | null\n ): void {\n InscriberBuilder.walletInfoResolver = resolver;\n }\n\n static setStartInscriptionDelegate(\n delegate: (\n request: Record<string, unknown>,\n network: 'mainnet' | 'testnet'\n ) => Promise<PendingInscriptionResponse | CompletedInscriptionResponse>\n ): void {\n InscriberBuilder.startInscriptionDelegate = delegate;\n }\n\n static setWalletExecutor(\n executor: (\n base64: string,\n network: 'mainnet' | 'testnet'\n ) => Promise<{ transactionId: string }>\n ): void {\n InscriberBuilder.walletExecutor = executor;\n }\n\n /**\n * Control fallback behavior. When true, wallet must be available for execution paths.\n */\n static setPreferWalletOnly(flag: boolean): void {\n InscriberBuilder.preferWalletOnly = !!flag;\n }\n\n async getSigner(): Promise<DAppSigner | null> {\n const provider = InscriberBuilder.signerProvider;\n if (!provider) return null;\n try {\n const maybe = provider();\n return maybe && typeof (maybe as Promise<unknown>).then === 'function'\n ? await (maybe as Promise<DAppSigner | null>)\n : (maybe as DAppSigner | null);\n } catch {\n return null;\n }\n }\n\n /**\n * Get or create Inscription SDK\n */\n protected async getInscriptionSDK(\n _options: InscriptionOptions\n ): Promise<InscriptionSDKInstance | null> {\n if (this.inscriptionSDK) {\n return this.inscriptionSDK;\n }\n\n const network = this.hederaKit.client.network;\n const networkType: 'mainnet' | 'testnet' = network\n .toString()\n .includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n const accountId = this.hederaKit.signer.getAccountId().toString();\n\n try {\n this.logger.info('Attempting InscriptionSDK.createWithAuth', {\n accountId,\n network: networkType,\n });\n const privateKey = this.hederaKit.signer?.getOperatorPrivateKey();\n if (privateKey) {\n this.inscriptionSDK = await InscriptionSDK.createWithAuth({\n type: 'server',\n accountId,\n privateKey:\n privateKey.toStringRaw() as ServerAuthConfig['privateKey'],\n network: networkType,\n });\n this.logger.info('Created InscriptionSDK via createWithAuth', {\n network: networkType,\n });\n }\n } catch (error) {\n this.logger.warn('Failed to create InscriptionSDK with auth', error);\n this.inscriptionSDK = undefined;\n }\n\n if (!this.inscriptionSDK) {\n try {\n this.logger.info('Creating fallback InscriptionSDK instance', {\n network: networkType,\n });\n this.inscriptionSDK = new InscriptionSDK({\n apiKey: 'public-access',\n network: networkType,\n connectionMode: 'http',\n });\n this.logger.info('Created fallback InscriptionSDK instance', {\n network: networkType,\n });\n return this.inscriptionSDK;\n } catch (fallbackError) {\n this.logger.error(\n 'Failed to create InscriptionSDK fallback instance',\n fallbackError\n );\n }\n }\n\n this.logger.error('failed to setup sdk');\n\n return null;\n }\n\n /**\n * Inscribe content using server-side authentication\n */\n async inscribe(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n const network = this.hederaKit.client.network;\n const networkType: NetworkType = network.toString().includes('mainnet')\n ? 'mainnet'\n : 'testnet';\n\n const clientConfig: HederaClientConfig = {\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n network: networkType,\n };\n\n return await inscribe(input, clientConfig, options);\n }\n\n /**\n * Inscribe content using a DApp signer\n */\n async inscribeWithSigner(\n input: InscriptionInput,\n signer: DAppSigner,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n return await inscribeWithSigner(\n input,\n signer as unknown as Parameters<typeof inscribeWithSigner>[1],\n options\n );\n }\n\n async inscribeAuto(\n input: InscriptionInput,\n options: InscriptionOptions\n ): Promise<InscriptionResponse> {\n const signer = await this.getSigner();\n if (signer) {\n return this.inscribeWithSigner(input, signer, options);\n }\n\n type WalletInfo = { accountId: string; network: 'mainnet' | 'testnet' };\n\n type WalletExecutorResponse = { transactionId: string };\n\n const infoMaybe: WalletInfo | null = InscriberBuilder.walletInfoResolver\n ? await InscriberBuilder.walletInfoResolver()\n : null;\n\n if (InscriberBuilder.preferWalletOnly && !infoMaybe) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n\n if (\n infoMaybe &&\n InscriberBuilder.startInscriptionDelegate &&\n InscriberBuilder.walletExecutor\n ) {\n const holderId = infoMaybe.accountId;\n const network: 'mainnet' | 'testnet' = infoMaybe.network;\n\n type InscriptionOptionsExt = InscriptionOptions & {\n fileStandard?: string;\n chunkSize?: number;\n jsonFileURL?: string;\n metadata?: Record<string, unknown> & {\n creator?: string;\n description?: string;\n };\n };\n const ext = options as InscriptionOptionsExt;\n\n const baseRequest: Record<string, unknown> = {\n holderId,\n metadata: ext.metadata || {},\n tags: options.tags || [],\n mode: options.mode || 'file',\n };\n if (typeof ext.fileStandard !== 'undefined') {\n (baseRequest as { fileStandard?: string }).fileStandard =\n ext.fileStandard;\n }\n if (typeof ext.chunkSize !== 'undefined') {\n (baseRequest as { chunkSize?: number }).chunkSize = ext.chunkSize;\n }\n\n let request: Record<string, unknown> = { ...baseRequest };\n switch (input.type) {\n case 'url':\n request = { ...baseRequest, file: { type: 'url', url: input.url } };\n break;\n case 'file':\n request = {\n ...baseRequest,\n file: { type: 'path', path: input.path },\n };\n break;\n case 'buffer':\n request = {\n ...baseRequest,\n file: {\n type: 'base64',\n base64: Buffer.from(input.buffer).toString('base64'),\n fileName: input.fileName,\n mimeType: input.mimeType,\n },\n };\n break;\n }\n\n if (options.mode === 'hashinal') {\n (request as { metadataObject?: unknown }).metadataObject = ext.metadata;\n (request as { creator?: string }).creator =\n ext.metadata?.creator || holderId;\n (request as { description?: string }).description =\n ext.metadata?.description;\n if (typeof ext.jsonFileURL === 'string' && ext.jsonFileURL.length > 0) {\n (request as { jsonFileURL?: string }).jsonFileURL = ext.jsonFileURL;\n }\n }\n\n const start = await InscriberBuilder.startInscriptionDelegate(\n request,\n network\n );\n\n this.logger.info('inscribeAuto start response', {\n hasTransactionBytes:\n typeof (start as { transactionBytes?: unknown }).transactionBytes ===\n 'string',\n txId: (start as { tx_id?: unknown }).tx_id,\n status: (start as { status?: unknown }).status,\n });\n\n const completedStart = start as CompletedInscriptionResponse;\n const isCompletedResponse =\n Boolean(completedStart?.inscription) && completedStart?.confirmed;\n\n if (isCompletedResponse) {\n const completed = start as {\n confirmed?: boolean;\n result?: unknown;\n inscription?: unknown;\n };\n this.logger.info(\n 'inscription already completed, short circuiting',\n start\n );\n return {\n quote: false,\n confirmed: completed.confirmed === true,\n result: completed.result as InscriptionResult,\n inscription: completed.inscription,\n } as unknown as InscriptionResponse;\n }\n\n const startResponse = start as {\n transactionBytes: string;\n tx_id?: string;\n topic_id?: string;\n status?: string;\n completed?: boolean;\n };\n\n if (!startResponse || !startResponse.transactionBytes) {\n throw new Error('Failed to start inscription (no transaction bytes)');\n }\n\n const exec: WalletExecutorResponse =\n await InscriberBuilder.walletExecutor(\n startResponse.transactionBytes,\n network\n );\n const transactionId = exec?.transactionId || '';\n\n this.logger.info('inscribeAuto wallet execution', {\n transactionId,\n network,\n });\n\n const shouldWait = options.quoteOnly\n ? false\n : options.waitForConfirmation ?? true;\n const canonicalTransactionId = toDashedTransactionId(\n startResponse.tx_id || transactionId\n );\n if (shouldWait) {\n const maxAttempts =\n (options as { waitMaxAttempts?: number }).waitMaxAttempts ?? 60;\n const intervalMs =\n (options as { waitIntervalMs?: number }).waitIntervalMs ?? 5000;\n const pollId = canonicalTransactionId;\n this.logger.debug('Will be retrieving inscription', pollId);\n\n let retrieved: RetrievedInscriptionResult | null = null;\n const sdk = await this.getInscriptionSDK(options);\n\n console.log('got an SDK', sdk);\n\n if (sdk) {\n try {\n retrieved = await sdk.waitForInscription(\n pollId,\n maxAttempts,\n intervalMs,\n true,\n (progress: RegistrationProgressData) => {\n this.logger.debug('checking inscription', progress);\n }\n );\n } catch (error) {\n this.logger.warn('Primary inscription wait failed', {\n pollId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n } else {\n this.logger.warn(\n 'No inscription SDK available, using public client',\n {\n pollId,\n }\n );\n }\n\n if (retrieved) {\n const topicIdFromInscription: string | undefined = getTopicId(\n retrieved as unknown\n );\n const topicId: string | undefined =\n topicIdFromInscription ?? startResponse.topic_id;\n const resultConfirmed: InscriptionResponse = {\n quote: false,\n confirmed: true,\n result: {\n jobId: toDashedTransactionId(startResponse.tx_id || ''),\n transactionId: canonicalTransactionId,\n topicId,\n },\n inscription: retrieved,\n } as unknown as InscriptionResponse;\n this.logger.debug(\n 'retrieved inscription confirmed',\n resultConfirmed,\n retrieved\n );\n return resultConfirmed;\n }\n }\n\n const partial: InscriptionResponse = {\n quote: false,\n confirmed: false,\n result: {\n jobId: toDashedTransactionId(startResponse.tx_id || ''),\n transactionId: canonicalTransactionId,\n status: startResponse.status,\n completed: startResponse.completed,\n },\n inscription: startResponse.topic_id\n ? { topic_id: startResponse.topic_id }\n : undefined,\n } as unknown as InscriptionResponse;\n return partial;\n }\n\n if (InscriberBuilder.preferWalletOnly) {\n const err = new Error(\n 'Wallet unavailable: connect a wallet or switch to autonomous mode'\n );\n (err as unknown as { code: string }).code = 'wallet_unavailable';\n throw err;\n }\n return this.inscribe(input, options);\n }\n\n /**\n * Retrieve an existing inscription\n */\n async retrieveInscription(\n transactionId: string,\n options: InscriptionOptions\n ): Promise<RetrievedInscriptionResult> {\n const operatorId = this.hederaKit.signer.getAccountId().toString();\n const operatorPrivateKey = this.hederaKit.signer?.getOperatorPrivateKey()\n ? this.hederaKit.signer.getOperatorPrivateKey().toStringRaw()\n : '';\n\n return await retrieveInscription(transactionId, {\n ...options,\n accountId: operatorId,\n privateKey: operatorPrivateKey,\n });\n }\n\n /**\n * Close the inscription SDK\n */\n async close(): Promise<void> {\n this.inscriptionSDK = undefined;\n }\n}\n"],"names":[],"mappings":";;;AAuDO,MAAM,wBAAwB,CAAC,kBAAkC;AACtE,MAAI,cAAc,SAAS,GAAG,GAAG;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,SAAS,QAAQ,IAAI,cAAc,MAAM,GAAG;AACnD,MAAI,CAAC,WAAW,CAAC,UAAU;AACzB,WAAO;AAAA,EACT;AAEA,QAAM,CAAC,aAAa,SAAS,IAAI,SAAS,MAAM,GAAG;AACnD,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,mBAAmB,aAAa,KAAK,OAAO,GAAG,GAAG,EAAE,MAAM,GAAG,CAAC;AACpE,SAAO,GAAG,OAAO,IAAI,WAAW,IAAI,eAAe;AACrD;AAEO,MAAM,oBAAN,MAAM,0BAAyB,mBAAmB;AAAA,EAsBvD,YAAY,WAA2B;AACrC,UAAM,SAAS;AAAA,EACjB;AAAA,EAEO,qBAA2C;AAChD,WAAO,KAAK,UAAU;AAAA,EACxB;AAAA,EAEA,OAAO,kBACL,UACM;AACN,sBAAiB,iBAAiB;AAAA,EACpC;AAAA,EAEA,OAAO,sBACL,UAIM;AACN,sBAAiB,qBAAqB;AAAA,EACxC;AAAA,EAEA,OAAO,4BACL,UAIM;AACN,sBAAiB,2BAA2B;AAAA,EAC9C;AAAA,EAEA,OAAO,kBACL,UAIM;AACN,sBAAiB,iBAAiB;AAAA,EACpC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,oBAAoB,MAAqB;AAC9C,sBAAiB,mBAAmB,CAAC,CAAC;AAAA,EACxC;AAAA,EAEA,MAAM,YAAwC;AAC5C,UAAM,WAAW,kBAAiB;AAClC,QAAI,CAAC,SAAU,QAAO;AACtB,QAAI;AACF,YAAM,QAAQ,SAAA;AACd,aAAO,SAAS,OAAQ,MAA2B,SAAS,aACxD,MAAO,QACN;AAAA,IACP,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,kBACd,UACwC;AACxC,QAAI,KAAK,gBAAgB;AACvB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,UAAU,KAAK,UAAU,OAAO;AACtC,UAAM,cAAqC,QACxC,SAAA,EACA,SAAS,SAAS,IACjB,YACA;AACJ,UAAM,YAAY,KAAK,UAAU,OAAO,aAAA,EAAe,SAAA;AAEvD,QAAI;AACF,WAAK,OAAO,KAAK,4CAA4C;AAAA,QAC3D;AAAA,QACA,SAAS;AAAA,MAAA,CACV;AACD,YAAM,aAAa,KAAK,UAAU,QAAQ,sBAAA;AAC1C,UAAI,YAAY;AACd,aAAK,iBAAiB,MAAM,eAAe,eAAe;AAAA,UACxD,MAAM;AAAA,UACN;AAAA,UACA,YACE,WAAW,YAAA;AAAA,UACb,SAAS;AAAA,QAAA,CACV;AACD,aAAK,OAAO,KAAK,6CAA6C;AAAA,UAC5D,SAAS;AAAA,QAAA,CACV;AAAA,MACH;AAAA,IACF,SAAS,OAAO;AACd,WAAK,OAAO,KAAK,6CAA6C,KAAK;AACnE,WAAK,iBAAiB;AAAA,IACxB;AAEA,QAAI,CAAC,KAAK,gBAAgB;AACxB,UAAI;AACF,aAAK,OAAO,KAAK,6CAA6C;AAAA,UAC5D,SAAS;AAAA,QAAA,CACV;AACD,aAAK,iBAAiB,IAAI,eAAe;AAAA,UACvC,QAAQ;AAAA,UACR,SAAS;AAAA,UACT,gBAAgB;AAAA,QAAA,CACjB;AACD,aAAK,OAAO,KAAK,4CAA4C;AAAA,UAC3D,SAAS;AAAA,QAAA,CACV;AACD,eAAO,KAAK;AAAA,MACd,SAAS,eAAe;AACtB,aAAK,OAAO;AAAA,UACV;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAAA,IACF;AAEA,SAAK,OAAO,MAAM,qBAAqB;AAEvC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,SACJ,OACA,SAC8B;AAC9B,UAAM,aAAa,KAAK,UAAU,OAAO,aAAA,EAAe,SAAA;AACxD,UAAM,qBAAqB,KAAK,UAAU,QAAQ,sBAAA,IAC9C,KAAK,UAAU,OAAO,wBAAwB,YAAA,IAC9C;AAEJ,UAAM,UAAU,KAAK,UAAU,OAAO;AACtC,UAAM,cAA2B,QAAQ,SAAA,EAAW,SAAS,SAAS,IAClE,YACA;AAEJ,UAAM,eAAmC;AAAA,MACvC,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,SAAS;AAAA,IAAA;AAGX,WAAO,MAAM,SAAS,OAAO,cAAc,OAAO;AAAA,EACpD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBACJ,OACA,QACA,SAC8B;AAC9B,WAAO,MAAM;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,MAAM,aACJ,OACA,SAC8B;AAC9B,UAAM,SAAS,MAAM,KAAK,UAAA;AAC1B,QAAI,QAAQ;AACV,aAAO,KAAK,mBAAmB,OAAO,QAAQ,OAAO;AAAA,IACvD;AAMA,UAAM,YAA+B,kBAAiB,qBAClD,MAAM,kBAAiB,uBACvB;AAEJ,QAAI,kBAAiB,oBAAoB,CAAC,WAAW;AACnD,YAAM,MAAM,IAAI;AAAA,QACd;AAAA,MAAA;AAED,UAAoC,OAAO;AAC5C,YAAM;AAAA,IACR;AAEA,QACE,aACA,kBAAiB,4BACjB,kBAAiB,gBACjB;AACA,YAAM,WAAW,UAAU;AAC3B,YAAM,UAAiC,UAAU;AAWjD,YAAM,MAAM;AAEZ,YAAM,cAAuC;AAAA,QAC3C;AAAA,QACA,UAAU,IAAI,YAAY,CAAA;AAAA,QAC1B,MAAM,QAAQ,QAAQ,CAAA;AAAA,QACtB,MAAM,QAAQ,QAAQ;AAAA,MAAA;AAExB,UAAI,OAAO,IAAI,iBAAiB,aAAa;AAC1C,oBAA0C,eACzC,IAAI;AAAA,MACR;AACA,UAAI,OAAO,IAAI,cAAc,aAAa;AACvC,oBAAuC,YAAY,IAAI;AAAA,MAC1D;AAEA,UAAI,UAAmC,EAAE,GAAG,YAAA;AAC5C,cAAQ,MAAM,MAAA;AAAA,QACZ,KAAK;AACH,oBAAU,EAAE,GAAG,aAAa,MAAM,EAAE,MAAM,OAAO,KAAK,MAAM,MAAI;AAChE;AAAA,QACF,KAAK;AACH,oBAAU;AAAA,YACR,GAAG;AAAA,YACH,MAAM,EAAE,MAAM,QAAQ,MAAM,MAAM,KAAA;AAAA,UAAK;AAEzC;AAAA,QACF,KAAK;AACH,oBAAU;AAAA,YACR,GAAG;AAAA,YACH,MAAM;AAAA,cACJ,MAAM;AAAA,cACN,QAAQ,OAAO,KAAK,MAAM,MAAM,EAAE,SAAS,QAAQ;AAAA,cACnD,UAAU,MAAM;AAAA,cAChB,UAAU,MAAM;AAAA,YAAA;AAAA,UAClB;AAEF;AAAA,MAAA;AAGJ,UAAI,QAAQ,SAAS,YAAY;AAC9B,gBAAyC,iBAAiB,IAAI;AAC9D,gBAAiC,UAChC,IAAI,UAAU,WAAW;AAC1B,gBAAqC,cACpC,IAAI,UAAU;AAChB,YAAI,OAAO,IAAI,gBAAgB,YAAY,IAAI,YAAY,SAAS,GAAG;AACpE,kBAAqC,cAAc,IAAI;AAAA,QAC1D;AAAA,MACF;AAEA,YAAM,QAAQ,MAAM,kBAAiB;AAAA,QACnC;AAAA,QACA;AAAA,MAAA;AAGF,WAAK,OAAO,KAAK,+BAA+B;AAAA,QAC9C,qBACE,OAAQ,MAAyC,qBACjD;AAAA,QACF,MAAO,MAA8B;AAAA,QACrC,QAAS,MAA+B;AAAA,MAAA,CACzC;AAED,YAAM,iBAAiB;AACvB,YAAM,sBACJ,QAAQ,gBAAgB,WAAW,KAAK,gBAAgB;AAE1D,UAAI,qBAAqB;AACvB,cAAM,YAAY;AAKlB,aAAK,OAAO;AAAA,UACV;AAAA,UACA;AAAA,QAAA;AAEF,eAAO;AAAA,UACL,OAAO;AAAA,UACP,WAAW,UAAU,cAAc;AAAA,UACnC,QAAQ,UAAU;AAAA,UAClB,aAAa,UAAU;AAAA,QAAA;AAAA,MAE3B;AAEA,YAAM,gBAAgB;AAQtB,UAAI,CAAC,iBAAiB,CAAC,cAAc,kBAAkB;AACrD,cAAM,IAAI,MAAM,oDAAoD;AAAA,MACtE;AAEA,YAAM,OACJ,MAAM,kBAAiB;AAAA,QACrB,cAAc;AAAA,QACd;AAAA,MAAA;AAEJ,YAAM,gBAAgB,MAAM,iBAAiB;AAE7C,WAAK,OAAO,KAAK,iCAAiC;AAAA,QAChD;AAAA,QACA;AAAA,MAAA,CACD;AAED,YAAM,aAAa,QAAQ,YACvB,QACA,QAAQ,uBAAuB;AACnC,YAAM,yBAAyB;AAAA,QAC7B,cAAc,SAAS;AAAA,MAAA;AAEzB,UAAI,YAAY;AACd,cAAM,cACH,QAAyC,mBAAmB;AAC/D,cAAM,aACH,QAAwC,kBAAkB;AAC7D,cAAM,SAAS;AACf,aAAK,OAAO,MAAM,kCAAkC,MAAM;AAE1D,YAAI,YAA+C;AACnD,cAAM,MAAM,MAAM,KAAK,kBAAkB,OAAO;AAEhD,gBAAQ,IAAI,cAAc,GAAG;AAE7B,YAAI,KAAK;AACP,cAAI;AACF,wBAAY,MAAM,IAAI;AAAA,cACpB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,CAAC,aAAuC;AACtC,qBAAK,OAAO,MAAM,wBAAwB,QAAQ;AAAA,cACpD;AAAA,YAAA;AAAA,UAEJ,SAAS,OAAO;AACd,iBAAK,OAAO,KAAK,mCAAmC;AAAA,cAClD;AAAA,cACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,YAAA,CAC7D;AAAA,UACH;AAAA,QACF,OAAO;AACL,eAAK,OAAO;AAAA,YACV;AAAA,YACA;AAAA,cACE;AAAA,YAAA;AAAA,UACF;AAAA,QAEJ;AAEA,YAAI,WAAW;AACb,gBAAM,yBAA6C;AAAA,YACjD;AAAA,UAAA;AAEF,gBAAM,UACJ,0BAA0B,cAAc;AAC1C,gBAAM,kBAAuC;AAAA,YAC3C,OAAO;AAAA,YACP,WAAW;AAAA,YACX,QAAQ;AAAA,cACN,OAAO,sBAAsB,cAAc,SAAS,EAAE;AAAA,cACtD,eAAe;AAAA,cACf;AAAA,YAAA;AAAA,YAEF,aAAa;AAAA,UAAA;AAEf,eAAK,OAAO;AAAA,YACV;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAEF,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,YAAM,UAA+B;AAAA,QACnC,OAAO;AAAA,QACP,WAAW;AAAA,QACX,QAAQ;AAAA,UACN,OAAO,sBAAsB,cAAc,SAAS,EAAE;AAAA,UACtD,eAAe;AAAA,UACf,QAAQ,cAAc;AAAA,UACtB,WAAW,cAAc;AAAA,QAAA;AAAA,QAE3B,aAAa,cAAc,WACvB,EAAE,UAAU,cAAc,aAC1B;AAAA,MAAA;AAEN,aAAO;AAAA,IACT;AAEA,QAAI,kBAAiB,kBAAkB;AACrC,YAAM,MAAM,IAAI;AAAA,QACd;AAAA,MAAA;AAED,UAAoC,OAAO;AAC5C,YAAM;AAAA,IACR;AACA,WAAO,KAAK,SAAS,OAAO,OAAO;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBACJ,eACA,SACqC;AACrC,UAAM,aAAa,KAAK,UAAU,OAAO,aAAA,EAAe,SAAA;AACxD,UAAM,qBAAqB,KAAK,UAAU,QAAQ,sBAAA,IAC9C,KAAK,UAAU,OAAO,wBAAwB,YAAA,IAC9C;AAEJ,WAAO,MAAM,oBAAoB,eAAe;AAAA,MAC9C,GAAG;AAAA,MACH,WAAW;AAAA,MACX,YAAY;AAAA,IAAA,CACb;AAAA,EACH;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AAC3B,SAAK,iBAAiB;AAAA,EACxB;AACF;AA7bE,kBAAe,mBAAmB;AApB7B,IAAM,mBAAN;"}
|
|
@@ -9,7 +9,7 @@ export interface TopicIds {
|
|
|
9
9
|
* - Prefers jsonTopicId when present (for CDN linking)
|
|
10
10
|
* - Collects topic_id/topicId from either inscription or result
|
|
11
11
|
*/
|
|
12
|
-
export declare function extractTopicIds(inscription: RetrievedInscriptionResult, result?: unknown): TopicIds;
|
|
12
|
+
export declare function extractTopicIds(inscription: RetrievedInscriptionResult | undefined, result?: unknown): TopicIds;
|
|
13
13
|
/**
|
|
14
14
|
* Build HRL/CDN URLs from extracted topic ids.
|
|
15
15
|
* - HRL prefers jsonTopicId, falls back to topicId
|
|
@@ -28,6 +28,7 @@ export interface CompletedInscriptionResponse {
|
|
|
28
28
|
* Builder for Inscription operations
|
|
29
29
|
*/
|
|
30
30
|
type InscriptionSDKInstance = InstanceType<typeof InscriptionSDK>;
|
|
31
|
+
export declare const toDashedTransactionId: (transactionId: string) => string;
|
|
31
32
|
export declare class InscriberBuilder extends BaseServiceBuilder {
|
|
32
33
|
protected inscriptionSDK?: InscriptionSDKInstance;
|
|
33
34
|
private static signerProvider?;
|