@sundaeswap/sprinkles 0.6.1 → 0.8.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.
- package/README.md +178 -181
- package/dist/cjs/Sprinkle/__tests__/action-integration.test.js +590 -0
- package/dist/cjs/Sprinkle/__tests__/action-integration.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/action-registry.test.js +193 -0
- package/dist/cjs/Sprinkle/__tests__/action-registry.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/action-runner.test.js +304 -0
- package/dist/cjs/Sprinkle/__tests__/action-runner.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/builtin-actions.test.js +1110 -0
- package/dist/cjs/Sprinkle/__tests__/builtin-actions.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/cli-adapter.test.js +744 -0
- package/dist/cjs/Sprinkle/__tests__/cli-adapter.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js +15 -1
- package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/mcp-adapter.test.js +711 -0
- package/dist/cjs/Sprinkle/__tests__/mcp-adapter.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/native-script.test.js +390 -0
- package/dist/cjs/Sprinkle/__tests__/native-script.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/tui-helpers.test.js +334 -0
- package/dist/cjs/Sprinkle/__tests__/tui-helpers.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/utility-actions.test.js +367 -0
- package/dist/cjs/Sprinkle/__tests__/utility-actions.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/wallet-transaction-actions.test.js +749 -0
- package/dist/cjs/Sprinkle/__tests__/wallet-transaction-actions.test.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/addressbook-actions.js +164 -0
- package/dist/cjs/Sprinkle/actions/builtin/addressbook-actions.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/blaze-helper.js +61 -0
- package/dist/cjs/Sprinkle/actions/builtin/blaze-helper.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/index.js +174 -0
- package/dist/cjs/Sprinkle/actions/builtin/index.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/native-script.js +139 -0
- package/dist/cjs/Sprinkle/actions/builtin/native-script.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/profile-actions.js +202 -0
- package/dist/cjs/Sprinkle/actions/builtin/profile-actions.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/settings-actions.js +87 -0
- package/dist/cjs/Sprinkle/actions/builtin/settings-actions.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/transaction-actions.js +345 -0
- package/dist/cjs/Sprinkle/actions/builtin/transaction-actions.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/utility-actions.js +218 -0
- package/dist/cjs/Sprinkle/actions/builtin/utility-actions.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/wallet-actions.js +212 -0
- package/dist/cjs/Sprinkle/actions/builtin/wallet-actions.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/cli-adapter.js +390 -0
- package/dist/cjs/Sprinkle/actions/cli-adapter.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/index.js +139 -0
- package/dist/cjs/Sprinkle/actions/index.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/mcp-adapter.js +557 -0
- package/dist/cjs/Sprinkle/actions/mcp-adapter.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/registry.js +92 -0
- package/dist/cjs/Sprinkle/actions/registry.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/runner.js +190 -0
- package/dist/cjs/Sprinkle/actions/runner.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/tui-helpers.js +96 -0
- package/dist/cjs/Sprinkle/actions/tui-helpers.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/types.js +68 -0
- package/dist/cjs/Sprinkle/actions/types.js.map +1 -0
- package/dist/cjs/Sprinkle/index.js +678 -5
- package/dist/cjs/Sprinkle/index.js.map +1 -1
- package/dist/cjs/Sprinkle/prompts.js +12 -7
- package/dist/cjs/Sprinkle/prompts.js.map +1 -1
- package/dist/cjs/Sprinkle/schemas.js +17 -1
- package/dist/cjs/Sprinkle/schemas.js.map +1 -1
- package/dist/cjs/Sprinkle/type-guards.js +7 -1
- package/dist/cjs/Sprinkle/type-guards.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/action-integration.test.js +588 -0
- package/dist/esm/Sprinkle/__tests__/action-integration.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/action-registry.test.js +192 -0
- package/dist/esm/Sprinkle/__tests__/action-registry.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/action-runner.test.js +302 -0
- package/dist/esm/Sprinkle/__tests__/action-runner.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/builtin-actions.test.js +1107 -0
- package/dist/esm/Sprinkle/__tests__/builtin-actions.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/cli-adapter.test.js +742 -0
- package/dist/esm/Sprinkle/__tests__/cli-adapter.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js +15 -1
- package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/mcp-adapter.test.js +710 -0
- package/dist/esm/Sprinkle/__tests__/mcp-adapter.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/native-script.test.js +388 -0
- package/dist/esm/Sprinkle/__tests__/native-script.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/tui-helpers.test.js +332 -0
- package/dist/esm/Sprinkle/__tests__/tui-helpers.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/utility-actions.test.js +365 -0
- package/dist/esm/Sprinkle/__tests__/utility-actions.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/wallet-transaction-actions.test.js +747 -0
- package/dist/esm/Sprinkle/__tests__/wallet-transaction-actions.test.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/addressbook-actions.js +159 -0
- package/dist/esm/Sprinkle/actions/builtin/addressbook-actions.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/blaze-helper.js +55 -0
- package/dist/esm/Sprinkle/actions/builtin/blaze-helper.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/index.js +37 -0
- package/dist/esm/Sprinkle/actions/builtin/index.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/native-script.js +133 -0
- package/dist/esm/Sprinkle/actions/builtin/native-script.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/profile-actions.js +197 -0
- package/dist/esm/Sprinkle/actions/builtin/profile-actions.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/settings-actions.js +81 -0
- package/dist/esm/Sprinkle/actions/builtin/settings-actions.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/transaction-actions.js +340 -0
- package/dist/esm/Sprinkle/actions/builtin/transaction-actions.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/utility-actions.js +213 -0
- package/dist/esm/Sprinkle/actions/builtin/utility-actions.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/wallet-actions.js +207 -0
- package/dist/esm/Sprinkle/actions/builtin/wallet-actions.js.map +1 -0
- package/dist/esm/Sprinkle/actions/cli-adapter.js +379 -0
- package/dist/esm/Sprinkle/actions/cli-adapter.js.map +1 -0
- package/dist/esm/Sprinkle/actions/index.js +12 -0
- package/dist/esm/Sprinkle/actions/index.js.map +1 -0
- package/dist/esm/Sprinkle/actions/mcp-adapter.js +547 -0
- package/dist/esm/Sprinkle/actions/mcp-adapter.js.map +1 -0
- package/dist/esm/Sprinkle/actions/registry.js +85 -0
- package/dist/esm/Sprinkle/actions/registry.js.map +1 -0
- package/dist/esm/Sprinkle/actions/runner.js +182 -0
- package/dist/esm/Sprinkle/actions/runner.js.map +1 -0
- package/dist/esm/Sprinkle/actions/tui-helpers.js +91 -0
- package/dist/esm/Sprinkle/actions/tui-helpers.js.map +1 -0
- package/dist/esm/Sprinkle/actions/types.js +61 -0
- package/dist/esm/Sprinkle/actions/types.js.map +1 -0
- package/dist/esm/Sprinkle/index.js +517 -7
- package/dist/esm/Sprinkle/index.js.map +1 -1
- package/dist/esm/Sprinkle/prompts.js +12 -7
- package/dist/esm/Sprinkle/prompts.js.map +1 -1
- package/dist/esm/Sprinkle/schemas.js +16 -0
- package/dist/esm/Sprinkle/schemas.js.map +1 -1
- package/dist/esm/Sprinkle/type-guards.js +3 -0
- package/dist/esm/Sprinkle/type-guards.js.map +1 -1
- package/dist/types/Sprinkle/actions/builtin/addressbook-actions.d.ts +50 -0
- package/dist/types/Sprinkle/actions/builtin/addressbook-actions.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/blaze-helper.d.ts +39 -0
- package/dist/types/Sprinkle/actions/builtin/blaze-helper.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/index.d.ts +30 -0
- package/dist/types/Sprinkle/actions/builtin/index.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/native-script.d.ts +27 -0
- package/dist/types/Sprinkle/actions/builtin/native-script.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/profile-actions.d.ts +55 -0
- package/dist/types/Sprinkle/actions/builtin/profile-actions.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/settings-actions.d.ts +32 -0
- package/dist/types/Sprinkle/actions/builtin/settings-actions.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/transaction-actions.d.ts +70 -0
- package/dist/types/Sprinkle/actions/builtin/transaction-actions.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/utility-actions.d.ts +48 -0
- package/dist/types/Sprinkle/actions/builtin/utility-actions.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/wallet-actions.d.ts +50 -0
- package/dist/types/Sprinkle/actions/builtin/wallet-actions.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/cli-adapter.d.ts +104 -0
- package/dist/types/Sprinkle/actions/cli-adapter.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/index.d.ts +13 -0
- package/dist/types/Sprinkle/actions/index.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/mcp-adapter.d.ts +116 -0
- package/dist/types/Sprinkle/actions/mcp-adapter.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/registry.d.ts +42 -0
- package/dist/types/Sprinkle/actions/registry.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/runner.d.ts +45 -0
- package/dist/types/Sprinkle/actions/runner.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/tui-helpers.d.ts +53 -0
- package/dist/types/Sprinkle/actions/tui-helpers.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/types.d.ts +76 -0
- package/dist/types/Sprinkle/actions/types.d.ts.map +1 -0
- package/dist/types/Sprinkle/index.d.ts +84 -2
- package/dist/types/Sprinkle/index.d.ts.map +1 -1
- package/dist/types/Sprinkle/prompts.d.ts.map +1 -1
- package/dist/types/Sprinkle/schemas.d.ts +72 -0
- package/dist/types/Sprinkle/schemas.d.ts.map +1 -1
- package/dist/types/Sprinkle/type-guards.d.ts +4 -1
- package/dist/types/Sprinkle/type-guards.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +9 -2
- package/src/Sprinkle/__tests__/action-integration.test.ts +558 -0
- package/src/Sprinkle/__tests__/action-registry.test.ts +187 -0
- package/src/Sprinkle/__tests__/action-runner.test.ts +324 -0
- package/src/Sprinkle/__tests__/builtin-actions.test.ts +1022 -0
- package/src/Sprinkle/__tests__/cli-adapter.test.ts +736 -0
- package/src/Sprinkle/__tests__/fill-in-struct.test.ts +23 -1
- package/src/Sprinkle/__tests__/mcp-adapter.test.ts +720 -0
- package/src/Sprinkle/__tests__/native-script.test.ts +341 -0
- package/src/Sprinkle/__tests__/tui-helpers.test.ts +325 -0
- package/src/Sprinkle/__tests__/utility-actions.test.ts +348 -0
- package/src/Sprinkle/__tests__/wallet-transaction-actions.test.ts +695 -0
- package/src/Sprinkle/actions/builtin/addressbook-actions.ts +168 -0
- package/src/Sprinkle/actions/builtin/blaze-helper.ts +89 -0
- package/src/Sprinkle/actions/builtin/index.ts +125 -0
- package/src/Sprinkle/actions/builtin/native-script.ts +165 -0
- package/src/Sprinkle/actions/builtin/profile-actions.ts +229 -0
- package/src/Sprinkle/actions/builtin/settings-actions.ts +99 -0
- package/src/Sprinkle/actions/builtin/transaction-actions.ts +381 -0
- package/src/Sprinkle/actions/builtin/utility-actions.ts +285 -0
- package/src/Sprinkle/actions/builtin/wallet-actions.ts +233 -0
- package/src/Sprinkle/actions/cli-adapter.ts +446 -0
- package/src/Sprinkle/actions/index.ts +33 -0
- package/src/Sprinkle/actions/mcp-adapter.ts +638 -0
- package/src/Sprinkle/actions/registry.ts +97 -0
- package/src/Sprinkle/actions/runner.ts +200 -0
- package/src/Sprinkle/actions/tui-helpers.ts +114 -0
- package/src/Sprinkle/actions/types.ts +91 -0
- package/src/Sprinkle/index.ts +612 -3
- package/src/Sprinkle/prompts.ts +118 -72
- package/src/Sprinkle/schemas.ts +20 -0
- package/src/Sprinkle/type-guards.ts +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-transaction-actions.test.js","names":["_bunTest","require","_types","_interopRequireWildcard","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","makeAddress","bech32","toBech32","makeAssetId","policyId","assetName","makeUtxo","opts","tokenEntries","tokens","map","quantity","input","transactionId","toString","txHash","index","BigInt","output","amount","coin","lovelace","multiasset","length","entries","undefined","mockBlaze","mockIsHot","mockBlazeError","mock","module","getBlazeFromContext","isHotWallet","Core","AssetId","getPolicyId","assetId","slice","getAssetName","Transaction","fromCbor","cbor","mockTxFromCbor","TxCBOR","s","Blaze","HotWallet","body","hash","inputs","values","outputs","address","fee","requiredSigners","witnessSet","vkeys","toCbor","getWalletAddress","getWalletBalance","getWalletUtxos","Promise","resolve","then","signTransaction","submitTransaction","signAndSubmit","decodeTransaction","makeContext","settingsOverrides","sprinkle","settings","network","provider","type","apiKey","wallet","mnemonic","describe","beforeEach","test","getChangeAddress","ctx","result","execute","expect","toBe","ActionError","missingFields","rejects","toMatchObject","code","Error","name","category","inputSchema","toBeDefined","outputSchema","getUnspentOutputs","ada","toEqual","repeat","toHaveLength","total","utxos","outputIndex","Array","from","_","limit","size","txCbor","signedTxCbor","signatureCount","submitted","waitForConfirmation","confirmed","toBeUndefined","err","details","toBytes"],"sources":["../../../../src/Sprinkle/__tests__/wallet-transaction-actions.test.ts"],"sourcesContent":["import { describe, expect, test, mock, beforeEach } from \"bun:test\";\nimport { Type } from \"@sinclair/typebox\";\nimport { ActionError } from \"../actions/types.js\";\n\n// ---------------------------------------------------------------------------\n// Mocks\n// ---------------------------------------------------------------------------\n\n// Mock wallet/UTxO data factories\nfunction makeAddress(bech32 = \"addr_test1qz...mock\") {\n return { toBech32: () => bech32 };\n}\n\nfunction makeAssetId(policyId: string, assetName: string) {\n return `${policyId}${assetName}`;\n}\n\nfunction makeUtxo(opts: {\n txHash: string;\n index: number;\n lovelace: bigint;\n tokens?: Array<{ policyId: string; assetName: string; quantity: bigint }>;\n}) {\n const tokenEntries = (opts.tokens ?? []).map((t) => [\n makeAssetId(t.policyId, t.assetName),\n t.quantity,\n ]);\n\n return {\n input: () => ({\n transactionId: () => ({ toString: () => opts.txHash }),\n index: () => BigInt(opts.index),\n }),\n output: () => ({\n amount: () => ({\n coin: () => opts.lovelace,\n multiasset: () =>\n tokenEntries.length > 0\n ? { entries: () => tokenEntries }\n : undefined,\n }),\n }),\n };\n}\n\n// Controllable mock state\nlet mockBlaze: any = {};\nlet mockIsHot = true;\nlet mockBlazeError: Error | null = null;\n\nmock.module(\"../actions/builtin/blaze-helper.js\", () => ({\n getBlazeFromContext: async () => {\n if (mockBlazeError) throw mockBlazeError;\n return mockBlaze;\n },\n isHotWallet: () => mockIsHot,\n}));\n\n// Mock Core.AssetId static methods used by wallet/transaction actions\nmock.module(\"@blaze-cardano/sdk\", () => ({\n Core: {\n AssetId: {\n getPolicyId: (assetId: string) => assetId.slice(0, 56),\n getAssetName: (assetId: string) => assetId.slice(56),\n },\n Transaction: {\n fromCbor: (cbor: string) => mockTxFromCbor(cbor),\n },\n TxCBOR: (s: string) => s,\n },\n Blaze: class {},\n HotWallet: class {},\n}));\n\n// Controllable mock transaction from CBOR\n// These mock objects are compatible with the real countSignatures/getRequiredSigners\n// from tx-dialog.ts, so we don't need to mock that module (which would leak globally).\nlet mockTxFromCbor: (cbor: string) => any = () => ({\n body: () => ({\n hash: () => ({ toString: () => \"abc123txhash\" }),\n inputs: () => ({\n values: () => [\n {\n transactionId: () => ({ toString: () => \"input-tx-hash-1\" }),\n index: () => 0n,\n },\n ],\n }),\n outputs: () => [\n {\n address: () => ({ toBech32: () => \"addr_test1output...\" }),\n amount: () => ({\n coin: () => 2_000_000n,\n multiasset: () => undefined,\n }),\n },\n ],\n fee: () => 200_000n,\n requiredSigners: () => null,\n }),\n witnessSet: () => ({\n vkeys: () => null,\n }),\n toCbor: () => \"signed-cbor-hex\",\n});\n\n// Now import the actions (after mocks are set up)\nconst { getWalletAddress, getWalletBalance, getWalletUtxos } = await import(\n \"../actions/builtin/wallet-actions.js\"\n);\nconst {\n signTransaction,\n submitTransaction,\n signAndSubmit,\n decodeTransaction,\n} = await import(\"../actions/builtin/transaction-actions.js\");\n\n// Minimal context factory\nfunction makeContext(settingsOverrides: Record<string, unknown> = {}) {\n return {\n sprinkle: {} as any,\n settings: {\n network: \"preview\",\n provider: { type: \"blockfrost\", apiKey: \"test\" },\n wallet: { type: \"hot\", mnemonic: \"test words\" },\n ...settingsOverrides,\n } as any,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Wallet Actions\n// ---------------------------------------------------------------------------\n\ndescribe(\"get-wallet-address\", () => {\n beforeEach(() => {\n mockBlazeError = null;\n mockIsHot = true;\n });\n\n test(\"returns bech32 address and network\", async () => {\n mockBlaze = {\n wallet: {\n getChangeAddress: async () => makeAddress(\"addr_test1qzabc123\"),\n },\n };\n const ctx = makeContext();\n const result = await getWalletAddress.execute({}, ctx);\n expect(result.address).toBe(\"addr_test1qzabc123\");\n expect(result.network).toBe(\"preview\");\n });\n\n test(\"returns 'unknown' network when not in settings\", async () => {\n mockBlaze = {\n wallet: {\n getChangeAddress: async () => makeAddress(\"addr1mainnet\"),\n },\n };\n const ctx = makeContext({ network: undefined });\n const result = await getWalletAddress.execute({}, ctx);\n expect(result.network).toBe(\"unknown\");\n });\n\n test(\"throws WALLET_NOT_CONFIGURED when getBlazeFromContext fails\", async () => {\n mockBlazeError = new ActionError(\"Missing settings\", \"WALLET_NOT_CONFIGURED\", {\n missingFields: [\"wallet\"],\n });\n const ctx = makeContext();\n await expect(getWalletAddress.execute({}, ctx)).rejects.toMatchObject({\n code: \"WALLET_NOT_CONFIGURED\",\n });\n });\n\n test(\"throws NO_ADDRESS when wallet returns no address\", async () => {\n mockBlaze = {\n wallet: {\n getChangeAddress: async () => {\n throw new Error(\"no address available\");\n },\n },\n };\n const ctx = makeContext();\n await expect(getWalletAddress.execute({}, ctx)).rejects.toMatchObject({\n code: \"NO_ADDRESS\",\n });\n });\n\n test(\"has correct metadata\", () => {\n expect(getWalletAddress.name).toBe(\"get-wallet-address\");\n expect(getWalletAddress.category).toBe(\"wallet\");\n expect(getWalletAddress.inputSchema).toBeDefined();\n expect(getWalletAddress.outputSchema).toBeDefined();\n });\n});\n\ndescribe(\"get-wallet-balance\", () => {\n beforeEach(() => {\n mockBlazeError = null;\n });\n\n test(\"returns lovelace, ada, and empty tokens for ADA-only wallet\", async () => {\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () => [\n makeUtxo({ txHash: \"tx1\", index: 0, lovelace: 5_000_000n }),\n makeUtxo({ txHash: \"tx2\", index: 1, lovelace: 3_000_000n }),\n ],\n },\n };\n const result = await getWalletBalance.execute({}, makeContext());\n expect(result.lovelace).toBe(\"8000000\");\n expect(result.ada).toBe(\"8.000000\");\n expect(result.tokens).toEqual([]);\n });\n\n test(\"aggregates tokens across UTxOs\", async () => {\n const policyId = \"a\".repeat(56);\n const assetName = \"token1\";\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () => [\n makeUtxo({\n txHash: \"tx1\",\n index: 0,\n lovelace: 2_000_000n,\n tokens: [{ policyId, assetName, quantity: 100n }],\n }),\n makeUtxo({\n txHash: \"tx2\",\n index: 0,\n lovelace: 1_000_000n,\n tokens: [{ policyId, assetName, quantity: 50n }],\n }),\n ],\n },\n };\n const result = await getWalletBalance.execute({}, makeContext());\n expect(result.lovelace).toBe(\"3000000\");\n expect(result.tokens).toHaveLength(1);\n expect(result.tokens[0].quantity).toBe(\"150\");\n expect(result.tokens[0].policyId).toBe(policyId);\n });\n\n test(\"handles fractional ADA correctly\", async () => {\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () => [\n makeUtxo({ txHash: \"tx1\", index: 0, lovelace: 1_500_123n }),\n ],\n },\n };\n const result = await getWalletBalance.execute({}, makeContext());\n expect(result.ada).toBe(\"1.500123\");\n });\n\n test(\"handles zero balance\", async () => {\n mockBlaze = {\n wallet: { getUnspentOutputs: async () => [] },\n };\n const result = await getWalletBalance.execute({}, makeContext());\n expect(result.lovelace).toBe(\"0\");\n expect(result.ada).toBe(\"0.000000\");\n expect(result.tokens).toEqual([]);\n });\n\n test(\"throws PROVIDER_ERROR on UTxO fetch failure\", async () => {\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () => {\n throw new Error(\"connection timeout\");\n },\n },\n };\n await expect(getWalletBalance.execute({}, makeContext())).rejects.toMatchObject({\n code: \"PROVIDER_ERROR\",\n });\n });\n});\n\ndescribe(\"get-wallet-utxos\", () => {\n beforeEach(() => {\n mockBlazeError = null;\n });\n\n test(\"returns UTxOs with correct structure\", async () => {\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () => [\n makeUtxo({ txHash: \"txhash1\", index: 0, lovelace: 5_000_000n }),\n makeUtxo({ txHash: \"txhash2\", index: 1, lovelace: 3_000_000n }),\n ],\n },\n };\n const result = await getWalletUtxos.execute({}, makeContext());\n expect(result.total).toBe(2);\n expect(result.utxos).toHaveLength(2);\n expect(result.utxos[0].txHash).toBe(\"txhash1\");\n expect(result.utxos[0].outputIndex).toBe(0);\n expect(result.utxos[0].lovelace).toBe(\"5000000\");\n expect(result.utxos[0].tokens).toEqual([]);\n });\n\n test(\"respects limit parameter\", async () => {\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () =>\n Array.from({ length: 10 }, (_, i) =>\n makeUtxo({ txHash: `tx${i}`, index: 0, lovelace: 1_000_000n }),\n ),\n },\n };\n const result = await getWalletUtxos.execute({ limit: 3 }, makeContext());\n expect(result.utxos).toHaveLength(3);\n expect(result.total).toBe(10);\n });\n\n test(\"defaults to limit of 100\", async () => {\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () =>\n Array.from({ length: 150 }, (_, i) =>\n makeUtxo({ txHash: `tx${i}`, index: 0, lovelace: 1_000_000n }),\n ),\n },\n };\n const result = await getWalletUtxos.execute({}, makeContext());\n expect(result.utxos).toHaveLength(100);\n expect(result.total).toBe(150);\n });\n\n test(\"includes tokens on UTxOs\", async () => {\n const policyId = \"b\".repeat(56);\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () => [\n makeUtxo({\n txHash: \"tx1\",\n index: 0,\n lovelace: 2_000_000n,\n tokens: [{ policyId, assetName: \"mytoken\", quantity: 42n }],\n }),\n ],\n },\n };\n const result = await getWalletUtxos.execute({}, makeContext());\n expect(result.utxos[0].tokens).toHaveLength(1);\n expect(result.utxos[0].tokens[0].quantity).toBe(\"42\");\n });\n\n test(\"throws PROVIDER_ERROR on fetch failure\", async () => {\n mockBlaze = {\n wallet: {\n getUnspentOutputs: async () => {\n throw new Error(\"provider down\");\n },\n },\n };\n await expect(getWalletUtxos.execute({}, makeContext())).rejects.toMatchObject({\n code: \"PROVIDER_ERROR\",\n });\n });\n});\n\n// ---------------------------------------------------------------------------\n// Transaction Actions\n// ---------------------------------------------------------------------------\n\ndescribe(\"sign-transaction\", () => {\n beforeEach(() => {\n mockBlazeError = null;\n mockIsHot = true;\n });\n\n test(\"signs a transaction and returns signed CBOR, hash, and signature count\", async () => {\n mockBlaze = {\n wallet: {},\n signTransaction: async () => ({\n toCbor: () => \"signed-tx-cbor\",\n body: () => ({\n hash: () => ({ toString: () => \"signed-tx-hash\" }),\n }),\n witnessSet: () => ({ vkeys: () => ({ size: () => 1 }) }),\n }),\n };\n const result = await signTransaction.execute(\n { txCbor: \"valid-cbor\" },\n makeContext(),\n );\n expect(result.signedTxCbor).toBe(\"signed-tx-cbor\");\n expect(result.txHash).toBe(\"signed-tx-hash\");\n expect(result.signatureCount).toBe(1);\n });\n\n test(\"throws COLD_WALLET for cold wallets\", async () => {\n mockIsHot = false;\n mockBlaze = { wallet: {} };\n await expect(\n signTransaction.execute({ txCbor: \"some-cbor\" }, makeContext()),\n ).rejects.toMatchObject({ code: \"COLD_WALLET\" });\n });\n\n test(\"throws INVALID_CBOR for bad CBOR input\", async () => {\n mockTxFromCbor = () => {\n throw new Error(\"invalid cbor\");\n };\n mockBlaze = { wallet: {} };\n await expect(\n signTransaction.execute({ txCbor: \"bad-cbor\" }, makeContext()),\n ).rejects.toMatchObject({ code: \"INVALID_CBOR\" });\n\n // Restore default mock\n mockTxFromCbor = () => ({\n body: () => ({\n hash: () => ({ toString: () => \"abc123txhash\" }),\n inputs: () => ({ values: () => [] }),\n outputs: () => [],\n fee: () => 200_000n,\n requiredSigners: () => null,\n }),\n witnessSet: () => ({ vkeys: () => null }),\n toCbor: () => \"signed-cbor-hex\",\n });\n });\n\n test(\"throws SIGN_ERROR when signing fails\", async () => {\n mockBlaze = {\n wallet: {},\n signTransaction: async () => {\n throw new Error(\"hardware wallet disconnected\");\n },\n };\n await expect(\n signTransaction.execute({ txCbor: \"valid-cbor\" }, makeContext()),\n ).rejects.toMatchObject({ code: \"SIGN_ERROR\" });\n });\n\n test(\"has correct metadata\", () => {\n expect(signTransaction.name).toBe(\"sign-transaction\");\n expect(signTransaction.category).toBe(\"wallet\");\n });\n});\n\ndescribe(\"submit-transaction\", () => {\n beforeEach(() => {\n mockBlazeError = null;\n });\n\n test(\"submits a transaction and returns hash\", async () => {\n mockBlaze = {\n wallet: {},\n submitTransaction: async () => ({\n toString: () => \"submitted-tx-hash\",\n }),\n };\n const result = await submitTransaction.execute(\n { txCbor: \"valid-signed-cbor\" },\n makeContext(),\n );\n expect(result.txHash).toBe(\"submitted-tx-hash\");\n expect(result.submitted).toBe(true);\n });\n\n test(\"throws SUBMISSION_ERROR on failure\", async () => {\n mockBlaze = {\n wallet: {},\n submitTransaction: async () => {\n throw new Error(\"tx already submitted\");\n },\n };\n await expect(\n submitTransaction.execute({ txCbor: \"some-cbor\" }, makeContext()),\n ).rejects.toMatchObject({ code: \"SUBMISSION_ERROR\" });\n });\n\n test(\"has correct metadata\", () => {\n expect(submitTransaction.name).toBe(\"submit-transaction\");\n expect(submitTransaction.category).toBe(\"wallet\");\n });\n});\n\ndescribe(\"sign-and-submit\", () => {\n beforeEach(() => {\n mockBlazeError = null;\n mockIsHot = true;\n });\n\n test(\"signs and submits without waiting for confirmation\", async () => {\n mockBlaze = {\n wallet: {},\n signTransaction: async () => ({\n toCbor: () => \"signed-cbor\",\n body: () => ({\n hash: () => ({ toString: () => \"tx-hash\" }),\n }),\n witnessSet: () => ({ vkeys: () => ({ size: () => 1 }) }),\n }),\n submitTransaction: async () => ({\n toString: () => \"tx-hash\",\n }),\n };\n const result = await signAndSubmit.execute(\n { txCbor: \"valid-cbor\", waitForConfirmation: false },\n makeContext(),\n );\n expect(result.txHash).toBe(\"tx-hash\");\n expect(result.submitted).toBe(true);\n expect(result.signedTxCbor).toBe(\"signed-cbor\");\n expect(result.confirmed).toBeUndefined();\n });\n\n test(\"throws COLD_WALLET for cold wallets\", async () => {\n mockIsHot = false;\n mockBlaze = { wallet: {} };\n await expect(\n signAndSubmit.execute({ txCbor: \"cbor\" }, makeContext()),\n ).rejects.toMatchObject({ code: \"COLD_WALLET\" });\n });\n\n test(\"throws SUBMISSION_ERROR when submit fails (includes signedTxCbor in details)\", async () => {\n mockBlaze = {\n wallet: {},\n signTransaction: async () => ({\n toCbor: () => \"signed-but-failed\",\n body: () => ({\n hash: () => ({ toString: () => \"hash\" }),\n }),\n witnessSet: () => ({ vkeys: () => null }),\n }),\n submitTransaction: async () => {\n throw new Error(\"node rejected\");\n },\n };\n try {\n await signAndSubmit.execute({ txCbor: \"valid-cbor\" }, makeContext());\n expect(true).toBe(false); // should not reach\n } catch (err: any) {\n expect(err.code).toBe(\"SUBMISSION_ERROR\");\n expect(err.details.signedTxCbor).toBe(\"signed-but-failed\");\n }\n });\n\n test(\"has correct metadata\", () => {\n expect(signAndSubmit.name).toBe(\"sign-and-submit\");\n expect(signAndSubmit.category).toBe(\"wallet\");\n });\n});\n\ndescribe(\"decode-transaction\", () => {\n beforeEach(() => {\n mockBlazeError = null;\n\n // Set up a rich mock transaction for decode tests\n mockTxFromCbor = () => ({\n body: () => ({\n hash: () => ({ toString: () => \"decoded-tx-hash\" }),\n inputs: () => ({\n values: () => [\n {\n transactionId: () => ({ toString: () => \"input-hash-1\" }),\n index: () => 0n,\n },\n {\n transactionId: () => ({ toString: () => \"input-hash-2\" }),\n index: () => 1n,\n },\n ],\n }),\n outputs: () => [\n {\n address: () => ({ toBech32: () => \"addr_test1output1\" }),\n amount: () => ({\n coin: () => 5_000_000n,\n multiasset: () => undefined,\n }),\n },\n {\n address: () => ({ toBech32: () => \"addr_test1output2\" }),\n amount: () => ({\n coin: () => 2_000_000n,\n multiasset: () => undefined,\n }),\n },\n ],\n fee: () => 180_000n,\n requiredSigners: () => ({\n values: () => [\n { toString: () => \"signer-hash-1\" },\n { toString: () => \"signer-hash-2\" },\n ],\n }),\n }),\n witnessSet: () => ({\n vkeys: () => ({ size: () => 2 }),\n }),\n });\n });\n\n test(\"decodes a transaction and returns all fields\", async () => {\n const result = await decodeTransaction.execute(\n { txCbor: \"valid-cbor-hex\" },\n makeContext(),\n );\n expect(result.txHash).toBe(\"decoded-tx-hash\");\n expect(result.inputs).toHaveLength(2);\n expect(result.inputs[0]).toEqual({ txHash: \"input-hash-1\", outputIndex: 0 });\n expect(result.inputs[1]).toEqual({ txHash: \"input-hash-2\", outputIndex: 1 });\n expect(result.outputs).toHaveLength(2);\n expect(result.outputs[0].address).toBe(\"addr_test1output1\");\n expect(result.outputs[0].lovelace).toBe(\"5000000\");\n expect(result.fee).toBe(\"180000\");\n expect(result.signatureCount).toBe(2);\n expect(result.requiredSigners).toEqual([\"signer-hash-1\", \"signer-hash-2\"]);\n });\n\n test(\"falls back to hex address when bech32 fails\", async () => {\n mockTxFromCbor = () => ({\n body: () => ({\n hash: () => ({ toString: () => \"tx-hash\" }),\n inputs: () => ({ values: () => [] }),\n outputs: () => [\n {\n address: () => ({\n toBech32: () => {\n throw new Error(\"cannot convert to bech32\");\n },\n toBytes: () => \"deadbeef\",\n }),\n amount: () => ({\n coin: () => 1_000_000n,\n multiasset: () => undefined,\n }),\n },\n ],\n fee: () => 100_000n,\n requiredSigners: () => null,\n }),\n witnessSet: () => ({ vkeys: () => null }),\n });\n\n const result = await decodeTransaction.execute(\n { txCbor: \"cbor-with-script-address\" },\n makeContext(),\n );\n expect(result.outputs[0].address).toBe(\"deadbeef\");\n });\n\n test(\"handles transaction with tokens in outputs\", async () => {\n const policyId = \"c\".repeat(56);\n const assetName = \"mytoken\";\n const assetId = `${policyId}${assetName}`;\n\n mockTxFromCbor = () => ({\n body: () => ({\n hash: () => ({ toString: () => \"tx-hash\" }),\n inputs: () => ({ values: () => [] }),\n outputs: () => [\n {\n address: () => ({ toBech32: () => \"addr_test1...\" }),\n amount: () => ({\n coin: () => 2_000_000n,\n multiasset: () => ({\n entries: () => [[assetId, 500n]],\n }),\n }),\n },\n ],\n fee: () => 200_000n,\n requiredSigners: () => null,\n }),\n witnessSet: () => ({ vkeys: () => null }),\n });\n\n const result = await decodeTransaction.execute(\n { txCbor: \"cbor-with-tokens\" },\n makeContext(),\n );\n expect(result.outputs[0].tokens).toHaveLength(1);\n expect(result.outputs[0].tokens[0].policyId).toBe(policyId);\n expect(result.outputs[0].tokens[0].quantity).toBe(\"500\");\n });\n\n test(\"throws INVALID_CBOR for bad input\", async () => {\n mockTxFromCbor = () => {\n throw new Error(\"bad cbor\");\n };\n await expect(\n decodeTransaction.execute({ txCbor: \"garbage\" }, makeContext()),\n ).rejects.toMatchObject({ code: \"INVALID_CBOR\" });\n });\n\n test(\"does not require a wallet (category is 'transaction')\", () => {\n expect(decodeTransaction.name).toBe(\"decode-transaction\");\n expect(decodeTransaction.category).toBe(\"transaction\");\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.setAddressbookEntry = exports.listAddressbook = exports.getAddressbookEntry = exports.deleteAddressbookEntry = void 0;
|
|
7
|
+
var _typebox = require("@sinclair/typebox");
|
|
8
|
+
var _schemas = require("../../schemas.js");
|
|
9
|
+
var _types = require("../types.js");
|
|
10
|
+
var _nativeScript = require("./native-script.js");
|
|
11
|
+
/**
|
|
12
|
+
* Built-in addressbook actions for managing named native scripts.
|
|
13
|
+
*
|
|
14
|
+
* The addressbook stores MultisigScript entries by name in the profile,
|
|
15
|
+
* allowing them to be reused across actions and automatically resolved
|
|
16
|
+
* by script hash during transaction building.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* `list-addressbook` -- List all entries in the addressbook.
|
|
21
|
+
*/
|
|
22
|
+
const listAddressbook = exports.listAddressbook = {
|
|
23
|
+
name: "list-addressbook",
|
|
24
|
+
description: "List all named native scripts in the addressbook.",
|
|
25
|
+
category: "addressbook",
|
|
26
|
+
inputSchema: _typebox.Type.Object({}),
|
|
27
|
+
outputSchema: _typebox.Type.Object({
|
|
28
|
+
entries: _typebox.Type.Array(_typebox.Type.Object({
|
|
29
|
+
name: _typebox.Type.String(),
|
|
30
|
+
scriptHash: _typebox.Type.String(),
|
|
31
|
+
script: _schemas.MultisigScript
|
|
32
|
+
}))
|
|
33
|
+
}),
|
|
34
|
+
execute: async (_input, context) => {
|
|
35
|
+
const addressbook = context.sprinkle.addressbook ?? {};
|
|
36
|
+
const entries = [];
|
|
37
|
+
for (const [name, ms] of Object.entries(addressbook)) {
|
|
38
|
+
try {
|
|
39
|
+
const script = (0, _nativeScript.toNativeScript)(ms);
|
|
40
|
+
entries.push({
|
|
41
|
+
name,
|
|
42
|
+
scriptHash: script.hash(),
|
|
43
|
+
script: ms
|
|
44
|
+
});
|
|
45
|
+
} catch {
|
|
46
|
+
// Include entries even if hash computation fails
|
|
47
|
+
entries.push({
|
|
48
|
+
name,
|
|
49
|
+
scriptHash: "unknown",
|
|
50
|
+
script: ms
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
entries
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* `set-addressbook-entry` -- Add or update a named native script in the addressbook.
|
|
62
|
+
*/
|
|
63
|
+
const setAddressbookEntry = exports.setAddressbookEntry = {
|
|
64
|
+
name: "set-addressbook-entry",
|
|
65
|
+
description: "Add or update a named native script in the addressbook. Accepts a MultisigScript JSON structure.",
|
|
66
|
+
category: "addressbook",
|
|
67
|
+
inputSchema: _typebox.Type.Object({
|
|
68
|
+
name: _typebox.Type.String({
|
|
69
|
+
minLength: 1,
|
|
70
|
+
description: "Name for this addressbook entry"
|
|
71
|
+
}),
|
|
72
|
+
script: _schemas.MultisigScript
|
|
73
|
+
}),
|
|
74
|
+
outputSchema: _typebox.Type.Object({
|
|
75
|
+
name: _typebox.Type.String(),
|
|
76
|
+
scriptHash: _typebox.Type.String({
|
|
77
|
+
description: "Computed script hash"
|
|
78
|
+
})
|
|
79
|
+
}),
|
|
80
|
+
execute: async (input, context) => {
|
|
81
|
+
// Validate the script can be converted
|
|
82
|
+
const blazeScript = (0, _nativeScript.toNativeScript)(input.script);
|
|
83
|
+
const scriptHash = blazeScript.hash();
|
|
84
|
+
context.sprinkle.addressbook[input.name] = input.script;
|
|
85
|
+
context.sprinkle.saveSettings();
|
|
86
|
+
return {
|
|
87
|
+
name: input.name,
|
|
88
|
+
scriptHash
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* `delete-addressbook-entry` -- Remove a named native script from the addressbook.
|
|
95
|
+
*/
|
|
96
|
+
const deleteAddressbookEntry = exports.deleteAddressbookEntry = {
|
|
97
|
+
name: "delete-addressbook-entry",
|
|
98
|
+
description: "Remove a named native script from the addressbook.",
|
|
99
|
+
category: "addressbook",
|
|
100
|
+
inputSchema: _typebox.Type.Object({
|
|
101
|
+
name: _typebox.Type.String({
|
|
102
|
+
minLength: 1,
|
|
103
|
+
description: "Name of the addressbook entry to delete"
|
|
104
|
+
})
|
|
105
|
+
}),
|
|
106
|
+
outputSchema: _typebox.Type.Object({
|
|
107
|
+
deleted: _typebox.Type.Boolean(),
|
|
108
|
+
name: _typebox.Type.String()
|
|
109
|
+
}),
|
|
110
|
+
execute: async (input, context) => {
|
|
111
|
+
if (!(input.name in context.sprinkle.addressbook)) {
|
|
112
|
+
throw new _types.ActionError(`Addressbook entry "${input.name}" not found.`, "NOT_FOUND", {
|
|
113
|
+
name: input.name
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
delete context.sprinkle.addressbook[input.name];
|
|
117
|
+
context.sprinkle.saveSettings();
|
|
118
|
+
return {
|
|
119
|
+
deleted: true,
|
|
120
|
+
name: input.name
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* `get-addressbook-entry` -- Get a specific named native script from the addressbook.
|
|
127
|
+
*/
|
|
128
|
+
const getAddressbookEntry = exports.getAddressbookEntry = {
|
|
129
|
+
name: "get-addressbook-entry",
|
|
130
|
+
description: "Get a specific named native script from the addressbook.",
|
|
131
|
+
category: "addressbook",
|
|
132
|
+
inputSchema: _typebox.Type.Object({
|
|
133
|
+
name: _typebox.Type.String({
|
|
134
|
+
minLength: 1,
|
|
135
|
+
description: "Name of the addressbook entry to retrieve"
|
|
136
|
+
})
|
|
137
|
+
}),
|
|
138
|
+
outputSchema: _typebox.Type.Object({
|
|
139
|
+
name: _typebox.Type.String(),
|
|
140
|
+
scriptHash: _typebox.Type.String(),
|
|
141
|
+
script: _schemas.MultisigScript
|
|
142
|
+
}),
|
|
143
|
+
execute: async (input, context) => {
|
|
144
|
+
const ms = context.sprinkle.addressbook[input.name];
|
|
145
|
+
if (!ms) {
|
|
146
|
+
throw new _types.ActionError(`Addressbook entry "${input.name}" not found.`, "NOT_FOUND", {
|
|
147
|
+
name: input.name
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
let scriptHash = "unknown";
|
|
151
|
+
try {
|
|
152
|
+
const blazeScript = (0, _nativeScript.toNativeScript)(ms);
|
|
153
|
+
scriptHash = blazeScript.hash();
|
|
154
|
+
} catch {
|
|
155
|
+
// Return entry even if hash computation fails
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
name: input.name,
|
|
159
|
+
scriptHash,
|
|
160
|
+
script: ms
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
//# sourceMappingURL=addressbook-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addressbook-actions.js","names":["_typebox","require","_schemas","_types","_nativeScript","listAddressbook","exports","name","description","category","inputSchema","Type","Object","outputSchema","entries","Array","String","scriptHash","script","MultisigScript","execute","_input","context","addressbook","sprinkle","ms","toNativeScript","push","hash","setAddressbookEntry","minLength","input","blazeScript","saveSettings","deleteAddressbookEntry","deleted","Boolean","ActionError","getAddressbookEntry"],"sources":["../../../../../src/Sprinkle/actions/builtin/addressbook-actions.ts"],"sourcesContent":["/**\n * Built-in addressbook actions for managing named native scripts.\n *\n * The addressbook stores MultisigScript entries by name in the profile,\n * allowing them to be reused across actions and automatically resolved\n * by script hash during transaction building.\n */\n\nimport { Type } from \"@sinclair/typebox\";\nimport type { TSchema } from \"@sinclair/typebox\";\nimport { MultisigScript } from \"../../schemas.js\";\nimport type { TMultisigScript } from \"../../schemas.js\";\nimport { ActionError } from \"../types.js\";\nimport type { IAction } from \"../types.js\";\nimport { toNativeScript } from \"./native-script.js\";\n\n/**\n * `list-addressbook` -- List all entries in the addressbook.\n */\nexport const listAddressbook: IAction<\n Record<string, never>,\n { entries: Array<{ name: string; scriptHash: string; script: TMultisigScript }> },\n TSchema\n> = {\n name: \"list-addressbook\",\n description: \"List all named native scripts in the addressbook.\",\n category: \"addressbook\",\n inputSchema: Type.Object({}),\n outputSchema: Type.Object({\n entries: Type.Array(\n Type.Object({\n name: Type.String(),\n scriptHash: Type.String(),\n script: MultisigScript,\n }),\n ),\n }),\n execute: async (_input, context) => {\n const addressbook = context.sprinkle.addressbook ?? {};\n const entries = [];\n for (const [name, ms] of Object.entries(addressbook)) {\n try {\n const script = toNativeScript(ms);\n entries.push({ name, scriptHash: script.hash(), script: ms });\n } catch {\n // Include entries even if hash computation fails\n entries.push({ name, scriptHash: \"unknown\", script: ms });\n }\n }\n return { entries };\n },\n};\n\n/**\n * `set-addressbook-entry` -- Add or update a named native script in the addressbook.\n */\nexport const setAddressbookEntry: IAction<\n { name: string; script: TMultisigScript },\n { name: string; scriptHash: string },\n TSchema\n> = {\n name: \"set-addressbook-entry\",\n description:\n \"Add or update a named native script in the addressbook. Accepts a MultisigScript JSON structure.\",\n category: \"addressbook\",\n inputSchema: Type.Object({\n name: Type.String({\n minLength: 1,\n description: \"Name for this addressbook entry\",\n }),\n script: MultisigScript,\n }),\n outputSchema: Type.Object({\n name: Type.String(),\n scriptHash: Type.String({ description: \"Computed script hash\" }),\n }),\n execute: async (input, context) => {\n // Validate the script can be converted\n const blazeScript = toNativeScript(input.script);\n const scriptHash = blazeScript.hash();\n\n context.sprinkle.addressbook[input.name] = input.script;\n context.sprinkle.saveSettings();\n\n return { name: input.name, scriptHash };\n },\n};\n\n/**\n * `delete-addressbook-entry` -- Remove a named native script from the addressbook.\n */\nexport const deleteAddressbookEntry: IAction<\n { name: string },\n { deleted: boolean; name: string },\n TSchema\n> = {\n name: \"delete-addressbook-entry\",\n description: \"Remove a named native script from the addressbook.\",\n category: \"addressbook\",\n inputSchema: Type.Object({\n name: Type.String({\n minLength: 1,\n description: \"Name of the addressbook entry to delete\",\n }),\n }),\n outputSchema: Type.Object({\n deleted: Type.Boolean(),\n name: Type.String(),\n }),\n execute: async (input, context) => {\n if (!(input.name in context.sprinkle.addressbook)) {\n throw new ActionError(\n `Addressbook entry \"${input.name}\" not found.`,\n \"NOT_FOUND\",\n { name: input.name },\n );\n }\n\n delete context.sprinkle.addressbook[input.name];\n context.sprinkle.saveSettings();\n\n return { deleted: true, name: input.name };\n },\n};\n\n/**\n * `get-addressbook-entry` -- Get a specific named native script from the addressbook.\n */\nexport const getAddressbookEntry: IAction<\n { name: string },\n { name: string; scriptHash: string; script: TMultisigScript },\n TSchema\n> = {\n name: \"get-addressbook-entry\",\n description: \"Get a specific named native script from the addressbook.\",\n category: \"addressbook\",\n inputSchema: Type.Object({\n name: Type.String({\n minLength: 1,\n description: \"Name of the addressbook entry to retrieve\",\n }),\n }),\n outputSchema: Type.Object({\n name: Type.String(),\n scriptHash: Type.String(),\n script: MultisigScript,\n }),\n execute: async (input, context) => {\n const ms = context.sprinkle.addressbook[input.name];\n if (!ms) {\n throw new ActionError(\n `Addressbook entry \"${input.name}\" not found.`,\n \"NOT_FOUND\",\n { name: input.name },\n );\n }\n\n let scriptHash = \"unknown\";\n try {\n const blazeScript = toNativeScript(ms);\n scriptHash = blazeScript.hash();\n } catch {\n // Return entry even if hash computation fails\n }\n\n return { name: input.name, scriptHash, script: ms };\n },\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getBlazeFromContext = getBlazeFromContext;
|
|
7
|
+
exports.isHotWallet = isHotWallet;
|
|
8
|
+
var _sdk = require("@blaze-cardano/sdk");
|
|
9
|
+
var _wallet = require("../../wallet.js");
|
|
10
|
+
var _types = require("../types.js");
|
|
11
|
+
/**
|
|
12
|
+
* Shared helper utilities for wallet and transaction actions.
|
|
13
|
+
* Provides Blaze instance creation from action context settings.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/** Settings shape expected on context.settings for wallet access */
|
|
17
|
+
|
|
18
|
+
/** Optional overrides for Blaze initialization, in case field names differ */
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Creates a Blaze instance from action context settings.
|
|
22
|
+
*
|
|
23
|
+
* Falls back to `context.settings.network`, `context.settings.provider`,
|
|
24
|
+
* and `context.settings.wallet` when overrides are not provided.
|
|
25
|
+
*
|
|
26
|
+
* @throws `ActionError("WALLET_NOT_CONFIGURED")` if required settings are missing
|
|
27
|
+
* @throws `ActionError("BLAZE_INIT_ERROR")` if Blaze fails to initialize
|
|
28
|
+
*/
|
|
29
|
+
async function getBlazeFromContext(context, overrides) {
|
|
30
|
+
const settings = context.settings;
|
|
31
|
+
const network = overrides?.network ?? settings.network;
|
|
32
|
+
const provider = overrides?.provider ?? settings.provider;
|
|
33
|
+
const wallet = overrides?.wallet ?? settings.wallet;
|
|
34
|
+
|
|
35
|
+
// Validate required fields and collect missing ones for a helpful error message
|
|
36
|
+
const missing = [];
|
|
37
|
+
if (!network) missing.push("network");
|
|
38
|
+
if (!provider) missing.push("provider");
|
|
39
|
+
if (!wallet) missing.push("wallet");
|
|
40
|
+
if (missing.length > 0) {
|
|
41
|
+
throw new _types.ActionError(`Wallet is not configured. Missing settings: ${missing.join(", ")}. ` + `Set these fields in your profile settings before using wallet actions.`, "WALLET_NOT_CONFIGURED", {
|
|
42
|
+
missingFields: missing
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
return await (0, _wallet.GetBlaze)(network, provider, wallet);
|
|
47
|
+
} catch (err) {
|
|
48
|
+
throw new _types.ActionError(`Failed to initialize Blaze wallet: ${err instanceof Error ? err.message : String(err)}`, "BLAZE_INIT_ERROR", {
|
|
49
|
+
error: err instanceof Error ? err.message : String(err)
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Checks whether the wallet in a Blaze instance is a hot wallet.
|
|
56
|
+
* Cold wallets cannot sign transactions.
|
|
57
|
+
*/
|
|
58
|
+
function isHotWallet(blaze) {
|
|
59
|
+
return blaze.wallet instanceof _sdk.HotWallet;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=blaze-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blaze-helper.js","names":["_sdk","require","_wallet","_types","getBlazeFromContext","context","overrides","settings","network","provider","wallet","missing","push","length","ActionError","join","missingFields","GetBlaze","err","Error","message","String","error","isHotWallet","blaze","HotWallet"],"sources":["../../../../../src/Sprinkle/actions/builtin/blaze-helper.ts"],"sourcesContent":["/**\n * Shared helper utilities for wallet and transaction actions.\n * Provides Blaze instance creation from action context settings.\n */\n\nimport type { TSchema } from \"@sinclair/typebox\";\nimport { Blaze, HotWallet } from \"@blaze-cardano/sdk\";\nimport type { Provider } from \"@blaze-cardano/query\";\nimport type { Wallet } from \"@blaze-cardano/sdk\";\nimport { GetBlaze } from \"../../wallet.js\";\nimport { ActionError } from \"../types.js\";\nimport type { IActionContext } from \"../types.js\";\nimport type {\n NetworkSchema,\n ProviderSettingsSchema,\n WalletSettingsSchema,\n} from \"../../schemas.js\";\nimport type { TExact } from \"../../types.js\";\n\n/** Settings shape expected on context.settings for wallet access */\nexport interface IWalletSettings {\n network?: TExact<typeof NetworkSchema>;\n provider?: TExact<typeof ProviderSettingsSchema>;\n wallet?: TExact<typeof WalletSettingsSchema>;\n}\n\n/** Optional overrides for Blaze initialization, in case field names differ */\nexport interface IBlazeOverrides {\n network?: TExact<typeof NetworkSchema>;\n provider?: TExact<typeof ProviderSettingsSchema>;\n wallet?: TExact<typeof WalletSettingsSchema>;\n}\n\n/**\n * Creates a Blaze instance from action context settings.\n *\n * Falls back to `context.settings.network`, `context.settings.provider`,\n * and `context.settings.wallet` when overrides are not provided.\n *\n * @throws `ActionError(\"WALLET_NOT_CONFIGURED\")` if required settings are missing\n * @throws `ActionError(\"BLAZE_INIT_ERROR\")` if Blaze fails to initialize\n */\nexport async function getBlazeFromContext<S extends TSchema>(\n context: IActionContext<S>,\n overrides?: IBlazeOverrides,\n): Promise<Blaze<Provider, Wallet>> {\n const settings = context.settings as unknown as IWalletSettings;\n\n const network = overrides?.network ?? settings.network;\n const provider = overrides?.provider ?? settings.provider;\n const wallet = overrides?.wallet ?? settings.wallet;\n\n // Validate required fields and collect missing ones for a helpful error message\n const missing: string[] = [];\n if (!network) missing.push(\"network\");\n if (!provider) missing.push(\"provider\");\n if (!wallet) missing.push(\"wallet\");\n\n if (missing.length > 0) {\n throw new ActionError(\n `Wallet is not configured. Missing settings: ${missing.join(\", \")}. ` +\n `Set these fields in your profile settings before using wallet actions.`,\n \"WALLET_NOT_CONFIGURED\",\n { missingFields: missing },\n );\n }\n\n try {\n return await GetBlaze(\n network as TExact<typeof NetworkSchema>,\n provider as TExact<typeof ProviderSettingsSchema>,\n wallet as TExact<typeof WalletSettingsSchema>,\n );\n } catch (err) {\n throw new ActionError(\n `Failed to initialize Blaze wallet: ${err instanceof Error ? err.message : String(err)}`,\n \"BLAZE_INIT_ERROR\",\n { error: err instanceof Error ? err.message : String(err) },\n );\n }\n}\n\n/**\n * Checks whether the wallet in a Blaze instance is a hot wallet.\n * Cold wallets cannot sign transactions.\n */\nexport function isHotWallet(blaze: Blaze<Provider, Wallet>): boolean {\n return blaze.wallet instanceof HotWallet;\n}\n"],"mappings":";;;;;;;AAMA,IAAAA,IAAA,GAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAVA;AACA;AACA;AACA;;AAgBA;;AAOA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAeG,mBAAmBA,CACvCC,OAA0B,EAC1BC,SAA2B,EACO;EAClC,MAAMC,QAAQ,GAAGF,OAAO,CAACE,QAAsC;EAE/D,MAAMC,OAAO,GAAGF,SAAS,EAAEE,OAAO,IAAID,QAAQ,CAACC,OAAO;EACtD,MAAMC,QAAQ,GAAGH,SAAS,EAAEG,QAAQ,IAAIF,QAAQ,CAACE,QAAQ;EACzD,MAAMC,MAAM,GAAGJ,SAAS,EAAEI,MAAM,IAAIH,QAAQ,CAACG,MAAM;;EAEnD;EACA,MAAMC,OAAiB,GAAG,EAAE;EAC5B,IAAI,CAACH,OAAO,EAAEG,OAAO,CAACC,IAAI,CAAC,SAAS,CAAC;EACrC,IAAI,CAACH,QAAQ,EAAEE,OAAO,CAACC,IAAI,CAAC,UAAU,CAAC;EACvC,IAAI,CAACF,MAAM,EAAEC,OAAO,CAACC,IAAI,CAAC,QAAQ,CAAC;EAEnC,IAAID,OAAO,CAACE,MAAM,GAAG,CAAC,EAAE;IACtB,MAAM,IAAIC,kBAAW,CACnB,+CAA+CH,OAAO,CAACI,IAAI,CAAC,IAAI,CAAC,IAAI,GACnE,wEAAwE,EAC1E,uBAAuB,EACvB;MAAEC,aAAa,EAAEL;IAAQ,CAC3B,CAAC;EACH;EAEA,IAAI;IACF,OAAO,MAAM,IAAAM,gBAAQ,EACnBT,OAAO,EACPC,QAAQ,EACRC,MACF,CAAC;EACH,CAAC,CAAC,OAAOQ,GAAG,EAAE;IACZ,MAAM,IAAIJ,kBAAW,CACnB,sCAAsCI,GAAG,YAAYC,KAAK,GAAGD,GAAG,CAACE,OAAO,GAAGC,MAAM,CAACH,GAAG,CAAC,EAAE,EACxF,kBAAkB,EAClB;MAAEI,KAAK,EAAEJ,GAAG,YAAYC,KAAK,GAAGD,GAAG,CAACE,OAAO,GAAGC,MAAM,CAACH,GAAG;IAAE,CAC5D,CAAC;EACH;AACF;;AAEA;AACA;AACA;AACA;AACO,SAASK,WAAWA,CAACC,KAA8B,EAAW;EACnE,OAAOA,KAAK,CAACd,MAAM,YAAYe,cAAS;AAC1C","ignoreList":[]}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "completeWithScripts", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _nativeScript.completeWithScripts;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "createProfile", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _profileActions.createProfile;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "decodeTransaction", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _transactionActions.decodeTransaction;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "deleteAddressbookEntry", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _addressbookActions.deleteAddressbookEntry;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "deleteProfile", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _profileActions.deleteProfile;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "getAddressbookEntry", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _addressbookActions.getAddressbookEntry;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
exports.getBuiltinActions = getBuiltinActions;
|
|
43
|
+
Object.defineProperty(exports, "getProfile", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () {
|
|
46
|
+
return _profileActions.getProfile;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
Object.defineProperty(exports, "getSettings", {
|
|
50
|
+
enumerable: true,
|
|
51
|
+
get: function () {
|
|
52
|
+
return _settingsActions.getSettings;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(exports, "getWalletAddress", {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function () {
|
|
58
|
+
return _walletActions.getWalletAddress;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
Object.defineProperty(exports, "getWalletBalance", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function () {
|
|
64
|
+
return _walletActions.getWalletBalance;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(exports, "getWalletUtxos", {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
get: function () {
|
|
70
|
+
return _walletActions.getWalletUtxos;
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
Object.defineProperty(exports, "listAddressbook", {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
get: function () {
|
|
76
|
+
return _addressbookActions.listAddressbook;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(exports, "listProfiles", {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
get: function () {
|
|
82
|
+
return _profileActions.listProfiles;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(exports, "mintToken", {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function () {
|
|
88
|
+
return _utilityActions.mintToken;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
Object.defineProperty(exports, "registerStakeScript", {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
get: function () {
|
|
94
|
+
return _utilityActions.registerStakeScript;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(exports, "setAddressbookEntry", {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
get: function () {
|
|
100
|
+
return _addressbookActions.setAddressbookEntry;
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
Object.defineProperty(exports, "setProfile", {
|
|
104
|
+
enumerable: true,
|
|
105
|
+
get: function () {
|
|
106
|
+
return _profileActions.setProfile;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(exports, "signAndSubmit", {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
get: function () {
|
|
112
|
+
return _transactionActions.signAndSubmit;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
Object.defineProperty(exports, "signTransaction", {
|
|
116
|
+
enumerable: true,
|
|
117
|
+
get: function () {
|
|
118
|
+
return _transactionActions.signTransaction;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
Object.defineProperty(exports, "simpleSend", {
|
|
122
|
+
enumerable: true,
|
|
123
|
+
get: function () {
|
|
124
|
+
return _utilityActions.simpleSend;
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
Object.defineProperty(exports, "submitTransaction", {
|
|
128
|
+
enumerable: true,
|
|
129
|
+
get: function () {
|
|
130
|
+
return _transactionActions.submitTransaction;
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
Object.defineProperty(exports, "toNativeScript", {
|
|
134
|
+
enumerable: true,
|
|
135
|
+
get: function () {
|
|
136
|
+
return _nativeScript.toNativeScript;
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
Object.defineProperty(exports, "updateSettings", {
|
|
140
|
+
enumerable: true,
|
|
141
|
+
get: function () {
|
|
142
|
+
return _settingsActions.updateSettings;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
var _profileActions = require("./profile-actions.js");
|
|
146
|
+
var _settingsActions = require("./settings-actions.js");
|
|
147
|
+
var _walletActions = require("./wallet-actions.js");
|
|
148
|
+
var _transactionActions = require("./transaction-actions.js");
|
|
149
|
+
var _utilityActions = require("./utility-actions.js");
|
|
150
|
+
var _nativeScript = require("./native-script.js");
|
|
151
|
+
var _addressbookActions = require("./addressbook-actions.js");
|
|
152
|
+
/**
|
|
153
|
+
* Barrel export for built-in Sprinkle actions.
|
|
154
|
+
*
|
|
155
|
+
* Provides a `getBuiltinActions()` factory that returns all 17 built-in actions
|
|
156
|
+
* ready for registration on an ActionRegistry.
|
|
157
|
+
*/
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Returns all built-in Sprinkle actions.
|
|
161
|
+
* Register them on your ActionRegistry or pass them to `Sprinkle.run()`.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```ts
|
|
165
|
+
* const sprinkle = new Sprinkle(MySchema, storagePath);
|
|
166
|
+
* for (const action of getBuiltinActions()) {
|
|
167
|
+
* sprinkle.registerAction(action);
|
|
168
|
+
* }
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
function getBuiltinActions() {
|
|
172
|
+
return [_profileActions.listProfiles, _profileActions.getProfile, _profileActions.setProfile, _profileActions.createProfile, _profileActions.deleteProfile, _settingsActions.getSettings, _settingsActions.updateSettings, _walletActions.getWalletAddress, _walletActions.getWalletBalance, _walletActions.getWalletUtxos, _transactionActions.signTransaction, _transactionActions.submitTransaction, _transactionActions.signAndSubmit, _transactionActions.decodeTransaction, _utilityActions.mintToken, _utilityActions.simpleSend, _utilityActions.registerStakeScript, _addressbookActions.listAddressbook, _addressbookActions.getAddressbookEntry, _addressbookActions.setAddressbookEntry, _addressbookActions.deleteAddressbookEntry];
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_profileActions","require","_settingsActions","_walletActions","_transactionActions","_utilityActions","_nativeScript","_addressbookActions","getBuiltinActions","listProfiles","getProfile","setProfile","createProfile","deleteProfile","getSettings","updateSettings","getWalletAddress","getWalletBalance","getWalletUtxos","signTransaction","submitTransaction","signAndSubmit","decodeTransaction","mintToken","simpleSend","registerStakeScript","listAddressbook","getAddressbookEntry","setAddressbookEntry","deleteAddressbookEntry"],"sources":["../../../../../src/Sprinkle/actions/builtin/index.ts"],"sourcesContent":["/**\n * Barrel export for built-in Sprinkle actions.\n *\n * Provides a `getBuiltinActions()` factory that returns all 17 built-in actions\n * ready for registration on an ActionRegistry.\n */\n\nimport type { TSchema } from \"@sinclair/typebox\";\nimport type { AnyAction } from \"../types.js\";\n\nexport {\n listProfiles,\n getProfile,\n setProfile,\n createProfile,\n deleteProfile,\n} from \"./profile-actions.js\";\n\nexport { getSettings, updateSettings } from \"./settings-actions.js\";\n\nexport {\n getWalletAddress,\n getWalletBalance,\n getWalletUtxos,\n} from \"./wallet-actions.js\";\n\nexport {\n signTransaction,\n submitTransaction,\n signAndSubmit,\n decodeTransaction,\n} from \"./transaction-actions.js\";\n\nexport {\n mintToken,\n simpleSend,\n registerStakeScript,\n} from \"./utility-actions.js\";\n\nexport {\n toNativeScript,\n completeWithScripts,\n} from \"./native-script.js\";\nexport type { NativeScriptInput } from \"./native-script.js\";\n\nexport {\n listAddressbook,\n getAddressbookEntry,\n setAddressbookEntry,\n deleteAddressbookEntry,\n} from \"./addressbook-actions.js\";\n\nimport {\n listProfiles,\n getProfile,\n setProfile,\n createProfile,\n deleteProfile,\n} from \"./profile-actions.js\";\n\nimport { getSettings, updateSettings } from \"./settings-actions.js\";\n\nimport {\n getWalletAddress,\n getWalletBalance,\n getWalletUtxos,\n} from \"./wallet-actions.js\";\n\nimport {\n signTransaction,\n submitTransaction,\n signAndSubmit,\n decodeTransaction,\n} from \"./transaction-actions.js\";\n\nimport {\n mintToken,\n simpleSend,\n registerStakeScript,\n} from \"./utility-actions.js\";\n\nimport {\n listAddressbook,\n getAddressbookEntry,\n setAddressbookEntry,\n deleteAddressbookEntry,\n} from \"./addressbook-actions.js\";\n\n/**\n * Returns all built-in Sprinkle actions.\n * Register them on your ActionRegistry or pass them to `Sprinkle.run()`.\n *\n * @example\n * ```ts\n * const sprinkle = new Sprinkle(MySchema, storagePath);\n * for (const action of getBuiltinActions()) {\n * sprinkle.registerAction(action);\n * }\n * ```\n */\nexport function getBuiltinActions<S extends TSchema>(): AnyAction<S>[] {\n return [\n listProfiles,\n getProfile,\n setProfile,\n createProfile,\n deleteProfile,\n getSettings,\n updateSettings,\n getWalletAddress,\n getWalletBalance,\n getWalletUtxos,\n signTransaction,\n submitTransaction,\n signAndSubmit,\n decodeTransaction,\n mintToken,\n simpleSend,\n registerStakeScript,\n listAddressbook,\n getAddressbookEntry,\n setAddressbookEntry,\n deleteAddressbookEntry,\n ] as unknown as AnyAction<S>[];\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,IAAAA,eAAA,GAAAC,OAAA;AAQA,IAAAC,gBAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AAMA,IAAAG,mBAAA,GAAAH,OAAA;AAOA,IAAAI,eAAA,GAAAJ,OAAA;AAMA,IAAAK,aAAA,GAAAL,OAAA;AAMA,IAAAM,mBAAA,GAAAN,OAAA;AA7CA;AACA;AACA;AACA;AACA;AACA;;AAmFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASO,iBAAiBA,CAAA,EAAsC;EACrE,OAAO,CACLC,4BAAY,EACZC,0BAAU,EACVC,0BAAU,EACVC,6BAAa,EACbC,6BAAa,EACbC,4BAAW,EACXC,+BAAc,EACdC,+BAAgB,EAChBC,+BAAgB,EAChBC,6BAAc,EACdC,mCAAe,EACfC,qCAAiB,EACjBC,iCAAa,EACbC,qCAAiB,EACjBC,yBAAS,EACTC,0BAAU,EACVC,mCAAmB,EACnBC,mCAAe,EACfC,uCAAmB,EACnBC,uCAAmB,EACnBC,0CAAsB,CACvB;AACH","ignoreList":[]}
|