@algorandfoundation/algokit-utils 8.1.0-beta.3 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "**"
7
7
  ],
8
8
  "name": "@algorandfoundation/algokit-utils",
9
- "version": "8.1.0-beta.3",
9
+ "version": "8.1.0",
10
10
  "private": false,
11
11
  "description": "A set of core Algorand utilities written in TypeScript and released via npm that make it easier to build solutions on Algorand.",
12
12
  "author": "Algorand Foundation",
@@ -7,11 +7,16 @@ import { TransactionComposer } from './composer';
7
7
  import { NetworkDetails } from './network-client';
8
8
  import Algodv2 = algosdk.Algodv2;
9
9
  import Indexer = algosdk.Indexer;
10
- /** Interface for the bulk of the `AlgorandClient` functionality.
10
+ import type { AlgorandClient } from './algorand-client';
11
+ import { InterfaceOf } from './interface-of';
12
+ /**
13
+ * @deprecated Use `AlgorandClient` with `import type` instead since this
14
+ * interface does not implement the full interface for the AlgorandClient
15
+ * and will get removed in the next major release
11
16
  *
12
- * Used to take a dependency on AlgorandClient without generating a circular dependency.
17
+ * @see https://github.com/algorandfoundation/algokit-utils-ts/pull/365
13
18
  */
