@skalenetwork/privacy-sdk 0.1.0-develop.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 @@
1
+ {"version":3,"sources":["../src/utils/ctx.ts"],"sourcesContent":["import type { Hex, PublicClient, TransactionReceipt } from \"viem\";\n\nexport type CtxResult = {\n originHash: Hex;\n originReceipt: TransactionReceipt;\n ctxHash: Hex;\n ctxReceipt: TransactionReceipt;\n};\n\nexport type CtxPromise = Promise<Hex> & {\n waitForCtx(): Promise<CtxResult>;\n};\n\nexport function createCtxPromise(\n txHashPromise: Promise<Hex>,\n publicClient: PublicClient,\n): CtxPromise {\n const promise = txHashPromise as CtxPromise;\n promise.waitForCtx = async () => {\n const txHash = await txHashPromise;\n return waitForCtx(txHash, publicClient);\n };\n return promise;\n}\n\nfunction normalizeHex(value: string): Hex | undefined {\n const trimmed = value.trim();\n\n if (/^0x[0-9a-fA-F]+$/.test(trimmed)) {\n return trimmed as Hex;\n }\n\n if (/^[0-9a-fA-F]+$/.test(trimmed)) {\n return `0x${trimmed}` as Hex;\n }\n\n return undefined;\n}\n\nfunction findFirstHex(value: unknown): Hex | undefined {\n if (typeof value === \"string\") {\n return normalizeHex(value);\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n const candidate = findFirstHex(item);\n if (candidate) {\n return candidate;\n }\n }\n return undefined;\n }\n\n if (value && typeof value === \"object\") {\n for (const child of Object.values(value)) {\n const candidate = findFirstHex(child);\n if (candidate) {\n return candidate;\n }\n }\n }\n\n return undefined;\n}\n\nfunction collectHexValues(value: unknown, acc: Hex[]): void {\n if (typeof value === \"string\") {\n const normalized = normalizeHex(value);\n if (normalized) {\n acc.push(normalized);\n }\n return;\n }\n\n if (Array.isArray(value)) {\n for (const item of value) {\n collectHexValues(item, acc);\n }\n return;\n }\n\n if (value && typeof value === \"object\") {\n for (const child of Object.values(value)) {\n collectHexValues(child, acc);\n }\n }\n}\n\nasync function callBiteGetCraftedCtxs(publicClient: PublicClient, txHash: Hex): Promise<unknown> {\n return publicClient.request({\n method: \"bite_getCraftedCtxs\" as any,\n params: [txHash] as any,\n });\n}\n\nexport async function getCtxHash(\n publicClient: PublicClient,\n txHash: Hex,\n): Promise<Hex | undefined> {\n const result = await callBiteGetCraftedCtxs(publicClient, txHash);\n return findFirstHex(result);\n}\n\nexport async function getCtxHashes(publicClient: PublicClient, txHash: Hex): Promise<Hex[]> {\n const result = await callBiteGetCraftedCtxs(publicClient, txHash);\n const allHexes: Hex[] = [];\n collectHexValues(result, allHexes);\n\n const deduped = new Map<string, Hex>();\n for (const hash of allHexes) {\n deduped.set(hash.toLowerCase(), hash);\n }\n\n return Array.from(deduped.values());\n}\n\nexport async function waitForCtx(txHash: Hex, publicClient: PublicClient): Promise<CtxResult> {\n // 1. Wait for original tx to be mined\n const originReceipt = await publicClient.waitForTransactionReceipt({ hash: txHash });\n\n // 2. Get CTX hash (deterministic once origin is mined)\n const ctxHash = await getCtxHash(publicClient, txHash);\n if (!ctxHash) {\n throw new Error(`No crafted CTX found for tx ${txHash}.`);\n }\n\n // 3. Wait for CTX to be mined\n const ctxReceipt = await publicClient.waitForTransactionReceipt({ hash: ctxHash });\n\n return { originHash: txHash, originReceipt, ctxHash, ctxReceipt };\n}\n"],"mappings":";AAaO,SAAS,iBACd,eACA,cACY;AACZ,QAAM,UAAU;AAChB,UAAQ,aAAa,YAAY;AAC/B,UAAM,SAAS,MAAM;AACrB,WAAO,WAAW,QAAQ,YAAY;AAAA,EACxC;AACA,SAAO;AACT;AAEA,SAAS,aAAa,OAAgC;AACpD,QAAM,UAAU,MAAM,KAAK;AAE3B,MAAI,mBAAmB,KAAK,OAAO,GAAG;AACpC,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiB,KAAK,OAAO,GAAG;AAClC,WAAO,KAAK,OAAO;AAAA,EACrB;AAEA,SAAO;AACT;AAEA,SAAS,aAAa,OAAiC;AACrD,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,aAAa,KAAK;AAAA,EAC3B;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAW,QAAQ,OAAO;AACxB,YAAM,YAAY,aAAa,IAAI;AACnC,UAAI,WAAW;AACb,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,OAAO,UAAU,UAAU;AACtC,eAAW,SAAS,OAAO,OAAO,KAAK,GAAG;AACxC,YAAM,YAAY,aAAa,KAAK;AACpC,UAAI,WAAW;AACb,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,iBAAiB,OAAgB,KAAkB;AAC1D,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,aAAa,aAAa,KAAK;AACrC,QAAI,YAAY;AACd,UAAI,KAAK,UAAU;AAAA,IACrB;AACA;AAAA,EACF;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAW,QAAQ,OAAO;AACxB,uBAAiB,MAAM,GAAG;AAAA,IAC5B;AACA;AAAA,EACF;AAEA,MAAI,SAAS,OAAO,UAAU,UAAU;AACtC,eAAW,SAAS,OAAO,OAAO,KAAK,GAAG;AACxC,uBAAiB,OAAO,GAAG;AAAA,IAC7B;AAAA,EACF;AACF;AAEA,eAAe,uBAAuB,cAA4B,QAA+B;AAC/F,SAAO,aAAa,QAAQ;AAAA,IAC1B,QAAQ;AAAA,IACR,QAAQ,CAAC,MAAM;AAAA,EACjB,CAAC;AACH;AAEA,eAAsB,WACpB,cACA,QAC0B;AAC1B,QAAM,SAAS,MAAM,uBAAuB,cAAc,MAAM;AAChE,SAAO,aAAa,MAAM;AAC5B;AAEA,eAAsB,aAAa,cAA4B,QAA6B;AAC1F,QAAM,SAAS,MAAM,uBAAuB,cAAc,MAAM;AAChE,QAAM,WAAkB,CAAC;AACzB,mBAAiB,QAAQ,QAAQ;AAEjC,QAAM,UAAU,oBAAI,IAAiB;AACrC,aAAW,QAAQ,UAAU;AAC3B,YAAQ,IAAI,KAAK,YAAY,GAAG,IAAI;AAAA,EACtC;AAEA,SAAO,MAAM,KAAK,QAAQ,OAAO,CAAC;AACpC;AAEA,eAAsB,WAAW,QAAa,cAAgD;AAE5F,QAAM,gBAAgB,MAAM,aAAa,0BAA0B,EAAE,MAAM,OAAO,CAAC;AAGnF,QAAM,UAAU,MAAM,WAAW,cAAc,MAAM;AACrD,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,+BAA+B,MAAM,GAAG;AAAA,EAC1D;AAGA,QAAM,aAAa,MAAM,aAAa,0BAA0B,EAAE,MAAM,QAAQ,CAAC;AAEjF,SAAO,EAAE,YAAY,QAAQ,eAAe,SAAS,WAAW;AAClE;","names":[]}