@arkade-os/sdk 0.4.75 → 0.4.77
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/adapters/expo.cjs +5 -5
- package/dist/adapters/expo.d.cts +2 -2
- package/dist/adapters/expo.d.ts +2 -2
- package/dist/adapters/expo.js +3 -3
- package/dist/adapters/indexedDB.cjs +3 -5
- package/dist/adapters/indexedDB.cjs.map +1 -1
- package/dist/adapters/indexedDB.d.cts +1 -1
- package/dist/adapters/indexedDB.d.ts +1 -1
- package/dist/adapters/indexedDB.js +3 -5
- package/dist/adapters/indexedDB.js.map +1 -1
- package/dist/{asyncStorageTaskQueue-DjwCbb07.d.ts → asyncStorageTaskQueue-DTl0WM7E.d.ts} +1 -1
- package/dist/{asyncStorageTaskQueue-5k0H_cDM.d.cts → asyncStorageTaskQueue-MmJyAnu-.d.cts} +1 -1
- package/dist/{chunk-YA3L3WL4.cjs → chunk-4LP6XOMW.cjs} +17 -17
- package/dist/{chunk-YA3L3WL4.cjs.map → chunk-4LP6XOMW.cjs.map} +1 -1
- package/dist/{chunk-UKFA7NVE.js → chunk-52OA3UIC.js} +25 -12
- package/dist/chunk-52OA3UIC.js.map +1 -0
- package/dist/{chunk-4GLSOP6L.js → chunk-ACPANSOX.js} +43 -11
- package/dist/chunk-ACPANSOX.js.map +1 -0
- package/dist/{chunk-J5EX3OMM.cjs → chunk-CJN4CUEU.cjs} +25 -11
- package/dist/chunk-CJN4CUEU.cjs.map +1 -0
- package/dist/{chunk-SH23SRZE.cjs → chunk-H62OOAS4.cjs} +17 -17
- package/dist/{chunk-SH23SRZE.cjs.map → chunk-H62OOAS4.cjs.map} +1 -1
- package/dist/{chunk-PS564TAU.js → chunk-HKOFYHZP.js} +3 -3
- package/dist/{chunk-PS564TAU.js.map → chunk-HKOFYHZP.js.map} +1 -1
- package/dist/{chunk-YYWEBYFJ.cjs → chunk-LUWSY2QO.cjs} +89 -57
- package/dist/chunk-LUWSY2QO.cjs.map +1 -0
- package/dist/{chunk-FTLPTF3R.js → chunk-MLOZHTBN.js} +570 -114
- package/dist/chunk-MLOZHTBN.js.map +1 -0
- package/dist/{chunk-SKAL4MCW.js → chunk-T6MGH4V4.js} +4 -4
- package/dist/{chunk-SKAL4MCW.js.map → chunk-T6MGH4V4.js.map} +1 -1
- package/dist/{chunk-2Q2PYU3Y.cjs → chunk-Y4YK44IM.cjs} +10 -10
- package/dist/{chunk-2Q2PYU3Y.cjs.map → chunk-Y4YK44IM.cjs.map} +1 -1
- package/dist/{chunk-EHJYR4E5.cjs → chunk-YJEWWLOQ.cjs} +1005 -550
- package/dist/chunk-YJEWWLOQ.cjs.map +1 -0
- package/dist/{chunk-2ULUCL6A.js → chunk-YKNTUOUG.js} +4 -4
- package/dist/{chunk-2ULUCL6A.js.map → chunk-YKNTUOUG.js.map} +1 -1
- package/dist/contracts/handlers/index.cjs +9 -9
- package/dist/contracts/handlers/index.d.cts +3 -3
- package/dist/contracts/handlers/index.d.ts +3 -3
- package/dist/contracts/handlers/index.js +2 -2
- package/dist/{delegate-D_sW61rj.d.ts → delegate-CjcysR7s.d.ts} +1 -1
- package/dist/{delegate-D0v8yT-a.d.cts → delegate-QPCGaD_z.d.cts} +1 -1
- package/dist/{hdWalletCapable-66hG5KQP.d.cts → hdWalletCapable--pMncWbC.d.ts} +6 -4
- package/dist/{hdWalletCapable-DHCNbAgl.d.ts → hdWalletCapable-Bp_p0WLj.d.cts} +6 -4
- package/dist/{index-B2JSxDi1.d.cts → index-BMY272ns.d.cts} +26 -8
- package/dist/{index-TZBbMNqA.d.ts → index-Ie_ak2zY.d.cts} +39 -9
- package/dist/{index-TZBbMNqA.d.cts → index-Ie_ak2zY.d.ts} +39 -9
- package/dist/{index-vUeTpifq.d.ts → index-m-EM-e8D.d.ts} +26 -8
- package/dist/index.cjs +307 -303
- package/dist/index.d.cts +75 -13
- package/dist/index.d.ts +75 -13
- package/dist/index.js +4 -4
- package/dist/repositories/realm/index.cjs +36 -19
- package/dist/repositories/realm/index.cjs.map +1 -1
- package/dist/repositories/realm/index.d.cts +6 -3
- package/dist/repositories/realm/index.d.ts +6 -3
- package/dist/repositories/realm/index.js +22 -5
- package/dist/repositories/realm/index.js.map +1 -1
- package/dist/repositories/sqlite/index.cjs +42 -18
- package/dist/repositories/sqlite/index.cjs.map +1 -1
- package/dist/repositories/sqlite/index.d.cts +5 -2
- package/dist/repositories/sqlite/index.d.ts +5 -2
- package/dist/repositories/sqlite/index.js +29 -5
- package/dist/repositories/sqlite/index.js.map +1 -1
- package/dist/{taskRunner-CAAPpdyi.d.cts → taskRunner-BgRowCqB.d.cts} +1 -1
- package/dist/{taskRunner-CairkunF.d.ts → taskRunner-CqrlrJEt.d.ts} +1 -1
- package/dist/wallet/expo/background.cjs +14 -14
- package/dist/wallet/expo/background.d.cts +3 -3
- package/dist/wallet/expo/background.d.ts +3 -3
- package/dist/wallet/expo/background.js +6 -6
- package/dist/wallet/expo/index.cjs +14 -14
- package/dist/wallet/expo/index.cjs.map +1 -1
- package/dist/wallet/expo/index.d.cts +5 -5
- package/dist/wallet/expo/index.d.ts +5 -5
- package/dist/wallet/expo/index.js +5 -5
- package/dist/wallet/expo/index.js.map +1 -1
- package/dist/worker/expo/index.cjs +9 -9
- package/dist/worker/expo/index.d.cts +4 -4
- package/dist/worker/expo/index.d.ts +4 -4
- package/dist/worker/expo/index.js +5 -5
- package/package.json +1 -1
- package/dist/chunk-4GLSOP6L.js.map +0 -1
- package/dist/chunk-EHJYR4E5.cjs.map +0 -1
- package/dist/chunk-FTLPTF3R.js.map +0 -1
- package/dist/chunk-J5EX3OMM.cjs.map +0 -1
- package/dist/chunk-UKFA7NVE.js.map +0 -1
- package/dist/chunk-YYWEBYFJ.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/repositories/realm/walletRepository.ts","../../../src/repositories/realm/contractRepository.ts","../../../src/repositories/realm/intentRepository.ts","../../../src/repositories/realm/virtualTxRepository.ts","../../../src/repositories/realm/schemas.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { ArkTransaction, ExtendedCoin, ExtendedVirtualCoin } from \"../../wallet\";\nimport { WalletRepository, WalletState, VtxoRepositoryKey } from \"../walletRepository\";\nimport {\n serializeVtxo,\n serializeUtxo,\n deserializeVtxo,\n deserializeUtxo,\n serializeAssets,\n deserializeAssets,\n SerializedTapLeaf,\n} from \"../serialization\";\nimport { scriptFromArkAddress } from \"../scriptFromAddress\";\nimport { isVtxoForScript } from \"../../contracts/vtxoOwnership\";\nimport { RealmLike } from \"./types\";\n\n/**\n * Realm-based implementation of WalletRepository.\n *\n * Consumers must open Realm with the schemas from `./schemas.ts` and pass\n * the instance to the constructor.\n *\n * Realm handles schema creation on open, so `ensureInit()` is a no-op.\n * The consumer owns the Realm lifecycle — `[Symbol.asyncDispose]` is a no-op.\n */\nexport class RealmWalletRepository implements WalletRepository {\n readonly version = 1 as const;\n\n constructor(private readonly realm: RealmLike) {}\n\n // ── Lifecycle ──────────────────────────────────────────────────────\n\n private async ensureInit(): Promise<void> {\n // Realm handles schema on open — nothing to initialise.\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n // no-op — consumer owns the Realm lifecycle\n }\n\n // ── Clear ──────────────────────────────────────────────────────────\n\n async clear(): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n this.realm.delete(this.realm.objects(\"ArkVtxo\"));\n this.realm.delete(this.realm.objects(\"ArkUtxo\"));\n this.realm.delete(this.realm.objects(\"ArkTransaction\"));\n this.realm.delete(this.realm.objects(\"ArkWalletState\"));\n });\n }\n\n // ── VTXO management ────────────────────────────────────────────────\n\n async getVtxos(address: string): Promise<ExtendedVirtualCoin[]> {\n await this.ensureInit();\n const results = this.realm.objects(\"ArkVtxo\").filtered(\"address == $0\", address);\n return [...results].map(vtxoObjectToDomain);\n }\n\n async saveVtxos(address: string, vtxos: ExtendedVirtualCoin[]): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n for (const vtxo of vtxos) {\n const s = serializeVtxo(vtxo);\n this.realm.create(\n \"ArkVtxo\",\n {\n pk: `${s.txid}:${s.vout}`,\n address,\n txid: s.txid,\n vout: s.vout,\n value: s.value,\n tapTree: s.tapTree,\n forfeitCb: s.forfeitTapLeafScript.cb,\n forfeitS: s.forfeitTapLeafScript.s,\n intentCb: s.intentTapLeafScript.cb,\n intentS: s.intentTapLeafScript.s,\n statusJson: JSON.stringify(s.status),\n virtualStatusJson: JSON.stringify(s.virtualStatus),\n createdAt:\n typeof s.createdAt === \"string\"\n ? s.createdAt\n : s.createdAt instanceof Date\n ? s.createdAt.toISOString()\n : new Date(s.createdAt).toISOString(),\n isUnrolled: s.isUnrolled ?? false,\n isSpent: s.isSpent === undefined ? null : s.isSpent,\n spentBy: s.spentBy ?? null,\n settledBy: s.settledBy ?? null,\n arkTxId: s.arkTxId ?? null,\n extraWitnessJson: s.extraWitness ? JSON.stringify(s.extraWitness) : null,\n assetsJson: s.assets ? JSON.stringify(s.assets) : null,\n script: s.script ?? null,\n },\n \"modified\",\n );\n }\n });\n }\n\n async deleteVtxos(address: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm.objects(\"ArkVtxo\").filtered(\"address == $0\", address);\n this.realm.delete(toDelete);\n });\n }\n\n async getVtxosForScript(script: string): Promise<ExtendedVirtualCoin[]> {\n await this.ensureInit();\n const results = this.realm.objects(\"ArkVtxo\").filtered(\"script == $0\", script);\n return [...results].map(vtxoObjectToDomain);\n }\n\n async saveVtxosForScript(key: VtxoRepositoryKey, vtxos: ExtendedVirtualCoin[]): Promise<void> {\n if (!key.address) {\n throw new Error(\"RealmWalletRepository requires an address\");\n }\n for (const vtxo of vtxos) {\n if (!isVtxoForScript(vtxo, key.script)) {\n throw new Error(\n `VTXO ${vtxo.txid}:${vtxo.vout} script mismatch: expected ${key.script}, got ${vtxo.script}`,\n );\n }\n }\n return this.saveVtxos(key.address, vtxos);\n }\n\n async deleteVtxosForScript(script: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm.objects(\"ArkVtxo\").filtered(\"script == $0\", script);\n this.realm.delete(toDelete);\n });\n }\n\n // ── UTXO management ────────────────────────────────────────────────\n\n async getUtxos(address: string): Promise<ExtendedCoin[]> {\n await this.ensureInit();\n const results = this.realm.objects(\"ArkUtxo\").filtered(\"address == $0\", address);\n return [...results].map(utxoObjectToDomain);\n }\n\n async saveUtxos(address: string, utxos: ExtendedCoin[]): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n for (const utxo of utxos) {\n const s = serializeUtxo(utxo);\n this.realm.create(\n \"ArkUtxo\",\n {\n pk: `${s.txid}:${s.vout}`,\n address,\n txid: s.txid,\n vout: s.vout,\n value: s.value,\n tapTree: s.tapTree,\n forfeitCb: s.forfeitTapLeafScript.cb,\n forfeitS: s.forfeitTapLeafScript.s,\n intentCb: s.intentTapLeafScript.cb,\n intentS: s.intentTapLeafScript.s,\n statusJson: JSON.stringify(s.status),\n extraWitnessJson: s.extraWitness ? JSON.stringify(s.extraWitness) : null,\n },\n \"modified\",\n );\n }\n });\n }\n\n async deleteUtxos(address: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm.objects(\"ArkUtxo\").filtered(\"address == $0\", address);\n this.realm.delete(toDelete);\n });\n }\n\n // ── Transaction history ────────────────────────────────────────────\n\n async getTransactionHistory(address: string): Promise<ArkTransaction[]> {\n await this.ensureInit();\n const results = this.realm.objects(\"ArkTransaction\").filtered(\"address == $0\", address);\n const txs = [...results].map(txObjectToDomain);\n txs.sort((a, b) => a.createdAt - b.createdAt);\n return txs;\n }\n\n async saveTransactions(address: string, txs: ArkTransaction[]): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n for (const tx of txs) {\n this.realm.create(\n \"ArkTransaction\",\n {\n pk: `${address}:${tx.key.boardingTxid}:${tx.key.commitmentTxid}:${tx.key.arkTxid}`,\n address,\n boardingTxid: tx.key.boardingTxid,\n commitmentTxid: tx.key.commitmentTxid,\n arkTxid: tx.key.arkTxid,\n type: tx.type,\n amount: tx.amount,\n settled: tx.settled,\n createdAt: tx.createdAt,\n assetsJson: tx.assets ? JSON.stringify(serializeAssets(tx.assets)) : null,\n },\n \"modified\",\n );\n }\n });\n }\n\n async deleteTransactions(address: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm\n .objects(\"ArkTransaction\")\n .filtered(\"address == $0\", address);\n this.realm.delete(toDelete);\n });\n }\n\n // ── Wallet state ───────────────────────────────────────────────────\n\n async getWalletState(): Promise<WalletState | null> {\n await this.ensureInit();\n const results = this.realm\n .objects<WalletStateObject>(\"ArkWalletState\")\n .filtered(\"key == $0\", \"state\");\n const items = [...results];\n if (items.length === 0) return null;\n\n const obj = items[0];\n const state: WalletState = {};\n if (obj.settingsJson) {\n state.settings = JSON.parse(obj.settingsJson);\n }\n state.lastSyncTime = obj.lastSyncTime ?? undefined;\n return state;\n }\n\n async saveWalletState(state: WalletState): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n this.realm.create(\n \"ArkWalletState\",\n {\n key: \"state\",\n lastSyncTime: state.lastSyncTime,\n settingsJson: state.settings ? JSON.stringify(state.settings) : null,\n },\n \"modified\",\n );\n });\n }\n}\n\ninterface WalletStateObject {\n key: string;\n lastSyncTime: number | null;\n settingsJson: string | null;\n}\n\n// ── Realm object → Domain converters ─────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction vtxoObjectToDomain(obj: any): ExtendedVirtualCoin {\n const serialized = {\n txid: obj.txid,\n vout: obj.vout,\n value: obj.value,\n tapTree: obj.tapTree,\n forfeitTapLeafScript: {\n cb: obj.forfeitCb,\n s: obj.forfeitS,\n } as SerializedTapLeaf,\n intentTapLeafScript: {\n cb: obj.intentCb,\n s: obj.intentS,\n } as SerializedTapLeaf,\n status: JSON.parse(obj.statusJson),\n virtualStatus: JSON.parse(obj.virtualStatusJson),\n createdAt: new Date(obj.createdAt),\n isUnrolled: obj.isUnrolled,\n isSpent: obj.isSpent === null ? undefined : obj.isSpent,\n spentBy: obj.spentBy ?? undefined,\n settledBy: obj.settledBy ?? undefined,\n arkTxId: obj.arkTxId ?? undefined,\n extraWitness: obj.extraWitnessJson ? JSON.parse(obj.extraWitnessJson) : undefined,\n assets: obj.assetsJson ? JSON.parse(obj.assetsJson) : undefined,\n // Post-migration every row has `script`, but the backfill is\n // idempotent: derive from `address` if the legacy column is still\n // null (e.g. the migration hasn't run yet on this handle).\n script: obj.script ?? scriptFromArkAddress(obj.address),\n };\n\n return deserializeVtxo(serialized);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction utxoObjectToDomain(obj: any): ExtendedCoin {\n const serialized = {\n txid: obj.txid,\n vout: obj.vout,\n value: obj.value,\n tapTree: obj.tapTree,\n forfeitTapLeafScript: {\n cb: obj.forfeitCb,\n s: obj.forfeitS,\n } as SerializedTapLeaf,\n intentTapLeafScript: {\n cb: obj.intentCb,\n s: obj.intentS,\n } as SerializedTapLeaf,\n status: JSON.parse(obj.statusJson),\n extraWitness: obj.extraWitnessJson ? JSON.parse(obj.extraWitnessJson) : undefined,\n };\n\n return deserializeUtxo(serialized);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction txObjectToDomain(obj: any): ArkTransaction {\n const tx: ArkTransaction = {\n key: {\n boardingTxid: obj.boardingTxid,\n commitmentTxid: obj.commitmentTxid,\n arkTxid: obj.arkTxid,\n },\n type: obj.type as ArkTransaction[\"type\"],\n amount: obj.amount,\n settled: obj.settled,\n createdAt: obj.createdAt,\n };\n if (obj.assetsJson) {\n tx.assets = deserializeAssets(JSON.parse(obj.assetsJson));\n }\n return tx;\n}\n","import { Contract, ContractState, ContractWatchState } from \"../../contracts/types\";\nimport { ContractFilter, ContractRepository } from \"../contractRepository\";\nimport { RealmLike } from \"./types\";\n\n/**\n * Realm-based implementation of ContractRepository.\n *\n * Consumers must open Realm with the schemas from `./schemas.ts` and pass\n * the instance to the constructor.\n *\n * Realm handles schema creation on open, so `ensureInit()` is a no-op.\n * The consumer owns the Realm lifecycle — `[Symbol.asyncDispose]` is a no-op.\n */\nexport class RealmContractRepository implements ContractRepository {\n readonly version = 2 as const;\n\n constructor(private readonly realm: RealmLike) {}\n\n // ── Lifecycle ──────────────────────────────────────────────────────\n\n private async ensureInit(): Promise<void> {\n // Realm handles schema on open — nothing to initialise.\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n // no-op — consumer owns the Realm lifecycle\n }\n\n // ── Clear ──────────────────────────────────────────────────────────\n\n async clear(): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n this.realm.delete(this.realm.objects(\"ArkContract\"));\n });\n }\n\n // ── Contract management ────────────────────────────────────────────\n\n async getContracts(filter?: ContractFilter): Promise<Contract[]> {\n await this.ensureInit();\n\n let results = this.realm.objects(\"ArkContract\");\n\n if (filter) {\n const filterParts: string[] = [];\n const filterArgs: unknown[] = [];\n\n let argIndex = 0;\n argIndex = this.addFilterCondition(\n filterParts,\n filterArgs,\n \"script\",\n filter.script,\n argIndex,\n );\n argIndex = this.addFilterCondition(\n filterParts,\n filterArgs,\n \"state\",\n filter.state,\n argIndex,\n );\n argIndex = this.addFilterCondition(\n filterParts,\n filterArgs,\n \"type\",\n filter.type,\n argIndex,\n );\n argIndex = this.addWatchCondition(filterParts, filterArgs, filter.watch, argIndex);\n\n if (filterParts.length > 0) {\n const query = filterParts.join(\" AND \");\n results = results.filtered(query, ...filterArgs);\n }\n }\n\n return [...results].map(contractObjectToDomain);\n }\n\n async saveContract(contract: Contract): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n this.realm.create(\n \"ArkContract\",\n {\n script: contract.script,\n address: contract.address,\n type: contract.type,\n state: contract.state,\n paramsJson: JSON.stringify(contract.params),\n createdAt: contract.createdAt,\n label: contract.label ?? null,\n metadataJson: contract.metadata ? JSON.stringify(contract.metadata) : null,\n watch: contract.watch ?? null,\n },\n \"modified\",\n );\n });\n }\n\n async deleteContract(script: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm.objects(\"ArkContract\").filtered(\"script == $0\", script);\n this.realm.delete(toDelete);\n });\n }\n\n // ── Helpers ─────────────────────────────────────────────────────────\n\n private addFilterCondition(\n parts: string[],\n args: unknown[],\n column: string,\n value: string | string[] | undefined,\n argIndex: number,\n ): number {\n if (value === undefined) return argIndex;\n\n if (Array.isArray(value)) {\n if (value.length === 0) return argIndex;\n const conditions = value.map((_, i) => {\n return `${column} == $${argIndex + i}`;\n });\n parts.push(`(${conditions.join(\" OR \")})`);\n args.push(...value);\n return argIndex + value.length;\n } else {\n parts.push(`${column} == $${argIndex}`);\n args.push(value);\n return argIndex + 1;\n }\n }\n\n /**\n * Same as {@link addFilterCondition}, except a row predating the\n * property stores null and must match `\"watched\"`.\n */\n private addWatchCondition(\n parts: string[],\n args: unknown[],\n value: ContractWatchState | ContractWatchState[] | undefined,\n argIndex: number,\n ): number {\n if (value === undefined) return argIndex;\n\n const wanted = Array.isArray(value) ? value : [value];\n if (wanted.length === 0) return argIndex;\n\n const conditions = wanted.map((_, i) => `watch == $${argIndex + i}`);\n if (wanted.includes(\"watched\")) conditions.push(\"watch == null\");\n parts.push(`(${conditions.join(\" OR \")})`);\n args.push(...wanted);\n return argIndex + wanted.length;\n }\n}\n\n// ── Realm object → Domain converter ──────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction contractObjectToDomain(obj: any): Contract {\n const contract: Contract = {\n script: obj.script,\n address: obj.address,\n type: obj.type,\n state: obj.state as ContractState,\n params: JSON.parse(obj.paramsJson),\n createdAt: obj.createdAt,\n };\n\n if (obj.label !== null && obj.label !== undefined) {\n contract.label = obj.label;\n }\n if (obj.metadataJson !== null && obj.metadataJson !== undefined) {\n contract.metadata = JSON.parse(obj.metadataJson);\n }\n if (obj.watch !== null && obj.watch !== undefined) {\n contract.watch = obj.watch as ContractWatchState;\n }\n\n return contract;\n}\n","import { Outpoint } from \"../../wallet\";\nimport {\n ArkIntent,\n ArkIntentState,\n assertIntentIdUnique,\n IntentFilter,\n IntentRepository,\n intentMatchesFilter,\n intentPageBounds,\n isTerminalIntentState,\n} from \"../intentRepository\";\nimport { RealmLike } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction toIntent(o: any): ArkIntent {\n return {\n intentTxId: o.intentTxId,\n intentId: o.intentId ?? undefined,\n state: o.state as ArkIntentState,\n validFrom: o.validFrom ?? undefined,\n validUntil: o.validUntil ?? undefined,\n createdAt: o.createdAt,\n updatedAt: o.updatedAt,\n registerProof: o.registerProof,\n registerProofMessage: o.registerProofMessage,\n deleteProof: o.deleteProof,\n deleteProofMessage: o.deleteProofMessage,\n batchId: o.batchId ?? undefined,\n commitmentTransactionId: o.commitmentTransactionId ?? undefined,\n cancellationReason: o.cancellationReason ?? undefined,\n partialForfeits: JSON.parse(o.partialForfeitsJson),\n signerDescriptor: o.signerDescriptor ?? undefined,\n intentVtxos: JSON.parse(o.intentVtxosJson),\n };\n}\n\nexport class RealmIntentRepository implements IntentRepository {\n readonly version = 1 as const;\n constructor(private readonly realm: RealmLike) {}\n\n async clear(): Promise<void> {\n this.realm.write(() => {\n this.realm.delete(this.realm.objects(\"ArkIntent\"));\n });\n }\n\n async saveIntent(intent: ArkIntent): Promise<void> {\n this.realm.write(() => {\n if (intent.intentId != null) {\n const clashes = [\n ...this.realm.objects(\"ArkIntent\").filtered(\"intentId == $0\", intent.intentId),\n ].map(toIntent);\n assertIntentIdUnique(intent, clashes);\n }\n this.realm.create(\n \"ArkIntent\",\n {\n intentTxId: intent.intentTxId,\n intentId: intent.intentId ?? null,\n state: intent.state,\n validFrom: intent.validFrom ?? null,\n validUntil: intent.validUntil ?? null,\n createdAt: intent.createdAt,\n updatedAt: Date.now(),\n registerProof: intent.registerProof,\n registerProofMessage: intent.registerProofMessage,\n deleteProof: intent.deleteProof,\n deleteProofMessage: intent.deleteProofMessage,\n batchId: intent.batchId ?? null,\n commitmentTransactionId: intent.commitmentTransactionId ?? null,\n cancellationReason: intent.cancellationReason ?? null,\n partialForfeitsJson: JSON.stringify(intent.partialForfeits),\n signerDescriptor: intent.signerDescriptor ?? null,\n intentVtxosJson: JSON.stringify(intent.intentVtxos),\n },\n \"modified\",\n );\n });\n }\n\n async getIntents(filter?: IntentFilter): Promise<ArkIntent[]> {\n const all = [...this.realm.objects(\"ArkIntent\")]\n .map(toIntent)\n .sort((a, b) => a.createdAt - b.createdAt || a.intentTxId.localeCompare(b.intentTxId));\n const out = filter ? all.filter((i) => intentMatchesFilter(i, filter)) : all;\n const { skip, end } = intentPageBounds(filter, out.length);\n return out.slice(skip, end);\n }\n\n async getLockedVtxoOutpoints(): Promise<Outpoint[]> {\n const out: Outpoint[] = [];\n for (const o of [...this.realm.objects(\"ArkIntent\")].map(toIntent))\n if (!isTerminalIntentState(o.state)) out.push(...o.intentVtxos);\n return out;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {}\n}\n","import { Outpoint } from \"../../wallet\";\nimport {\n ChainedTxType,\n mergeChainedTxType,\n VirtualTx,\n VirtualTxRepository,\n VtxoBranch,\n} from \"../virtualTxRepository\";\nimport { RealmLike } from \"./types\";\n\nconst vtxoKey = (o: Outpoint) => `${o.txid}:${o.vout}`;\nconst branchPk = (b: VtxoBranch) => `${b.vtxoTxid}:${b.vtxoVout}:${b.position}`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction toTx(o: any): VirtualTx {\n return {\n txid: o.txid,\n psbt: o.psbt ?? null,\n expiresAt: o.expiresAt ?? null,\n type: (o.type ?? ChainedTxType.Unspecified) as ChainedTxType,\n };\n}\n\nexport class RealmVirtualTxRepository implements VirtualTxRepository {\n readonly version = 1 as const;\n constructor(private readonly realm: RealmLike) {}\n\n async clear(): Promise<void> {\n this.realm.write(() => {\n this.realm.delete(this.realm.objects(\"ArkVirtualTx\"));\n this.realm.delete(this.realm.objects(\"ArkVtxoBranch\"));\n });\n }\n\n async upsertVirtualTxs(txs: VirtualTx[]): Promise<void> {\n this.realm.write(() => {\n for (const t of txs) {\n const prev = [\n ...this.realm.objects<VirtualTx>(\"ArkVirtualTx\").filtered(\"txid == $0\", t.txid),\n ].at(0);\n this.realm.create(\n \"ArkVirtualTx\",\n {\n txid: t.txid,\n psbt: t.psbt ?? prev?.psbt ?? null,\n expiresAt: t.expiresAt ?? prev?.expiresAt ?? null,\n type: mergeChainedTxType(t.type, prev?.type),\n },\n \"modified\",\n );\n }\n });\n }\n\n async getVirtualTx(txid: string): Promise<VirtualTx | null> {\n const r = [...this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", txid)];\n return r.length ? toTx(r[0]) : null;\n }\n\n async setBranch(vtxo: Outpoint, branch: VtxoBranch[]): Promise<void> {\n this.realm.write(() => {\n this.realm.delete(\n this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo)),\n );\n for (const b of branch)\n this.realm.create(\n \"ArkVtxoBranch\",\n {\n pk: branchPk(b),\n vtxoKey: `${b.vtxoTxid}:${b.vtxoVout}`,\n vtxoTxid: b.vtxoTxid,\n vtxoVout: b.vtxoVout,\n virtualTxid: b.virtualTxid,\n position: b.position,\n },\n \"modified\",\n );\n });\n }\n\n async getBranch(vtxo: Outpoint): Promise<VirtualTx[]> {\n const rows = [\n ...this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo)),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ] as any[];\n rows.sort((a, b) => a.position - b.position);\n const out: VirtualTx[] = [];\n for (const b of rows) {\n const t = [...this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", b.virtualTxid)];\n if (t.length) out.push(toTx(t[0]));\n }\n return out;\n }\n\n async hasBranch(vtxo: Outpoint): Promise<boolean> {\n return (\n [...this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo))]\n .length > 0\n );\n }\n\n async pruneForSpentVtxo(vtxo: Outpoint): Promise<void> {\n this.realm.write(() => {\n const branchRows = this.realm\n .objects(\"ArkVtxoBranch\")\n .filtered(\"vtxoKey == $0\", vtxoKey(vtxo));\n // Snapshot the referenced txids into plain strings BEFORE deleting.\n // Real Realm invalidates deleted objects, so reading `virtualTxid`\n // off them after `delete` throws (\"Accessing object which has been\n // invalidated\") — which would roll back the whole write() and make\n // prune a permanent no-op on React Native.\n const virtualTxids = [\n ...new Set(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [...branchRows].map((e: any) => e.virtualTxid as string),\n ),\n ];\n this.realm.delete(branchRows);\n for (const virtualTxid of virtualTxids) {\n const stillRef = [\n ...this.realm\n .objects(\"ArkVtxoBranch\")\n .filtered(\"virtualTxid == $0\", virtualTxid),\n ];\n if (stillRef.length === 0)\n this.realm.delete(\n this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", virtualTxid),\n );\n }\n });\n }\n\n async [Symbol.asyncDispose](): Promise<void> {}\n}\n","/**\n * Realm object schemas for the Arkade wallet.\n *\n * All schema names are prefixed with \"Ark\" to avoid collisions with\n * other Realm schemas in the consuming application.\n *\n * Since `realm` is a peer dependency (not installed in this package),\n * schemas are defined as plain JS objects conforming to Realm's\n * ObjectSchema shape.\n */\n\nimport { scriptFromArkAddress } from \"../scriptFromAddress\";\n\nexport const ArkVtxoSchema = {\n name: \"ArkVtxo\",\n primaryKey: \"pk\",\n properties: {\n pk: \"string\", // composite: `${txid}:${vout}`\n address: { type: \"string\", indexed: true },\n txid: \"string\",\n vout: \"int\",\n value: \"int\",\n tapTree: \"string\", // hex-encoded\n forfeitCb: \"string\",\n forfeitS: \"string\",\n intentCb: \"string\",\n intentS: \"string\",\n extraWitnessJson: \"string?\",\n statusJson: \"string\",\n virtualStatusJson: \"string\",\n spentBy: \"string?\",\n settledBy: \"string?\",\n arkTxId: \"string?\",\n createdAt: \"string\", // ISO 8601\n isUnrolled: \"bool\",\n isSpent: \"bool?\",\n assetsJson: \"string?\",\n // scriptPubKey (hex) locking this VTXO, indexed so contract-scoped\n // queries can resolve ownership without touching address mapping.\n // Required as of schema v2; legacy rows are backfilled from `address`\n // during migration (see `runArkRealmMigrations`).\n script: { type: \"string\", indexed: true },\n },\n} as const;\n\nexport const ArkUtxoSchema = {\n name: \"ArkUtxo\",\n primaryKey: \"pk\",\n properties: {\n pk: \"string\", // composite: `${txid}:${vout}`\n address: { type: \"string\", indexed: true },\n txid: \"string\",\n vout: \"int\",\n value: \"int\",\n tapTree: \"string\", // hex-encoded\n forfeitCb: \"string\",\n forfeitS: \"string\",\n intentCb: \"string\",\n intentS: \"string\",\n extraWitnessJson: \"string?\",\n statusJson: \"string\",\n },\n} as const;\n\nexport const ArkTransactionSchema = {\n name: \"ArkTransaction\",\n primaryKey: \"pk\",\n properties: {\n pk: \"string\", // composite: `${address}:${boardingTxid}:${commitmentTxid}:${arkTxid}`\n address: { type: \"string\", indexed: true },\n boardingTxid: \"string\",\n commitmentTxid: \"string\",\n arkTxid: \"string\",\n type: \"string\",\n amount: \"int\",\n settled: \"bool\",\n createdAt: \"int\",\n assetsJson: \"string?\",\n },\n} as const;\n\nexport const ArkWalletStateSchema = {\n name: \"ArkWalletState\",\n primaryKey: \"key\",\n properties: {\n key: \"string\",\n lastSyncTime: \"int?\",\n settingsJson: \"string?\",\n },\n} as const;\n\nexport const ArkContractSchema = {\n name: \"ArkContract\",\n primaryKey: \"script\",\n properties: {\n script: \"string\",\n address: \"string\",\n type: { type: \"string\", indexed: true },\n state: { type: \"string\", indexed: true },\n paramsJson: \"string\",\n createdAt: \"int\",\n expiresAt: \"int?\",\n label: \"string?\",\n metadataJson: \"string?\",\n watch: { type: \"string\", optional: true, indexed: true },\n },\n} as const;\n\nexport const ArkIntentSchema = {\n name: \"ArkIntent\",\n primaryKey: \"intentTxId\",\n properties: {\n intentTxId: \"string\",\n intentId: \"string?\",\n state: { type: \"string\", indexed: true },\n validFrom: \"int?\",\n validUntil: \"int?\",\n createdAt: \"int\",\n updatedAt: \"int\",\n registerProof: \"string\",\n registerProofMessage: \"string\",\n deleteProof: \"string\",\n deleteProofMessage: \"string\",\n batchId: \"string?\",\n commitmentTransactionId: \"string?\",\n cancellationReason: \"string?\",\n partialForfeitsJson: \"string\",\n signerDescriptor: \"string?\",\n intentVtxosJson: \"string\",\n },\n} as const;\n\nexport const ArkVirtualTxSchema = {\n name: \"ArkVirtualTx\",\n primaryKey: \"txid\",\n properties: {\n txid: \"string\",\n psbt: \"string?\",\n expiresAt: \"int?\",\n type: \"int\",\n },\n} as const;\n\nexport const ArkVtxoBranchSchema = {\n name: \"ArkVtxoBranch\",\n primaryKey: \"pk\",\n properties: {\n pk: \"string\", // `${vtxoTxid}:${vtxoVout}:${position}`\n vtxoKey: { type: \"string\", indexed: true }, // `${vtxoTxid}:${vtxoVout}`\n vtxoTxid: \"string\",\n vtxoVout: \"int\",\n virtualTxid: { type: \"string\", indexed: true },\n position: \"int\",\n },\n} as const;\n\n/**\n * All Realm schemas needed by the Arkade wallet repositories.\n * Pass this array to your Realm configuration's `schema` property.\n */\nexport const ArkRealmSchemas = [\n ArkVtxoSchema,\n ArkUtxoSchema,\n ArkTransactionSchema,\n ArkWalletStateSchema,\n ArkContractSchema,\n];\n\n/**\n * @experimental Schemas for the inert intent/virtualtx persistence layer.\n *\n * Deliberately kept OUT of {@link ArkRealmSchemas} and {@link\n * ARK_REALM_SCHEMA_VERSION} so upgrading the SDK never migrates an existing\n * consumer's Realm. A consumer opting in must register these schemas and bump\n * their own `schemaVersion` themselves:\n *\n * ```ts\n * schema: [...ArkRealmSchemas, ...ArkExperimentalRealmSchemas],\n * schemaVersion: Math.max(ARK_REALM_SCHEMA_VERSION + 1, yourSchemaVersion),\n * ```\n */\nexport const ArkExperimentalRealmSchemas = [\n ArkIntentSchema,\n ArkVirtualTxSchema,\n ArkVtxoBranchSchema,\n];\n\n/**\n * Current Realm schema version for the Arkade wallet.\n *\n * Consumers opening Realm must pass a `schemaVersion` at least this high so\n * legacy databases get migrated; merge it with your own app's version:\n *\n * ```ts\n * await Realm.open({\n * schema: [...ArkRealmSchemas, ...yourSchemas],\n * schemaVersion: Math.max(ARK_REALM_SCHEMA_VERSION, yourSchemaVersion),\n * onMigration: (oldRealm, newRealm) => {\n * runArkRealmMigrations(oldRealm, newRealm);\n * // your own migrations\n * },\n * });\n * ```\n *\n * History:\n * - v1: initial ArkVtxo/ArkUtxo/... schemas, `script` nullable.\n * - v2: ArkVtxo.script becomes required; NULL values are backfilled from\n * the owning Ark address during migration.\n * - v3: ArkContract.watch added (nullable). No data migration: a row\n * without one reads as `watched`, which is the coverage every\n * existing contract has today.\n *\n * The intent/virtualtx schemas ({@link ArkExperimentalRealmSchemas}) are NOT\n * counted here: they are experimental and inert, so they never move the\n * advertised version on their own. `runArkRealmMigrations` still carries the\n * intent-schema migration steps (guarded per-schema) for consumers who opt in\n * and bump their own version.\n */\nexport const ARK_REALM_SCHEMA_VERSION = 3;\n\n/**\n * Run every Arkade schema migration applicable to the open Realm.\n *\n * Designed to be composed with the consumer's own migrations inside a single\n * `onMigration` callback. Each migration step does a per-row check so it\n * remains idempotent and independent of the app's global `schemaVersion` —\n * a consumer whose app is already at version 10 can still trigger the\n * Arkade v1→v2 script backfill when the row has never been populated.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function runArkRealmMigrations(oldRealm: any, newRealm: any): void {\n const newVtxos = newRealm.objects(\"ArkVtxo\");\n for (let i = 0; i < newVtxos.length; i++) {\n const newVtxo = newVtxos[i];\n if (!newVtxo.script) {\n newVtxo.script = scriptFromArkAddress(newVtxo.address);\n }\n }\n\n // v3 → v4: ArkVirtualTx.hex was renamed to psbt (both hold the same\n // serialized tx payload). A rename is drop-old + add-new, so the value\n // would be lost unless we copy it across. Guard on the old schema actually\n // defining ArkVirtualTx — a v1/v2 realm never had it, and reading objects\n // of an unknown type throws.\n const oldHasVirtualTx =\n Array.isArray(oldRealm?.schema) &&\n oldRealm.schema.some((s: { name: string }) => s.name === \"ArkVirtualTx\");\n if (oldHasVirtualTx) {\n const oldTxs = oldRealm.objects(\"ArkVirtualTx\");\n const newTxs = newRealm.objects(\"ArkVirtualTx\");\n for (let i = 0; i < newTxs.length; i++) {\n if (newTxs[i].psbt == null && oldTxs[i].hex != null) {\n newTxs[i].psbt = oldTxs[i].hex;\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/repositories/realm/walletRepository.ts","../../../src/repositories/realm/contractRepository.ts","../../../src/repositories/realm/intentRepository.ts","../../../src/repositories/realm/virtualTxRepository.ts","../../../src/repositories/realm/schemas.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { ArkTransaction, ExtendedCoin, ExtendedVirtualCoin } from \"../../wallet\";\nimport { WalletRepository, WalletState, VtxoRepositoryKey } from \"../walletRepository\";\nimport {\n serializeVtxo,\n serializeUtxo,\n deserializeVtxo,\n deserializeUtxo,\n serializeAssets,\n deserializeAssets,\n SerializedTapLeaf,\n} from \"../serialization\";\nimport { scriptFromArkAddress } from \"../scriptFromAddress\";\nimport { isVtxoForScript } from \"../../contracts/vtxoOwnership\";\nimport { isVtxoSpent } from \"../../wallet/vtxo\";\nimport { RealmLike } from \"./types\";\n\n/**\n * Realm-based implementation of WalletRepository.\n *\n * Consumers must open Realm with the schemas from `./schemas.ts` and pass\n * the instance to the constructor.\n *\n * Realm handles schema creation on open, so `ensureInit()` is a no-op.\n * The consumer owns the Realm lifecycle — `[Symbol.asyncDispose]` is a no-op.\n */\nexport class RealmWalletRepository implements WalletRepository {\n readonly version = 1 as const;\n\n constructor(private readonly realm: RealmLike) {}\n\n // ── Lifecycle ──────────────────────────────────────────────────────\n\n private async ensureInit(): Promise<void> {\n // Realm handles schema on open — nothing to initialise.\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n // no-op — consumer owns the Realm lifecycle\n }\n\n // ── Clear ──────────────────────────────────────────────────────────\n\n async clear(): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n this.realm.delete(this.realm.objects(\"ArkVtxo\"));\n this.realm.delete(this.realm.objects(\"ArkUtxo\"));\n this.realm.delete(this.realm.objects(\"ArkTransaction\"));\n this.realm.delete(this.realm.objects(\"ArkWalletState\"));\n });\n }\n\n // ── VTXO management ────────────────────────────────────────────────\n\n async getVtxos(address: string): Promise<ExtendedVirtualCoin[]> {\n await this.ensureInit();\n const results = this.realm.objects(\"ArkVtxo\").filtered(\"address == $0\", address);\n return [...results].map(vtxoObjectToDomain);\n }\n\n async saveVtxos(address: string, vtxos: ExtendedVirtualCoin[]): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n for (const vtxo of vtxos) {\n const s = serializeVtxo(vtxo);\n this.realm.create(\n \"ArkVtxo\",\n {\n pk: `${s.txid}:${s.vout}`,\n address,\n txid: s.txid,\n vout: s.vout,\n value: s.value,\n tapTree: s.tapTree,\n forfeitCb: s.forfeitTapLeafScript.cb,\n forfeitS: s.forfeitTapLeafScript.s,\n intentCb: s.intentTapLeafScript.cb,\n intentS: s.intentTapLeafScript.s,\n statusJson: JSON.stringify(s.status),\n virtualStatusJson: JSON.stringify(s.virtualStatus),\n createdAt:\n typeof s.createdAt === \"string\"\n ? s.createdAt\n : s.createdAt instanceof Date\n ? s.createdAt.toISOString()\n : new Date(s.createdAt).toISOString(),\n isUnrolled: s.isUnrolled ?? false,\n isSpent: s.isSpent === undefined ? null : s.isSpent,\n spentBy: s.spentBy ?? null,\n settledBy: s.settledBy ?? null,\n arkTxId: s.arkTxId ?? null,\n extraWitnessJson: s.extraWitness ? JSON.stringify(s.extraWitness) : null,\n assetsJson: s.assets ? JSON.stringify(s.assets) : null,\n script: s.script ?? null,\n },\n \"modified\",\n );\n }\n });\n }\n\n async deleteVtxos(address: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm.objects(\"ArkVtxo\").filtered(\"address == $0\", address);\n this.realm.delete(toDelete);\n });\n }\n\n async getVtxosForScript(script: string): Promise<ExtendedVirtualCoin[]> {\n await this.ensureInit();\n const results = this.realm.objects(\"ArkVtxo\").filtered(\"script == $0\", script);\n return [...results].map(vtxoObjectToDomain);\n }\n\n async getVtxosForScripts(\n scripts: string[],\n options?: { unspentOnly?: boolean },\n ): Promise<ExtendedVirtualCoin[]> {\n const unique = [...new Set(scripts)].filter(Boolean);\n if (unique.length === 0) return [];\n await this.ensureInit();\n const rows: ExtendedVirtualCoin[] = [];\n for (let i = 0; i < unique.length; i += 64) {\n const chunk = unique.slice(i, i + 64);\n const scriptsQuery = `(${chunk.map((_, index) => `script == $${index}`).join(\" OR \")})`;\n const query = options?.unspentOnly\n ? `${scriptsQuery} AND (isSpent == null OR isSpent == $${chunk.length}) AND (spentBy == null OR spentBy == $${chunk.length + 1}) AND (settledBy == null OR settledBy == $${chunk.length + 1})`\n : scriptsQuery;\n const results = this.realm.objects(\"ArkVtxo\").filtered(query, ...chunk, false, \"\");\n for (const row of results) {\n const vtxo = vtxoObjectToDomain(row);\n if (!options?.unspentOnly || !isVtxoSpent(vtxo)) rows.push(vtxo);\n }\n }\n return rows;\n }\n\n async saveVtxosForScript(key: VtxoRepositoryKey, vtxos: ExtendedVirtualCoin[]): Promise<void> {\n if (!key.address) {\n throw new Error(\"RealmWalletRepository requires an address\");\n }\n for (const vtxo of vtxos) {\n if (!isVtxoForScript(vtxo, key.script)) {\n throw new Error(\n `VTXO ${vtxo.txid}:${vtxo.vout} script mismatch: expected ${key.script}, got ${vtxo.script}`,\n );\n }\n }\n return this.saveVtxos(key.address, vtxos);\n }\n\n async deleteVtxosForScript(script: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm.objects(\"ArkVtxo\").filtered(\"script == $0\", script);\n this.realm.delete(toDelete);\n });\n }\n\n // ── UTXO management ────────────────────────────────────────────────\n\n async getUtxos(address: string): Promise<ExtendedCoin[]> {\n await this.ensureInit();\n const results = this.realm.objects(\"ArkUtxo\").filtered(\"address == $0\", address);\n return [...results].map(utxoObjectToDomain);\n }\n\n async saveUtxos(address: string, utxos: ExtendedCoin[]): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n for (const utxo of utxos) {\n const s = serializeUtxo(utxo);\n this.realm.create(\n \"ArkUtxo\",\n {\n pk: `${s.txid}:${s.vout}`,\n address,\n txid: s.txid,\n vout: s.vout,\n value: s.value,\n tapTree: s.tapTree,\n forfeitCb: s.forfeitTapLeafScript.cb,\n forfeitS: s.forfeitTapLeafScript.s,\n intentCb: s.intentTapLeafScript.cb,\n intentS: s.intentTapLeafScript.s,\n statusJson: JSON.stringify(s.status),\n extraWitnessJson: s.extraWitness ? JSON.stringify(s.extraWitness) : null,\n },\n \"modified\",\n );\n }\n });\n }\n\n async deleteUtxos(address: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm.objects(\"ArkUtxo\").filtered(\"address == $0\", address);\n this.realm.delete(toDelete);\n });\n }\n\n // ── Transaction history ────────────────────────────────────────────\n\n async getTransactionHistory(address: string): Promise<ArkTransaction[]> {\n await this.ensureInit();\n const results = this.realm.objects(\"ArkTransaction\").filtered(\"address == $0\", address);\n const txs = [...results].map(txObjectToDomain);\n txs.sort((a, b) => a.createdAt - b.createdAt);\n return txs;\n }\n\n async saveTransactions(address: string, txs: ArkTransaction[]): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n for (const tx of txs) {\n this.realm.create(\n \"ArkTransaction\",\n {\n pk: `${address}:${tx.key.boardingTxid}:${tx.key.commitmentTxid}:${tx.key.arkTxid}`,\n address,\n boardingTxid: tx.key.boardingTxid,\n commitmentTxid: tx.key.commitmentTxid,\n arkTxid: tx.key.arkTxid,\n type: tx.type,\n amount: tx.amount,\n settled: tx.settled,\n createdAt: tx.createdAt,\n assetsJson: tx.assets ? JSON.stringify(serializeAssets(tx.assets)) : null,\n },\n \"modified\",\n );\n }\n });\n }\n\n async deleteTransactions(address: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm\n .objects(\"ArkTransaction\")\n .filtered(\"address == $0\", address);\n this.realm.delete(toDelete);\n });\n }\n\n // ── Wallet state ───────────────────────────────────────────────────\n\n async getWalletState(): Promise<WalletState | null> {\n await this.ensureInit();\n const results = this.realm\n .objects<WalletStateObject>(\"ArkWalletState\")\n .filtered(\"key == $0\", \"state\");\n const items = [...results];\n if (items.length === 0) return null;\n\n const obj = items[0];\n const state: WalletState = {};\n if (obj.settingsJson) {\n state.settings = JSON.parse(obj.settingsJson);\n }\n state.lastSyncTime = obj.lastSyncTime ?? undefined;\n return state;\n }\n\n async saveWalletState(state: WalletState): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n this.realm.create(\n \"ArkWalletState\",\n {\n key: \"state\",\n lastSyncTime: state.lastSyncTime,\n settingsJson: state.settings ? JSON.stringify(state.settings) : null,\n },\n \"modified\",\n );\n });\n }\n}\n\ninterface WalletStateObject {\n key: string;\n lastSyncTime: number | null;\n settingsJson: string | null;\n}\n\n// ── Realm object → Domain converters ─────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction vtxoObjectToDomain(obj: any): ExtendedVirtualCoin {\n const serialized = {\n txid: obj.txid,\n vout: obj.vout,\n value: obj.value,\n tapTree: obj.tapTree,\n forfeitTapLeafScript: {\n cb: obj.forfeitCb,\n s: obj.forfeitS,\n } as SerializedTapLeaf,\n intentTapLeafScript: {\n cb: obj.intentCb,\n s: obj.intentS,\n } as SerializedTapLeaf,\n status: JSON.parse(obj.statusJson),\n virtualStatus: JSON.parse(obj.virtualStatusJson),\n createdAt: new Date(obj.createdAt),\n isUnrolled: obj.isUnrolled,\n isSpent: obj.isSpent === null ? undefined : obj.isSpent,\n spentBy: obj.spentBy ?? undefined,\n settledBy: obj.settledBy ?? undefined,\n arkTxId: obj.arkTxId ?? undefined,\n extraWitness: obj.extraWitnessJson ? JSON.parse(obj.extraWitnessJson) : undefined,\n assets: obj.assetsJson ? JSON.parse(obj.assetsJson) : undefined,\n // Post-migration every row has `script`, but the backfill is\n // idempotent: derive from `address` if the legacy column is still\n // null (e.g. the migration hasn't run yet on this handle).\n script: obj.script ?? scriptFromArkAddress(obj.address),\n };\n\n return deserializeVtxo(serialized);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction utxoObjectToDomain(obj: any): ExtendedCoin {\n const serialized = {\n txid: obj.txid,\n vout: obj.vout,\n value: obj.value,\n tapTree: obj.tapTree,\n forfeitTapLeafScript: {\n cb: obj.forfeitCb,\n s: obj.forfeitS,\n } as SerializedTapLeaf,\n intentTapLeafScript: {\n cb: obj.intentCb,\n s: obj.intentS,\n } as SerializedTapLeaf,\n status: JSON.parse(obj.statusJson),\n extraWitness: obj.extraWitnessJson ? JSON.parse(obj.extraWitnessJson) : undefined,\n };\n\n return deserializeUtxo(serialized);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction txObjectToDomain(obj: any): ArkTransaction {\n const tx: ArkTransaction = {\n key: {\n boardingTxid: obj.boardingTxid,\n commitmentTxid: obj.commitmentTxid,\n arkTxid: obj.arkTxid,\n },\n type: obj.type as ArkTransaction[\"type\"],\n amount: obj.amount,\n settled: obj.settled,\n createdAt: obj.createdAt,\n };\n if (obj.assetsJson) {\n tx.assets = deserializeAssets(JSON.parse(obj.assetsJson));\n }\n return tx;\n}\n","import { Contract, ContractState, ContractWatchState } from \"../../contracts/types\";\nimport { ContractFilter, ContractRepository } from \"../contractRepository\";\nimport { RealmLike } from \"./types\";\n\n/**\n * Realm-based implementation of ContractRepository.\n *\n * Consumers must open Realm with the schemas from `./schemas.ts` and pass\n * the instance to the constructor.\n *\n * Realm handles schema creation on open, so `ensureInit()` is a no-op.\n * The consumer owns the Realm lifecycle — `[Symbol.asyncDispose]` is a no-op.\n */\nexport class RealmContractRepository implements ContractRepository {\n readonly version = 2 as const;\n\n constructor(private readonly realm: RealmLike) {}\n\n // ── Lifecycle ──────────────────────────────────────────────────────\n\n private async ensureInit(): Promise<void> {\n // Realm handles schema on open — nothing to initialise.\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n // no-op — consumer owns the Realm lifecycle\n }\n\n // ── Clear ──────────────────────────────────────────────────────────\n\n async clear(): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n this.realm.delete(this.realm.objects(\"ArkContract\"));\n });\n }\n\n // ── Contract management ────────────────────────────────────────────\n\n async getContracts(filter?: ContractFilter): Promise<Contract[]> {\n await this.ensureInit();\n\n let results = this.realm.objects(\"ArkContract\");\n\n if (filter) {\n const filterParts: string[] = [];\n const filterArgs: unknown[] = [];\n\n let argIndex = 0;\n argIndex = this.addFilterCondition(\n filterParts,\n filterArgs,\n \"script\",\n filter.script,\n argIndex,\n );\n argIndex = this.addFilterCondition(\n filterParts,\n filterArgs,\n \"state\",\n filter.state,\n argIndex,\n );\n argIndex = this.addFilterCondition(\n filterParts,\n filterArgs,\n \"type\",\n filter.type,\n argIndex,\n );\n argIndex = this.addWatchCondition(filterParts, filterArgs, filter.watch, argIndex);\n\n if (filterParts.length > 0) {\n const query = filterParts.join(\" AND \");\n results = results.filtered(query, ...filterArgs);\n }\n }\n\n return [...results].map(contractObjectToDomain);\n }\n\n async saveContract(contract: Contract): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n this.realm.create(\n \"ArkContract\",\n {\n script: contract.script,\n address: contract.address,\n type: contract.type,\n state: contract.state,\n paramsJson: JSON.stringify(contract.params),\n createdAt: contract.createdAt,\n label: contract.label ?? null,\n metadataJson: contract.metadata ? JSON.stringify(contract.metadata) : null,\n watch: contract.watch ?? null,\n },\n \"modified\",\n );\n });\n }\n\n async deleteContract(script: string): Promise<void> {\n await this.ensureInit();\n this.realm.write(() => {\n const toDelete = this.realm.objects(\"ArkContract\").filtered(\"script == $0\", script);\n this.realm.delete(toDelete);\n });\n }\n\n // ── Helpers ─────────────────────────────────────────────────────────\n\n private addFilterCondition(\n parts: string[],\n args: unknown[],\n column: string,\n value: string | string[] | undefined,\n argIndex: number,\n ): number {\n if (value === undefined) return argIndex;\n\n if (Array.isArray(value)) {\n if (value.length === 0) return argIndex;\n const conditions = value.map((_, i) => {\n return `${column} == $${argIndex + i}`;\n });\n parts.push(`(${conditions.join(\" OR \")})`);\n args.push(...value);\n return argIndex + value.length;\n } else {\n parts.push(`${column} == $${argIndex}`);\n args.push(value);\n return argIndex + 1;\n }\n }\n\n /**\n * Same as {@link addFilterCondition}, except a row predating the\n * property stores null and must match `\"watched\"`.\n */\n private addWatchCondition(\n parts: string[],\n args: unknown[],\n value: ContractWatchState | ContractWatchState[] | undefined,\n argIndex: number,\n ): number {\n if (value === undefined) return argIndex;\n\n const wanted = Array.isArray(value) ? value : [value];\n if (wanted.length === 0) return argIndex;\n\n const conditions = wanted.map((_, i) => `watch == $${argIndex + i}`);\n if (wanted.includes(\"watched\")) conditions.push(\"watch == null\");\n parts.push(`(${conditions.join(\" OR \")})`);\n args.push(...wanted);\n return argIndex + wanted.length;\n }\n}\n\n// ── Realm object → Domain converter ──────────────────────────────────────\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction contractObjectToDomain(obj: any): Contract {\n const contract: Contract = {\n script: obj.script,\n address: obj.address,\n type: obj.type,\n state: obj.state as ContractState,\n params: JSON.parse(obj.paramsJson),\n createdAt: obj.createdAt,\n };\n\n if (obj.label !== null && obj.label !== undefined) {\n contract.label = obj.label;\n }\n if (obj.metadataJson !== null && obj.metadataJson !== undefined) {\n contract.metadata = JSON.parse(obj.metadataJson);\n }\n if (obj.watch !== null && obj.watch !== undefined) {\n contract.watch = obj.watch as ContractWatchState;\n }\n\n return contract;\n}\n","import { Outpoint } from \"../../wallet\";\nimport {\n ArkIntent,\n ArkIntentState,\n assertIntentIdUnique,\n IntentFilter,\n IntentRepository,\n intentMatchesFilter,\n intentPageBounds,\n isTerminalIntentState,\n} from \"../intentRepository\";\nimport { RealmLike } from \"./types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction toIntent(o: any): ArkIntent {\n return {\n intentTxId: o.intentTxId,\n intentId: o.intentId ?? undefined,\n state: o.state as ArkIntentState,\n validFrom: o.validFrom ?? undefined,\n validUntil: o.validUntil ?? undefined,\n createdAt: o.createdAt,\n updatedAt: o.updatedAt,\n registerProof: o.registerProof,\n registerProofMessage: o.registerProofMessage,\n deleteProof: o.deleteProof,\n deleteProofMessage: o.deleteProofMessage,\n batchId: o.batchId ?? undefined,\n commitmentTransactionId: o.commitmentTransactionId ?? undefined,\n cancellationReason: o.cancellationReason ?? undefined,\n partialForfeits: JSON.parse(o.partialForfeitsJson),\n signerDescriptor: o.signerDescriptor ?? undefined,\n intentVtxos: JSON.parse(o.intentVtxosJson),\n };\n}\n\nexport class RealmIntentRepository implements IntentRepository {\n readonly version = 1 as const;\n constructor(private readonly realm: RealmLike) {}\n\n async clear(): Promise<void> {\n this.realm.write(() => {\n this.realm.delete(this.realm.objects(\"ArkIntent\"));\n });\n }\n\n async saveIntent(intent: ArkIntent): Promise<void> {\n this.realm.write(() => {\n if (intent.intentId != null) {\n const clashes = [\n ...this.realm.objects(\"ArkIntent\").filtered(\"intentId == $0\", intent.intentId),\n ].map(toIntent);\n assertIntentIdUnique(intent, clashes);\n }\n this.realm.create(\n \"ArkIntent\",\n {\n intentTxId: intent.intentTxId,\n intentId: intent.intentId ?? null,\n state: intent.state,\n validFrom: intent.validFrom ?? null,\n validUntil: intent.validUntil ?? null,\n createdAt: intent.createdAt,\n updatedAt: Date.now(),\n registerProof: intent.registerProof,\n registerProofMessage: intent.registerProofMessage,\n deleteProof: intent.deleteProof,\n deleteProofMessage: intent.deleteProofMessage,\n batchId: intent.batchId ?? null,\n commitmentTransactionId: intent.commitmentTransactionId ?? null,\n cancellationReason: intent.cancellationReason ?? null,\n partialForfeitsJson: JSON.stringify(intent.partialForfeits),\n signerDescriptor: intent.signerDescriptor ?? null,\n intentVtxosJson: JSON.stringify(intent.intentVtxos),\n },\n \"modified\",\n );\n });\n }\n\n async getIntents(filter?: IntentFilter): Promise<ArkIntent[]> {\n const all = [...this.realm.objects(\"ArkIntent\")]\n .map(toIntent)\n .sort((a, b) => a.createdAt - b.createdAt || a.intentTxId.localeCompare(b.intentTxId));\n const out = filter ? all.filter((i) => intentMatchesFilter(i, filter)) : all;\n const { skip, end } = intentPageBounds(filter, out.length);\n return out.slice(skip, end);\n }\n\n async getLockedVtxoOutpoints(): Promise<Outpoint[]> {\n const out: Outpoint[] = [];\n for (const o of [...this.realm.objects(\"ArkIntent\")].map(toIntent))\n if (!isTerminalIntentState(o.state)) out.push(...o.intentVtxos);\n return out;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {}\n}\n","import { Outpoint } from \"../../wallet\";\nimport {\n ChainedTxType,\n mergeChainedTxType,\n VirtualTx,\n VirtualTxRepository,\n VtxoBranch,\n} from \"../virtualTxRepository\";\nimport { RealmLike } from \"./types\";\n\nconst vtxoKey = (o: Outpoint) => `${o.txid}:${o.vout}`;\nconst branchPk = (b: VtxoBranch) => `${b.vtxoTxid}:${b.vtxoVout}:${b.position}`;\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction toTx(o: any): VirtualTx {\n return {\n txid: o.txid,\n psbt: o.psbt ?? null,\n expiresAt: o.expiresAt ?? null,\n type: (o.type ?? ChainedTxType.Unspecified) as ChainedTxType,\n };\n}\n\nexport class RealmVirtualTxRepository implements VirtualTxRepository {\n readonly version = 1 as const;\n constructor(private readonly realm: RealmLike) {}\n\n async clear(): Promise<void> {\n this.realm.write(() => {\n this.realm.delete(this.realm.objects(\"ArkVirtualTx\"));\n this.realm.delete(this.realm.objects(\"ArkVtxoBranch\"));\n });\n }\n\n async upsertVirtualTxs(txs: VirtualTx[]): Promise<void> {\n this.realm.write(() => {\n for (const t of txs) {\n const prev = [\n ...this.realm.objects<VirtualTx>(\"ArkVirtualTx\").filtered(\"txid == $0\", t.txid),\n ].at(0);\n this.realm.create(\n \"ArkVirtualTx\",\n {\n txid: t.txid,\n psbt: t.psbt ?? prev?.psbt ?? null,\n expiresAt: t.expiresAt ?? prev?.expiresAt ?? null,\n type: mergeChainedTxType(t.type, prev?.type),\n },\n \"modified\",\n );\n }\n });\n }\n\n async getVirtualTx(txid: string): Promise<VirtualTx | null> {\n const r = [...this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", txid)];\n return r.length ? toTx(r[0]) : null;\n }\n\n async setBranch(vtxo: Outpoint, branch: VtxoBranch[]): Promise<void> {\n this.realm.write(() => {\n this.realm.delete(\n this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo)),\n );\n for (const b of branch)\n this.realm.create(\n \"ArkVtxoBranch\",\n {\n pk: branchPk(b),\n vtxoKey: `${b.vtxoTxid}:${b.vtxoVout}`,\n vtxoTxid: b.vtxoTxid,\n vtxoVout: b.vtxoVout,\n virtualTxid: b.virtualTxid,\n position: b.position,\n },\n \"modified\",\n );\n });\n }\n\n async getBranch(vtxo: Outpoint): Promise<VirtualTx[]> {\n const rows = [\n ...this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo)),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ] as any[];\n rows.sort((a, b) => a.position - b.position);\n const out: VirtualTx[] = [];\n for (const b of rows) {\n const t = [...this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", b.virtualTxid)];\n if (t.length) out.push(toTx(t[0]));\n }\n return out;\n }\n\n async hasBranch(vtxo: Outpoint): Promise<boolean> {\n return (\n [...this.realm.objects(\"ArkVtxoBranch\").filtered(\"vtxoKey == $0\", vtxoKey(vtxo))]\n .length > 0\n );\n }\n\n async pruneForSpentVtxo(vtxo: Outpoint): Promise<void> {\n this.realm.write(() => {\n const branchRows = this.realm\n .objects(\"ArkVtxoBranch\")\n .filtered(\"vtxoKey == $0\", vtxoKey(vtxo));\n // Snapshot the referenced txids into plain strings BEFORE deleting.\n // Real Realm invalidates deleted objects, so reading `virtualTxid`\n // off them after `delete` throws (\"Accessing object which has been\n // invalidated\") — which would roll back the whole write() and make\n // prune a permanent no-op on React Native.\n const virtualTxids = [\n ...new Set(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [...branchRows].map((e: any) => e.virtualTxid as string),\n ),\n ];\n this.realm.delete(branchRows);\n for (const virtualTxid of virtualTxids) {\n const stillRef = [\n ...this.realm\n .objects(\"ArkVtxoBranch\")\n .filtered(\"virtualTxid == $0\", virtualTxid),\n ];\n if (stillRef.length === 0)\n this.realm.delete(\n this.realm.objects(\"ArkVirtualTx\").filtered(\"txid == $0\", virtualTxid),\n );\n }\n });\n }\n\n async [Symbol.asyncDispose](): Promise<void> {}\n}\n","/**\n * Realm object schemas for the Arkade wallet.\n *\n * All schema names are prefixed with \"Ark\" to avoid collisions with\n * other Realm schemas in the consuming application.\n *\n * Since `realm` is a peer dependency (not installed in this package),\n * schemas are defined as plain JS objects conforming to Realm's\n * ObjectSchema shape.\n */\n\nimport { scriptFromArkAddress } from \"../scriptFromAddress\";\n\nexport const ArkVtxoSchema = {\n name: \"ArkVtxo\",\n primaryKey: \"pk\",\n properties: {\n pk: \"string\", // composite: `${txid}:${vout}`\n address: { type: \"string\", indexed: true },\n txid: \"string\",\n vout: \"int\",\n value: \"int\",\n tapTree: \"string\", // hex-encoded\n forfeitCb: \"string\",\n forfeitS: \"string\",\n intentCb: \"string\",\n intentS: \"string\",\n extraWitnessJson: \"string?\",\n statusJson: \"string\",\n virtualStatusJson: \"string\",\n spentBy: \"string?\",\n settledBy: \"string?\",\n arkTxId: \"string?\",\n createdAt: \"string\", // ISO 8601\n isUnrolled: \"bool\",\n isSpent: \"bool?\",\n assetsJson: \"string?\",\n // scriptPubKey (hex) locking this VTXO, indexed so contract-scoped\n // queries can resolve ownership without touching address mapping.\n // Required as of schema v2; legacy rows are backfilled from `address`\n // during migration (see `runArkRealmMigrations`).\n script: { type: \"string\", indexed: true },\n },\n} as const;\n\nexport const ArkUtxoSchema = {\n name: \"ArkUtxo\",\n primaryKey: \"pk\",\n properties: {\n pk: \"string\", // composite: `${txid}:${vout}`\n address: { type: \"string\", indexed: true },\n txid: \"string\",\n vout: \"int\",\n value: \"int\",\n tapTree: \"string\", // hex-encoded\n forfeitCb: \"string\",\n forfeitS: \"string\",\n intentCb: \"string\",\n intentS: \"string\",\n extraWitnessJson: \"string?\",\n statusJson: \"string\",\n },\n} as const;\n\nexport const ArkTransactionSchema = {\n name: \"ArkTransaction\",\n primaryKey: \"pk\",\n properties: {\n pk: \"string\", // composite: `${address}:${boardingTxid}:${commitmentTxid}:${arkTxid}`\n address: { type: \"string\", indexed: true },\n boardingTxid: \"string\",\n commitmentTxid: \"string\",\n arkTxid: \"string\",\n type: \"string\",\n amount: \"int\",\n settled: \"bool\",\n createdAt: \"int\",\n assetsJson: \"string?\",\n },\n} as const;\n\nexport const ArkWalletStateSchema = {\n name: \"ArkWalletState\",\n primaryKey: \"key\",\n properties: {\n key: \"string\",\n lastSyncTime: \"int?\",\n settingsJson: \"string?\",\n },\n} as const;\n\nexport const ArkContractSchema = {\n name: \"ArkContract\",\n primaryKey: \"script\",\n properties: {\n script: \"string\",\n address: \"string\",\n type: { type: \"string\", indexed: true },\n state: { type: \"string\", indexed: true },\n paramsJson: \"string\",\n createdAt: \"int\",\n expiresAt: \"int?\",\n label: \"string?\",\n metadataJson: \"string?\",\n watch: { type: \"string\", optional: true, indexed: true },\n },\n} as const;\n\nexport const ArkIntentSchema = {\n name: \"ArkIntent\",\n primaryKey: \"intentTxId\",\n properties: {\n intentTxId: \"string\",\n intentId: \"string?\",\n state: { type: \"string\", indexed: true },\n validFrom: \"int?\",\n validUntil: \"int?\",\n createdAt: \"int\",\n updatedAt: \"int\",\n registerProof: \"string\",\n registerProofMessage: \"string\",\n deleteProof: \"string\",\n deleteProofMessage: \"string\",\n batchId: \"string?\",\n commitmentTransactionId: \"string?\",\n cancellationReason: \"string?\",\n partialForfeitsJson: \"string\",\n signerDescriptor: \"string?\",\n intentVtxosJson: \"string\",\n },\n} as const;\n\nexport const ArkVirtualTxSchema = {\n name: \"ArkVirtualTx\",\n primaryKey: \"txid\",\n properties: {\n txid: \"string\",\n psbt: \"string?\",\n expiresAt: \"int?\",\n type: \"int\",\n },\n} as const;\n\nexport const ArkVtxoBranchSchema = {\n name: \"ArkVtxoBranch\",\n primaryKey: \"pk\",\n properties: {\n pk: \"string\", // `${vtxoTxid}:${vtxoVout}:${position}`\n vtxoKey: { type: \"string\", indexed: true }, // `${vtxoTxid}:${vtxoVout}`\n vtxoTxid: \"string\",\n vtxoVout: \"int\",\n virtualTxid: { type: \"string\", indexed: true },\n position: \"int\",\n },\n} as const;\n\n/**\n * All Realm schemas needed by the Arkade wallet repositories.\n * Pass this array to your Realm configuration's `schema` property.\n */\nexport const ArkRealmSchemas = [\n ArkVtxoSchema,\n ArkUtxoSchema,\n ArkTransactionSchema,\n ArkWalletStateSchema,\n ArkContractSchema,\n];\n\n/**\n * @experimental Schemas for the inert intent/virtualtx persistence layer.\n *\n * Deliberately kept OUT of {@link ArkRealmSchemas} and {@link\n * ARK_REALM_SCHEMA_VERSION} so upgrading the SDK never migrates an existing\n * consumer's Realm. A consumer opting in must register these schemas and bump\n * their own `schemaVersion` themselves:\n *\n * ```ts\n * schema: [...ArkRealmSchemas, ...ArkExperimentalRealmSchemas],\n * schemaVersion: Math.max(ARK_REALM_SCHEMA_VERSION + 1, yourSchemaVersion),\n * ```\n */\nexport const ArkExperimentalRealmSchemas = [\n ArkIntentSchema,\n ArkVirtualTxSchema,\n ArkVtxoBranchSchema,\n];\n\n/**\n * Current Realm schema version for the Arkade wallet.\n *\n * Consumers opening Realm must pass a `schemaVersion` at least this high so\n * legacy databases get migrated; merge it with your own app's version:\n *\n * ```ts\n * await Realm.open({\n * schema: [...ArkRealmSchemas, ...yourSchemas],\n * schemaVersion: Math.max(ARK_REALM_SCHEMA_VERSION, yourSchemaVersion),\n * onMigration: (oldRealm, newRealm) => {\n * runArkRealmMigrations(oldRealm, newRealm);\n * // your own migrations\n * },\n * });\n * ```\n *\n * History:\n * - v1: initial ArkVtxo/ArkUtxo/... schemas, `script` nullable.\n * - v2: ArkVtxo.script becomes required; NULL values are backfilled from\n * the owning Ark address during migration.\n * - v3: ArkContract.watch added (nullable). No data migration: a row\n * without one reads as `watched`, which is the coverage every\n * existing contract has today.\n *\n * The intent/virtualtx schemas ({@link ArkExperimentalRealmSchemas}) are NOT\n * counted here: they are experimental and inert, so they never move the\n * advertised version on their own. `runArkRealmMigrations` still carries the\n * intent-schema migration steps (guarded per-schema) for consumers who opt in\n * and bump their own version.\n */\nexport const ARK_REALM_SCHEMA_VERSION = 3;\n\n/**\n * Run every Arkade schema migration applicable to the open Realm.\n *\n * Designed to be composed with the consumer's own migrations inside a single\n * `onMigration` callback. Each migration step does a per-row check so it\n * remains idempotent and independent of the app's global `schemaVersion` —\n * a consumer whose app is already at version 10 can still trigger the\n * Arkade v1→v2 script backfill when the row has never been populated.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function runArkRealmMigrations(oldRealm: any, newRealm: any): void {\n const newVtxos = newRealm.objects(\"ArkVtxo\");\n for (let i = 0; i < newVtxos.length; i++) {\n const newVtxo = newVtxos[i];\n if (!newVtxo.script) {\n newVtxo.script = scriptFromArkAddress(newVtxo.address);\n }\n }\n\n // v3 → v4: ArkVirtualTx.hex was renamed to psbt (both hold the same\n // serialized tx payload). A rename is drop-old + add-new, so the value\n // would be lost unless we copy it across. Guard on the old schema actually\n // defining ArkVirtualTx — a v1/v2 realm never had it, and reading objects\n // of an unknown type throws.\n const oldHasVirtualTx =\n Array.isArray(oldRealm?.schema) &&\n oldRealm.schema.some((s: { name: string }) => s.name === \"ArkVirtualTx\");\n if (oldHasVirtualTx) {\n const oldTxs = oldRealm.objects(\"ArkVirtualTx\");\n const newTxs = newRealm.objects(\"ArkVirtualTx\");\n for (let i = 0; i < newTxs.length; i++) {\n if (newTxs[i].psbt == null && oldTxs[i].hex != null) {\n newTxs[i].psbt = oldTxs[i].hex;\n }\n }\n }\n}\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../../chunk-
|
|
5
|
-
require('../../chunk-
|
|
6
|
-
require('../../chunk-
|
|
3
|
+
var chunkYJEWWLOQ_cjs = require('../../chunk-YJEWWLOQ.cjs');
|
|
4
|
+
require('../../chunk-H62OOAS4.cjs');
|
|
5
|
+
require('../../chunk-LUWSY2QO.cjs');
|
|
6
|
+
var chunkCJN4CUEU_cjs = require('../../chunk-CJN4CUEU.cjs');
|
|
7
7
|
require('../../chunk-5BLDMQED.cjs');
|
|
8
8
|
|
|
9
9
|
// src/repositories/sqlite/transaction.ts
|
|
@@ -100,6 +100,12 @@ var SQLiteWalletRepository = class {
|
|
|
100
100
|
await this.db.run(
|
|
101
101
|
`CREATE INDEX IF NOT EXISTS idx_${this.prefix}vtxos_script ON ${this.tables.vtxos} (script)`
|
|
102
102
|
);
|
|
103
|
+
await this.db.run(
|
|
104
|
+
`CREATE INDEX IF NOT EXISTS idx_${this.prefix}vtxos_live_script ON ${this.tables.vtxos} (script)
|
|
105
|
+
WHERE (is_spent IS NULL OR is_spent = 0)
|
|
106
|
+
AND (spent_by IS NULL OR spent_by = '')
|
|
107
|
+
AND (settled_by IS NULL OR settled_by = '')`
|
|
108
|
+
);
|
|
103
109
|
await this.db.run(
|
|
104
110
|
`CREATE INDEX IF NOT EXISTS idx_${this.prefix}utxos_address ON ${this.tables.utxos} (address)`
|
|
105
111
|
);
|
|
@@ -154,7 +160,7 @@ var SQLiteWalletRepository = class {
|
|
|
154
160
|
for (const row of nullRows) {
|
|
155
161
|
await this.db.run(
|
|
156
162
|
`UPDATE ${this.tables.vtxos} SET script = ? WHERE txid = ? AND vout = ?`,
|
|
157
|
-
[
|
|
163
|
+
[chunkYJEWWLOQ_cjs.scriptFromArkAddress(row.address), row.txid, row.vout]
|
|
158
164
|
);
|
|
159
165
|
}
|
|
160
166
|
const tempName = `${this.tables.vtxos}__migrate_tmp`;
|
|
@@ -225,7 +231,7 @@ var SQLiteWalletRepository = class {
|
|
|
225
231
|
async saveVtxos(address, vtxos) {
|
|
226
232
|
await this.ensureInit();
|
|
227
233
|
for (const vtxo of vtxos) {
|
|
228
|
-
const s =
|
|
234
|
+
const s = chunkYJEWWLOQ_cjs.serializeVtxo(vtxo);
|
|
229
235
|
await this.db.run(
|
|
230
236
|
`INSERT OR REPLACE INTO ${this.tables.vtxos}
|
|
231
237
|
(txid, vout, value, address,
|
|
@@ -275,12 +281,30 @@ var SQLiteWalletRepository = class {
|
|
|
275
281
|
);
|
|
276
282
|
return rows.map(vtxoRowToDomain);
|
|
277
283
|
}
|
|
284
|
+
async getVtxosForScripts(scripts, options) {
|
|
285
|
+
if (scripts.length === 0) return [];
|
|
286
|
+
await this.ensureInit();
|
|
287
|
+
const unique = [...new Set(scripts)];
|
|
288
|
+
const result = [];
|
|
289
|
+
for (let i = 0; i < unique.length; i += 500) {
|
|
290
|
+
const chunk = unique.slice(i, i + 500);
|
|
291
|
+
const rows = await this.db.all(
|
|
292
|
+
`SELECT * FROM ${this.tables.vtxos} WHERE script IN (${chunk.map(() => "?").join(",")})${options?.unspentOnly ? " AND (is_spent IS NULL OR is_spent = 0) AND (spent_by IS NULL OR spent_by = '') AND (settled_by IS NULL OR settled_by = '')" : ""}`,
|
|
293
|
+
chunk
|
|
294
|
+
);
|
|
295
|
+
const decoded = rows.map(vtxoRowToDomain);
|
|
296
|
+
result.push(
|
|
297
|
+
...options?.unspentOnly ? decoded.filter((vtxo) => !chunkCJN4CUEU_cjs.isVtxoSpent(vtxo)) : decoded
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
return result;
|
|
301
|
+
}
|
|
278
302
|
async saveVtxosForScript(key, vtxos) {
|
|
279
303
|
if (!key.address) {
|
|
280
304
|
throw new Error("SQLiteWalletRepository requires an address");
|
|
281
305
|
}
|
|
282
306
|
for (const vtxo of vtxos) {
|
|
283
|
-
if (!
|
|
307
|
+
if (!chunkYJEWWLOQ_cjs.isVtxoForScript(vtxo, key.script)) {
|
|
284
308
|
throw new Error(
|
|
285
309
|
`VTXO ${vtxo.txid}:${vtxo.vout} script mismatch: expected ${key.script}, got ${vtxo.script}`
|
|
286
310
|
);
|
|
@@ -304,7 +328,7 @@ var SQLiteWalletRepository = class {
|
|
|
304
328
|
async saveUtxos(address, utxos) {
|
|
305
329
|
await this.ensureInit();
|
|
306
330
|
for (const utxo of utxos) {
|
|
307
|
-
const s =
|
|
331
|
+
const s = chunkYJEWWLOQ_cjs.serializeUtxo(utxo);
|
|
308
332
|
await this.db.run(
|
|
309
333
|
`INSERT OR REPLACE INTO ${this.tables.utxos}
|
|
310
334
|
(txid, vout, value, address,
|
|
@@ -360,7 +384,7 @@ var SQLiteWalletRepository = class {
|
|
|
360
384
|
tx.amount,
|
|
361
385
|
tx.settled ? 1 : 0,
|
|
362
386
|
tx.createdAt,
|
|
363
|
-
tx.assets ? JSON.stringify(
|
|
387
|
+
tx.assets ? JSON.stringify(chunkYJEWWLOQ_cjs.serializeAssets(tx.assets)) : null
|
|
364
388
|
]
|
|
365
389
|
);
|
|
366
390
|
}
|
|
@@ -434,9 +458,9 @@ function vtxoRowToDomain(row) {
|
|
|
434
458
|
// Post-migration every row has `script`, but the backfill is
|
|
435
459
|
// idempotent: derive from `address` if the legacy column is still
|
|
436
460
|
// null (e.g. the migration hasn't run yet on this handle).
|
|
437
|
-
script: row.script ??
|
|
461
|
+
script: row.script ?? chunkYJEWWLOQ_cjs.scriptFromArkAddress(row.address)
|
|
438
462
|
};
|
|
439
|
-
return
|
|
463
|
+
return chunkYJEWWLOQ_cjs.deserializeVtxo(serialized);
|
|
440
464
|
}
|
|
441
465
|
function utxoRowToDomain(row) {
|
|
442
466
|
const serialized = {
|
|
@@ -455,7 +479,7 @@ function utxoRowToDomain(row) {
|
|
|
455
479
|
status: JSON.parse(row.status_json),
|
|
456
480
|
extraWitness: row.extra_witness_json ? JSON.parse(row.extra_witness_json) : void 0
|
|
457
481
|
};
|
|
458
|
-
return
|
|
482
|
+
return chunkYJEWWLOQ_cjs.deserializeUtxo(serialized);
|
|
459
483
|
}
|
|
460
484
|
function txRowToDomain(row) {
|
|
461
485
|
const tx = {
|
|
@@ -470,7 +494,7 @@ function txRowToDomain(row) {
|
|
|
470
494
|
createdAt: row.created_at
|
|
471
495
|
};
|
|
472
496
|
if (row.assets_json) {
|
|
473
|
-
tx.assets =
|
|
497
|
+
tx.assets = chunkYJEWWLOQ_cjs.deserializeAssets(JSON.parse(row.assets_json));
|
|
474
498
|
}
|
|
475
499
|
return tx;
|
|
476
500
|
}
|
|
@@ -743,8 +767,8 @@ var SQLiteIntentRepository = class {
|
|
|
743
767
|
`SELECT * FROM ${this.t} ORDER BY created_at ASC, intent_tx_id ASC`
|
|
744
768
|
);
|
|
745
769
|
let out = rows.map(rowToIntent);
|
|
746
|
-
if (filter) out = out.filter((i) =>
|
|
747
|
-
const { skip, end } =
|
|
770
|
+
if (filter) out = out.filter((i) => chunkYJEWWLOQ_cjs.intentMatchesFilter(i, filter));
|
|
771
|
+
const { skip, end } = chunkYJEWWLOQ_cjs.intentPageBounds(filter, out.length);
|
|
748
772
|
return out.slice(skip, end);
|
|
749
773
|
}
|
|
750
774
|
async getLockedVtxoOutpoints() {
|
|
@@ -752,7 +776,7 @@ var SQLiteIntentRepository = class {
|
|
|
752
776
|
const rows = await this.db.all(`SELECT * FROM ${this.t}`);
|
|
753
777
|
const out = [];
|
|
754
778
|
for (const r of rows) {
|
|
755
|
-
if (
|
|
779
|
+
if (chunkYJEWWLOQ_cjs.isTerminalIntentState(r.state)) continue;
|
|
756
780
|
for (const o of JSON.parse(r.intent_vtxos_json)) out.push(o);
|
|
757
781
|
}
|
|
758
782
|
return out;
|
|
@@ -847,7 +871,7 @@ var SQLiteVirtualTxRepository = class {
|
|
|
847
871
|
const prev = prevByTxid.get(t.txid);
|
|
848
872
|
const psbt = t.psbt ?? prev?.psbt ?? null;
|
|
849
873
|
const expires = t.expiresAt ?? prev?.expires_at ?? null;
|
|
850
|
-
const type =
|
|
874
|
+
const type = chunkYJEWWLOQ_cjs.mergeChainedTxType(t.type, prev?.type);
|
|
851
875
|
await this.db.run(
|
|
852
876
|
`INSERT OR REPLACE INTO ${this.tTx} (txid, psbt, expires_at, type) VALUES (?, ?, ?, ?)`,
|
|
853
877
|
[t.txid, psbt, expires, type]
|
|
@@ -940,7 +964,7 @@ function sanitizeTablePrefix(p) {
|
|
|
940
964
|
|
|
941
965
|
Object.defineProperty(exports, "ChainedTxType", {
|
|
942
966
|
enumerable: true,
|
|
943
|
-
get: function () { return
|
|
967
|
+
get: function () { return chunkYJEWWLOQ_cjs.ChainedTxType; }
|
|
944
968
|
});
|
|
945
969
|
exports.SQLiteContractRepository = SQLiteContractRepository;
|
|
946
970
|
exports.SQLiteIntentRepository = SQLiteIntentRepository;
|