14
- export interface AlgorandClientInterface {
19
+ interface OldAlgorandClientInterface {
15
20
  app: AppManager;
16
21
  appDeployer: AppDeployer;
17
22
  send: AlgorandClientTransactionSender;
@@ -26,3 +31,22 @@ export interface AlgorandClientInterface {
26
31
  isMainNet(): Promise<boolean>;
27
32
  };
28
33
  }
34
+ /**
35
+ * @deprecated Use `AlgorandClient` with `import type` instead since this interface
36
+ * will get removed in the next major release
37
+ *
38
+ * This type is a solution to the problem raised in the PR below.
39
+ * In summary, we needed to update the interface without making a breaking
40
+ * change so this was the best option. This interface has some optional properties,
41
+ * such as `account`, but unless you are using a custom implementation of AlgorandClient
42
+ * (you probably aren't) you can be sure these will always be defined.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * algorand.account!.getInformation(addr);
47
+ * ```
48
+ *
49
+ * @see https://github.com/algorandfoundation/algokit-utils-ts/pull/365
50
+ */
51
+ export type AlgorandClientInterface = OldAlgorandClientInterface & Partial<InterfaceOf<AlgorandClient>>;
52
+ export {};
@@ -1,7 +1,6 @@
1
1
  import algosdk, { Address } from 'algosdk';
2
2
  import { MultisigAccount, SigningAccount, TransactionSignerAccount } from './account';
3
3
  import { AccountManager } from './account-manager';
4
- import { AlgorandClientInterface } from './algorand-client-interface';
5
4
  import { AlgorandClientTransactionCreator } from './algorand-client-transaction-creator';
6
5
  import { AlgorandClientTransactionSender } from './algorand-client-transaction-sender';
7
6
  import { AppDeployer } from './app-deployer';
@@ -15,7 +14,7 @@ import LogicSigAccount = algosdk.LogicSigAccount;
15
14
  /**
16
15
  * A client that brokers easy access to Algorand functionality.
17
16
  */
18
- export declare class AlgorandClient implements AlgorandClientInterface {
17
+ export declare class AlgorandClient {
19
18
  private _clientManager;
20
19
  private _accountManager;
21
20
  private _appManager;
@@ -1 +1 @@
1
- {"version":3,"file":"algorand-client.js","sources":["../../src/types/algorand-client.ts"],"sourcesContent":["import algosdk, { Address } from 'algosdk'\nimport { MultisigAccount, SigningAccount, TransactionSignerAccount } from './account'\nimport { AccountManager } from './account-manager'\nimport { AlgorandClientInterface } from './algorand-client-interface'\nimport { AlgorandClientTransactionCreator } from './algorand-client-transaction-creator'\nimport { AlgorandClientTransactionSender } from './algorand-client-transaction-sender'\nimport { AppDeployer } from './app-deployer'\nimport { AppManager } from './app-manager'\nimport { AssetManager } from './asset-manager'\nimport { AlgoSdkClients, ClientManager } from './client-manager'\nimport { TransactionComposer } from './composer'\nimport { AlgoConfig } from './network-client'\nimport Account = algosdk.Account\nimport LogicSigAccount = algosdk.LogicSigAccount\n\n/**\n * A client that brokers easy access to Algorand functionality.\n */\nexport class AlgorandClient implements AlgorandClientInterface {\n private _clientManager: ClientManager\n private _accountManager: AccountManager\n private _appManager: AppManager\n private _appDeployer: AppDeployer\n private _assetManager: AssetManager\n private _transactionSender: AlgorandClientTransactionSender\n private _transactionCreator: AlgorandClientTransactionCreator\n\n private _cachedSuggestedParams?: algosdk.SuggestedParams\n private _cachedSuggestedParamsExpiry?: Date\n private _cachedSuggestedParamsTimeout: number = 3_000 // three seconds\n\n private _defaultValidityWindow: bigint | undefined = undefined\n\n private constructor(config: AlgoConfig | AlgoSdkClients) {\n this._clientManager = new ClientManager(config, this)\n this._accountManager = new AccountManager(this._clientManager)\n this._appManager = new AppManager(this._clientManager.algod)\n this._assetManager = new AssetManager(this._clientManager.algod, () => this.newGroup())\n this._transactionSender = new AlgorandClientTransactionSender(() => this.newGroup(), this._assetManager, this._appManager)\n this._transactionCreator = new AlgorandClientTransactionCreator(() => this.newGroup())\n this._appDeployer = new AppDeployer(this._appManager, this._transactionSender, this._clientManager.indexerIfPresent)\n }\n\n /**\n * Sets the default validity window for transactions.\n * @param validityWindow The number of rounds between the first and last valid rounds\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setDefaultValidityWindow(validityWindow: number | bigint) {\n this._defaultValidityWindow = BigInt(validityWindow)\n return this\n }\n\n /**\n * Sets the default signer to use if no other signer is specified.\n * @param signer The signer to use, either a `TransactionSigner` or a `TransactionSignerAccount`\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setDefaultSigner(signer: algosdk.TransactionSigner | TransactionSignerAccount): AlgorandClient {\n this._accountManager.setDefaultSigner(signer)\n return this\n }\n\n /**\n * Tracks the given account (object that encapsulates an address and a signer) for later signing.\n * @param account The account to register, which can be a `TransactionSignerAccount` or\n * a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`\n * @example\n * ```typescript\n * const accountManager = AlgorandClient.mainnet()\n * .setSignerFromAccount(algosdk.generateAccount())\n * .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))\n * .setSignerFromAccount(new SigningAccount(mnemonic, sender))\n * .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: [\"ADDRESS1...\", \"ADDRESS2...\"]}, [account1, account2]))\n * .setSignerFromAccount({addr: \"SENDERADDRESS\", signer: transactionSigner})\n * ```\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSignerFromAccount(\n account: TransactionSignerAccount | TransactionSignerAccount | Account | LogicSigAccount | SigningAccount | MultisigAccount,\n ) {\n this._accountManager.setSignerFromAccount(account)\n return this\n }\n\n /**\n * Tracks the given signer against the given sender for later signing.\n * @param sender The sender address to use this signer for\n * @param signer The signer to sign transactions with for the given sender\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSigner(sender: string | Address, signer: algosdk.TransactionSigner) {\n this._accountManager.setSigner(sender, signer)\n return this\n }\n\n /**\n * Sets a cache value to use for suggested transaction params.\n * @param suggestedParams The suggested params to use\n * @param until A date until which to cache, or if not specified then the timeout is used\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSuggestedParamsCache(suggestedParams: algosdk.SuggestedParams, until?: Date) {\n this._cachedSuggestedParams = suggestedParams\n this._cachedSuggestedParamsExpiry = until ?? new Date(+new Date() + this._cachedSuggestedParamsTimeout)\n return this\n }\n\n /**\n * Sets the timeout for caching suggested params.\n * @param timeout The timeout in milliseconds\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSuggestedParamsCacheTimeout(timeout: number) {\n this._cachedSuggestedParamsTimeout = timeout\n return this\n }\n\n /** Get suggested params for a transaction (either cached or from algod if the cache is stale or empty) */\n public async getSuggestedParams(): Promise<algosdk.SuggestedParams> {\n if (this._cachedSuggestedParams && (!this._cachedSuggestedParamsExpiry || this._cachedSuggestedParamsExpiry > new Date())) {\n return {\n ...this._cachedSuggestedParams,\n }\n }\n\n this._cachedSuggestedParams = await this._clientManager.algod.getTransactionParams().do()\n this._cachedSuggestedParamsExpiry = new Date(new Date().getTime() + this._cachedSuggestedParamsTimeout)\n\n return {\n ...this._cachedSuggestedParams,\n }\n }\n\n /** Get clients, including algosdk clients and app clients. */\n public get client() {\n return this._clientManager\n }\n\n /** Get or create accounts that can sign transactions. */\n public get account() {\n return this._accountManager\n }\n\n /** Methods for interacting with assets. */\n public get asset() {\n return this._assetManager\n }\n\n /** Methods for interacting with apps. */\n public get app() {\n return this._appManager\n }\n\n /** Methods for deploying apps and managing app deployment metadata. */\n public get appDeployer() {\n return this._appDeployer\n }\n\n /** Start a new `TransactionComposer` transaction group */\n public newGroup() {\n return new TransactionComposer({\n algod: this.client.algod,\n getSigner: (addr: string | Address) => this.account.getSigner(addr),\n getSuggestedParams: () => this.getSuggestedParams(),\n defaultValidityWindow: this._defaultValidityWindow,\n appManager: this._appManager,\n })\n }\n\n /**\n * Methods for sending a transaction.\n */\n public get send() {\n return this._transactionSender\n }\n\n /**\n * Methods for creating a transaction.\n */\n public get createTransaction() {\n return this._transactionCreator\n }\n\n // Static methods to create an `AlgorandClient`\n\n /**\n * Returns an `AlgorandClient` pointing at default LocalNet ports and API token.\n * @returns The `AlgorandClient`\n */\n public static defaultLocalNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getDefaultLocalNetConfig('algod'),\n indexerConfig: ClientManager.getDefaultLocalNetConfig('indexer'),\n kmdConfig: ClientManager.getDefaultLocalNetConfig('kmd'),\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing at TestNet using AlgoNode.\n * @returns The `AlgorandClient`\n */\n public static testNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getAlgoNodeConfig('testnet', 'algod'),\n indexerConfig: ClientManager.getAlgoNodeConfig('testnet', 'indexer'),\n kmdConfig: undefined,\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing at MainNet using AlgoNode.\n * @returns The `AlgorandClient`\n */\n public static mainNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getAlgoNodeConfig('mainnet', 'algod'),\n indexerConfig: ClientManager.getAlgoNodeConfig('mainnet', 'indexer'),\n kmdConfig: undefined,\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing to the given client(s).\n * @param clients The clients to use\n * @returns The `AlgorandClient`\n */\n public static fromClients(clients: AlgoSdkClients) {\n return new AlgorandClient(clients)\n }\n\n /**\n * Returns an `AlgorandClient` loading the configuration from environment variables.\n *\n * Retrieve configurations from environment variables when defined or get default LocalNet configuration if they aren't defined.\n *\n * Expects to be called from a Node.js environment.\n *\n * If `process.env.ALGOD_SERVER` is defined it will use that along with optional `process.env.ALGOD_PORT` and `process.env.ALGOD_TOKEN`.\n *\n * If `process.env.INDEXER_SERVER` is defined it will use that along with optional `process.env.INDEXER_PORT` and `process.env.INDEXER_TOKEN`.\n *\n * If either aren't defined it will use the default LocalNet config.\n *\n * It will return a KMD configuration that uses `process.env.KMD_PORT` (or port 4002) if `process.env.ALGOD_SERVER` is defined,\n * otherwise it will use the default LocalNet config unless it detects testnet or mainnet.\n * @returns The `AlgorandClient`\n */\n public static fromEnvironment() {\n return new AlgorandClient(ClientManager.getConfigFromEnvironmentOrLocalNet())\n }\n\n /**\n * Returns an `AlgorandClient` from the given config.\n * @param config The config to use\n * @returns The `AlgorandClient`\n */\n public static fromConfig(config: AlgoConfig) {\n return new AlgorandClient(config)\n }\n}\n"],"names":["ClientManager","AccountManager","AppManager","AssetManager","AlgorandClientTransactionSender","AlgorandClientTransactionCreator","AppDeployer","TransactionComposer"],"mappings":"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"}
1
+ {"version":3,"file":"algorand-client.js","sources":["../../src/types/algorand-client.ts"],"sourcesContent":["import algosdk, { Address } from 'algosdk'\nimport { MultisigAccount, SigningAccount, TransactionSignerAccount } from './account'\nimport { AccountManager } from './account-manager'\nimport { AlgorandClientTransactionCreator } from './algorand-client-transaction-creator'\nimport { AlgorandClientTransactionSender } from './algorand-client-transaction-sender'\nimport { AppDeployer } from './app-deployer'\nimport { AppManager } from './app-manager'\nimport { AssetManager } from './asset-manager'\nimport { AlgoSdkClients, ClientManager } from './client-manager'\nimport { TransactionComposer } from './composer'\nimport { AlgoConfig } from './network-client'\nimport Account = algosdk.Account\nimport LogicSigAccount = algosdk.LogicSigAccount\n\n/**\n * A client that brokers easy access to Algorand functionality.\n */\nexport class AlgorandClient {\n private _clientManager: ClientManager\n private _accountManager: AccountManager\n private _appManager: AppManager\n private _appDeployer: AppDeployer\n private _assetManager: AssetManager\n private _transactionSender: AlgorandClientTransactionSender\n private _transactionCreator: AlgorandClientTransactionCreator\n\n private _cachedSuggestedParams?: algosdk.SuggestedParams\n private _cachedSuggestedParamsExpiry?: Date\n private _cachedSuggestedParamsTimeout: number = 3_000 // three seconds\n\n private _defaultValidityWindow: bigint | undefined = undefined\n\n private constructor(config: AlgoConfig | AlgoSdkClients) {\n this._clientManager = new ClientManager(config, this)\n this._accountManager = new AccountManager(this._clientManager)\n this._appManager = new AppManager(this._clientManager.algod)\n this._assetManager = new AssetManager(this._clientManager.algod, () => this.newGroup())\n this._transactionSender = new AlgorandClientTransactionSender(() => this.newGroup(), this._assetManager, this._appManager)\n this._transactionCreator = new AlgorandClientTransactionCreator(() => this.newGroup())\n this._appDeployer = new AppDeployer(this._appManager, this._transactionSender, this._clientManager.indexerIfPresent)\n }\n\n /**\n * Sets the default validity window for transactions.\n * @param validityWindow The number of rounds between the first and last valid rounds\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setDefaultValidityWindow(validityWindow: number | bigint) {\n this._defaultValidityWindow = BigInt(validityWindow)\n return this\n }\n\n /**\n * Sets the default signer to use if no other signer is specified.\n * @param signer The signer to use, either a `TransactionSigner` or a `TransactionSignerAccount`\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setDefaultSigner(signer: algosdk.TransactionSigner | TransactionSignerAccount): AlgorandClient {\n this._accountManager.setDefaultSigner(signer)\n return this\n }\n\n /**\n * Tracks the given account (object that encapsulates an address and a signer) for later signing.\n * @param account The account to register, which can be a `TransactionSignerAccount` or\n * a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`\n * @example\n * ```typescript\n * const accountManager = AlgorandClient.mainnet()\n * .setSignerFromAccount(algosdk.generateAccount())\n * .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))\n * .setSignerFromAccount(new SigningAccount(mnemonic, sender))\n * .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: [\"ADDRESS1...\", \"ADDRESS2...\"]}, [account1, account2]))\n * .setSignerFromAccount({addr: \"SENDERADDRESS\", signer: transactionSigner})\n * ```\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSignerFromAccount(\n account: TransactionSignerAccount | TransactionSignerAccount | Account | LogicSigAccount | SigningAccount | MultisigAccount,\n ) {\n this._accountManager.setSignerFromAccount(account)\n return this\n }\n\n /**\n * Tracks the given signer against the given sender for later signing.\n * @param sender The sender address to use this signer for\n * @param signer The signer to sign transactions with for the given sender\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSigner(sender: string | Address, signer: algosdk.TransactionSigner) {\n this._accountManager.setSigner(sender, signer)\n return this\n }\n\n /**\n * Sets a cache value to use for suggested transaction params.\n * @param suggestedParams The suggested params to use\n * @param until A date until which to cache, or if not specified then the timeout is used\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSuggestedParamsCache(suggestedParams: algosdk.SuggestedParams, until?: Date) {\n this._cachedSuggestedParams = suggestedParams\n this._cachedSuggestedParamsExpiry = until ?? new Date(+new Date() + this._cachedSuggestedParamsTimeout)\n return this\n }\n\n /**\n * Sets the timeout for caching suggested params.\n * @param timeout The timeout in milliseconds\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSuggestedParamsCacheTimeout(timeout: number) {\n this._cachedSuggestedParamsTimeout = timeout\n return this\n }\n\n /** Get suggested params for a transaction (either cached or from algod if the cache is stale or empty) */\n public async getSuggestedParams(): Promise<algosdk.SuggestedParams> {\n if (this._cachedSuggestedParams && (!this._cachedSuggestedParamsExpiry || this._cachedSuggestedParamsExpiry > new Date())) {\n return {\n ...this._cachedSuggestedParams,\n }\n }\n\n this._cachedSuggestedParams = await this._clientManager.algod.getTransactionParams().do()\n this._cachedSuggestedParamsExpiry = new Date(new Date().getTime() + this._cachedSuggestedParamsTimeout)\n\n return {\n ...this._cachedSuggestedParams,\n }\n }\n\n /** Get clients, including algosdk clients and app clients. */\n public get client() {\n return this._clientManager\n }\n\n /** Get or create accounts that can sign transactions. */\n public get account() {\n return this._accountManager\n }\n\n /** Methods for interacting with assets. */\n public get asset() {\n return this._assetManager\n }\n\n /** Methods for interacting with apps. */\n public get app() {\n return this._appManager\n }\n\n /** Methods for deploying apps and managing app deployment metadata. */\n public get appDeployer() {\n return this._appDeployer\n }\n\n /** Start a new `TransactionComposer` transaction group */\n public newGroup() {\n return new TransactionComposer({\n algod: this.client.algod,\n getSigner: (addr: string | Address) => this.account.getSigner(addr),\n getSuggestedParams: () => this.getSuggestedParams(),\n defaultValidityWindow: this._defaultValidityWindow,\n appManager: this._appManager,\n })\n }\n\n /**\n * Methods for sending a transaction.\n */\n public get send() {\n return this._transactionSender\n }\n\n /**\n * Methods for creating a transaction.\n */\n public get createTransaction() {\n return this._transactionCreator\n }\n\n // Static methods to create an `AlgorandClient`\n\n /**\n * Returns an `AlgorandClient` pointing at default LocalNet ports and API token.\n * @returns The `AlgorandClient`\n */\n public static defaultLocalNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getDefaultLocalNetConfig('algod'),\n indexerConfig: ClientManager.getDefaultLocalNetConfig('indexer'),\n kmdConfig: ClientManager.getDefaultLocalNetConfig('kmd'),\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing at TestNet using AlgoNode.\n * @returns The `AlgorandClient`\n */\n public static testNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getAlgoNodeConfig('testnet', 'algod'),\n indexerConfig: ClientManager.getAlgoNodeConfig('testnet', 'indexer'),\n kmdConfig: undefined,\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing at MainNet using AlgoNode.\n * @returns The `AlgorandClient`\n */\n public static mainNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getAlgoNodeConfig('mainnet', 'algod'),\n indexerConfig: ClientManager.getAlgoNodeConfig('mainnet', 'indexer'),\n kmdConfig: undefined,\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing to the given client(s).\n * @param clients The clients to use\n * @returns The `AlgorandClient`\n */\n public static fromClients(clients: AlgoSdkClients) {\n return new AlgorandClient(clients)\n }\n\n /**\n * Returns an `AlgorandClient` loading the configuration from environment variables.\n *\n * Retrieve configurations from environment variables when defined or get default LocalNet configuration if they aren't defined.\n *\n * Expects to be called from a Node.js environment.\n *\n * If `process.env.ALGOD_SERVER` is defined it will use that along with optional `process.env.ALGOD_PORT` and `process.env.ALGOD_TOKEN`.\n *\n * If `process.env.INDEXER_SERVER` is defined it will use that along with optional `process.env.INDEXER_PORT` and `process.env.INDEXER_TOKEN`.\n *\n * If either aren't defined it will use the default LocalNet config.\n *\n * It will return a KMD configuration that uses `process.env.KMD_PORT` (or port 4002) if `process.env.ALGOD_SERVER` is defined,\n * otherwise it will use the default LocalNet config unless it detects testnet or mainnet.\n * @returns The `AlgorandClient`\n */\n public static fromEnvironment() {\n return new AlgorandClient(ClientManager.getConfigFromEnvironmentOrLocalNet())\n }\n\n /**\n * Returns an `AlgorandClient` from the given config.\n * @param config The config to use\n * @returns The `AlgorandClient`\n */\n public static fromConfig(config: AlgoConfig) {\n return new AlgorandClient(config)\n }\n}\n"],"names":["ClientManager","AccountManager","AppManager","AssetManager","AlgorandClientTransactionSender","AlgorandClientTransactionCreator","AppDeployer","TransactionComposer"],"mappings":";;;;;;;;;;;AAcA;;AAEG;MACU,cAAc,CAAA;AAezB,IAAA,WAAA,CAAoB,MAAmC,EAAA;AAJ/C,QAAA,IAAA,CAAA,6BAA6B,GAAW,IAAK,CAAA;QAE7C,IAAsB,CAAA,sBAAA,GAAuB,SAAS;QAG5D,IAAI,CAAC,cAAc,GAAG,IAAIA,iCAAa,CAAC,MAAM,EAAE,IAAI,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,IAAIC,mCAAc,CAAC,IAAI,CAAC,cAAc,CAAC;AAC9D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAIC,2BAAU,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,IAAIC,+BAAY,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACvF,IAAI,CAAC,kBAAkB,GAAG,IAAIC,qEAA+B,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;AAC1H,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAIC,uEAAgC,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtF,IAAI,CAAC,YAAY,GAAG,IAAIC,6BAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC;;AAGtH;;;;AAIG;AACI,IAAA,wBAAwB,CAAC,cAA+B,EAAA;AAC7D,QAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC;AACpD,QAAA,OAAO,IAAI;;AAGb;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,MAA4D,EAAA;AAClF,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC;AAC7C,QAAA,OAAO,IAAI;;AAGb;;;;;;;;;;;;;;AAcG;AACI,IAAA,oBAAoB,CACzB,OAA2H,EAAA;AAE3H,QAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,OAAO,CAAC;AAClD,QAAA,OAAO,IAAI;;AAGb;;;;;AAKG;IACI,SAAS,CAAC,MAAwB,EAAE,MAAiC,EAAA;QAC1E,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;AAC9C,QAAA,OAAO,IAAI;;AAGb;;;;;AAKG;IACI,uBAAuB,CAAC,eAAwC,EAAE,KAAY,EAAA;AACnF,QAAA,IAAI,CAAC,sBAAsB,GAAG,eAAe;AAC7C,QAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,IAAI,CAAC,6BAA6B,CAAC;AACvG,QAAA,OAAO,IAAI;;AAGb;;;;AAIG;AACI,IAAA,8BAA8B,CAAC,OAAe,EAAA;AACnD,QAAA,IAAI,CAAC,6BAA6B,GAAG,OAAO;AAC5C,QAAA,OAAO,IAAI;;;AAIN,IAAA,MAAM,kBAAkB,GAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,4BAA4B,IAAI,IAAI,CAAC,4BAA4B,GAAG,IAAI,IAAI,EAAE,CAAC,EAAE;YACzH,OAAO;gBACL,GAAG,IAAI,CAAC,sBAAsB;aAC/B;;AAGH,QAAA,IAAI,CAAC,sBAAsB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE;AACzF,QAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,6BAA6B,CAAC;QAEvG,OAAO;YACL,GAAG,IAAI,CAAC,sBAAsB;SAC/B;;;AAIH,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,IAAI,CAAC,cAAc;;;AAI5B,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;;AAI7B,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,aAAa;;;AAI3B,IAAA,IAAW,GAAG,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW;;;AAIzB,IAAA,IAAW,WAAW,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY;;;IAInB,QAAQ,GAAA;QACb,OAAO,IAAIC,kCAAmB,CAAC;AAC7B,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AACxB,YAAA,SAAS,EAAE,CAAC,IAAsB,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;AACnE,YAAA,kBAAkB,EAAE,MAAM,IAAI,CAAC,kBAAkB,EAAE;YACnD,qBAAqB,EAAE,IAAI,CAAC,sBAAsB;YAClD,UAAU,EAAE,IAAI,CAAC,WAAW;AAC7B,SAAA,CAAC;;AAGJ;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,kBAAkB;;AAGhC;;AAEG;AACH,IAAA,IAAW,iBAAiB,GAAA;QAC1B,OAAO,IAAI,CAAC,mBAAmB;;;AAKjC;;;AAGG;AACI,IAAA,OAAO,eAAe,GAAA;QAC3B,OAAO,IAAI,cAAc,CAAC;AACxB,YAAA,WAAW,EAAEP,iCAAa,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAC5D,YAAA,aAAa,EAAEA,iCAAa,CAAC,wBAAwB,CAAC,SAAS,CAAC;AAChE,YAAA,SAAS,EAAEA,iCAAa,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACzD,SAAA,CAAC;;AAGJ;;;AAGG;AACI,IAAA,OAAO,OAAO,GAAA;QACnB,OAAO,IAAI,cAAc,CAAC;YACxB,WAAW,EAAEA,iCAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC;YAChE,aAAa,EAAEA,iCAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;AACpE,YAAA,SAAS,EAAE,SAAS;AACrB,SAAA,CAAC;;AAGJ;;;AAGG;AACI,IAAA,OAAO,OAAO,GAAA;QACnB,OAAO,IAAI,cAAc,CAAC;YACxB,WAAW,EAAEA,iCAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC;YAChE,aAAa,EAAEA,iCAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC;AACpE,YAAA,SAAS,EAAE,SAAS;AACrB,SAAA,CAAC;;AAGJ;;;;AAIG;IACI,OAAO,WAAW,CAAC,OAAuB,EAAA;AAC/C,QAAA,OAAO,IAAI,cAAc,CAAC,OAAO,CAAC;;AAGpC;;;;;;;;;;;;;;;;AAgBG;AACI,IAAA,OAAO,eAAe,GAAA;QAC3B,OAAO,IAAI,cAAc,CAACA,iCAAa,CAAC,kCAAkC,EAAE,CAAC;;AAG/E;;;;AAIG;IACI,OAAO,UAAU,CAAC,MAAkB,EAAA;AACzC,QAAA,OAAO,IAAI,cAAc,CAAC,MAAM,CAAC;;AAEpC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"algorand-client.mjs","sources":["../../src/types/algorand-client.ts"],"sourcesContent":["import algosdk, { Address } from 'algosdk'\nimport { MultisigAccount, SigningAccount, TransactionSignerAccount } from './account'\nimport { AccountManager } from './account-manager'\nimport { AlgorandClientInterface } from './algorand-client-interface'\nimport { AlgorandClientTransactionCreator } from './algorand-client-transaction-creator'\nimport { AlgorandClientTransactionSender } from './algorand-client-transaction-sender'\nimport { AppDeployer } from './app-deployer'\nimport { AppManager } from './app-manager'\nimport { AssetManager } from './asset-manager'\nimport { AlgoSdkClients, ClientManager } from './client-manager'\nimport { TransactionComposer } from './composer'\nimport { AlgoConfig } from './network-client'\nimport Account = algosdk.Account\nimport LogicSigAccount = algosdk.LogicSigAccount\n\n/**\n * A client that brokers easy access to Algorand functionality.\n */\nexport class AlgorandClient implements AlgorandClientInterface {\n private _clientManager: ClientManager\n private _accountManager: AccountManager\n private _appManager: AppManager\n private _appDeployer: AppDeployer\n private _assetManager: AssetManager\n private _transactionSender: AlgorandClientTransactionSender\n private _transactionCreator: AlgorandClientTransactionCreator\n\n private _cachedSuggestedParams?: algosdk.SuggestedParams\n private _cachedSuggestedParamsExpiry?: Date\n private _cachedSuggestedParamsTimeout: number = 3_000 // three seconds\n\n private _defaultValidityWindow: bigint | undefined = undefined\n\n private constructor(config: AlgoConfig | AlgoSdkClients) {\n this._clientManager = new ClientManager(config, this)\n this._accountManager = new AccountManager(this._clientManager)\n this._appManager = new AppManager(this._clientManager.algod)\n this._assetManager = new AssetManager(this._clientManager.algod, () => this.newGroup())\n this._transactionSender = new AlgorandClientTransactionSender(() => this.newGroup(), this._assetManager, this._appManager)\n this._transactionCreator = new AlgorandClientTransactionCreator(() => this.newGroup())\n this._appDeployer = new AppDeployer(this._appManager, this._transactionSender, this._clientManager.indexerIfPresent)\n }\n\n /**\n * Sets the default validity window for transactions.\n * @param validityWindow The number of rounds between the first and last valid rounds\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setDefaultValidityWindow(validityWindow: number | bigint) {\n this._defaultValidityWindow = BigInt(validityWindow)\n return this\n }\n\n /**\n * Sets the default signer to use if no other signer is specified.\n * @param signer The signer to use, either a `TransactionSigner` or a `TransactionSignerAccount`\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setDefaultSigner(signer: algosdk.TransactionSigner | TransactionSignerAccount): AlgorandClient {\n this._accountManager.setDefaultSigner(signer)\n return this\n }\n\n /**\n * Tracks the given account (object that encapsulates an address and a signer) for later signing.\n * @param account The account to register, which can be a `TransactionSignerAccount` or\n * a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`\n * @example\n * ```typescript\n * const accountManager = AlgorandClient.mainnet()\n * .setSignerFromAccount(algosdk.generateAccount())\n * .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))\n * .setSignerFromAccount(new SigningAccount(mnemonic, sender))\n * .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: [\"ADDRESS1...\", \"ADDRESS2...\"]}, [account1, account2]))\n * .setSignerFromAccount({addr: \"SENDERADDRESS\", signer: transactionSigner})\n * ```\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSignerFromAccount(\n account: TransactionSignerAccount | TransactionSignerAccount | Account | LogicSigAccount | SigningAccount | MultisigAccount,\n ) {\n this._accountManager.setSignerFromAccount(account)\n return this\n }\n\n /**\n * Tracks the given signer against the given sender for later signing.\n * @param sender The sender address to use this signer for\n * @param signer The signer to sign transactions with for the given sender\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSigner(sender: string | Address, signer: algosdk.TransactionSigner) {\n this._accountManager.setSigner(sender, signer)\n return this\n }\n\n /**\n * Sets a cache value to use for suggested transaction params.\n * @param suggestedParams The suggested params to use\n * @param until A date until which to cache, or if not specified then the timeout is used\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSuggestedParamsCache(suggestedParams: algosdk.SuggestedParams, until?: Date) {\n this._cachedSuggestedParams = suggestedParams\n this._cachedSuggestedParamsExpiry = until ?? new Date(+new Date() + this._cachedSuggestedParamsTimeout)\n return this\n }\n\n /**\n * Sets the timeout for caching suggested params.\n * @param timeout The timeout in milliseconds\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSuggestedParamsCacheTimeout(timeout: number) {\n this._cachedSuggestedParamsTimeout = timeout\n return this\n }\n\n /** Get suggested params for a transaction (either cached or from algod if the cache is stale or empty) */\n public async getSuggestedParams(): Promise<algosdk.SuggestedParams> {\n if (this._cachedSuggestedParams && (!this._cachedSuggestedParamsExpiry || this._cachedSuggestedParamsExpiry > new Date())) {\n return {\n ...this._cachedSuggestedParams,\n }\n }\n\n this._cachedSuggestedParams = await this._clientManager.algod.getTransactionParams().do()\n this._cachedSuggestedParamsExpiry = new Date(new Date().getTime() + this._cachedSuggestedParamsTimeout)\n\n return {\n ...this._cachedSuggestedParams,\n }\n }\n\n /** Get clients, including algosdk clients and app clients. */\n public get client() {\n return this._clientManager\n }\n\n /** Get or create accounts that can sign transactions. */\n public get account() {\n return this._accountManager\n }\n\n /** Methods for interacting with assets. */\n public get asset() {\n return this._assetManager\n }\n\n /** Methods for interacting with apps. */\n public get app() {\n return this._appManager\n }\n\n /** Methods for deploying apps and managing app deployment metadata. */\n public get appDeployer() {\n return this._appDeployer\n }\n\n /** Start a new `TransactionComposer` transaction group */\n public newGroup() {\n return new TransactionComposer({\n algod: this.client.algod,\n getSigner: (addr: string | Address) => this.account.getSigner(addr),\n getSuggestedParams: () => this.getSuggestedParams(),\n defaultValidityWindow: this._defaultValidityWindow,\n appManager: this._appManager,\n })\n }\n\n /**\n * Methods for sending a transaction.\n */\n public get send() {\n return this._transactionSender\n }\n\n /**\n * Methods for creating a transaction.\n */\n public get createTransaction() {\n return this._transactionCreator\n }\n\n // Static methods to create an `AlgorandClient`\n\n /**\n * Returns an `AlgorandClient` pointing at default LocalNet ports and API token.\n * @returns The `AlgorandClient`\n */\n public static defaultLocalNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getDefaultLocalNetConfig('algod'),\n indexerConfig: ClientManager.getDefaultLocalNetConfig('indexer'),\n kmdConfig: ClientManager.getDefaultLocalNetConfig('kmd'),\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing at TestNet using AlgoNode.\n * @returns The `AlgorandClient`\n */\n public static testNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getAlgoNodeConfig('testnet', 'algod'),\n indexerConfig: ClientManager.getAlgoNodeConfig('testnet', 'indexer'),\n kmdConfig: undefined,\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing at MainNet using AlgoNode.\n * @returns The `AlgorandClient`\n */\n public static mainNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getAlgoNodeConfig('mainnet', 'algod'),\n indexerConfig: ClientManager.getAlgoNodeConfig('mainnet', 'indexer'),\n kmdConfig: undefined,\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing to the given client(s).\n * @param clients The clients to use\n * @returns The `AlgorandClient`\n */\n public static fromClients(clients: AlgoSdkClients) {\n return new AlgorandClient(clients)\n }\n\n /**\n * Returns an `AlgorandClient` loading the configuration from environment variables.\n *\n * Retrieve configurations from environment variables when defined or get default LocalNet configuration if they aren't defined.\n *\n * Expects to be called from a Node.js environment.\n *\n * If `process.env.ALGOD_SERVER` is defined it will use that along with optional `process.env.ALGOD_PORT` and `process.env.ALGOD_TOKEN`.\n *\n * If `process.env.INDEXER_SERVER` is defined it will use that along with optional `process.env.INDEXER_PORT` and `process.env.INDEXER_TOKEN`.\n *\n * If either aren't defined it will use the default LocalNet config.\n *\n * It will return a KMD configuration that uses `process.env.KMD_PORT` (or port 4002) if `process.env.ALGOD_SERVER` is defined,\n * otherwise it will use the default LocalNet config unless it detects testnet or mainnet.\n * @returns The `AlgorandClient`\n */\n public static fromEnvironment() {\n return new AlgorandClient(ClientManager.getConfigFromEnvironmentOrLocalNet())\n }\n\n /**\n * Returns an `AlgorandClient` from the given config.\n * @param config The config to use\n * @returns The `AlgorandClient`\n */\n public static fromConfig(config: AlgoConfig) {\n return new AlgorandClient(config)\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"algorand-client.mjs","sources":["../../src/types/algorand-client.ts"],"sourcesContent":["import algosdk, { Address } from 'algosdk'\nimport { MultisigAccount, SigningAccount, TransactionSignerAccount } from './account'\nimport { AccountManager } from './account-manager'\nimport { AlgorandClientTransactionCreator } from './algorand-client-transaction-creator'\nimport { AlgorandClientTransactionSender } from './algorand-client-transaction-sender'\nimport { AppDeployer } from './app-deployer'\nimport { AppManager } from './app-manager'\nimport { AssetManager } from './asset-manager'\nimport { AlgoSdkClients, ClientManager } from './client-manager'\nimport { TransactionComposer } from './composer'\nimport { AlgoConfig } from './network-client'\nimport Account = algosdk.Account\nimport LogicSigAccount = algosdk.LogicSigAccount\n\n/**\n * A client that brokers easy access to Algorand functionality.\n */\nexport class AlgorandClient {\n private _clientManager: ClientManager\n private _accountManager: AccountManager\n private _appManager: AppManager\n private _appDeployer: AppDeployer\n private _assetManager: AssetManager\n private _transactionSender: AlgorandClientTransactionSender\n private _transactionCreator: AlgorandClientTransactionCreator\n\n private _cachedSuggestedParams?: algosdk.SuggestedParams\n private _cachedSuggestedParamsExpiry?: Date\n private _cachedSuggestedParamsTimeout: number = 3_000 // three seconds\n\n private _defaultValidityWindow: bigint | undefined = undefined\n\n private constructor(config: AlgoConfig | AlgoSdkClients) {\n this._clientManager = new ClientManager(config, this)\n this._accountManager = new AccountManager(this._clientManager)\n this._appManager = new AppManager(this._clientManager.algod)\n this._assetManager = new AssetManager(this._clientManager.algod, () => this.newGroup())\n this._transactionSender = new AlgorandClientTransactionSender(() => this.newGroup(), this._assetManager, this._appManager)\n this._transactionCreator = new AlgorandClientTransactionCreator(() => this.newGroup())\n this._appDeployer = new AppDeployer(this._appManager, this._transactionSender, this._clientManager.indexerIfPresent)\n }\n\n /**\n * Sets the default validity window for transactions.\n * @param validityWindow The number of rounds between the first and last valid rounds\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setDefaultValidityWindow(validityWindow: number | bigint) {\n this._defaultValidityWindow = BigInt(validityWindow)\n return this\n }\n\n /**\n * Sets the default signer to use if no other signer is specified.\n * @param signer The signer to use, either a `TransactionSigner` or a `TransactionSignerAccount`\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setDefaultSigner(signer: algosdk.TransactionSigner | TransactionSignerAccount): AlgorandClient {\n this._accountManager.setDefaultSigner(signer)\n return this\n }\n\n /**\n * Tracks the given account (object that encapsulates an address and a signer) for later signing.\n * @param account The account to register, which can be a `TransactionSignerAccount` or\n * a `algosdk.Account`, `algosdk.LogicSigAccount`, `SigningAccount` or `MultisigAccount`\n * @example\n * ```typescript\n * const accountManager = AlgorandClient.mainnet()\n * .setSignerFromAccount(algosdk.generateAccount())\n * .setSignerFromAccount(new algosdk.LogicSigAccount(program, args))\n * .setSignerFromAccount(new SigningAccount(mnemonic, sender))\n * .setSignerFromAccount(new MultisigAccount({version: 1, threshold: 1, addrs: [\"ADDRESS1...\", \"ADDRESS2...\"]}, [account1, account2]))\n * .setSignerFromAccount({addr: \"SENDERADDRESS\", signer: transactionSigner})\n * ```\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSignerFromAccount(\n account: TransactionSignerAccount | TransactionSignerAccount | Account | LogicSigAccount | SigningAccount | MultisigAccount,\n ) {\n this._accountManager.setSignerFromAccount(account)\n return this\n }\n\n /**\n * Tracks the given signer against the given sender for later signing.\n * @param sender The sender address to use this signer for\n * @param signer The signer to sign transactions with for the given sender\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSigner(sender: string | Address, signer: algosdk.TransactionSigner) {\n this._accountManager.setSigner(sender, signer)\n return this\n }\n\n /**\n * Sets a cache value to use for suggested transaction params.\n * @param suggestedParams The suggested params to use\n * @param until A date until which to cache, or if not specified then the timeout is used\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSuggestedParamsCache(suggestedParams: algosdk.SuggestedParams, until?: Date) {\n this._cachedSuggestedParams = suggestedParams\n this._cachedSuggestedParamsExpiry = until ?? new Date(+new Date() + this._cachedSuggestedParamsTimeout)\n return this\n }\n\n /**\n * Sets the timeout for caching suggested params.\n * @param timeout The timeout in milliseconds\n * @returns The `AlgorandClient` so method calls can be chained\n */\n public setSuggestedParamsCacheTimeout(timeout: number) {\n this._cachedSuggestedParamsTimeout = timeout\n return this\n }\n\n /** Get suggested params for a transaction (either cached or from algod if the cache is stale or empty) */\n public async getSuggestedParams(): Promise<algosdk.SuggestedParams> {\n if (this._cachedSuggestedParams && (!this._cachedSuggestedParamsExpiry || this._cachedSuggestedParamsExpiry > new Date())) {\n return {\n ...this._cachedSuggestedParams,\n }\n }\n\n this._cachedSuggestedParams = await this._clientManager.algod.getTransactionParams().do()\n this._cachedSuggestedParamsExpiry = new Date(new Date().getTime() + this._cachedSuggestedParamsTimeout)\n\n return {\n ...this._cachedSuggestedParams,\n }\n }\n\n /** Get clients, including algosdk clients and app clients. */\n public get client() {\n return this._clientManager\n }\n\n /** Get or create accounts that can sign transactions. */\n public get account() {\n return this._accountManager\n }\n\n /** Methods for interacting with assets. */\n public get asset() {\n return this._assetManager\n }\n\n /** Methods for interacting with apps. */\n public get app() {\n return this._appManager\n }\n\n /** Methods for deploying apps and managing app deployment metadata. */\n public get appDeployer() {\n return this._appDeployer\n }\n\n /** Start a new `TransactionComposer` transaction group */\n public newGroup() {\n return new TransactionComposer({\n algod: this.client.algod,\n getSigner: (addr: string | Address) => this.account.getSigner(addr),\n getSuggestedParams: () => this.getSuggestedParams(),\n defaultValidityWindow: this._defaultValidityWindow,\n appManager: this._appManager,\n })\n }\n\n /**\n * Methods for sending a transaction.\n */\n public get send() {\n return this._transactionSender\n }\n\n /**\n * Methods for creating a transaction.\n */\n public get createTransaction() {\n return this._transactionCreator\n }\n\n // Static methods to create an `AlgorandClient`\n\n /**\n * Returns an `AlgorandClient` pointing at default LocalNet ports and API token.\n * @returns The `AlgorandClient`\n */\n public static defaultLocalNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getDefaultLocalNetConfig('algod'),\n indexerConfig: ClientManager.getDefaultLocalNetConfig('indexer'),\n kmdConfig: ClientManager.getDefaultLocalNetConfig('kmd'),\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing at TestNet using AlgoNode.\n * @returns The `AlgorandClient`\n */\n public static testNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getAlgoNodeConfig('testnet', 'algod'),\n indexerConfig: ClientManager.getAlgoNodeConfig('testnet', 'indexer'),\n kmdConfig: undefined,\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing at MainNet using AlgoNode.\n * @returns The `AlgorandClient`\n */\n public static mainNet() {\n return new AlgorandClient({\n algodConfig: ClientManager.getAlgoNodeConfig('mainnet', 'algod'),\n indexerConfig: ClientManager.getAlgoNodeConfig('mainnet', 'indexer'),\n kmdConfig: undefined,\n })\n }\n\n /**\n * Returns an `AlgorandClient` pointing to the given client(s).\n * @param clients The clients to use\n * @returns The `AlgorandClient`\n */\n public static fromClients(clients: AlgoSdkClients) {\n return new AlgorandClient(clients)\n }\n\n /**\n * Returns an `AlgorandClient` loading the configuration from environment variables.\n *\n * Retrieve configurations from environment variables when defined or get default LocalNet configuration if they aren't defined.\n *\n * Expects to be called from a Node.js environment.\n *\n * If `process.env.ALGOD_SERVER` is defined it will use that along with optional `process.env.ALGOD_PORT` and `process.env.ALGOD_TOKEN`.\n *\n * If `process.env.INDEXER_SERVER` is defined it will use that along with optional `process.env.INDEXER_PORT` and `process.env.INDEXER_TOKEN`.\n *\n * If either aren't defined it will use the default LocalNet config.\n *\n * It will return a KMD configuration that uses `process.env.KMD_PORT` (or port 4002) if `process.env.ALGOD_SERVER` is defined,\n * otherwise it will use the default LocalNet config unless it detects testnet or mainnet.\n * @returns The `AlgorandClient`\n */\n public static fromEnvironment() {\n return new AlgorandClient(ClientManager.getConfigFromEnvironmentOrLocalNet())\n }\n\n /**\n * Returns an `AlgorandClient` from the given config.\n * @param config The config to use\n * @returns The `AlgorandClient`\n */\n public static fromConfig(config: AlgoConfig) {\n return new AlgorandClient(config)\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type InterfaceOf<ClassType> = {
2
+ [Member in keyof ClassType]: ClassType[Member];
3
+ };
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=interface-of.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-of.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=interface-of.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface-of.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}