@trufnetwork/sdk-js 0.3.7 → 0.3.8

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.
Files changed (58) hide show
  1. package/dist/cjs/client/browserClient.cjs +1 -1
  2. package/dist/cjs/client/browserClient.cjs.map +1 -1
  3. package/dist/cjs/client/client.cjs +1 -1
  4. package/dist/cjs/client/client.cjs.map +1 -1
  5. package/dist/cjs/client/getLastTransactions.cjs.map +1 -1
  6. package/dist/cjs/client/listStreams.cjs.map +1 -1
  7. package/dist/cjs/client/nodeClient.cjs +1 -1
  8. package/dist/cjs/client/nodeClient.cjs.map +1 -1
  9. package/dist/cjs/contracts-api/action.cjs.map +1 -1
  10. package/dist/cjs/contracts-api/composedAction.cjs +1 -1
  11. package/dist/cjs/contracts-api/composedAction.cjs.map +1 -1
  12. package/dist/cjs/contracts-api/deleteStream.cjs.map +1 -1
  13. package/dist/cjs/contracts-api/deployStream.cjs.map +1 -1
  14. package/dist/cjs/contracts-api/primitiveAction.cjs +1 -1
  15. package/dist/cjs/contracts-api/primitiveAction.cjs.map +1 -1
  16. package/dist/cjs/contracts-api/roleManagement.cjs +1 -1
  17. package/dist/cjs/contracts-api/roleManagement.cjs.map +1 -1
  18. package/dist/esm/client/browserClient.mjs +1 -1
  19. package/dist/esm/client/browserClient.mjs.map +1 -1
  20. package/dist/esm/client/client.mjs +1 -1
  21. package/dist/esm/client/client.mjs.map +1 -1
  22. package/dist/esm/client/getLastTransactions.mjs.map +1 -1
  23. package/dist/esm/client/listStreams.mjs.map +1 -1
  24. package/dist/esm/client/nodeClient.mjs +1 -1
  25. package/dist/esm/client/nodeClient.mjs.map +1 -1
  26. package/dist/esm/contracts-api/action.mjs.map +1 -1
  27. package/dist/esm/contracts-api/composedAction.mjs +1 -1
  28. package/dist/esm/contracts-api/composedAction.mjs.map +1 -1
  29. package/dist/esm/contracts-api/deleteStream.mjs.map +1 -1
  30. package/dist/esm/contracts-api/deployStream.mjs.map +1 -1
  31. package/dist/esm/contracts-api/primitiveAction.mjs +1 -1
  32. package/dist/esm/contracts-api/primitiveAction.mjs.map +1 -1
  33. package/dist/esm/contracts-api/roleManagement.mjs +1 -1
  34. package/dist/esm/contracts-api/roleManagement.mjs.map +1 -1
  35. package/dist/tsconfig.build.tsbuildinfo +1 -1
  36. package/dist/types/client/browserClient.d.ts +1 -1
  37. package/dist/types/client/browserClient.d.ts.map +1 -1
  38. package/dist/types/client/client.d.ts +8 -8
  39. package/dist/types/client/client.d.ts.map +1 -1
  40. package/dist/types/client/getLastTransactions.d.ts +1 -1
  41. package/dist/types/client/getLastTransactions.d.ts.map +1 -1
  42. package/dist/types/client/listStreams.d.ts +1 -1
  43. package/dist/types/client/listStreams.d.ts.map +1 -1
  44. package/dist/types/client/nodeClient.d.ts +1 -1
  45. package/dist/types/client/nodeClient.d.ts.map +1 -1
  46. package/dist/types/contracts-api/action.d.ts +6 -6
  47. package/dist/types/contracts-api/action.d.ts.map +1 -1
  48. package/dist/types/contracts-api/composedAction.d.ts +3 -3
  49. package/dist/types/contracts-api/composedAction.d.ts.map +1 -1
  50. package/dist/types/contracts-api/deleteStream.d.ts +4 -4
  51. package/dist/types/contracts-api/deleteStream.d.ts.map +1 -1
  52. package/dist/types/contracts-api/deployStream.d.ts +4 -4
  53. package/dist/types/contracts-api/deployStream.d.ts.map +1 -1
  54. package/dist/types/contracts-api/primitiveAction.d.ts +3 -3
  55. package/dist/types/contracts-api/primitiveAction.d.ts.map +1 -1
  56. package/dist/types/contracts-api/roleManagement.d.ts +3 -3
  57. package/dist/types/contracts-api/roleManagement.d.ts.map +1 -1
  58. package/package.json +2 -2
@@ -24,7 +24,7 @@ __export(browserClient_exports, {
24
24
  default: () => browserClient_default
25
25
  });
26
26
  module.exports = __toCommonJS(browserClient_exports);
27
- var import_kwil_js = require("@kwilteam/kwil-js");
27
+ var import_kwil_js = require("@trufnetwork/kwil-js");
28
28
  var import_client = require("./client.cjs");
29
29
  var BrowserTNClient = class extends import_client.BaseTNClient {
30
30
  constructor(options) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/browserClient.ts"],
4
- "sourcesContent": ["import { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { WebKwil } from \"@kwilteam/kwil-js\";\nimport { BaseTNClient, TNClientOptions } from \"./client\";\n\nexport class BrowserTNClient extends BaseTNClient<EnvironmentType.BROWSER> {\n constructor(options: TNClientOptions) {\n super(options);\n this.kwilClient = new WebKwil({\n ...options,\n timeout: options.timeout ?? 30000,\n kwilProvider: options.endpoint,\n });\n }\n}\n\nexport default BrowserTNClient;\n"],
4
+ "sourcesContent": ["import { EnvironmentType } from \"@trufnetwork/kwil-js/dist/core/enums\";\nimport { WebKwil } from \"@trufnetwork/kwil-js\";\nimport { BaseTNClient, TNClientOptions } from \"./client\";\n\nexport class BrowserTNClient extends BaseTNClient<EnvironmentType.BROWSER> {\n constructor(options: TNClientOptions) {\n super(options);\n this.kwilClient = new WebKwil({\n ...options,\n timeout: options.timeout ?? 30000,\n kwilProvider: options.endpoint,\n });\n }\n}\n\nexport default BrowserTNClient;\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAwB;AACxB,oBAA8C;AAEvC,IAAM,kBAAN,cAA8B,2BAAsC;AAAA,EACzE,YAAY,SAA0B;AACpC,UAAM,OAAO;AACb,SAAK,aAAa,IAAI,uBAAQ;AAAA,MAC5B,GAAG;AAAA,MACH,SAAS,QAAQ,WAAW;AAAA,MAC5B,cAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACF;AAEA,IAAO,wBAAQ;",
6
6
  "names": []
7
7
  }
@@ -23,7 +23,7 @@ __export(client_exports, {
23
23
  BaseTNClient: () => BaseTNClient
24
24
  });
25
25
  module.exports = __toCommonJS(client_exports);
26
- var import_kwil_js = require("@kwilteam/kwil-js");
26
+ var import_kwil_js = require("@trufnetwork/kwil-js");
27
27
  var import_composedAction = require("../contracts-api/composedAction.cjs");
28
28
  var import_deployStream = require("../contracts-api/deployStream.cjs");
29
29
  var import_deleteStream = require("../contracts-api/deleteStream.cjs");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/client.ts"],
4
- "sourcesContent": ["import { Client, KwilSigner, NodeKwil, WebKwil } from \"@kwilteam/kwil-js\";\nimport { KwilConfig } from \"@kwilteam/kwil-js/dist/api_client/config\";\nimport { Kwil } from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport { EthSigner } from \"@kwilteam/kwil-js/dist/core/signature\";\nimport { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { TxInfoReceipt } from \"@kwilteam/kwil-js/dist/core/txQuery\";\nimport { ComposedAction } from \"../contracts-api/composedAction\";\nimport { deployStream } from \"../contracts-api/deployStream\";\nimport { deleteStream } from \"../contracts-api/deleteStream\";\nimport { PrimitiveAction } from \"../contracts-api/primitiveAction\";\nimport { Action } from \"../contracts-api/action\";\nimport { StreamType } from \"../contracts-api/contractValues\";\nimport { StreamLocator, TNStream } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { listStreams } from \"./listStreams\";\nimport { getLastTransactions } from \"./getLastTransactions\";\nimport { RoleManagement } from \"../contracts-api/roleManagement\";\nimport { OwnerIdentifier } from \"../types/role\";\n\nexport interface SignerInfo {\n // we need to have the address upfront to create the KwilSigner, instead of relying on the signer to return it asynchronously\n address: string;\n signer: EthSigner;\n}\n\nexport type TNClientOptions = {\n endpoint: string;\n signerInfo: SignerInfo;\n} & Omit<KwilConfig, \"kwilProvider\">;\n\nexport interface ListStreamsInput {\n dataProvider?: string;\n limit?: number;\n offset?: number;\n orderBy?: string;\n blockHeight?: number;\n}\n\n/**\n * @param dataProvider optional address; when omitted or null, returns for all providers\n * @param limitSize max rows to return (default 6, max 100)\n */\nexport interface GetLastTransactionsInput {\n dataProvider?: string;\n limitSize?: number;\n}\n\nexport abstract class BaseTNClient<T extends EnvironmentType> {\n protected kwilClient: Kwil<T> | undefined;\n protected signerInfo: SignerInfo;\n\n protected constructor(options: TNClientOptions) {\n this.signerInfo = options.signerInfo;\n }\n\n /**\n * Waits for a transaction to be mined by TN.\n * @param txHash - The transaction hash to wait for.\n * @param timeout - The timeout in milliseconds.\n * @returns A promise that resolves to the transaction info receipt.\n */\n async waitForTx(txHash: string, timeout = 12000): Promise<TxInfoReceipt> {\n return new Promise<TxInfoReceipt>(async (resolve, reject) => {\n const interval = setInterval(async () => {\n const receipt = await this.getKwilClient()\n [\"txInfoClient\"](txHash)\n .catch(() => ({ data: undefined, status: undefined }));\n switch (receipt.status) {\n case 200:\n if (receipt.data?.tx_result?.log !== undefined && receipt.data?.tx_result?.log.includes(\"ERROR\")) {\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ))\n } else {\n resolve(receipt.data!);\n }\n break;\n case undefined:\n break;\n default:\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ),\n );\n }\n }, 1000);\n setTimeout(() => {\n clearInterval(interval);\n reject(new Error(\"Transaction failed: Timeout\"));\n }, timeout);\n });\n }\n\n /**\n * Returns the Kwil signer used by the client.\n * @returns An instance of KwilSigner.\n */\n getKwilSigner(): KwilSigner {\n return new KwilSigner(\n this.signerInfo.signer,\n this.address().getAddress(),\n );\n }\n\n /**\n * Returns the Kwil client used by the client.\n * @returns An instance of Kwil.\n * @throws If the Kwil client is not initialized.\n */\n getKwilClient(): Kwil<EnvironmentType> {\n if (!this.kwilClient) {\n throw new Error(\"Kwil client not initialized\");\n }\n return this.kwilClient;\n }\n\n /**\n * Deploys a new stream.\n * @param streamId - The ID of the stream to deploy.\n * @param streamType - The type of the stream.\n * @param synchronous - Whether the deployment should be synchronous.\n * @param contractVersion\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async deployStream(\n streamId: StreamId,\n streamType: StreamType,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deployStream({\n streamId,\n streamType,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Destroys a stream.\n * @param stream - The StreamLocator of the stream to destroy.\n * @param synchronous - Whether the destruction should be synchronous.\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async destroyStream(\n stream: StreamLocator,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deleteStream({\n stream,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Loads an already deployed stream, permitting its API usage.\n * @returns An instance of IStream.\n */\n loadAction(): Action {\n return new Action(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Loads a primitive stream.\n * @returns An instance of IPrimitiveStream.\n */\n loadPrimitiveAction(): PrimitiveAction {\n return PrimitiveAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads a composed stream.\n * @returns An instance of IComposedStream.\n */\n loadComposedAction(): ComposedAction {\n return ComposedAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads the role management contract API, permitting its RBAC usage.\n */\n loadRoleManagementAction(): RoleManagement {\n return RoleManagement.fromClient(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Creates a new stream locator.\n * @param streamId - The ID of the stream.\n * @returns A StreamLocator object.\n */\n ownStreamLocator(streamId: StreamId): StreamLocator {\n return {\n streamId,\n dataProvider: this.address(),\n };\n }\n\n /**\n * Returns the address of the signer used by the client.\n * @returns An instance of EthereumAddress.\n */\n address(): EthereumAddress {\n return new EthereumAddress(this.signerInfo.address);\n }\n\n /**\n * Returns all streams from the TN network.\n * @param input - The input parameters for listing streams.\n * @returns A promise that resolves to a list of stream locators.\n */\n async getListStreams(input: ListStreamsInput): Promise<TNStream[]> {\n return listStreams(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Returns the last write activity across streams.\n * @param input - The input parameters for getting last transactions.\n * @returns A promise that resolves to a list of last transactions.\n */\n async getLastTransactions(input: GetLastTransactionsInput): Promise<any[]> {\n return getLastTransactions(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Get the default chain id for a provider. Use with caution, as this decreases the security of the TN.\n * @param provider - The provider URL.\n * @returns A promise that resolves to the chain ID.\n */\n public static async getDefaultChainId(provider: string) {\n const kwilClient = new Client({\n kwilProvider: provider,\n });\n const chainInfo = await kwilClient[\"chainInfoClient\"]();\n return chainInfo.data?.chain_id;\n }\n\n /*\n * High-level role-management helpers. These wrap the lower-level\n * RoleManagement contract calls and expose a simpler API on the\n * TN client.\n */\n\n /** Grants a role to one or more wallets. */\n async grantRole(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallets: EthereumAddress | EthereumAddress[];\n synchronous?: boolean;\n }): Promise<string> {\n const rm = this.loadRoleManagementAction();\n const walletsArr: EthereumAddress[] = Array.isArray(input.wallets)\n ? input.wallets\n : [input.wallets];\n const tx = await rm.grantRole(\n {\n owner: input.owner,\n roleName: input.roleName,\n wallets: walletsArr,\n },\n input.synchronous,\n );\n return tx.data?.tx_hash as unknown as string;\n }\n\n /** Revokes a role from one or more wallets. */\n async revokeRole(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallets: EthereumAddress | EthereumAddress[];\n synchronous?: boolean;\n }): Promise<string> {\n const rm = this.loadRoleManagementAction();\n const walletsArr: EthereumAddress[] = Array.isArray(input.wallets)\n ? input.wallets\n : [input.wallets];\n const tx = await rm.revokeRole(\n {\n owner: input.owner,\n roleName: input.roleName,\n wallets: walletsArr,\n },\n input.synchronous,\n );\n return tx.data?.tx_hash as unknown as string;\n }\n\n /**\n * Checks if a wallet is member of a role.\n * Returns true if the wallet is a member.\n */\n async isMemberOf(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallet: EthereumAddress;\n }): Promise<boolean> {\n const rm = this.loadRoleManagementAction();\n const res = await rm.areMembersOf({\n owner: input.owner,\n roleName: input.roleName,\n wallets: [input.wallet],\n });\n return res.length > 0 && res[0].isMember;\n }\n\n /**\n * Lists role members \u2013 currently unsupported in the\n * smart-contract layer.\n */\n async listRoleMembers(input: {\n owner: OwnerIdentifier;\n roleName: string;\n limit?: number;\n offset?: number;\n }): Promise<import(\"../types/role\").RoleMember[]> {\n const rm = this.loadRoleManagementAction();\n return rm.listRoleMembers({\n owner: input.owner,\n roleName: input.roleName,\n limit: input.limit,\n offset: input.offset,\n });\n }\n}\n"],
4
+ "sourcesContent": ["import { Client, KwilSigner, NodeKwil, WebKwil } from \"@trufnetwork/kwil-js\";\nimport { KwilConfig } from \"@trufnetwork/kwil-js/dist/api_client/config\";\nimport { Kwil } from \"@trufnetwork/kwil-js/dist/client/kwil\";\nimport { EthSigner } from \"@trufnetwork/kwil-js/dist/core/signature\";\nimport { EnvironmentType } from \"@trufnetwork/kwil-js/dist/core/enums\";\nimport { GenericResponse } from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport { TxInfoReceipt } from \"@trufnetwork/kwil-js/dist/core/txQuery\";\nimport { ComposedAction } from \"../contracts-api/composedAction\";\nimport { deployStream } from \"../contracts-api/deployStream\";\nimport { deleteStream } from \"../contracts-api/deleteStream\";\nimport { PrimitiveAction } from \"../contracts-api/primitiveAction\";\nimport { Action } from \"../contracts-api/action\";\nimport { StreamType } from \"../contracts-api/contractValues\";\nimport { StreamLocator, TNStream } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { listStreams } from \"./listStreams\";\nimport { getLastTransactions } from \"./getLastTransactions\";\nimport { RoleManagement } from \"../contracts-api/roleManagement\";\nimport { OwnerIdentifier } from \"../types/role\";\n\nexport interface SignerInfo {\n // we need to have the address upfront to create the KwilSigner, instead of relying on the signer to return it asynchronously\n address: string;\n signer: EthSigner;\n}\n\nexport type TNClientOptions = {\n endpoint: string;\n signerInfo: SignerInfo;\n} & Omit<KwilConfig, \"kwilProvider\">;\n\nexport interface ListStreamsInput {\n dataProvider?: string;\n limit?: number;\n offset?: number;\n orderBy?: string;\n blockHeight?: number;\n}\n\n/**\n * @param dataProvider optional address; when omitted or null, returns for all providers\n * @param limitSize max rows to return (default 6, max 100)\n */\nexport interface GetLastTransactionsInput {\n dataProvider?: string;\n limitSize?: number;\n}\n\nexport abstract class BaseTNClient<T extends EnvironmentType> {\n protected kwilClient: Kwil<T> | undefined;\n protected signerInfo: SignerInfo;\n\n protected constructor(options: TNClientOptions) {\n this.signerInfo = options.signerInfo;\n }\n\n /**\n * Waits for a transaction to be mined by TN.\n * @param txHash - The transaction hash to wait for.\n * @param timeout - The timeout in milliseconds.\n * @returns A promise that resolves to the transaction info receipt.\n */\n async waitForTx(txHash: string, timeout = 12000): Promise<TxInfoReceipt> {\n return new Promise<TxInfoReceipt>(async (resolve, reject) => {\n const interval = setInterval(async () => {\n const receipt = await this.getKwilClient()\n [\"txInfoClient\"](txHash)\n .catch(() => ({ data: undefined, status: undefined }));\n switch (receipt.status) {\n case 200:\n if (receipt.data?.tx_result?.log !== undefined && receipt.data?.tx_result?.log.includes(\"ERROR\")) {\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ))\n } else {\n resolve(receipt.data!);\n }\n break;\n case undefined:\n break;\n default:\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ),\n );\n }\n }, 1000);\n setTimeout(() => {\n clearInterval(interval);\n reject(new Error(\"Transaction failed: Timeout\"));\n }, timeout);\n });\n }\n\n /**\n * Returns the Kwil signer used by the client.\n * @returns An instance of KwilSigner.\n */\n getKwilSigner(): KwilSigner {\n return new KwilSigner(\n this.signerInfo.signer,\n this.address().getAddress(),\n );\n }\n\n /**\n * Returns the Kwil client used by the client.\n * @returns An instance of Kwil.\n * @throws If the Kwil client is not initialized.\n */\n getKwilClient(): Kwil<EnvironmentType> {\n if (!this.kwilClient) {\n throw new Error(\"Kwil client not initialized\");\n }\n return this.kwilClient;\n }\n\n /**\n * Deploys a new stream.\n * @param streamId - The ID of the stream to deploy.\n * @param streamType - The type of the stream.\n * @param synchronous - Whether the deployment should be synchronous.\n * @param contractVersion\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async deployStream(\n streamId: StreamId,\n streamType: StreamType,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deployStream({\n streamId,\n streamType,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Destroys a stream.\n * @param stream - The StreamLocator of the stream to destroy.\n * @param synchronous - Whether the destruction should be synchronous.\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async destroyStream(\n stream: StreamLocator,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deleteStream({\n stream,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Loads an already deployed stream, permitting its API usage.\n * @returns An instance of IStream.\n */\n loadAction(): Action {\n return new Action(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Loads a primitive stream.\n * @returns An instance of IPrimitiveStream.\n */\n loadPrimitiveAction(): PrimitiveAction {\n return PrimitiveAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads a composed stream.\n * @returns An instance of IComposedStream.\n */\n loadComposedAction(): ComposedAction {\n return ComposedAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads the role management contract API, permitting its RBAC usage.\n */\n loadRoleManagementAction(): RoleManagement {\n return RoleManagement.fromClient(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Creates a new stream locator.\n * @param streamId - The ID of the stream.\n * @returns A StreamLocator object.\n */\n ownStreamLocator(streamId: StreamId): StreamLocator {\n return {\n streamId,\n dataProvider: this.address(),\n };\n }\n\n /**\n * Returns the address of the signer used by the client.\n * @returns An instance of EthereumAddress.\n */\n address(): EthereumAddress {\n return new EthereumAddress(this.signerInfo.address);\n }\n\n /**\n * Returns all streams from the TN network.\n * @param input - The input parameters for listing streams.\n * @returns A promise that resolves to a list of stream locators.\n */\n async getListStreams(input: ListStreamsInput): Promise<TNStream[]> {\n return listStreams(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Returns the last write activity across streams.\n * @param input - The input parameters for getting last transactions.\n * @returns A promise that resolves to a list of last transactions.\n */\n async getLastTransactions(input: GetLastTransactionsInput): Promise<any[]> {\n return getLastTransactions(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Get the default chain id for a provider. Use with caution, as this decreases the security of the TN.\n * @param provider - The provider URL.\n * @returns A promise that resolves to the chain ID.\n */\n public static async getDefaultChainId(provider: string) {\n const kwilClient = new Client({\n kwilProvider: provider,\n });\n const chainInfo = await kwilClient[\"chainInfoClient\"]();\n return chainInfo.data?.chain_id;\n }\n\n /*\n * High-level role-management helpers. These wrap the lower-level\n * RoleManagement contract calls and expose a simpler API on the\n * TN client.\n */\n\n /** Grants a role to one or more wallets. */\n async grantRole(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallets: EthereumAddress | EthereumAddress[];\n synchronous?: boolean;\n }): Promise<string> {\n const rm = this.loadRoleManagementAction();\n const walletsArr: EthereumAddress[] = Array.isArray(input.wallets)\n ? input.wallets\n : [input.wallets];\n const tx = await rm.grantRole(\n {\n owner: input.owner,\n roleName: input.roleName,\n wallets: walletsArr,\n },\n input.synchronous,\n );\n return tx.data?.tx_hash as unknown as string;\n }\n\n /** Revokes a role from one or more wallets. */\n async revokeRole(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallets: EthereumAddress | EthereumAddress[];\n synchronous?: boolean;\n }): Promise<string> {\n const rm = this.loadRoleManagementAction();\n const walletsArr: EthereumAddress[] = Array.isArray(input.wallets)\n ? input.wallets\n : [input.wallets];\n const tx = await rm.revokeRole(\n {\n owner: input.owner,\n roleName: input.roleName,\n wallets: walletsArr,\n },\n input.synchronous,\n );\n return tx.data?.tx_hash as unknown as string;\n }\n\n /**\n * Checks if a wallet is member of a role.\n * Returns true if the wallet is a member.\n */\n async isMemberOf(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallet: EthereumAddress;\n }): Promise<boolean> {\n const rm = this.loadRoleManagementAction();\n const res = await rm.areMembersOf({\n owner: input.owner,\n roleName: input.roleName,\n wallets: [input.wallet],\n });\n return res.length > 0 && res[0].isMember;\n }\n\n /**\n * Lists role members \u2013 currently unsupported in the\n * smart-contract layer.\n */\n async listRoleMembers(input: {\n owner: OwnerIdentifier;\n roleName: string;\n limit?: number;\n offset?: number;\n }): Promise<import(\"../types/role\").RoleMember[]> {\n const rm = this.loadRoleManagementAction();\n return rm.listRoleMembers({\n owner: input.owner,\n roleName: input.roleName,\n limit: input.limit,\n offset: input.offset,\n });\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/getLastTransactions.ts"],
4
- "sourcesContent": ["import { WebKwil, NodeKwil, KwilSigner } from \"@kwilteam/kwil-js\";\r\nimport { GetLastTransactionsInput } from \"./client\";\r\nimport { LastTransaction } from \"../types/transaction\";\r\n\r\nconst INDEXER_BASE = \"https://indexer.infra.truf.network\";\r\nconst RPC_URL = \"https://gateway.mainnet.truf.network/rpc/v1\";\r\n\r\nexport async function getLastTransactions(\r\n kwilClient: WebKwil | NodeKwil,\r\n kwilSigner: KwilSigner,\r\n input: GetLastTransactionsInput\r\n): Promise<LastTransaction[]> {\r\n // 1) call your SQL action\r\n const res = await kwilClient.call(\r\n {\r\n name: \"get_last_transactions\",\r\n namespace: \"main\",\r\n inputs: {\r\n $data_provider: input.dataProvider ?? null,\r\n $limit_size: input.limitSize ?? 6,\r\n },\r\n },\r\n kwilSigner\r\n );\r\n const rows = (res.data?.result as { created_at: number; method: string }[]) || [];\r\n\r\n // 2) build per-block Promises\r\n const tasks = rows.map(({ created_at, method }) => {\r\n const blockHeight = Number(created_at);\r\n if (Number.isNaN(blockHeight)) {\r\n return Promise.reject(new Error(`Invalid block height returned: ${created_at}`));\r\n }\r\n\r\n const txUrl = `${INDEXER_BASE}/v0/chain/transactions`\r\n + `?from-block=${blockHeight}&to-block=${blockHeight}`\r\n + `&order=asc&limit=1`;\r\n\r\n // INDEXER: always return a { sender, hash } object\r\n const txPromise = fetch(txUrl).then(async (resp) => {\r\n if (!resp.ok) throw new Error(`Indexer fetch failed: ${resp.status}`);\r\n const json = (await resp.json()) as {\r\n ok: boolean;\r\n data: Array<{ hash: string; sender: string }>;\r\n };\r\n if (!json.ok || json.data.length === 0) {\r\n return { sender: \"(unknown)\", hash: \"(unknown)\" };\r\n }\r\n const { hash, sender } = json.data[0];\r\n return { sender, hash };\r\n });\r\n\r\n // RPC: get stamp_ms\r\n const rpcPromise = fetch(RPC_URL, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({\r\n jsonrpc: \"2.0\",\r\n method: \"chain.block\",\r\n params: { height: blockHeight },\r\n id: 1,\r\n }),\r\n }).then(async (resp) => {\r\n if (!resp.ok) {\r\n const txt = await resp.text();\r\n throw new Error(`RPC fetch failed: ${resp.status} \u2013 ${txt}`);\r\n }\r\n const rpc = (await resp.json()) as {\r\n result: { block: { header: { stamp_ms: number } } };\r\n };\r\n return rpc.result.block.header.stamp_ms;\r\n });\r\n\r\n // wait for both\r\n return Promise.all([txPromise, rpcPromise]).then(\r\n ([{ sender, hash }, stampMs]) => ({\r\n blockHeight,\r\n method,\r\n sender,\r\n transactionHash: hash,\r\n stampMs,\r\n })\r\n );\r\n });\r\n\r\n // 3) await all in parallel\r\n return Promise.all(tasks);\r\n}\r\n"],
4
+ "sourcesContent": ["import { WebKwil, NodeKwil, KwilSigner } from \"@trufnetwork/kwil-js\";\r\nimport { GetLastTransactionsInput } from \"./client\";\r\nimport { LastTransaction } from \"../types/transaction\";\r\n\r\nconst INDEXER_BASE = \"https://indexer.infra.truf.network\";\r\nconst RPC_URL = \"https://gateway.mainnet.truf.network/rpc/v1\";\r\n\r\nexport async function getLastTransactions(\r\n kwilClient: WebKwil | NodeKwil,\r\n kwilSigner: KwilSigner,\r\n input: GetLastTransactionsInput\r\n): Promise<LastTransaction[]> {\r\n // 1) call your SQL action\r\n const res = await kwilClient.call(\r\n {\r\n name: \"get_last_transactions\",\r\n namespace: \"main\",\r\n inputs: {\r\n $data_provider: input.dataProvider ?? null,\r\n $limit_size: input.limitSize ?? 6,\r\n },\r\n },\r\n kwilSigner\r\n );\r\n const rows = (res.data?.result as { created_at: number; method: string }[]) || [];\r\n\r\n // 2) build per-block Promises\r\n const tasks = rows.map(({ created_at, method }) => {\r\n const blockHeight = Number(created_at);\r\n if (Number.isNaN(blockHeight)) {\r\n return Promise.reject(new Error(`Invalid block height returned: ${created_at}`));\r\n }\r\n\r\n const txUrl = `${INDEXER_BASE}/v0/chain/transactions`\r\n + `?from-block=${blockHeight}&to-block=${blockHeight}`\r\n + `&order=asc&limit=1`;\r\n\r\n // INDEXER: always return a { sender, hash } object\r\n const txPromise = fetch(txUrl).then(async (resp) => {\r\n if (!resp.ok) throw new Error(`Indexer fetch failed: ${resp.status}`);\r\n const json = (await resp.json()) as {\r\n ok: boolean;\r\n data: Array<{ hash: string; sender: string }>;\r\n };\r\n if (!json.ok || json.data.length === 0) {\r\n return { sender: \"(unknown)\", hash: \"(unknown)\" };\r\n }\r\n const { hash, sender } = json.data[0];\r\n return { sender, hash };\r\n });\r\n\r\n // RPC: get stamp_ms\r\n const rpcPromise = fetch(RPC_URL, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({\r\n jsonrpc: \"2.0\",\r\n method: \"chain.block\",\r\n params: { height: blockHeight },\r\n id: 1,\r\n }),\r\n }).then(async (resp) => {\r\n if (!resp.ok) {\r\n const txt = await resp.text();\r\n throw new Error(`RPC fetch failed: ${resp.status} \u2013 ${txt}`);\r\n }\r\n const rpc = (await resp.json()) as {\r\n result: { block: { header: { stamp_ms: number } } };\r\n };\r\n return rpc.result.block.header.stamp_ms;\r\n });\r\n\r\n // wait for both\r\n return Promise.all([txPromise, rpcPromise]).then(\r\n ([{ sender, hash }, stampMs]) => ({\r\n blockHeight,\r\n method,\r\n sender,\r\n transactionHash: hash,\r\n stampMs,\r\n })\r\n );\r\n });\r\n\r\n // 3) await all in parallel\r\n return Promise.all(tasks);\r\n}\r\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,IAAM,eAAe;AACrB,IAAM,UAAe;AAErB,eAAsB,oBAClB,YACA,YACA,OAC0B;AAE1B,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,MACI,MAAM;AAAA,MACN,WAAW;AAAA,MACX,QAAQ;AAAA,QACJ,gBAAgB,MAAM,gBAAgB;AAAA,QACtC,aAAa,MAAM,aAAa;AAAA,MACpC;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AACA,QAAM,OAAQ,IAAI,MAAM,UAAuD,CAAC;AAGhF,QAAM,QAAQ,KAAK,IAAI,CAAC,EAAE,YAAY,OAAO,MAAM;AAC/C,UAAM,cAAc,OAAO,UAAU;AACrC,QAAI,OAAO,MAAM,WAAW,GAAG;AAC3B,aAAO,QAAQ,OAAO,IAAI,MAAM,kCAAkC,UAAU,EAAE,CAAC;AAAA,IACnF;AAEA,UAAM,QAAQ,GAAG,YAAY,qCACR,WAAW,aAAa,WAAW;AAIxD,UAAM,YAAY,MAAM,KAAK,EAAE,KAAK,OAAO,SAAS;AAChD,UAAI,CAAC,KAAK,GAAI,OAAM,IAAI,MAAM,yBAAyB,KAAK,MAAM,EAAE;AACpE,YAAM,OAAQ,MAAM,KAAK,KAAK;AAI9B,UAAI,CAAC,KAAK,MAAM,KAAK,KAAK,WAAW,GAAG;AACpC,eAAO,EAAE,QAAQ,aAAa,MAAM,YAAY;AAAA,MACpD;AACA,YAAM,EAAE,MAAM,OAAO,IAAI,KAAK,KAAK,CAAC;AACpC,aAAO,EAAE,QAAQ,KAAK;AAAA,IAC1B,CAAC;AAGD,UAAM,aAAa,MAAM,SAAS;AAAA,MAC9B,QAAS;AAAA,MACT,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC9C,MAAS,KAAK,UAAU;AAAA,QACpB,SAAS;AAAA,QACT,QAAS;AAAA,QACT,QAAS,EAAE,QAAQ,YAAY;AAAA,QAC/B,IAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC,EAAE,KAAK,OAAO,SAAS;AACpB,UAAI,CAAC,KAAK,IAAI;AACV,cAAM,MAAM,MAAM,KAAK,KAAK;AAC5B,cAAM,IAAI,MAAM,qBAAqB,KAAK,MAAM,WAAM,GAAG,EAAE;AAAA,MAC/D;AACA,YAAM,MAAO,MAAM,KAAK,KAAK;AAG7B,aAAO,IAAI,OAAO,MAAM,OAAO;AAAA,IACnC,CAAC;AAGD,WAAO,QAAQ,IAAI,CAAC,WAAW,UAAU,CAAC,EAAE;AAAA,MACxC,CAAC,CAAC,EAAE,QAAQ,KAAK,GAAG,OAAO,OAAO;AAAA,QAC9B;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,QACjB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAGD,SAAO,QAAQ,IAAI,KAAK;AAC5B;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/listStreams.ts"],
4
- "sourcesContent": ["import {TNStream} from \"../types/stream\";\nimport {EthereumAddress} from \"../util/EthereumAddress\";\nimport {StreamId} from \"../util/StreamId\";\nimport {Database} from \"@kwilteam/kwil-js/dist/core/database\";\nimport {ListStreamsInput} from \"./client\";\nimport {KwilSigner, NodeKwil, WebKwil} from \"@kwilteam/kwil-js\";\n\n/**\n * List all streams from the TN network.\n * @param kwilClient - The Kwil client.\n * @param kwilSigner - The Kwil signer.\n * @param input - The input parameters for listing streams.\n * @returns A list of stream locators.\n */\nexport async function listStreams(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n input: ListStreamsInput\n): Promise<TNStream[]> {\n const result = await kwilClient.call({\n inputs: {\n $data_provider: input.dataProvider,\n $limit: input.limit,\n $offset: input.offset,\n $order_by: input.orderBy,\n $block_height: input.blockHeight,\n },\n name: \"list_streams\",\n namespace: \"main\",\n }, kwilSigner);\n\n return await Promise.all(\n (result.data?.result as {\n data_provider: string;\n stream_id: string;\n stream_type: string;\n created_at: number;\n }[]).map(async (database) => ({\n streamId: await StreamId.generate(database.stream_id),\n dataProvider: new EthereumAddress(database.data_provider),\n streamType: database.stream_type,\n createdAt: database.created_at\n }))\n );\n}"],
4
+ "sourcesContent": ["import {TNStream} from \"../types/stream\";\nimport {EthereumAddress} from \"../util/EthereumAddress\";\nimport {StreamId} from \"../util/StreamId\";\nimport {Database} from \"@trufnetwork/kwil-js/dist/core/database\";\nimport {ListStreamsInput} from \"./client\";\nimport {KwilSigner, NodeKwil, WebKwil} from \"@trufnetwork/kwil-js\";\n\n/**\n * List all streams from the TN network.\n * @param kwilClient - The Kwil client.\n * @param kwilSigner - The Kwil signer.\n * @param input - The input parameters for listing streams.\n * @returns A list of stream locators.\n */\nexport async function listStreams(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n input: ListStreamsInput\n): Promise<TNStream[]> {\n const result = await kwilClient.call({\n inputs: {\n $data_provider: input.dataProvider,\n $limit: input.limit,\n $offset: input.offset,\n $order_by: input.orderBy,\n $block_height: input.blockHeight,\n },\n name: \"list_streams\",\n namespace: \"main\",\n }, kwilSigner);\n\n return await Promise.all(\n (result.data?.result as {\n data_provider: string;\n stream_id: string;\n stream_type: string;\n created_at: number;\n }[]).map(async (database) => ({\n streamId: await StreamId.generate(database.stream_id),\n dataProvider: new EthereumAddress(database.data_provider),\n streamType: database.stream_type,\n createdAt: database.created_at\n }))\n );\n}"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,6BAA8B;AAC9B,sBAAuB;AAYvB,eAAsB,YACpB,YACA,YACA,OACqB;AACnB,QAAM,SAAS,MAAM,WAAW,KAAK;AAAA,IACjC,QAAQ;AAAA,MACJ,gBAAgB,MAAM;AAAA,MACtB,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,WAAW,MAAM;AAAA,MACjB,eAAe,MAAM;AAAA,IACzB;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,EACf,GAAG,UAAU;AAEb,SAAO,MAAM,QAAQ;AAAA,KAChB,OAAO,MAAM,QAKT,IAAI,OAAO,cAAc;AAAA,MAC1B,UAAU,MAAM,yBAAS,SAAS,SAAS,SAAS;AAAA,MACpD,cAAc,IAAI,uCAAgB,SAAS,aAAa;AAAA,MACxD,YAAY,SAAS;AAAA,MACrB,WAAW,SAAS;AAAA,IACxB,EAAE;AAAA,EACN;AACJ;",
6
6
  "names": []
7
7
  }
@@ -24,7 +24,7 @@ __export(nodeClient_exports, {
24
24
  default: () => nodeClient_default
25
25
  });
26
26
  module.exports = __toCommonJS(nodeClient_exports);
27
- var import_kwil_js = require("@kwilteam/kwil-js");
27
+ var import_kwil_js = require("@trufnetwork/kwil-js");
28
28
  var import_client = require("./client.cjs");
29
29
  var NodeTNClient = class extends import_client.BaseTNClient {
30
30
  constructor(options) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/nodeClient.ts"],
4
- "sourcesContent": ["import { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { NodeKwil } from \"@kwilteam/kwil-js\";\nimport { BaseTNClient, TNClientOptions } from \"./client\";\n\nexport class NodeTNClient extends BaseTNClient<EnvironmentType.NODE> {\n constructor(options: TNClientOptions) {\n super(options);\n this.kwilClient = new NodeKwil({\n ...options,\n timeout: options.timeout ?? 30000,\n kwilProvider: options.endpoint,\n });\n }\n}\n\nexport default NodeTNClient;\n"],
4
+ "sourcesContent": ["import { EnvironmentType } from \"@trufnetwork/kwil-js/dist/core/enums\";\nimport { NodeKwil } from \"@trufnetwork/kwil-js\";\nimport { BaseTNClient, TNClientOptions } from \"./client\";\n\nexport class NodeTNClient extends BaseTNClient<EnvironmentType.NODE> {\n constructor(options: TNClientOptions) {\n super(options);\n this.kwilClient = new NodeKwil({\n ...options,\n timeout: options.timeout ?? 30000,\n kwilProvider: options.endpoint,\n });\n }\n}\n\nexport default NodeTNClient;\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAAyB;AACzB,oBAA8C;AAEvC,IAAM,eAAN,cAA2B,2BAAmC;AAAA,EACnE,YAAY,SAA0B;AACpC,UAAM,OAAO;AACb,SAAK,aAAa,IAAI,wBAAS;AAAA,MAC7B,GAAG;AAAA,MACH,SAAS,QAAQ,WAAW;AAAA,MAC5B,cAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACF;AAEA,IAAO,qBAAQ;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/action.ts"],
4
- "sourcesContent": ["import {KwilSigner, NodeKwil, WebKwil} from \"@kwilteam/kwil-js\";\nimport { ActionBody } from '@kwilteam/kwil-js/dist/core/action';\nimport {NamedParams} from \"@kwilteam/kwil-js/dist/core/action\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { Either } from \"monads-io\";\nimport { DateString } from \"../types/other\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { head } from \"../util/head\";\nimport { StreamId } from \"../util/StreamId\";\nimport { toVisibilityEnum, VisibilityEnum } from \"../util/visibility\";\nimport {\n MetadataKey,\n MetadataKeyValueMap,\n MetadataTableKey,\n MetadataValueTypeForKey,\n StreamType,\n} from \"./contractValues\";\nimport {ValueType} from \"@kwilteam/kwil-js/dist/utils/types\";\n\nexport interface GetRecordInput {\n stream: StreamLocator;\n from?: number;\n to?: number;\n frozenAt?: number;\n baseTime?: DateString | number;\n prefix?: string;\n}\n\nexport interface GetFirstRecordInput {\n stream: StreamLocator;\n after?: number;\n frozenAt?: number;\n}\n\nexport interface StreamRecord {\n eventTime: number;\n value: string;\n}\n\nexport interface GetIndexChangeInput extends GetRecordInput {\n timeInterval: number;\n}\n\nexport class Action {\n protected kwilClient: WebKwil | NodeKwil;\n protected kwilSigner: KwilSigner;\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n this.kwilClient = kwilClient;\n this.kwilSigner = kwilSigner;\n }\n\n /**\n * Executes a method on the stream\n */\n protected async executeWithNamedParams(\n method: string,\n inputs: NamedParams[],\n ): Promise<GenericResponse<TxReceipt>> {\n return this.kwilClient.execute({\n namespace: \"main\",\n name: method,\n inputs,\n description: `TN SDK - Executing method on stream: ${method}`,\n },\n this.kwilSigner,\n );\n }\n\n /**\n * Executes a method on the stream\n */\n protected async executeWithActionBody(\n inputs: ActionBody,\n synchronous: boolean = false,\n ): Promise<GenericResponse<TxReceipt>> {\n return this.kwilClient.execute(inputs, this.kwilSigner, synchronous);\n }\n\n /**\n * Calls a method on the stream\n */\n protected async call<T>(\n method: string,\n inputs: NamedParams,\n ): Promise<Either<number, T>> {\n const result = await this.kwilClient.call(\n {\n namespace: \"main\",\n name: method,\n inputs: inputs,\n },\n this.kwilSigner,\n );\n\n if (result.status !== 200) {\n return Either.left(result.status);\n }\n\n return Either.right(result.data?.result as T);\n }\n\n /**\n * Returns the records of the stream within the given date range\n */\n public async getRecord(input: GetRecordInput): Promise<StreamRecord[]> {\n const prefix = input.prefix ? input.prefix : \"\"\n const result = await this.call<{ event_time: number; value: string }[]>(\n prefix + \"get_record\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the index of the stream within the given date range\n */\n public async getIndex(input: GetRecordInput): Promise<StreamRecord[]> {\n const prefix = input.prefix ? input.prefix : \"\"\n const result = await this.call<{ event_time: number; value: string }[]>(\n prefix + \"get_index\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n $base_time: input.baseTime,\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the type of the stream\n */\n public async getType(\n stream: StreamLocator,\n ): Promise<StreamType> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.TypeKey);\n\n if (!result) {\n throw new Error(\"Failed to get stream type\");\n }\n\n const type = head(result).unwrapOrElse(() => {\n throw new Error(\n \"Failed to get stream type. Check if the stream is initialized.\",\n );\n });\n\n const validTypes = [StreamType.Primitive, StreamType.Composed];\n\n if (!validTypes.includes(type.value as StreamType)) {\n throw new Error(`Invalid stream type: ${type.value}`);\n }\n\n return type.value as StreamType;\n }\n\n /**\n * Returns the first record of the stream\n */\n public async getFirstRecord(\n input: GetFirstRecordInput,\n ): Promise<StreamRecord | null> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n \"get_first_record\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $after: input.after,\n $frozen_at: input.frozenAt,\n }\n );\n\n return result\n .mapRight(head)\n .mapRight((result) =>\n result\n .map((result) => ({\n eventTime: result.event_time,\n value: result.value,\n }))\n .unwrapOr(null),\n )\n .throw();\n }\n\n protected async setMetadata<K extends MetadataKey>(\n stream: StreamLocator,\n key: K,\n value: MetadataValueTypeForKey<K>,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithNamedParams(\"insert_metadata\", [{\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $key: key,\n $value: value,\n $val_type: MetadataKeyValueMap[key],\n },\n ]);\n }\n\n protected async getMetadata<K extends MetadataKey>(\n stream: StreamLocator,\n key: K,\n // onlyLatest: boolean = true,\n filteredRef?: string,\n limit?: number,\n offset?: number,\n orderBy?: string,\n ): Promise<\n { rowId: string; value: MetadataValueTypeForKey<K>; createdAt: number }[]\n > {\n const result = await this.call<\n {\n row_id: string;\n value_i: number;\n value_f: string;\n value_b: boolean;\n value_s: string;\n value_ref: string;\n created_at: number;\n }[]\n >(\"get_metadata\", {\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $key: key,\n $ref: filteredRef,\n $limit: limit,\n $offset: offset,\n $order_by: orderBy,\n },\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n rowId: row.row_id,\n value: row[\n MetadataTableKey[MetadataKeyValueMap[key as MetadataKey]]\n ] as MetadataValueTypeForKey<K>,\n createdAt: row.created_at,\n })),\n )\n .throw();\n }\n\n /**\n * Sets the read visibility of the stream\n */\n public async setReadVisibility(\n stream: StreamLocator,\n visibility: VisibilityEnum,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.ReadVisibilityKey,\n visibility.toString(),\n );\n }\n\n /**\n * Returns the read visibility of the stream\n */\n public async getReadVisibility(\n stream: StreamLocator,\n ): Promise<VisibilityEnum | null> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.ReadVisibilityKey);\n\n return head(result)\n .map((row) => toVisibilityEnum(row.value))\n .unwrapOr(null);\n }\n\n /**\n * Sets the compose visibility of the stream\n */\n public async setComposeVisibility(\n stream: StreamLocator,\n visibility: VisibilityEnum,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.ComposeVisibilityKey,\n visibility.toString(),\n );\n }\n\n /**\n * Returns the compose visibility of the stream\n */\n public async getComposeVisibility(\n stream: StreamLocator,\n ): Promise<VisibilityEnum | null> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.ComposeVisibilityKey);\n\n return head(result)\n .map((row) => toVisibilityEnum(row.value))\n .unwrapOr(null);\n }\n\n /**\n * Allows a wallet to read the stream\n */\n public async allowReadWallet(\n stream: StreamLocator,\n wallet: EthereumAddress,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.AllowReadWalletKey,\n wallet.getAddress(),\n );\n }\n\n /**\n * Disables a wallet from reading the stream\n */\n public async disableReadWallet(\n stream: StreamLocator,\n wallet: EthereumAddress,\n ): Promise<GenericResponse<TxReceipt>> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowReadWalletKey,\n wallet.getAddress(),\n );\n\n const row_id = head(result)\n .map((row) => row.rowId)\n .unwrapOr(null);\n\n if (!row_id) {\n throw new Error(\"Wallet not found in allowed list\");\n }\n\n return await this.disableMetadata(stream, row_id);\n }\n\n /**\n * Allows a stream to use this stream as child\n */\n public async allowComposeStream(\n stream: StreamLocator,\n wallet: StreamLocator,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey,\n wallet.streamId.getId(),\n );\n }\n\n /**\n * Disables a stream from using this stream as child\n */\n public async disableComposeStream(\n stream: StreamLocator,\n wallet: StreamLocator,\n ): Promise<GenericResponse<TxReceipt>> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey,\n wallet.toString(),\n );\n\n const row_id = head(result)\n .map((row) => row.rowId)\n .unwrapOr(null);\n\n if (!row_id) {\n throw new Error(\"Stream not found in allowed list\");\n }\n\n return await this.disableMetadata(stream, row_id);\n }\n\n protected async disableMetadata(\n stream: StreamLocator,\n rowId: string,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithNamedParams(\"disable_metadata\", [{\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $row_id: rowId,\n }]);\n }\n\n /**\n * Returns the wallets allowed to read the stream\n */\n public async getAllowedReadWallets(\n stream: StreamLocator,\n ): Promise<EthereumAddress[]> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowReadWalletKey);\n\n return result\n .filter((row) => row.value)\n .map((row) => new EthereumAddress(row.value));\n }\n\n /**\n * Returns the streams allowed to compose the stream\n */\n public async getAllowedComposeStreams(\n stream: StreamLocator,\n ): Promise<StreamLocator[]> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey);\n\n return result\n .filter((row) => row.value)\n .map((row) => {\n const [streamId, dataProvider] = row.value.split(\":\");\n return {\n streamId: StreamId.fromString(streamId).throw(),\n dataProvider: new EthereumAddress(dataProvider),\n };\n });\n }\n\n /**\n * Returns the index change of the stream within the given date range\n */\n public async getIndexChange(\n input: GetIndexChangeInput,\n ): Promise<StreamRecord[]> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n \"get_index_change\", \n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n $base_time: input.baseTime,\n $time_interval: input.timeInterval,\n }\n );\n\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * A custom method that accepts the procedure name and the input of GetRecordInput\n * Returns the result of the procedure in the same format as StreamRecord\n * I.e. a custom procedure named \"get_price\" that returns a list of date_value and value\n * can be called with customGetProcedure(\"get_price\", { dateFrom: \"2021-01-01\", dateTo: \"2021-01-31\" })\n */\n public async customGetProcedure(\n procedure: string,\n input: GetRecordInput,\n ): Promise<StreamRecord[]> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n procedure,\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n\n /**\n * A custom method that accepts the procedure name and custom input of type Record<string, any>\n * Returns the result of the procedure in the same format as StreamRecord\n * I.e. a custom procedure named \"get_custom_index\" that returns a list of date_value and value\n * can be called with customProcedureWithArgs(\"get_custom_index\", { $customArg1: \"value1\", $customArg2: \"value2\" })\n * where $customArg1 and $customArg2 are the arguments of the procedure\n * @param procedure\n * @param args\n */\n public async customProcedureWithArgs(\n procedure: string,\n args: Record<string, ValueType | ValueType[]>,\n ){\n const result = await this.call<{ event_time: number; value: string }[]>(\n procedure,\n args\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the size of database\n */\n public async getDatabaseSize(): Promise<BigInt> {\n const result = await this.call<{ database_size: BigInt }[]>(\"get_database_size\", {})\n return result\n .map((rows) => {\n const raw = rows[0].database_size;\n const asBigInt = BigInt(raw.toString());\n return asBigInt;\n }).throw();\n }\n}\n"],
4
+ "sourcesContent": ["import {KwilSigner, NodeKwil, WebKwil} from \"@trufnetwork/kwil-js\";\nimport { ActionBody } from '@trufnetwork/kwil-js/dist/core/action';\nimport {NamedParams} from \"@trufnetwork/kwil-js/dist/core/action\";\nimport { GenericResponse } from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport { Either } from \"monads-io\";\nimport { DateString } from \"../types/other\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { head } from \"../util/head\";\nimport { StreamId } from \"../util/StreamId\";\nimport { toVisibilityEnum, VisibilityEnum } from \"../util/visibility\";\nimport {\n MetadataKey,\n MetadataKeyValueMap,\n MetadataTableKey,\n MetadataValueTypeForKey,\n StreamType,\n} from \"./contractValues\";\nimport {ValueType} from \"@trufnetwork/kwil-js/dist/utils/types\";\n\nexport interface GetRecordInput {\n stream: StreamLocator;\n from?: number;\n to?: number;\n frozenAt?: number;\n baseTime?: DateString | number;\n prefix?: string;\n}\n\nexport interface GetFirstRecordInput {\n stream: StreamLocator;\n after?: number;\n frozenAt?: number;\n}\n\nexport interface StreamRecord {\n eventTime: number;\n value: string;\n}\n\nexport interface GetIndexChangeInput extends GetRecordInput {\n timeInterval: number;\n}\n\nexport class Action {\n protected kwilClient: WebKwil | NodeKwil;\n protected kwilSigner: KwilSigner;\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n this.kwilClient = kwilClient;\n this.kwilSigner = kwilSigner;\n }\n\n /**\n * Executes a method on the stream\n */\n protected async executeWithNamedParams(\n method: string,\n inputs: NamedParams[],\n ): Promise<GenericResponse<TxReceipt>> {\n return this.kwilClient.execute({\n namespace: \"main\",\n name: method,\n inputs,\n description: `TN SDK - Executing method on stream: ${method}`,\n },\n this.kwilSigner,\n );\n }\n\n /**\n * Executes a method on the stream\n */\n protected async executeWithActionBody(\n inputs: ActionBody,\n synchronous: boolean = false,\n ): Promise<GenericResponse<TxReceipt>> {\n return this.kwilClient.execute(inputs, this.kwilSigner, synchronous);\n }\n\n /**\n * Calls a method on the stream\n */\n protected async call<T>(\n method: string,\n inputs: NamedParams,\n ): Promise<Either<number, T>> {\n const result = await this.kwilClient.call(\n {\n namespace: \"main\",\n name: method,\n inputs: inputs,\n },\n this.kwilSigner,\n );\n\n if (result.status !== 200) {\n return Either.left(result.status);\n }\n\n return Either.right(result.data?.result as T);\n }\n\n /**\n * Returns the records of the stream within the given date range\n */\n public async getRecord(input: GetRecordInput): Promise<StreamRecord[]> {\n const prefix = input.prefix ? input.prefix : \"\"\n const result = await this.call<{ event_time: number; value: string }[]>(\n prefix + \"get_record\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the index of the stream within the given date range\n */\n public async getIndex(input: GetRecordInput): Promise<StreamRecord[]> {\n const prefix = input.prefix ? input.prefix : \"\"\n const result = await this.call<{ event_time: number; value: string }[]>(\n prefix + \"get_index\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n $base_time: input.baseTime,\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the type of the stream\n */\n public async getType(\n stream: StreamLocator,\n ): Promise<StreamType> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.TypeKey);\n\n if (!result) {\n throw new Error(\"Failed to get stream type\");\n }\n\n const type = head(result).unwrapOrElse(() => {\n throw new Error(\n \"Failed to get stream type. Check if the stream is initialized.\",\n );\n });\n\n const validTypes = [StreamType.Primitive, StreamType.Composed];\n\n if (!validTypes.includes(type.value as StreamType)) {\n throw new Error(`Invalid stream type: ${type.value}`);\n }\n\n return type.value as StreamType;\n }\n\n /**\n * Returns the first record of the stream\n */\n public async getFirstRecord(\n input: GetFirstRecordInput,\n ): Promise<StreamRecord | null> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n \"get_first_record\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $after: input.after,\n $frozen_at: input.frozenAt,\n }\n );\n\n return result\n .mapRight(head)\n .mapRight((result) =>\n result\n .map((result) => ({\n eventTime: result.event_time,\n value: result.value,\n }))\n .unwrapOr(null),\n )\n .throw();\n }\n\n protected async setMetadata<K extends MetadataKey>(\n stream: StreamLocator,\n key: K,\n value: MetadataValueTypeForKey<K>,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithNamedParams(\"insert_metadata\", [{\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $key: key,\n $value: value,\n $val_type: MetadataKeyValueMap[key],\n },\n ]);\n }\n\n protected async getMetadata<K extends MetadataKey>(\n stream: StreamLocator,\n key: K,\n // onlyLatest: boolean = true,\n filteredRef?: string,\n limit?: number,\n offset?: number,\n orderBy?: string,\n ): Promise<\n { rowId: string; value: MetadataValueTypeForKey<K>; createdAt: number }[]\n > {\n const result = await this.call<\n {\n row_id: string;\n value_i: number;\n value_f: string;\n value_b: boolean;\n value_s: string;\n value_ref: string;\n created_at: number;\n }[]\n >(\"get_metadata\", {\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $key: key,\n $ref: filteredRef,\n $limit: limit,\n $offset: offset,\n $order_by: orderBy,\n },\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n rowId: row.row_id,\n value: row[\n MetadataTableKey[MetadataKeyValueMap[key as MetadataKey]]\n ] as MetadataValueTypeForKey<K>,\n createdAt: row.created_at,\n })),\n )\n .throw();\n }\n\n /**\n * Sets the read visibility of the stream\n */\n public async setReadVisibility(\n stream: StreamLocator,\n visibility: VisibilityEnum,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.ReadVisibilityKey,\n visibility.toString(),\n );\n }\n\n /**\n * Returns the read visibility of the stream\n */\n public async getReadVisibility(\n stream: StreamLocator,\n ): Promise<VisibilityEnum | null> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.ReadVisibilityKey);\n\n return head(result)\n .map((row) => toVisibilityEnum(row.value))\n .unwrapOr(null);\n }\n\n /**\n * Sets the compose visibility of the stream\n */\n public async setComposeVisibility(\n stream: StreamLocator,\n visibility: VisibilityEnum,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.ComposeVisibilityKey,\n visibility.toString(),\n );\n }\n\n /**\n * Returns the compose visibility of the stream\n */\n public async getComposeVisibility(\n stream: StreamLocator,\n ): Promise<VisibilityEnum | null> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.ComposeVisibilityKey);\n\n return head(result)\n .map((row) => toVisibilityEnum(row.value))\n .unwrapOr(null);\n }\n\n /**\n * Allows a wallet to read the stream\n */\n public async allowReadWallet(\n stream: StreamLocator,\n wallet: EthereumAddress,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.AllowReadWalletKey,\n wallet.getAddress(),\n );\n }\n\n /**\n * Disables a wallet from reading the stream\n */\n public async disableReadWallet(\n stream: StreamLocator,\n wallet: EthereumAddress,\n ): Promise<GenericResponse<TxReceipt>> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowReadWalletKey,\n wallet.getAddress(),\n );\n\n const row_id = head(result)\n .map((row) => row.rowId)\n .unwrapOr(null);\n\n if (!row_id) {\n throw new Error(\"Wallet not found in allowed list\");\n }\n\n return await this.disableMetadata(stream, row_id);\n }\n\n /**\n * Allows a stream to use this stream as child\n */\n public async allowComposeStream(\n stream: StreamLocator,\n wallet: StreamLocator,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey,\n wallet.streamId.getId(),\n );\n }\n\n /**\n * Disables a stream from using this stream as child\n */\n public async disableComposeStream(\n stream: StreamLocator,\n wallet: StreamLocator,\n ): Promise<GenericResponse<TxReceipt>> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey,\n wallet.toString(),\n );\n\n const row_id = head(result)\n .map((row) => row.rowId)\n .unwrapOr(null);\n\n if (!row_id) {\n throw new Error(\"Stream not found in allowed list\");\n }\n\n return await this.disableMetadata(stream, row_id);\n }\n\n protected async disableMetadata(\n stream: StreamLocator,\n rowId: string,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithNamedParams(\"disable_metadata\", [{\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $row_id: rowId,\n }]);\n }\n\n /**\n * Returns the wallets allowed to read the stream\n */\n public async getAllowedReadWallets(\n stream: StreamLocator,\n ): Promise<EthereumAddress[]> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowReadWalletKey);\n\n return result\n .filter((row) => row.value)\n .map((row) => new EthereumAddress(row.value));\n }\n\n /**\n * Returns the streams allowed to compose the stream\n */\n public async getAllowedComposeStreams(\n stream: StreamLocator,\n ): Promise<StreamLocator[]> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey);\n\n return result\n .filter((row) => row.value)\n .map((row) => {\n const [streamId, dataProvider] = row.value.split(\":\");\n return {\n streamId: StreamId.fromString(streamId).throw(),\n dataProvider: new EthereumAddress(dataProvider),\n };\n });\n }\n\n /**\n * Returns the index change of the stream within the given date range\n */\n public async getIndexChange(\n input: GetIndexChangeInput,\n ): Promise<StreamRecord[]> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n \"get_index_change\", \n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n $base_time: input.baseTime,\n $time_interval: input.timeInterval,\n }\n );\n\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * A custom method that accepts the procedure name and the input of GetRecordInput\n * Returns the result of the procedure in the same format as StreamRecord\n * I.e. a custom procedure named \"get_price\" that returns a list of date_value and value\n * can be called with customGetProcedure(\"get_price\", { dateFrom: \"2021-01-01\", dateTo: \"2021-01-31\" })\n */\n public async customGetProcedure(\n procedure: string,\n input: GetRecordInput,\n ): Promise<StreamRecord[]> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n procedure,\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n\n /**\n * A custom method that accepts the procedure name and custom input of type Record<string, any>\n * Returns the result of the procedure in the same format as StreamRecord\n * I.e. a custom procedure named \"get_custom_index\" that returns a list of date_value and value\n * can be called with customProcedureWithArgs(\"get_custom_index\", { $customArg1: \"value1\", $customArg2: \"value2\" })\n * where $customArg1 and $customArg2 are the arguments of the procedure\n * @param procedure\n * @param args\n */\n public async customProcedureWithArgs(\n procedure: string,\n args: Record<string, ValueType | ValueType[]>,\n ){\n const result = await this.call<{ event_time: number; value: string }[]>(\n procedure,\n args\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the size of database\n */\n public async getDatabaseSize(): Promise<BigInt> {\n const result = await this.call<{ database_size: BigInt }[]>(\"get_database_size\", {})\n return result\n .map((rows) => {\n const raw = rows[0].database_size;\n const asBigInt = BigInt(raw.toString());\n return asBigInt;\n }).throw();\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["result"]
7
7
  }
@@ -24,7 +24,7 @@ __export(composedAction_exports, {
24
24
  ErrorStreamNotComposed: () => ErrorStreamNotComposed
25
25
  });
26
26
  module.exports = __toCommonJS(composedAction_exports);
27
- var import_kwil_js = require("@kwilteam/kwil-js");
27
+ var import_kwil_js = require("@trufnetwork/kwil-js");
28
28
  var import_EthereumAddress = require("../util/EthereumAddress.cjs");
29
29
  var import_StreamId = require("../util/StreamId.cjs");
30
30
  var import_action = require("./action.cjs");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/composedAction.ts"],
4
- "sourcesContent": ["import {KwilSigner, NodeKwil, Utils, WebKwil} from \"@kwilteam/kwil-js\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { DateString } from \"../types/other\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { Action } from \"./action\";\nimport DataType = Utils.DataType;\n\nexport const ErrorStreamNotComposed = \"stream is not a composed stream\";\n\nexport interface TaxonomySet {\n stream: StreamLocator;\n taxonomyItems: TaxonomyItem[];\n startDate: number;\n}\n\nexport interface TaxonomyItem {\n childStream: StreamLocator;\n weight: string;\n}\n\nexport interface DescribeTaxonomiesParams {\n stream: StreamLocator;\n /**\n * if true, will return the latest version of the taxonomy only\n */\n latestGroupSequence: boolean;\n}\n\nexport class ComposedAction extends Action {\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n super(kwilClient, kwilSigner);\n }\n\n /**\n * Returns the taxonomy of the stream\n * @param params Parameters for describing taxonomies\n * @returns A promise that resolves to the taxonomy\n */\n public async describeTaxonomies(\n params: DescribeTaxonomiesParams,\n ): Promise<TaxonomySet[]> {\n type TaxonomyResult = {\n data_provider: string;\n stream_id: string;\n child_data_provider: string;\n child_stream_id: string;\n weight: string;\n created_at: number;\n group_sequence: number;\n start_date: number;\n }[];\n\n const result = await this.call<TaxonomyResult>(\n \"describe_taxonomies\",\n {\n $data_provider: params.stream.dataProvider.getAddress(),\n $stream_id: params.stream.streamId.getId(),\n $latest_group_sequence: params.latestGroupSequence,\n },\n );\n\n\n\n return result\n .mapRight((records) => {\n const taxonomyItems: Map<DateString, TaxonomyItem[]> = records.reduce(\n (acc, record) => {\n const currentArray = acc.get(record.start_date.toString()) || [];\n currentArray.push({\n childStream: {\n streamId: StreamId.fromString(record.child_stream_id).throw(),\n dataProvider: EthereumAddress.fromString(\n record.child_data_provider,\n ).throw(),\n },\n weight: record.weight,\n });\n acc.set(record.start_date.toString(), currentArray);\n return acc;\n },\n new Map<DateString, TaxonomyItem[]>(),\n );\n\n return Array.from(taxonomyItems.entries()).map(\n ([startDate, taxonomyItems]) => ({\n stream: {\n streamId: StreamId.fromString(records[0].stream_id).throw(),\n dataProvider: EthereumAddress.fromString(\n records[0].data_provider,\n ).throw(),\n },\n taxonomyItems,\n startDate: Number(startDate)\n }),\n );\n })\n .throw();\n }\n\n /**\n * Sets the taxonomy of the stream\n * @param taxonomy The taxonomy to set\n * @returns A promise that resolves to the transaction receipt\n */\n public async setTaxonomy(\n taxonomy: TaxonomySet,\n ): Promise<GenericResponse<TxReceipt>> {\n const childDataProviders: string[] = [];\n const childStreamIds: string[] = [];\n const weights: string[] = [];\n\n for (const item of taxonomy.taxonomyItems) {\n childDataProviders.push(item.childStream.dataProvider\n .getAddress());\n childStreamIds.push(item.childStream.streamId.getId());\n weights.push(item.weight.toString());\n }\n\n const txHash = await this.executeWithActionBody({\n namespace: \"main\",\n name: \"insert_taxonomy\",\n inputs: [\n {\n $data_provider: taxonomy.stream.dataProvider.getAddress(),\n $stream_id: taxonomy.stream.streamId.getId(),\n $child_data_providers: childDataProviders,\n $child_stream_ids: childStreamIds,\n $weights: weights,\n $start_date: taxonomy.startDate\n },\n ],\n types: {\n $data_provider: DataType.Text,\n $stream_id: DataType.Text,\n $child_data_providers: DataType.TextArray,\n $child_stream_ids: DataType.TextArray,\n $weights: DataType.NumericArray(36,18),\n $start_date: DataType.Int\n }});\n\n return txHash;\n }\n\n /**\n * Creates a ComposedStream from a base Stream\n * @param stream The base stream to convert\n * @returns A ComposedStream instance\n */\n public static fromStream(stream: Action): ComposedAction {\n return new ComposedAction(\n stream[\"kwilClient\"],\n stream[\"kwilSigner\"],\n );\n }\n}\n"],
4
+ "sourcesContent": ["import {KwilSigner, NodeKwil, Utils, WebKwil} from \"@trufnetwork/kwil-js\";\nimport { GenericResponse } from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport { DateString } from \"../types/other\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { Action } from \"./action\";\nimport DataType = Utils.DataType;\n\nexport const ErrorStreamNotComposed = \"stream is not a composed stream\";\n\nexport interface TaxonomySet {\n stream: StreamLocator;\n taxonomyItems: TaxonomyItem[];\n startDate: number;\n}\n\nexport interface TaxonomyItem {\n childStream: StreamLocator;\n weight: string;\n}\n\nexport interface DescribeTaxonomiesParams {\n stream: StreamLocator;\n /**\n * if true, will return the latest version of the taxonomy only\n */\n latestGroupSequence: boolean;\n}\n\nexport class ComposedAction extends Action {\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n super(kwilClient, kwilSigner);\n }\n\n /**\n * Returns the taxonomy of the stream\n * @param params Parameters for describing taxonomies\n * @returns A promise that resolves to the taxonomy\n */\n public async describeTaxonomies(\n params: DescribeTaxonomiesParams,\n ): Promise<TaxonomySet[]> {\n type TaxonomyResult = {\n data_provider: string;\n stream_id: string;\n child_data_provider: string;\n child_stream_id: string;\n weight: string;\n created_at: number;\n group_sequence: number;\n start_date: number;\n }[];\n\n const result = await this.call<TaxonomyResult>(\n \"describe_taxonomies\",\n {\n $data_provider: params.stream.dataProvider.getAddress(),\n $stream_id: params.stream.streamId.getId(),\n $latest_group_sequence: params.latestGroupSequence,\n },\n );\n\n\n\n return result\n .mapRight((records) => {\n const taxonomyItems: Map<DateString, TaxonomyItem[]> = records.reduce(\n (acc, record) => {\n const currentArray = acc.get(record.start_date.toString()) || [];\n currentArray.push({\n childStream: {\n streamId: StreamId.fromString(record.child_stream_id).throw(),\n dataProvider: EthereumAddress.fromString(\n record.child_data_provider,\n ).throw(),\n },\n weight: record.weight,\n });\n acc.set(record.start_date.toString(), currentArray);\n return acc;\n },\n new Map<DateString, TaxonomyItem[]>(),\n );\n\n return Array.from(taxonomyItems.entries()).map(\n ([startDate, taxonomyItems]) => ({\n stream: {\n streamId: StreamId.fromString(records[0].stream_id).throw(),\n dataProvider: EthereumAddress.fromString(\n records[0].data_provider,\n ).throw(),\n },\n taxonomyItems,\n startDate: Number(startDate)\n }),\n );\n })\n .throw();\n }\n\n /**\n * Sets the taxonomy of the stream\n * @param taxonomy The taxonomy to set\n * @returns A promise that resolves to the transaction receipt\n */\n public async setTaxonomy(\n taxonomy: TaxonomySet,\n ): Promise<GenericResponse<TxReceipt>> {\n const childDataProviders: string[] = [];\n const childStreamIds: string[] = [];\n const weights: string[] = [];\n\n for (const item of taxonomy.taxonomyItems) {\n childDataProviders.push(item.childStream.dataProvider\n .getAddress());\n childStreamIds.push(item.childStream.streamId.getId());\n weights.push(item.weight.toString());\n }\n\n const txHash = await this.executeWithActionBody({\n namespace: \"main\",\n name: \"insert_taxonomy\",\n inputs: [\n {\n $data_provider: taxonomy.stream.dataProvider.getAddress(),\n $stream_id: taxonomy.stream.streamId.getId(),\n $child_data_providers: childDataProviders,\n $child_stream_ids: childStreamIds,\n $weights: weights,\n $start_date: taxonomy.startDate\n },\n ],\n types: {\n $data_provider: DataType.Text,\n $stream_id: DataType.Text,\n $child_data_providers: DataType.TextArray,\n $child_stream_ids: DataType.TextArray,\n $weights: DataType.NumericArray(36,18),\n $start_date: DataType.Int\n }});\n\n return txHash;\n }\n\n /**\n * Creates a ComposedStream from a base Stream\n * @param stream The base stream to convert\n * @returns A ComposedStream instance\n */\n public static fromStream(stream: Action): ComposedAction {\n return new ComposedAction(\n stream[\"kwilClient\"],\n stream[\"kwilSigner\"],\n );\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["taxonomyItems"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/deleteStream.ts"],
4
- "sourcesContent": ["import {StreamId} from \"../util/StreamId\";\nimport {Kwil} from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport {KwilSigner} from \"@kwilteam/kwil-js\";\nimport {TxReceipt} from \"@kwilteam/kwil-js/dist/core/tx\";\nimport {GenericResponse} from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport {StreamLocator} from \"../types/stream\";\n\n/**\n * Input parameters for destroying a stream.\n */\nexport interface DestroyStreamInput {\n stream: StreamLocator;\n kwilClient: Kwil<any>;\n kwilSigner: KwilSigner;\n synchronous?: boolean;\n}\n\n/**\n * Output after deleting a stream.\n */\nexport interface DeleteStreamOutput {\n receipt: TxReceipt;\n}\n\n/**\n * Delete a stream from TN.\n * @param input - The input parameters for destroying the stream.\n * @returns The transaction receipt of the destruction.\n */\nexport async function deleteStream(\n input: DestroyStreamInput,\n): Promise<GenericResponse<TxReceipt>> {\n try {\n return await input.kwilClient.execute({\n description: `TN SDK - Deleting stream: ${input.stream.streamId.getId()} from data provider: ${input.stream.dataProvider.getAddress()}`,\n inputs: [{\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId()\n }],\n name: \"delete_stream\",\n namespace: \"main\"\n },\n input.kwilSigner,\n input.synchronous,\n )} catch (error) {\n throw new Error(`Failed to delete stream: ${error}`);\n }\n}"],
4
+ "sourcesContent": ["import {StreamId} from \"../util/StreamId\";\nimport {Kwil} from \"@trufnetwork/kwil-js/dist/client/kwil\";\nimport {KwilSigner} from \"@trufnetwork/kwil-js\";\nimport {TxReceipt} from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport {GenericResponse} from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport {StreamLocator} from \"../types/stream\";\n\n/**\n * Input parameters for destroying a stream.\n */\nexport interface DestroyStreamInput {\n stream: StreamLocator;\n kwilClient: Kwil<any>;\n kwilSigner: KwilSigner;\n synchronous?: boolean;\n}\n\n/**\n * Output after deleting a stream.\n */\nexport interface DeleteStreamOutput {\n receipt: TxReceipt;\n}\n\n/**\n * Delete a stream from TN.\n * @param input - The input parameters for destroying the stream.\n * @returns The transaction receipt of the destruction.\n */\nexport async function deleteStream(\n input: DestroyStreamInput,\n): Promise<GenericResponse<TxReceipt>> {\n try {\n return await input.kwilClient.execute({\n description: `TN SDK - Deleting stream: ${input.stream.streamId.getId()} from data provider: ${input.stream.dataProvider.getAddress()}`,\n inputs: [{\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId()\n }],\n name: \"delete_stream\",\n namespace: \"main\"\n },\n input.kwilSigner,\n input.synchronous,\n )} catch (error) {\n throw new Error(`Failed to delete stream: ${error}`);\n }\n}"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AA6BA,eAAsB,aACpB,OACqC;AACrC,MAAI;AACF,WAAO,MAAM,MAAM,WAAW;AAAA,MAAQ;AAAA,QAChC,aAAa,6BAA6B,MAAM,OAAO,SAAS,MAAM,CAAC,wBAAwB,MAAM,OAAO,aAAa,WAAW,CAAC;AAAA,QACrI,QAAQ,CAAC;AAAA,UACL,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,UACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QAC5C,CAAC;AAAA,QACD,MAAM;AAAA,QACN,WAAW;AAAA,MACb;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACN;AAAA,EAAC,SAAS,OAAO;AACrB,UAAM,IAAI,MAAM,4BAA4B,KAAK,EAAE;AAAA,EACrD;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/deployStream.ts"],
4
- "sourcesContent": ["import {StreamType} from \"./contractValues\";\nimport {TxReceipt} from \"@kwilteam/kwil-js/dist/core/tx\";\nimport {Kwil} from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport {KwilSigner} from \"@kwilteam/kwil-js\";\nimport {GenericResponse} from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport {StreamId} from \"../util/StreamId\";\nimport pg from \"pg\";\nconst { Pool } = pg;\n\nexport interface DeployStreamInput {\n streamId: StreamId;\n streamType: StreamType;\n kwilClient: Kwil<any>;\n kwilSigner: KwilSigner;\n synchronous?: boolean;\n}\n\nexport interface DeployStreamOutput {\n receipt: TxReceipt;\n}\n\n/**\n * Deploys a stream to TN.\n * @param input - The input parameters for deploying the stream.\n * @returns The transaction hash of the deployment.\n */\nexport async function deployStream(\n input: DeployStreamInput,\n): Promise<GenericResponse<TxReceipt>> {\n try {\n const txHash = await input.kwilClient.execute(\n {\n namespace: \"main\",\n inputs: [{\n $stream_id: input.streamId.getId(),\n $stream_type: input.streamType,\n }],\n name: \"create_stream\",\n description: `TN SDK - Deploying ${input.streamType} stream: ${input.streamId.getId()}`\n },\n input.kwilSigner,\n input.synchronous,\n );\n\n return txHash;\n } catch (error) {\n throw new Error(`Failed to deploy stream: ${error}`);\n }\n}"],
4
+ "sourcesContent": ["import {StreamType} from \"./contractValues\";\nimport {TxReceipt} from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport {Kwil} from \"@trufnetwork/kwil-js/dist/client/kwil\";\nimport {KwilSigner} from \"@trufnetwork/kwil-js\";\nimport {GenericResponse} from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport {StreamId} from \"../util/StreamId\";\nimport pg from \"pg\";\nconst { Pool } = pg;\n\nexport interface DeployStreamInput {\n streamId: StreamId;\n streamType: StreamType;\n kwilClient: Kwil<any>;\n kwilSigner: KwilSigner;\n synchronous?: boolean;\n}\n\nexport interface DeployStreamOutput {\n receipt: TxReceipt;\n}\n\n/**\n * Deploys a stream to TN.\n * @param input - The input parameters for deploying the stream.\n * @returns The transaction hash of the deployment.\n */\nexport async function deployStream(\n input: DeployStreamInput,\n): Promise<GenericResponse<TxReceipt>> {\n try {\n const txHash = await input.kwilClient.execute(\n {\n namespace: \"main\",\n inputs: [{\n $stream_id: input.streamId.getId(),\n $stream_type: input.streamType,\n }],\n name: \"create_stream\",\n description: `TN SDK - Deploying ${input.streamType} stream: ${input.streamId.getId()}`\n },\n input.kwilSigner,\n input.synchronous,\n );\n\n return txHash;\n } catch (error) {\n throw new Error(`Failed to deploy stream: ${error}`);\n }\n}"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,gBAAe;AACf,IAAM,EAAE,KAAK,IAAI,UAAAA;AAmBjB,eAAsB,aACpB,OACqC;AACrC,MAAI;AACA,UAAM,SAAS,MAAM,MAAM,WAAW;AAAA,MACpC;AAAA,QACI,WAAW;AAAA,QACX,QAAQ,CAAC;AAAA,UACL,YAAY,MAAM,SAAS,MAAM;AAAA,UACjC,cAAc,MAAM;AAAA,QACxB,CAAC;AAAA,QACD,MAAM;AAAA,QACN,aAAa,sBAAsB,MAAM,UAAU,YAAY,MAAM,SAAS,MAAM,CAAC;AAAA,MACzF;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,IACV;AAEA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,MAAM,4BAA4B,KAAK,EAAE;AAAA,EACrD;AACF;",
6
6
  "names": ["pg"]
7
7
  }
@@ -23,7 +23,7 @@ __export(primitiveAction_exports, {
23
23
  PrimitiveAction: () => PrimitiveAction
24
24
  });
25
25
  module.exports = __toCommonJS(primitiveAction_exports);
26
- var import_kwil_js = require("@kwilteam/kwil-js");
26
+ var import_kwil_js = require("@trufnetwork/kwil-js");
27
27
  var import_action = require("./action.cjs");
28
28
  var DataType = import_kwil_js.Utils.DataType;
29
29
  var PrimitiveAction = class _PrimitiveAction extends import_action.Action {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/primitiveAction.ts"],
4
- "sourcesContent": ["import {KwilSigner, NodeKwil, Utils, WebKwil} from \"@kwilteam/kwil-js\";\nimport {GenericResponse} from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport {TxReceipt} from \"@kwilteam/kwil-js/dist/core/tx\";\nimport {StreamType} from \"./contractValues\";\nimport {Action} from \"./action\";\nimport {StreamLocator} from \"../types/stream\";\nimport DataType = Utils.DataType;\n\nconst ErrorStreamNotPrimitive = \"stream is not a primitive stream\";\n\nexport class PrimitiveAction extends Action {\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n super(kwilClient, kwilSigner);\n }\n\n /**\n * Insert a record into the stream\n * @param input of a single record to insert\n * @returns Transaction receipt\n */\n public async insertRecord(\n input: InsertRecordInput,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithActionBody({\n namespace: 'main',\n name: 'insert_record',\n inputs: [{\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $event_time: input.eventTime,\n $value: input.value\n }],\n types: {\n $data_provider: DataType.Text,\n $stream_id: DataType.Text,\n $event_time: DataType.Int,\n $value: DataType.Numeric(36, 18)\n }\n })\n }\n\n /**\n * Inserts records into the stream\n * @param inputs Array of records to insert\n * @param synchronous If true, the transaction will be executed synchronously\n * @returns Transaction receipt\n */\n public async insertRecords(\n inputs: InsertRecordInput[],\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithActionBody({\n namespace: 'main',\n name: 'insert_records',\n inputs: inputs.map((input) => ({\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $event_time: input.eventTime,\n $value: input.value\n })),\n types: {\n $data_provider: DataType.TextArray,\n $stream_id: DataType.TextArray,\n $event_time: DataType.IntArray,\n $value: DataType.NumericArray(36, 18)\n }\n }, synchronous)\n }\n\n /**\n * Creates a PrimitiveStream from a base Stream\n * @param stream The base stream to convert\n * @returns A Promise that resolves to a PrimitiveStream instance\n */\n public static fromStream(stream: Action): PrimitiveAction {\n return new PrimitiveAction(\n stream[\"kwilClient\"],\n stream[\"kwilSigner\"],\n );\n }\n}\n\nexport interface InsertRecordInput {\n stream: StreamLocator;\n eventTime: number;\n // value is a string to support arbitrary precision\n value: string;\n}\n"],
4
+ "sourcesContent": ["import {KwilSigner, NodeKwil, Utils, WebKwil} from \"@trufnetwork/kwil-js\";\nimport {GenericResponse} from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport {TxReceipt} from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport {StreamType} from \"./contractValues\";\nimport {Action} from \"./action\";\nimport {StreamLocator} from \"../types/stream\";\nimport DataType = Utils.DataType;\n\nconst ErrorStreamNotPrimitive = \"stream is not a primitive stream\";\n\nexport class PrimitiveAction extends Action {\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n super(kwilClient, kwilSigner);\n }\n\n /**\n * Insert a record into the stream\n * @param input of a single record to insert\n * @returns Transaction receipt\n */\n public async insertRecord(\n input: InsertRecordInput,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithActionBody({\n namespace: 'main',\n name: 'insert_record',\n inputs: [{\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $event_time: input.eventTime,\n $value: input.value\n }],\n types: {\n $data_provider: DataType.Text,\n $stream_id: DataType.Text,\n $event_time: DataType.Int,\n $value: DataType.Numeric(36, 18)\n }\n })\n }\n\n /**\n * Inserts records into the stream\n * @param inputs Array of records to insert\n * @param synchronous If true, the transaction will be executed synchronously\n * @returns Transaction receipt\n */\n public async insertRecords(\n inputs: InsertRecordInput[],\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithActionBody({\n namespace: 'main',\n name: 'insert_records',\n inputs: inputs.map((input) => ({\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $event_time: input.eventTime,\n $value: input.value\n })),\n types: {\n $data_provider: DataType.TextArray,\n $stream_id: DataType.TextArray,\n $event_time: DataType.IntArray,\n $value: DataType.NumericArray(36, 18)\n }\n }, synchronous)\n }\n\n /**\n * Creates a PrimitiveStream from a base Stream\n * @param stream The base stream to convert\n * @returns A Promise that resolves to a PrimitiveStream instance\n */\n public static fromStream(stream: Action): PrimitiveAction {\n return new PrimitiveAction(\n stream[\"kwilClient\"],\n stream[\"kwilSigner\"],\n );\n }\n}\n\nexport interface InsertRecordInput {\n stream: StreamLocator;\n eventTime: number;\n // value is a string to support arbitrary precision\n value: string;\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAmD;AAInD,oBAAqB;AAErB,IAAO,WAAW,qBAAM;AAIjB,IAAM,kBAAN,MAAM,yBAAwB,qBAAO;AAAA,EAC1C,YACE,YACA,YACA;AACA,UAAM,YAAY,UAAU;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAa,aACT,OACmC;AACrC,WAAO,MAAM,KAAK,sBAAsB;AAAA,MAClC,WAAW;AAAA,MACX,MAAM;AAAA,MACN,QAAQ,CAAC;AAAA,QACP,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,aAAa,MAAM;AAAA,QACnB,QAAQ,MAAM;AAAA,MAChB,CAAC;AAAA,MACD,OAAO;AAAA,QACL,gBAAgB,SAAS;AAAA,QACzB,YAAY,SAAS;AAAA,QACrB,aAAa,SAAS;AAAA,QACtB,QAAQ,SAAS,QAAQ,IAAI,EAAE;AAAA,MACjC;AAAA,IACN,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQE,MAAa,cACT,QACA,aACmC;AACrC,WAAO,MAAM,KAAK,sBAAsB;AAAA,MACtC,WAAW;AAAA,MACX,MAAM;AAAA,MACN,QAAQ,OAAO,IAAI,CAAC,WAAW;AAAA,QAC7B,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,aAAa,MAAM;AAAA,QACnB,QAAQ,MAAM;AAAA,MAChB,EAAE;AAAA,MACF,OAAO;AAAA,QACL,gBAAgB,SAAS;AAAA,QACzB,YAAY,SAAS;AAAA,QACrB,aAAa,SAAS;AAAA,QACtB,QAAQ,SAAS,aAAa,IAAI,EAAE;AAAA,MACtC;AAAA,IACF,GAAG,WAAW;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOF,OAAc,WAAW,QAAiC;AACxD,WAAO,IAAI;AAAA,MACP,OAAO,YAAY;AAAA,MACnB,OAAO,YAAY;AAAA,IACvB;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -23,7 +23,7 @@ __export(roleManagement_exports, {
23
23
  RoleManagement: () => RoleManagement
24
24
  });
25
25
  module.exports = __toCommonJS(roleManagement_exports);
26
- var import_kwil_js = require("@kwilteam/kwil-js");
26
+ var import_kwil_js = require("@trufnetwork/kwil-js");
27
27
  var import_action = require("./action.cjs");
28
28
  var DataType = import_kwil_js.Utils.DataType;
29
29
  var RoleManagement = class _RoleManagement extends import_action.Action {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/contracts-api/roleManagement.ts"],
4
- "sourcesContent": ["import { KwilSigner, NodeKwil, Utils, WebKwil } from \"@kwilteam/kwil-js\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { Action } from \"./action\";\nimport { AreMembersOfInput, GrantRoleInput, RevokeRoleInput, WalletMembership } from \"../types/role\";\nimport DataType = Utils.DataType;\nimport { OwnerIdentifier } from \"../types/role\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\n\n/**\n * RoleManagement provides convenient wrappers around the on-chain SQL actions\n * that implement the RBAC system (grant_roles, revoke_roles, are_members_of).\n */\nexport class RoleManagement extends Action {\n constructor(kwilClient: WebKwil | NodeKwil, kwilSigner: KwilSigner) {\n super(kwilClient, kwilSigner);\n }\n\n private static normalizeOwner(owner: OwnerIdentifier): string {\n return owner === \"system\"\n ? \"system\"\n : owner.getAddress().toLowerCase();\n }\n\n private static normalizeWallets(wallets: EthereumAddress[]): string[] {\n return wallets.map((w) => w.getAddress().toLowerCase());\n }\n\n /**\n * Grants a role to the provided wallets.\n * This calls the `grant_roles` action.\n */\n public async grantRole(\n input: GrantRoleInput,\n synchronous = false,\n ): Promise<GenericResponse<TxReceipt>> {\n return this.executeWithActionBody(\n {\n namespace: \"main\",\n name: \"grant_roles\",\n inputs: [\n {\n $owner: RoleManagement.normalizeOwner(input.owner),\n $role_name: input.roleName.toLowerCase(),\n $wallets: RoleManagement.normalizeWallets(input.wallets),\n },\n ],\n types: {\n $owner: DataType.Text,\n $role_name: DataType.Text,\n $wallets: DataType.TextArray,\n },\n },\n synchronous,\n );\n }\n\n /**\n * Revokes a role from the provided wallets.\n * This calls the `revoke_roles` action.\n */\n public async revokeRole(\n input: RevokeRoleInput,\n synchronous = false,\n ): Promise<GenericResponse<TxReceipt>> {\n return this.executeWithActionBody(\n {\n namespace: \"main\",\n name: \"revoke_roles\",\n inputs: [\n {\n $owner: RoleManagement.normalizeOwner(input.owner),\n $role_name: input.roleName.toLowerCase(),\n $wallets: RoleManagement.normalizeWallets(input.wallets),\n },\n ],\n types: {\n $owner: DataType.Text,\n $role_name: DataType.Text,\n $wallets: DataType.TextArray,\n },\n },\n synchronous,\n );\n }\n\n /**\n * Checks if the provided wallets are members of a role.\n * This calls the `are_members_of` VIEW action.\n *\n * @returns an array matching the provided wallets order with membership flags.\n */\n public async areMembersOf(\n input: AreMembersOfInput,\n ): Promise<WalletMembership[]> {\n const result = await this.call<{ wallet: string; is_member: boolean }[]>(\n \"are_members_of\",\n {\n $owner: RoleManagement.normalizeOwner(input.owner),\n $role_name: input.roleName.toLowerCase(),\n $wallets: RoleManagement.normalizeWallets(input.wallets),\n },\n );\n\n // Either.throw() will return the right value or throw with the left value (status code)\n return result.throw().map((row) => ({\n wallet: row.wallet,\n isMember: row.is_member,\n }));\n }\n\n /**\n * Lists the members of a role with optional pagination.\n * This calls the `list_role_members` VIEW action.\n */\n public async listRoleMembers(\n input: import(\"../types/role\").ListRoleMembersInput,\n ): Promise<import(\"../types/role\").RoleMember[]> {\n const result = await this.call<{\n wallet: string;\n granted_at: number;\n granted_by: string;\n }[]>(\"list_role_members\", {\n $owner: RoleManagement.normalizeOwner(input.owner),\n $role_name: input.roleName.toLowerCase(),\n ...(input.limit !== undefined ? { $limit: input.limit } : {}),\n ...(input.offset !== undefined ? { $offset: input.offset } : {}),\n });\n\n return result.throw().map((row) => ({\n wallet: row.wallet,\n grantedAt: Number(row.granted_at),\n grantedBy: row.granted_by,\n }));\n }\n\n /**\n * Helper factory mirroring the pattern used by the other action wrappers.\n */\n public static fromClient(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ): RoleManagement {\n return new RoleManagement(kwilClient, kwilSigner);\n }\n} "],
4
+ "sourcesContent": ["import { KwilSigner, NodeKwil, Utils, WebKwil } from \"@trufnetwork/kwil-js\";\nimport { GenericResponse } from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport { Action } from \"./action\";\nimport { AreMembersOfInput, GrantRoleInput, RevokeRoleInput, WalletMembership } from \"../types/role\";\nimport DataType = Utils.DataType;\nimport { OwnerIdentifier } from \"../types/role\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\n\n/**\n * RoleManagement provides convenient wrappers around the on-chain SQL actions\n * that implement the RBAC system (grant_roles, revoke_roles, are_members_of).\n */\nexport class RoleManagement extends Action {\n constructor(kwilClient: WebKwil | NodeKwil, kwilSigner: KwilSigner) {\n super(kwilClient, kwilSigner);\n }\n\n private static normalizeOwner(owner: OwnerIdentifier): string {\n return owner === \"system\"\n ? \"system\"\n : owner.getAddress().toLowerCase();\n }\n\n private static normalizeWallets(wallets: EthereumAddress[]): string[] {\n return wallets.map((w) => w.getAddress().toLowerCase());\n }\n\n /**\n * Grants a role to the provided wallets.\n * This calls the `grant_roles` action.\n */\n public async grantRole(\n input: GrantRoleInput,\n synchronous = false,\n ): Promise<GenericResponse<TxReceipt>> {\n return this.executeWithActionBody(\n {\n namespace: \"main\",\n name: \"grant_roles\",\n inputs: [\n {\n $owner: RoleManagement.normalizeOwner(input.owner),\n $role_name: input.roleName.toLowerCase(),\n $wallets: RoleManagement.normalizeWallets(input.wallets),\n },\n ],\n types: {\n $owner: DataType.Text,\n $role_name: DataType.Text,\n $wallets: DataType.TextArray,\n },\n },\n synchronous,\n );\n }\n\n /**\n * Revokes a role from the provided wallets.\n * This calls the `revoke_roles` action.\n */\n public async revokeRole(\n input: RevokeRoleInput,\n synchronous = false,\n ): Promise<GenericResponse<TxReceipt>> {\n return this.executeWithActionBody(\n {\n namespace: \"main\",\n name: \"revoke_roles\",\n inputs: [\n {\n $owner: RoleManagement.normalizeOwner(input.owner),\n $role_name: input.roleName.toLowerCase(),\n $wallets: RoleManagement.normalizeWallets(input.wallets),\n },\n ],\n types: {\n $owner: DataType.Text,\n $role_name: DataType.Text,\n $wallets: DataType.TextArray,\n },\n },\n synchronous,\n );\n }\n\n /**\n * Checks if the provided wallets are members of a role.\n * This calls the `are_members_of` VIEW action.\n *\n * @returns an array matching the provided wallets order with membership flags.\n */\n public async areMembersOf(\n input: AreMembersOfInput,\n ): Promise<WalletMembership[]> {\n const result = await this.call<{ wallet: string; is_member: boolean }[]>(\n \"are_members_of\",\n {\n $owner: RoleManagement.normalizeOwner(input.owner),\n $role_name: input.roleName.toLowerCase(),\n $wallets: RoleManagement.normalizeWallets(input.wallets),\n },\n );\n\n // Either.throw() will return the right value or throw with the left value (status code)\n return result.throw().map((row) => ({\n wallet: row.wallet,\n isMember: row.is_member,\n }));\n }\n\n /**\n * Lists the members of a role with optional pagination.\n * This calls the `list_role_members` VIEW action.\n */\n public async listRoleMembers(\n input: import(\"../types/role\").ListRoleMembersInput,\n ): Promise<import(\"../types/role\").RoleMember[]> {\n const result = await this.call<{\n wallet: string;\n granted_at: number;\n granted_by: string;\n }[]>(\"list_role_members\", {\n $owner: RoleManagement.normalizeOwner(input.owner),\n $role_name: input.roleName.toLowerCase(),\n ...(input.limit !== undefined ? { $limit: input.limit } : {}),\n ...(input.offset !== undefined ? { $offset: input.offset } : {}),\n });\n\n return result.throw().map((row) => ({\n wallet: row.wallet,\n grantedAt: Number(row.granted_at),\n grantedBy: row.granted_by,\n }));\n }\n\n /**\n * Helper factory mirroring the pattern used by the other action wrappers.\n */\n public static fromClient(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ): RoleManagement {\n return new RoleManagement(kwilClient, kwilSigner);\n }\n} "],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,5 @@
1
1
  // src/client/browserClient.ts
2
- import { WebKwil } from "@kwilteam/kwil-js";
2
+ import { WebKwil } from "@trufnetwork/kwil-js";
3
3
  import { BaseTNClient } from "./client.mjs";
4
4
  var BrowserTNClient = class extends BaseTNClient {
5
5
  constructor(options) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/browserClient.ts"],
4
- "sourcesContent": ["import { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { WebKwil } from \"@kwilteam/kwil-js\";\nimport { BaseTNClient, TNClientOptions } from \"./client\";\n\nexport class BrowserTNClient extends BaseTNClient<EnvironmentType.BROWSER> {\n constructor(options: TNClientOptions) {\n super(options);\n this.kwilClient = new WebKwil({\n ...options,\n timeout: options.timeout ?? 30000,\n kwilProvider: options.endpoint,\n });\n }\n}\n\nexport default BrowserTNClient;\n"],
4
+ "sourcesContent": ["import { EnvironmentType } from \"@trufnetwork/kwil-js/dist/core/enums\";\nimport { WebKwil } from \"@trufnetwork/kwil-js\";\nimport { BaseTNClient, TNClientOptions } from \"./client\";\n\nexport class BrowserTNClient extends BaseTNClient<EnvironmentType.BROWSER> {\n constructor(options: TNClientOptions) {\n super(options);\n this.kwilClient = new WebKwil({\n ...options,\n timeout: options.timeout ?? 30000,\n kwilProvider: options.endpoint,\n });\n }\n}\n\nexport default BrowserTNClient;\n"],
5
5
  "mappings": ";AACA,SAAS,eAAe;AACxB,SAAS,oBAAqC;AAEvC,IAAM,kBAAN,cAA8B,aAAsC;AAAA,EACzE,YAAY,SAA0B;AACpC,UAAM,OAAO;AACb,SAAK,aAAa,IAAI,QAAQ;AAAA,MAC5B,GAAG;AAAA,MACH,SAAS,QAAQ,WAAW;AAAA,MAC5B,cAAc,QAAQ;AAAA,IACxB,CAAC;AAAA,EACH;AACF;AAEA,IAAO,wBAAQ;",
6
6
  "names": []
7
7
  }
@@ -3,7 +3,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
4
 
5
5
  // src/client/client.ts
6
- import { Client, KwilSigner } from "@kwilteam/kwil-js";
6
+ import { Client, KwilSigner } from "@trufnetwork/kwil-js";
7
7
  import { ComposedAction } from "../contracts-api/composedAction.mjs";
8
8
  import { deployStream } from "../contracts-api/deployStream.mjs";
9
9
  import { deleteStream } from "../contracts-api/deleteStream.mjs";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/client.ts"],
4
- "sourcesContent": ["import { Client, KwilSigner, NodeKwil, WebKwil } from \"@kwilteam/kwil-js\";\nimport { KwilConfig } from \"@kwilteam/kwil-js/dist/api_client/config\";\nimport { Kwil } from \"@kwilteam/kwil-js/dist/client/kwil\";\nimport { EthSigner } from \"@kwilteam/kwil-js/dist/core/signature\";\nimport { EnvironmentType } from \"@kwilteam/kwil-js/dist/core/enums\";\nimport { GenericResponse } from \"@kwilteam/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@kwilteam/kwil-js/dist/core/tx\";\nimport { TxInfoReceipt } from \"@kwilteam/kwil-js/dist/core/txQuery\";\nimport { ComposedAction } from \"../contracts-api/composedAction\";\nimport { deployStream } from \"../contracts-api/deployStream\";\nimport { deleteStream } from \"../contracts-api/deleteStream\";\nimport { PrimitiveAction } from \"../contracts-api/primitiveAction\";\nimport { Action } from \"../contracts-api/action\";\nimport { StreamType } from \"../contracts-api/contractValues\";\nimport { StreamLocator, TNStream } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { listStreams } from \"./listStreams\";\nimport { getLastTransactions } from \"./getLastTransactions\";\nimport { RoleManagement } from \"../contracts-api/roleManagement\";\nimport { OwnerIdentifier } from \"../types/role\";\n\nexport interface SignerInfo {\n // we need to have the address upfront to create the KwilSigner, instead of relying on the signer to return it asynchronously\n address: string;\n signer: EthSigner;\n}\n\nexport type TNClientOptions = {\n endpoint: string;\n signerInfo: SignerInfo;\n} & Omit<KwilConfig, \"kwilProvider\">;\n\nexport interface ListStreamsInput {\n dataProvider?: string;\n limit?: number;\n offset?: number;\n orderBy?: string;\n blockHeight?: number;\n}\n\n/**\n * @param dataProvider optional address; when omitted or null, returns for all providers\n * @param limitSize max rows to return (default 6, max 100)\n */\nexport interface GetLastTransactionsInput {\n dataProvider?: string;\n limitSize?: number;\n}\n\nexport abstract class BaseTNClient<T extends EnvironmentType> {\n protected kwilClient: Kwil<T> | undefined;\n protected signerInfo: SignerInfo;\n\n protected constructor(options: TNClientOptions) {\n this.signerInfo = options.signerInfo;\n }\n\n /**\n * Waits for a transaction to be mined by TN.\n * @param txHash - The transaction hash to wait for.\n * @param timeout - The timeout in milliseconds.\n * @returns A promise that resolves to the transaction info receipt.\n */\n async waitForTx(txHash: string, timeout = 12000): Promise<TxInfoReceipt> {\n return new Promise<TxInfoReceipt>(async (resolve, reject) => {\n const interval = setInterval(async () => {\n const receipt = await this.getKwilClient()\n [\"txInfoClient\"](txHash)\n .catch(() => ({ data: undefined, status: undefined }));\n switch (receipt.status) {\n case 200:\n if (receipt.data?.tx_result?.log !== undefined && receipt.data?.tx_result?.log.includes(\"ERROR\")) {\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ))\n } else {\n resolve(receipt.data!);\n }\n break;\n case undefined:\n break;\n default:\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ),\n );\n }\n }, 1000);\n setTimeout(() => {\n clearInterval(interval);\n reject(new Error(\"Transaction failed: Timeout\"));\n }, timeout);\n });\n }\n\n /**\n * Returns the Kwil signer used by the client.\n * @returns An instance of KwilSigner.\n */\n getKwilSigner(): KwilSigner {\n return new KwilSigner(\n this.signerInfo.signer,\n this.address().getAddress(),\n );\n }\n\n /**\n * Returns the Kwil client used by the client.\n * @returns An instance of Kwil.\n * @throws If the Kwil client is not initialized.\n */\n getKwilClient(): Kwil<EnvironmentType> {\n if (!this.kwilClient) {\n throw new Error(\"Kwil client not initialized\");\n }\n return this.kwilClient;\n }\n\n /**\n * Deploys a new stream.\n * @param streamId - The ID of the stream to deploy.\n * @param streamType - The type of the stream.\n * @param synchronous - Whether the deployment should be synchronous.\n * @param contractVersion\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async deployStream(\n streamId: StreamId,\n streamType: StreamType,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deployStream({\n streamId,\n streamType,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Destroys a stream.\n * @param stream - The StreamLocator of the stream to destroy.\n * @param synchronous - Whether the destruction should be synchronous.\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async destroyStream(\n stream: StreamLocator,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deleteStream({\n stream,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Loads an already deployed stream, permitting its API usage.\n * @returns An instance of IStream.\n */\n loadAction(): Action {\n return new Action(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Loads a primitive stream.\n * @returns An instance of IPrimitiveStream.\n */\n loadPrimitiveAction(): PrimitiveAction {\n return PrimitiveAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads a composed stream.\n * @returns An instance of IComposedStream.\n */\n loadComposedAction(): ComposedAction {\n return ComposedAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads the role management contract API, permitting its RBAC usage.\n */\n loadRoleManagementAction(): RoleManagement {\n return RoleManagement.fromClient(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Creates a new stream locator.\n * @param streamId - The ID of the stream.\n * @returns A StreamLocator object.\n */\n ownStreamLocator(streamId: StreamId): StreamLocator {\n return {\n streamId,\n dataProvider: this.address(),\n };\n }\n\n /**\n * Returns the address of the signer used by the client.\n * @returns An instance of EthereumAddress.\n */\n address(): EthereumAddress {\n return new EthereumAddress(this.signerInfo.address);\n }\n\n /**\n * Returns all streams from the TN network.\n * @param input - The input parameters for listing streams.\n * @returns A promise that resolves to a list of stream locators.\n */\n async getListStreams(input: ListStreamsInput): Promise<TNStream[]> {\n return listStreams(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Returns the last write activity across streams.\n * @param input - The input parameters for getting last transactions.\n * @returns A promise that resolves to a list of last transactions.\n */\n async getLastTransactions(input: GetLastTransactionsInput): Promise<any[]> {\n return getLastTransactions(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Get the default chain id for a provider. Use with caution, as this decreases the security of the TN.\n * @param provider - The provider URL.\n * @returns A promise that resolves to the chain ID.\n */\n public static async getDefaultChainId(provider: string) {\n const kwilClient = new Client({\n kwilProvider: provider,\n });\n const chainInfo = await kwilClient[\"chainInfoClient\"]();\n return chainInfo.data?.chain_id;\n }\n\n /*\n * High-level role-management helpers. These wrap the lower-level\n * RoleManagement contract calls and expose a simpler API on the\n * TN client.\n */\n\n /** Grants a role to one or more wallets. */\n async grantRole(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallets: EthereumAddress | EthereumAddress[];\n synchronous?: boolean;\n }): Promise<string> {\n const rm = this.loadRoleManagementAction();\n const walletsArr: EthereumAddress[] = Array.isArray(input.wallets)\n ? input.wallets\n : [input.wallets];\n const tx = await rm.grantRole(\n {\n owner: input.owner,\n roleName: input.roleName,\n wallets: walletsArr,\n },\n input.synchronous,\n );\n return tx.data?.tx_hash as unknown as string;\n }\n\n /** Revokes a role from one or more wallets. */\n async revokeRole(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallets: EthereumAddress | EthereumAddress[];\n synchronous?: boolean;\n }): Promise<string> {\n const rm = this.loadRoleManagementAction();\n const walletsArr: EthereumAddress[] = Array.isArray(input.wallets)\n ? input.wallets\n : [input.wallets];\n const tx = await rm.revokeRole(\n {\n owner: input.owner,\n roleName: input.roleName,\n wallets: walletsArr,\n },\n input.synchronous,\n );\n return tx.data?.tx_hash as unknown as string;\n }\n\n /**\n * Checks if a wallet is member of a role.\n * Returns true if the wallet is a member.\n */\n async isMemberOf(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallet: EthereumAddress;\n }): Promise<boolean> {\n const rm = this.loadRoleManagementAction();\n const res = await rm.areMembersOf({\n owner: input.owner,\n roleName: input.roleName,\n wallets: [input.wallet],\n });\n return res.length > 0 && res[0].isMember;\n }\n\n /**\n * Lists role members \u2013 currently unsupported in the\n * smart-contract layer.\n */\n async listRoleMembers(input: {\n owner: OwnerIdentifier;\n roleName: string;\n limit?: number;\n offset?: number;\n }): Promise<import(\"../types/role\").RoleMember[]> {\n const rm = this.loadRoleManagementAction();\n return rm.listRoleMembers({\n owner: input.owner,\n roleName: input.roleName,\n limit: input.limit,\n offset: input.offset,\n });\n }\n}\n"],
4
+ "sourcesContent": ["import { Client, KwilSigner, NodeKwil, WebKwil } from \"@trufnetwork/kwil-js\";\nimport { KwilConfig } from \"@trufnetwork/kwil-js/dist/api_client/config\";\nimport { Kwil } from \"@trufnetwork/kwil-js/dist/client/kwil\";\nimport { EthSigner } from \"@trufnetwork/kwil-js/dist/core/signature\";\nimport { EnvironmentType } from \"@trufnetwork/kwil-js/dist/core/enums\";\nimport { GenericResponse } from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport { TxInfoReceipt } from \"@trufnetwork/kwil-js/dist/core/txQuery\";\nimport { ComposedAction } from \"../contracts-api/composedAction\";\nimport { deployStream } from \"../contracts-api/deployStream\";\nimport { deleteStream } from \"../contracts-api/deleteStream\";\nimport { PrimitiveAction } from \"../contracts-api/primitiveAction\";\nimport { Action } from \"../contracts-api/action\";\nimport { StreamType } from \"../contracts-api/contractValues\";\nimport { StreamLocator, TNStream } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { StreamId } from \"../util/StreamId\";\nimport { listStreams } from \"./listStreams\";\nimport { getLastTransactions } from \"./getLastTransactions\";\nimport { RoleManagement } from \"../contracts-api/roleManagement\";\nimport { OwnerIdentifier } from \"../types/role\";\n\nexport interface SignerInfo {\n // we need to have the address upfront to create the KwilSigner, instead of relying on the signer to return it asynchronously\n address: string;\n signer: EthSigner;\n}\n\nexport type TNClientOptions = {\n endpoint: string;\n signerInfo: SignerInfo;\n} & Omit<KwilConfig, \"kwilProvider\">;\n\nexport interface ListStreamsInput {\n dataProvider?: string;\n limit?: number;\n offset?: number;\n orderBy?: string;\n blockHeight?: number;\n}\n\n/**\n * @param dataProvider optional address; when omitted or null, returns for all providers\n * @param limitSize max rows to return (default 6, max 100)\n */\nexport interface GetLastTransactionsInput {\n dataProvider?: string;\n limitSize?: number;\n}\n\nexport abstract class BaseTNClient<T extends EnvironmentType> {\n protected kwilClient: Kwil<T> | undefined;\n protected signerInfo: SignerInfo;\n\n protected constructor(options: TNClientOptions) {\n this.signerInfo = options.signerInfo;\n }\n\n /**\n * Waits for a transaction to be mined by TN.\n * @param txHash - The transaction hash to wait for.\n * @param timeout - The timeout in milliseconds.\n * @returns A promise that resolves to the transaction info receipt.\n */\n async waitForTx(txHash: string, timeout = 12000): Promise<TxInfoReceipt> {\n return new Promise<TxInfoReceipt>(async (resolve, reject) => {\n const interval = setInterval(async () => {\n const receipt = await this.getKwilClient()\n [\"txInfoClient\"](txHash)\n .catch(() => ({ data: undefined, status: undefined }));\n switch (receipt.status) {\n case 200:\n if (receipt.data?.tx_result?.log !== undefined && receipt.data?.tx_result?.log.includes(\"ERROR\")) {\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ))\n } else {\n resolve(receipt.data!);\n }\n break;\n case undefined:\n break;\n default:\n reject(\n new Error(\n `Transaction failed: status ${receipt.status} : log message ${receipt.data?.tx_result.log}`,\n ),\n );\n }\n }, 1000);\n setTimeout(() => {\n clearInterval(interval);\n reject(new Error(\"Transaction failed: Timeout\"));\n }, timeout);\n });\n }\n\n /**\n * Returns the Kwil signer used by the client.\n * @returns An instance of KwilSigner.\n */\n getKwilSigner(): KwilSigner {\n return new KwilSigner(\n this.signerInfo.signer,\n this.address().getAddress(),\n );\n }\n\n /**\n * Returns the Kwil client used by the client.\n * @returns An instance of Kwil.\n * @throws If the Kwil client is not initialized.\n */\n getKwilClient(): Kwil<EnvironmentType> {\n if (!this.kwilClient) {\n throw new Error(\"Kwil client not initialized\");\n }\n return this.kwilClient;\n }\n\n /**\n * Deploys a new stream.\n * @param streamId - The ID of the stream to deploy.\n * @param streamType - The type of the stream.\n * @param synchronous - Whether the deployment should be synchronous.\n * @param contractVersion\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async deployStream(\n streamId: StreamId,\n streamType: StreamType,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deployStream({\n streamId,\n streamType,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Destroys a stream.\n * @param stream - The StreamLocator of the stream to destroy.\n * @param synchronous - Whether the destruction should be synchronous.\n * @returns A promise that resolves to a generic response containing the transaction receipt.\n */\n async destroyStream(\n stream: StreamLocator,\n synchronous?: boolean,\n ): Promise<GenericResponse<TxReceipt>> {\n return await deleteStream({\n stream,\n synchronous,\n kwilClient: this.getKwilClient(),\n kwilSigner: this.getKwilSigner(),\n });\n }\n\n /**\n * Loads an already deployed stream, permitting its API usage.\n * @returns An instance of IStream.\n */\n loadAction(): Action {\n return new Action(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Loads a primitive stream.\n * @returns An instance of IPrimitiveStream.\n */\n loadPrimitiveAction(): PrimitiveAction {\n return PrimitiveAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads a composed stream.\n * @returns An instance of IComposedStream.\n */\n loadComposedAction(): ComposedAction {\n return ComposedAction.fromStream(this.loadAction());\n }\n\n /**\n * Loads the role management contract API, permitting its RBAC usage.\n */\n loadRoleManagementAction(): RoleManagement {\n return RoleManagement.fromClient(\n this.getKwilClient() as WebKwil | NodeKwil,\n this.getKwilSigner(),\n );\n }\n\n /**\n * Creates a new stream locator.\n * @param streamId - The ID of the stream.\n * @returns A StreamLocator object.\n */\n ownStreamLocator(streamId: StreamId): StreamLocator {\n return {\n streamId,\n dataProvider: this.address(),\n };\n }\n\n /**\n * Returns the address of the signer used by the client.\n * @returns An instance of EthereumAddress.\n */\n address(): EthereumAddress {\n return new EthereumAddress(this.signerInfo.address);\n }\n\n /**\n * Returns all streams from the TN network.\n * @param input - The input parameters for listing streams.\n * @returns A promise that resolves to a list of stream locators.\n */\n async getListStreams(input: ListStreamsInput): Promise<TNStream[]> {\n return listStreams(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Returns the last write activity across streams.\n * @param input - The input parameters for getting last transactions.\n * @returns A promise that resolves to a list of last transactions.\n */\n async getLastTransactions(input: GetLastTransactionsInput): Promise<any[]> {\n return getLastTransactions(this.getKwilClient() as WebKwil | NodeKwil,this.getKwilSigner(),input);\n }\n\n /**\n * Get the default chain id for a provider. Use with caution, as this decreases the security of the TN.\n * @param provider - The provider URL.\n * @returns A promise that resolves to the chain ID.\n */\n public static async getDefaultChainId(provider: string) {\n const kwilClient = new Client({\n kwilProvider: provider,\n });\n const chainInfo = await kwilClient[\"chainInfoClient\"]();\n return chainInfo.data?.chain_id;\n }\n\n /*\n * High-level role-management helpers. These wrap the lower-level\n * RoleManagement contract calls and expose a simpler API on the\n * TN client.\n */\n\n /** Grants a role to one or more wallets. */\n async grantRole(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallets: EthereumAddress | EthereumAddress[];\n synchronous?: boolean;\n }): Promise<string> {\n const rm = this.loadRoleManagementAction();\n const walletsArr: EthereumAddress[] = Array.isArray(input.wallets)\n ? input.wallets\n : [input.wallets];\n const tx = await rm.grantRole(\n {\n owner: input.owner,\n roleName: input.roleName,\n wallets: walletsArr,\n },\n input.synchronous,\n );\n return tx.data?.tx_hash as unknown as string;\n }\n\n /** Revokes a role from one or more wallets. */\n async revokeRole(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallets: EthereumAddress | EthereumAddress[];\n synchronous?: boolean;\n }): Promise<string> {\n const rm = this.loadRoleManagementAction();\n const walletsArr: EthereumAddress[] = Array.isArray(input.wallets)\n ? input.wallets\n : [input.wallets];\n const tx = await rm.revokeRole(\n {\n owner: input.owner,\n roleName: input.roleName,\n wallets: walletsArr,\n },\n input.synchronous,\n );\n return tx.data?.tx_hash as unknown as string;\n }\n\n /**\n * Checks if a wallet is member of a role.\n * Returns true if the wallet is a member.\n */\n async isMemberOf(input: {\n owner: OwnerIdentifier;\n roleName: string;\n wallet: EthereumAddress;\n }): Promise<boolean> {\n const rm = this.loadRoleManagementAction();\n const res = await rm.areMembersOf({\n owner: input.owner,\n roleName: input.roleName,\n wallets: [input.wallet],\n });\n return res.length > 0 && res[0].isMember;\n }\n\n /**\n * Lists role members \u2013 currently unsupported in the\n * smart-contract layer.\n */\n async listRoleMembers(input: {\n owner: OwnerIdentifier;\n roleName: string;\n limit?: number;\n offset?: number;\n }): Promise<import(\"../types/role\").RoleMember[]> {\n const rm = this.loadRoleManagementAction();\n return rm.listRoleMembers({\n owner: input.owner,\n roleName: input.roleName,\n limit: input.limit,\n offset: input.offset,\n });\n }\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/getLastTransactions.ts"],
4
- "sourcesContent": ["import { WebKwil, NodeKwil, KwilSigner } from \"@kwilteam/kwil-js\";\r\nimport { GetLastTransactionsInput } from \"./client\";\r\nimport { LastTransaction } from \"../types/transaction\";\r\n\r\nconst INDEXER_BASE = \"https://indexer.infra.truf.network\";\r\nconst RPC_URL = \"https://gateway.mainnet.truf.network/rpc/v1\";\r\n\r\nexport async function getLastTransactions(\r\n kwilClient: WebKwil | NodeKwil,\r\n kwilSigner: KwilSigner,\r\n input: GetLastTransactionsInput\r\n): Promise<LastTransaction[]> {\r\n // 1) call your SQL action\r\n const res = await kwilClient.call(\r\n {\r\n name: \"get_last_transactions\",\r\n namespace: \"main\",\r\n inputs: {\r\n $data_provider: input.dataProvider ?? null,\r\n $limit_size: input.limitSize ?? 6,\r\n },\r\n },\r\n kwilSigner\r\n );\r\n const rows = (res.data?.result as { created_at: number; method: string }[]) || [];\r\n\r\n // 2) build per-block Promises\r\n const tasks = rows.map(({ created_at, method }) => {\r\n const blockHeight = Number(created_at);\r\n if (Number.isNaN(blockHeight)) {\r\n return Promise.reject(new Error(`Invalid block height returned: ${created_at}`));\r\n }\r\n\r\n const txUrl = `${INDEXER_BASE}/v0/chain/transactions`\r\n + `?from-block=${blockHeight}&to-block=${blockHeight}`\r\n + `&order=asc&limit=1`;\r\n\r\n // INDEXER: always return a { sender, hash } object\r\n const txPromise = fetch(txUrl).then(async (resp) => {\r\n if (!resp.ok) throw new Error(`Indexer fetch failed: ${resp.status}`);\r\n const json = (await resp.json()) as {\r\n ok: boolean;\r\n data: Array<{ hash: string; sender: string }>;\r\n };\r\n if (!json.ok || json.data.length === 0) {\r\n return { sender: \"(unknown)\", hash: \"(unknown)\" };\r\n }\r\n const { hash, sender } = json.data[0];\r\n return { sender, hash };\r\n });\r\n\r\n // RPC: get stamp_ms\r\n const rpcPromise = fetch(RPC_URL, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({\r\n jsonrpc: \"2.0\",\r\n method: \"chain.block\",\r\n params: { height: blockHeight },\r\n id: 1,\r\n }),\r\n }).then(async (resp) => {\r\n if (!resp.ok) {\r\n const txt = await resp.text();\r\n throw new Error(`RPC fetch failed: ${resp.status} \u2013 ${txt}`);\r\n }\r\n const rpc = (await resp.json()) as {\r\n result: { block: { header: { stamp_ms: number } } };\r\n };\r\n return rpc.result.block.header.stamp_ms;\r\n });\r\n\r\n // wait for both\r\n return Promise.all([txPromise, rpcPromise]).then(\r\n ([{ sender, hash }, stampMs]) => ({\r\n blockHeight,\r\n method,\r\n sender,\r\n transactionHash: hash,\r\n stampMs,\r\n })\r\n );\r\n });\r\n\r\n // 3) await all in parallel\r\n return Promise.all(tasks);\r\n}\r\n"],
4
+ "sourcesContent": ["import { WebKwil, NodeKwil, KwilSigner } from \"@trufnetwork/kwil-js\";\r\nimport { GetLastTransactionsInput } from \"./client\";\r\nimport { LastTransaction } from \"../types/transaction\";\r\n\r\nconst INDEXER_BASE = \"https://indexer.infra.truf.network\";\r\nconst RPC_URL = \"https://gateway.mainnet.truf.network/rpc/v1\";\r\n\r\nexport async function getLastTransactions(\r\n kwilClient: WebKwil | NodeKwil,\r\n kwilSigner: KwilSigner,\r\n input: GetLastTransactionsInput\r\n): Promise<LastTransaction[]> {\r\n // 1) call your SQL action\r\n const res = await kwilClient.call(\r\n {\r\n name: \"get_last_transactions\",\r\n namespace: \"main\",\r\n inputs: {\r\n $data_provider: input.dataProvider ?? null,\r\n $limit_size: input.limitSize ?? 6,\r\n },\r\n },\r\n kwilSigner\r\n );\r\n const rows = (res.data?.result as { created_at: number; method: string }[]) || [];\r\n\r\n // 2) build per-block Promises\r\n const tasks = rows.map(({ created_at, method }) => {\r\n const blockHeight = Number(created_at);\r\n if (Number.isNaN(blockHeight)) {\r\n return Promise.reject(new Error(`Invalid block height returned: ${created_at}`));\r\n }\r\n\r\n const txUrl = `${INDEXER_BASE}/v0/chain/transactions`\r\n + `?from-block=${blockHeight}&to-block=${blockHeight}`\r\n + `&order=asc&limit=1`;\r\n\r\n // INDEXER: always return a { sender, hash } object\r\n const txPromise = fetch(txUrl).then(async (resp) => {\r\n if (!resp.ok) throw new Error(`Indexer fetch failed: ${resp.status}`);\r\n const json = (await resp.json()) as {\r\n ok: boolean;\r\n data: Array<{ hash: string; sender: string }>;\r\n };\r\n if (!json.ok || json.data.length === 0) {\r\n return { sender: \"(unknown)\", hash: \"(unknown)\" };\r\n }\r\n const { hash, sender } = json.data[0];\r\n return { sender, hash };\r\n });\r\n\r\n // RPC: get stamp_ms\r\n const rpcPromise = fetch(RPC_URL, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({\r\n jsonrpc: \"2.0\",\r\n method: \"chain.block\",\r\n params: { height: blockHeight },\r\n id: 1,\r\n }),\r\n }).then(async (resp) => {\r\n if (!resp.ok) {\r\n const txt = await resp.text();\r\n throw new Error(`RPC fetch failed: ${resp.status} \u2013 ${txt}`);\r\n }\r\n const rpc = (await resp.json()) as {\r\n result: { block: { header: { stamp_ms: number } } };\r\n };\r\n return rpc.result.block.header.stamp_ms;\r\n });\r\n\r\n // wait for both\r\n return Promise.all([txPromise, rpcPromise]).then(\r\n ([{ sender, hash }, stampMs]) => ({\r\n blockHeight,\r\n method,\r\n sender,\r\n transactionHash: hash,\r\n stampMs,\r\n })\r\n );\r\n });\r\n\r\n // 3) await all in parallel\r\n return Promise.all(tasks);\r\n}\r\n"],
5
5
  "mappings": ";AAIA,IAAM,eAAe;AACrB,IAAM,UAAe;AAErB,eAAsB,oBAClB,YACA,YACA,OAC0B;AAE1B,QAAM,MAAM,MAAM,WAAW;AAAA,IACzB;AAAA,MACI,MAAM;AAAA,MACN,WAAW;AAAA,MACX,QAAQ;AAAA,QACJ,gBAAgB,MAAM,gBAAgB;AAAA,QACtC,aAAa,MAAM,aAAa;AAAA,MACpC;AAAA,IACJ;AAAA,IACA;AAAA,EACJ;AACA,QAAM,OAAQ,IAAI,MAAM,UAAuD,CAAC;AAGhF,QAAM,QAAQ,KAAK,IAAI,CAAC,EAAE,YAAY,OAAO,MAAM;AAC/C,UAAM,cAAc,OAAO,UAAU;AACrC,QAAI,OAAO,MAAM,WAAW,GAAG;AAC3B,aAAO,QAAQ,OAAO,IAAI,MAAM,kCAAkC,UAAU,EAAE,CAAC;AAAA,IACnF;AAEA,UAAM,QAAQ,GAAG,YAAY,qCACR,WAAW,aAAa,WAAW;AAIxD,UAAM,YAAY,MAAM,KAAK,EAAE,KAAK,OAAO,SAAS;AAChD,UAAI,CAAC,KAAK,GAAI,OAAM,IAAI,MAAM,yBAAyB,KAAK,MAAM,EAAE;AACpE,YAAM,OAAQ,MAAM,KAAK,KAAK;AAI9B,UAAI,CAAC,KAAK,MAAM,KAAK,KAAK,WAAW,GAAG;AACpC,eAAO,EAAE,QAAQ,aAAa,MAAM,YAAY;AAAA,MACpD;AACA,YAAM,EAAE,MAAM,OAAO,IAAI,KAAK,KAAK,CAAC;AACpC,aAAO,EAAE,QAAQ,KAAK;AAAA,IAC1B,CAAC;AAGD,UAAM,aAAa,MAAM,SAAS;AAAA,MAC9B,QAAS;AAAA,MACT,SAAS,EAAE,gBAAgB,mBAAmB;AAAA,MAC9C,MAAS,KAAK,UAAU;AAAA,QACpB,SAAS;AAAA,QACT,QAAS;AAAA,QACT,QAAS,EAAE,QAAQ,YAAY;AAAA,QAC/B,IAAS;AAAA,MACb,CAAC;AAAA,IACL,CAAC,EAAE,KAAK,OAAO,SAAS;AACpB,UAAI,CAAC,KAAK,IAAI;AACV,cAAM,MAAM,MAAM,KAAK,KAAK;AAC5B,cAAM,IAAI,MAAM,qBAAqB,KAAK,MAAM,WAAM,GAAG,EAAE;AAAA,MAC/D;AACA,YAAM,MAAO,MAAM,KAAK,KAAK;AAG7B,aAAO,IAAI,OAAO,MAAM,OAAO;AAAA,IACnC,CAAC;AAGD,WAAO,QAAQ,IAAI,CAAC,WAAW,UAAU,CAAC,EAAE;AAAA,MACxC,CAAC,CAAC,EAAE,QAAQ,KAAK,GAAG,OAAO,OAAO;AAAA,QAC9B;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAiB;AAAA,QACjB;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,CAAC;AAGD,SAAO,QAAQ,IAAI,KAAK;AAC5B;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/listStreams.ts"],
4
- "sourcesContent": ["import {TNStream} from \"../types/stream\";\nimport {EthereumAddress} from \"../util/EthereumAddress\";\nimport {StreamId} from \"../util/StreamId\";\nimport {Database} from \"@kwilteam/kwil-js/dist/core/database\";\nimport {ListStreamsInput} from \"./client\";\nimport {KwilSigner, NodeKwil, WebKwil} from \"@kwilteam/kwil-js\";\n\n/**\n * List all streams from the TN network.\n * @param kwilClient - The Kwil client.\n * @param kwilSigner - The Kwil signer.\n * @param input - The input parameters for listing streams.\n * @returns A list of stream locators.\n */\nexport async function listStreams(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n input: ListStreamsInput\n): Promise<TNStream[]> {\n const result = await kwilClient.call({\n inputs: {\n $data_provider: input.dataProvider,\n $limit: input.limit,\n $offset: input.offset,\n $order_by: input.orderBy,\n $block_height: input.blockHeight,\n },\n name: \"list_streams\",\n namespace: \"main\",\n }, kwilSigner);\n\n return await Promise.all(\n (result.data?.result as {\n data_provider: string;\n stream_id: string;\n stream_type: string;\n created_at: number;\n }[]).map(async (database) => ({\n streamId: await StreamId.generate(database.stream_id),\n dataProvider: new EthereumAddress(database.data_provider),\n streamType: database.stream_type,\n createdAt: database.created_at\n }))\n );\n}"],
4
+ "sourcesContent": ["import {TNStream} from \"../types/stream\";\nimport {EthereumAddress} from \"../util/EthereumAddress\";\nimport {StreamId} from \"../util/StreamId\";\nimport {Database} from \"@trufnetwork/kwil-js/dist/core/database\";\nimport {ListStreamsInput} from \"./client\";\nimport {KwilSigner, NodeKwil, WebKwil} from \"@trufnetwork/kwil-js\";\n\n/**\n * List all streams from the TN network.\n * @param kwilClient - The Kwil client.\n * @param kwilSigner - The Kwil signer.\n * @param input - The input parameters for listing streams.\n * @returns A list of stream locators.\n */\nexport async function listStreams(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n input: ListStreamsInput\n): Promise<TNStream[]> {\n const result = await kwilClient.call({\n inputs: {\n $data_provider: input.dataProvider,\n $limit: input.limit,\n $offset: input.offset,\n $order_by: input.orderBy,\n $block_height: input.blockHeight,\n },\n name: \"list_streams\",\n namespace: \"main\",\n }, kwilSigner);\n\n return await Promise.all(\n (result.data?.result as {\n data_provider: string;\n stream_id: string;\n stream_type: string;\n created_at: number;\n }[]).map(async (database) => ({\n streamId: await StreamId.generate(database.stream_id),\n dataProvider: new EthereumAddress(database.data_provider),\n streamType: database.stream_type,\n createdAt: database.created_at\n }))\n );\n}"],
5
5
  "mappings": ";AACA,SAAQ,uBAAsB;AAC9B,SAAQ,gBAAe;AAYvB,eAAsB,YACpB,YACA,YACA,OACqB;AACnB,QAAM,SAAS,MAAM,WAAW,KAAK;AAAA,IACjC,QAAQ;AAAA,MACJ,gBAAgB,MAAM;AAAA,MACtB,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,WAAW,MAAM;AAAA,MACjB,eAAe,MAAM;AAAA,IACzB;AAAA,IACA,MAAM;AAAA,IACN,WAAW;AAAA,EACf,GAAG,UAAU;AAEb,SAAO,MAAM,QAAQ;AAAA,KAChB,OAAO,MAAM,QAKT,IAAI,OAAO,cAAc;AAAA,MAC1B,UAAU,MAAM,SAAS,SAAS,SAAS,SAAS;AAAA,MACpD,cAAc,IAAI,gBAAgB,SAAS,aAAa;AAAA,MACxD,YAAY,SAAS;AAAA,MACrB,WAAW,SAAS;AAAA,IACxB,EAAE;AAAA,EACN;AACJ;",
6
6
  "names": []
7
7
  }