@pufferfinance/puffer-sdk 1.24.5 → 1.25.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.
Files changed (38) hide show
  1. package/dist/api/puffer-client.cjs +1 -1
  2. package/dist/api/puffer-client.cjs.map +1 -1
  3. package/dist/api/puffer-client.d.ts +3 -0
  4. package/dist/api/puffer-client.js +26 -19
  5. package/dist/api/puffer-client.js.map +1 -1
  6. package/dist/contracts/abis/mainnet/ConcreteMultiStrategyVault.cjs +1 -1
  7. package/dist/contracts/abis/mainnet/ConcreteMultiStrategyVault.cjs.map +1 -1
  8. package/dist/contracts/abis/mainnet/ConcreteMultiStrategyVault.d.ts +36 -0
  9. package/dist/contracts/abis/mainnet/ConcreteMultiStrategyVault.js +18 -0
  10. package/dist/contracts/abis/mainnet/ConcreteMultiStrategyVault.js.map +1 -1
  11. package/dist/contracts/abis/mainnet/LagoonVault.cjs +2 -0
  12. package/dist/contracts/abis/mainnet/LagoonVault.cjs.map +1 -0
  13. package/dist/contracts/abis/mainnet/LagoonVault.d.ts +731 -0
  14. package/dist/contracts/abis/mainnet/LagoonVault.js +438 -0
  15. package/dist/contracts/abis/mainnet/LagoonVault.js.map +1 -0
  16. package/dist/contracts/handlers/concrete-vault-handler.cjs +1 -1
  17. package/dist/contracts/handlers/concrete-vault-handler.cjs.map +1 -1
  18. package/dist/contracts/handlers/concrete-vault-handler.d.ts +49 -3
  19. package/dist/contracts/handlers/concrete-vault-handler.js +25 -7
  20. package/dist/contracts/handlers/concrete-vault-handler.js.map +1 -1
  21. package/dist/contracts/handlers/lagoon-vault-handler.cjs +2 -0
  22. package/dist/contracts/handlers/lagoon-vault-handler.cjs.map +1 -0
  23. package/dist/contracts/handlers/lagoon-vault-handler.d.ts +15446 -0
  24. package/dist/contracts/handlers/lagoon-vault-handler.js +233 -0
  25. package/dist/contracts/handlers/lagoon-vault-handler.js.map +1 -0
  26. package/dist/contracts/tokens.cjs +1 -1
  27. package/dist/contracts/tokens.cjs.map +1 -1
  28. package/dist/contracts/tokens.d.ts +1 -0
  29. package/dist/contracts/tokens.js +11 -5
  30. package/dist/contracts/tokens.js.map +1 -1
  31. package/dist/contracts/vaults-addresses.cjs +1 -1
  32. package/dist/contracts/vaults-addresses.cjs.map +1 -1
  33. package/dist/contracts/vaults-addresses.d.ts +8 -0
  34. package/dist/contracts/vaults-addresses.js +16 -8
  35. package/dist/contracts/vaults-addresses.js.map +1 -1
  36. package/dist/utils/version.cjs +1 -1
  37. package/dist/utils/version.js +1 -1
  38. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
- var n = Object.defineProperty;
2
- var o = (i, t, e) => t in i ? n(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
3
- var a = (i, t, e) => o(i, typeof t != "symbol" ? t + "" : t, e);
1
+ var a = Object.defineProperty;
2
+ var o = (i, t, e) => t in i ? a(i, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : i[t] = e;
3
+ var n = (i, t, e) => o(i, typeof t != "symbol" ? t + "" : t, e);
4
4
  import { V as c } from "../../constants-BweLzNUt.js";
5
5
  import { ConcreteMultiStrategyVault as h } from "../abis/mainnet/ConcreteMultiStrategyVault.js";
6
6
  import { Token as l } from "../tokens.js";
@@ -17,8 +17,8 @@ class v {
17
17
  * interactions.
18
18
  */
19
19
  constructor(t, e, r) {
20
- a(this, "viemChain");
21
- a(this, "token");
20
+ n(this, "viemChain");
21
+ n(this, "token");
22
22
  this.chain = t, this.walletClient = e, this.publicClient = r, this.viemChain = c[t], this.token = l.ctTACpufETH;
23
23
  }
24
24
  /**
@@ -93,9 +93,9 @@ class v {
93
93
  });
94
94
  }
95
95
  /**
96
- * Withdraw an amount of the token.
96
+ * Withdraw the given amount of assets (pufETH) to the receiver.
97
97
  *
98
- * @param amount The amount to withdraw.
98
+ * @param assets The amount of assets (pufETH) to withdraw.
99
99
  * @returns The transaction.
100
100
  */
101
101
  withdraw(t) {
@@ -104,6 +104,24 @@ class v {
104
104
  chain: this.viemChain
105
105
  });
106
106
  }
107
+ /**
108
+ * Redeem the given amount of shares (ctTACpufETH) so the receiver
109
+ * gets the assets (pufETH).
110
+ *
111
+ * @param shares The amount of shares (ctTACpufETH) to redeem.
112
+ * @param receiver The optional receiver of the assets.
113
+ * @param owner The optional owner of the shares.
114
+ * @returns The transaction.
115
+ */
116
+ redeem(t, e, r) {
117
+ return e && r ? this.getContract().write.redeem([t, e, r], {
118
+ account: this.walletClient.account,
119
+ chain: this.viemChain
120
+ }) : this.getContract().write.redeem([t], {
121
+ account: this.walletClient.account,
122
+ chain: this.viemChain
123
+ });
124
+ }
107
125
  /**
108
126
  * Provides a preview of the number of shares that would be minted for a given deposit amount, after fees.
109
127
  *
@@ -1 +1 @@
1
- {"version":3,"file":"concrete-vault-handler.js","sources":["../../../lib/contracts/handlers/concrete-vault-handler.ts"],"sourcesContent":["import {\n WalletClient,\n PublicClient,\n getContract,\n Address,\n GetContractReturnType,\n Account,\n} from 'viem';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { ConcreteMultiStrategyVault } from '../abis/mainnet/ConcreteMultiStrategyVault';\nimport { Token } from '../tokens';\nimport { VAULTS_ADDRESSES } from '../vaults-addresses';\n\ntype VaultAddresses = typeof VAULTS_ADDRESSES;\ntype PufETHVault = VaultAddresses[Token.ctTACpufETH][Chain.Mainnet];\n\n/**\n * Handler for the `ConcreteMultStrategyVault` contract for a given token (pufETH) exposing\n * methods to interact with the contract.\n */\nexport class ConcreteVaultHandler {\n private viemChain: ViemChain;\n private token: Token.ctTACpufETH;\n\n /**\n * Create the handler for processing UniFi tokens.\n *\n * @param chain Chain to use for the client.\n * @param walletClient The wallet client to use for wallet\n * interactions.\n * @param publicClient The public client to use for public\n * interactions.\n */\n constructor(\n private chain: Chain,\n private walletClient: WalletClient,\n private publicClient: PublicClient,\n ) {\n this.viemChain = VIEM_CHAINS[chain];\n this.token = Token.ctTACpufETH;\n }\n\n /**\n * Set the UniFi token to use for executing transactions on the\n * contract.\n *\n * @param token UniFi token to use for the handler.\n * @returns The handler.\n */\n public withToken(token: Token.ctTACpufETH) {\n this.token = token;\n return this;\n }\n\n /**\n * Get the contract.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = (VAULTS_ADDRESSES[this.token][this.chain] as PufETHVault)\n .ConcreteMultiStrategyVault as Address;\n const abi = ConcreteMultiStrategyVault;\n const client = { public: this.publicClient, wallet: this.walletClient };\n\n return getContract({ address, abi, client }) as GetContractReturnType<\n typeof abi,\n typeof client,\n Address\n >;\n }\n\n /**\n * Approve a spender to spend the token.\n *\n * @param spender The spender of the token.\n * @param amount The amount to approve.\n * @returns The transaction.\n */\n public approve(spender: Address, amount: bigint) {\n return this.getContract().write.approve([spender, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the allowance of the owner for the spender.\n *\n * @param owner The owner of the allowance.\n * @param spender The spender of the allowance.\n * @returns The allowance.\n */\n public getAllowance(owner: Address, spender: Address) {\n return this.getContract().read.allowance([owner, spender]);\n }\n\n /**\n * Get the balance for the address.\n *\n * @param address The address to get the balance of.\n * @returns The balance.\n */\n public getBalance(address: Address) {\n return this.getContract().read.balanceOf([address]);\n }\n\n /**\n * Get the total supply of the token.\n *\n * @returns The total supply.\n */\n public getTotalSupply() {\n return this.getContract().read.totalSupply();\n }\n\n /**\n * Deposit an amount of the token.\n *\n * @param amount The amount to deposit.\n * @returns The transaction.\n */\n public deposit(amount: bigint) {\n return this.getContract().write.deposit([amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Withdraw an amount of the token.\n *\n * @param amount The amount to withdraw.\n * @returns The transaction.\n */\n public withdraw(amount: bigint) {\n return this.getContract().write.withdraw([amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Provides a preview of the number of shares that would be minted for a given deposit amount, after fees.\n *\n * @param amount The amount to deposit.\n * @returns The preview.\n */\n public previewDeposit(amount: bigint) {\n return this.getContract().read.previewDeposit([amount]);\n }\n\n /**\n * Provides a preview of the number of shares that would be burned for a given withdrawal amount, after fees.\n *\n * @param amount The amount to withdraw.\n * @returns The preview.\n */\n public previewWithdraw(amount: bigint) {\n return this.getContract().read.previewWithdraw([amount]);\n }\n\n /**\n * Provides a preview of the amount of assets that would be redeemed\n * for a specific number of shares, after withdrawal fees. Subtracts\n * the withdrawal fee from the share amount to determine the net\n * shares for asset conversion.\n *\n * @param amount The amount to redeem.\n * @returns The preview.\n */\n public previewRedeem(amount: bigint) {\n return this.getContract().read.previewRedeem([amount]);\n }\n}\n"],"names":["ConcreteVaultHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","Token","token","address","VAULTS_ADDRESSES","abi","ConcreteMultiStrategyVault","client","getContract","spender","amount","owner"],"mappings":";;;;;;;;AAoBO,MAAMA,EAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAahC,YACUC,GACAC,GACAC,GACR;AAhBM,IAAAC,EAAA;AACA,IAAAA,EAAA;AAYE,SAAA,QAAAH,GACA,KAAA,eAAAC,GACA,KAAA,eAAAC,GAEH,KAAA,YAAYE,EAAYJ,CAAK,GAClC,KAAK,QAAQK,EAAM;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUd,UAAUC,GAA0B;AACzC,gBAAK,QAAQA,GACN;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQF,cAAc;AACnB,UAAMC,IAAWC,EAAiB,KAAK,KAAK,EAAE,KAAK,KAAK,EACrD,4BACGC,IAAMC,GACNC,IAAS,EAAE,QAAQ,KAAK,cAAc,QAAQ,KAAK,aAAa;AAEtE,WAAOC,EAAY,EAAE,SAAAL,GAAS,KAAAE,GAAK,QAAAE,GAAQ;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EActC,QAAQE,GAAkBC,GAAgB;AACxC,WAAA,KAAK,cAAc,MAAM,QAAQ,CAACD,GAASC,CAAM,GAAG;AAAA,MACzD,SAAS,KAAK,aAAa;AAAA,MAC3B,OAAO,KAAK;AAAA,IAAA,CACb;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUI,aAAaC,GAAgBF,GAAkB;AAC7C,WAAA,KAAK,cAAc,KAAK,UAAU,CAACE,GAAOF,CAAO,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASpD,WAAWN,GAAkB;AAClC,WAAO,KAAK,YAAY,EAAE,KAAK,UAAU,CAACA,CAAO,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ7C,iBAAiB;AACtB,WAAO,KAAK,cAAc,KAAK,YAAY;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStC,QAAQO,GAAgB;AAC7B,WAAO,KAAK,YAAY,EAAE,MAAM,QAAQ,CAACA,CAAM,GAAG;AAAA,MAChD,SAAS,KAAK,aAAa;AAAA,MAC3B,OAAO,KAAK;AAAA,IAAA,CACb;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,SAASA,GAAgB;AAC9B,WAAO,KAAK,YAAY,EAAE,MAAM,SAAS,CAACA,CAAM,GAAG;AAAA,MACjD,SAAS,KAAK,aAAa;AAAA,MAC3B,OAAO,KAAK;AAAA,IAAA,CACb;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASI,eAAeA,GAAgB;AACpC,WAAO,KAAK,YAAY,EAAE,KAAK,eAAe,CAACA,CAAM,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASjD,gBAAgBA,GAAgB;AACrC,WAAO,KAAK,YAAY,EAAE,KAAK,gBAAgB,CAACA,CAAM,CAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYlD,cAAcA,GAAgB;AACnC,WAAO,KAAK,YAAY,EAAE,KAAK,cAAc,CAACA,CAAM,CAAC;AAAA,EAAA;AAEzD;"}
1
+ {"version":3,"file":"concrete-vault-handler.js","sources":["../../../lib/contracts/handlers/concrete-vault-handler.ts"],"sourcesContent":["import {\n WalletClient,\n PublicClient,\n getContract,\n Address,\n GetContractReturnType,\n Account,\n} from 'viem';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { ConcreteMultiStrategyVault } from '../abis/mainnet/ConcreteMultiStrategyVault';\nimport { Token } from '../tokens';\nimport { VAULTS_ADDRESSES } from '../vaults-addresses';\n\ntype VaultAddresses = typeof VAULTS_ADDRESSES;\ntype PufETHVault = VaultAddresses[Token.ctTACpufETH][Chain.Mainnet];\n\n/**\n * Handler for the `ConcreteMultStrategyVault` contract for a given token (pufETH) exposing\n * methods to interact with the contract.\n */\nexport class ConcreteVaultHandler {\n private viemChain: ViemChain;\n private token: Token.ctTACpufETH;\n\n /**\n * Create the handler for processing UniFi tokens.\n *\n * @param chain Chain to use for the client.\n * @param walletClient The wallet client to use for wallet\n * interactions.\n * @param publicClient The public client to use for public\n * interactions.\n */\n constructor(\n private chain: Chain,\n private walletClient: WalletClient,\n private publicClient: PublicClient,\n ) {\n this.viemChain = VIEM_CHAINS[chain];\n this.token = Token.ctTACpufETH;\n }\n\n /**\n * Set the UniFi token to use for executing transactions on the\n * contract.\n *\n * @param token UniFi token to use for the handler.\n * @returns The handler.\n */\n public withToken(token: Token.ctTACpufETH) {\n this.token = token;\n return this;\n }\n\n /**\n * Get the contract.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = (VAULTS_ADDRESSES[this.token][this.chain] as PufETHVault)\n .ConcreteMultiStrategyVault as Address;\n const abi = ConcreteMultiStrategyVault;\n const client = { public: this.publicClient, wallet: this.walletClient };\n\n return getContract({ address, abi, client }) as GetContractReturnType<\n typeof abi,\n typeof client,\n Address\n >;\n }\n\n /**\n * Approve a spender to spend the token.\n *\n * @param spender The spender of the token.\n * @param amount The amount to approve.\n * @returns The transaction.\n */\n public approve(spender: Address, amount: bigint) {\n return this.getContract().write.approve([spender, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the allowance of the owner for the spender.\n *\n * @param owner The owner of the allowance.\n * @param spender The spender of the allowance.\n * @returns The allowance.\n */\n public getAllowance(owner: Address, spender: Address) {\n return this.getContract().read.allowance([owner, spender]);\n }\n\n /**\n * Get the balance for the address.\n *\n * @param address The address to get the balance of.\n * @returns The balance.\n */\n public getBalance(address: Address) {\n return this.getContract().read.balanceOf([address]);\n }\n\n /**\n * Get the total supply of the token.\n *\n * @returns The total supply.\n */\n public getTotalSupply() {\n return this.getContract().read.totalSupply();\n }\n\n /**\n * Deposit an amount of the token.\n *\n * @param amount The amount to deposit.\n * @returns The transaction.\n */\n public deposit(amount: bigint) {\n return this.getContract().write.deposit([amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Withdraw the given amount of assets (pufETH) to the receiver.\n *\n * @param assets The amount of assets (pufETH) to withdraw.\n * @returns The transaction.\n */\n public withdraw(assets: bigint) {\n return this.getContract().write.withdraw([assets], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Redeem the given amount of shares (ctTACpufETH) so the receiver\n * gets the assets (pufETH).\n *\n * @param shares The amount of shares (ctTACpufETH) to redeem.\n * @param receiver The optional receiver of the assets.\n * @param owner The optional owner of the shares.\n * @returns The transaction.\n */\n public redeem(shares: bigint, receiver?: Address, owner?: Address) {\n if (receiver && owner) {\n return this.getContract().write.redeem([shares, receiver, owner], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n return this.getContract().write.redeem([shares], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Provides a preview of the number of shares that would be minted for a given deposit amount, after fees.\n *\n * @param amount The amount to deposit.\n * @returns The preview.\n */\n public previewDeposit(amount: bigint) {\n return this.getContract().read.previewDeposit([amount]);\n }\n\n /**\n * Provides a preview of the number of shares that would be burned for a given withdrawal amount, after fees.\n *\n * @param amount The amount to withdraw.\n * @returns The preview.\n */\n public previewWithdraw(amount: bigint) {\n return this.getContract().read.previewWithdraw([amount]);\n }\n\n /**\n * Provides a preview of the amount of assets that would be redeemed\n * for a specific number of shares, after withdrawal fees. Subtracts\n * the withdrawal fee from the share amount to determine the net\n * shares for asset conversion.\n *\n * @param amount The amount to redeem.\n * @returns The preview.\n */\n public previewRedeem(amount: bigint) {\n return this.getContract().read.previewRedeem([amount]);\n }\n}\n"],"names":["ConcreteVaultHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","Token","token","address","VAULTS_ADDRESSES","abi","ConcreteMultiStrategyVault","client","getContract","spender","amount","owner","assets","shares","receiver"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";var r=Object.defineProperty;var s=(a,t,e)=>t in a?r(a,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):a[t]=e;var n=(a,t,e)=>s(a,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../constants-JN89aXws.cjs"),o=require("../abis/mainnet/LagoonVault.cjs"),l=require("../tokens.cjs"),h=require("../vaults-addresses.cjs"),u=require("../../getContract-F-fd_vf7.cjs");class C{constructor(t,e,i){n(this,"viemChain");this.chain=t,this.walletClient=e,this.publicClient=i,this.viemChain=c.VIEM_CHAINS[t]}getContract(){const t=h.VAULTS_ADDRESSES[l.Token.tacpufETH][this.chain].LagoonVault,e=o.LagoonVault,i={public:this.publicClient,wallet:this.walletClient};return u.getContract({address:t,abi:e,client:i})}approve(t,e){return this.getContract().write.approve([t,e],{account:this.walletClient.account,chain:this.viemChain})}getAllowance(t,e){return this.getContract().read.allowance([t,e])}getBalance(t){return this.getContract().read.balanceOf([t])}getTotalSupply(){return this.getContract().read.totalSupply()}isTotalAssetsValid(){return this.getContract().read.isTotalAssetsValid()}symbol(){return this.getContract().read.symbol()}deposit(t,e,i){return i?this.getContract().write.deposit([t,e,i],{account:this.walletClient.account,chain:this.viemChain}):this.getContract().write.deposit([t,e],{account:this.walletClient.account,chain:this.viemChain})}syncDeposit(t,e,i=e){return this.getContract().write.syncDeposit([t,e,i],{account:this.walletClient.account,chain:this.viemChain})}requestDeposit(t,e,i=e){return this.getContract().write.requestDeposit([t,e,i],{account:this.walletClient.account,chain:this.viemChain,value:t})}withdraw(t,e,i=e){return this.getContract().write.withdraw([t,e,i],{account:this.walletClient.account,chain:this.viemChain})}redeem(t,e,i=e){return this.getContract().write.redeem([t,e,i],{account:this.walletClient.account,chain:this.viemChain})}requestRedeem(t,e,i=e){return this.getContract().write.requestRedeem([t,e,i],{account:this.walletClient.account,chain:this.viemChain})}previewDeposit(t){return this.getContract().read.previewDeposit([t])}previewWithdraw(t){return this.getContract().read.previewWithdraw([t])}previewRedeem(t){return this.getContract().read.previewRedeem([t])}}exports.LagoonVaultHandler=C;
2
+ //# sourceMappingURL=lagoon-vault-handler.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lagoon-vault-handler.cjs","sources":["../../../lib/contracts/handlers/lagoon-vault-handler.ts"],"sourcesContent":["import {\n WalletClient,\n PublicClient,\n getContract,\n Address,\n GetContractReturnType,\n Account,\n} from 'viem';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { LagoonVault } from '../abis/mainnet/LagoonVault';\nimport { Token } from '../tokens';\nimport { VAULTS_ADDRESSES } from '../vaults-addresses';\n\n/**\n * Handler for the `LagoonVault` contract exposing methods to interact\n * with the contract.\n */\nexport class LagoonVaultHandler {\n private viemChain: ViemChain;\n\n /**\n * Create the handler for processing Lagoon vault.\n *\n * @param chain Chain to use for the client.\n * @param walletClient The wallet client to use for wallet\n * interactions.\n * @param publicClient The public client to use for public\n * interactions.\n */\n constructor(\n private chain: Chain,\n private walletClient: WalletClient,\n private publicClient: PublicClient,\n ) {\n this.viemChain = VIEM_CHAINS[chain];\n }\n\n /**\n * Get the contract.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = VAULTS_ADDRESSES[Token.tacpufETH][this.chain]\n .LagoonVault as Address;\n const abi = LagoonVault;\n const client = { public: this.publicClient, wallet: this.walletClient };\n\n return getContract({ address, abi, client }) as GetContractReturnType<\n typeof abi,\n typeof client,\n Address\n >;\n }\n\n /**\n * Approve a spender to spend the token.\n *\n * @param spender The spender of the token.\n * @param amount The amount to approve.\n * @returns The transaction.\n */\n public approve(spender: Address, amount: bigint) {\n return this.getContract().write.approve([spender, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the allowance of the owner for the spender.\n *\n * @param owner The owner of the allowance.\n * @param spender The spender of the allowance.\n * @returns The allowance.\n */\n public getAllowance(owner: Address, spender: Address) {\n return this.getContract().read.allowance([owner, spender]);\n }\n\n /**\n * Get the balance for the address.\n *\n * @param address The address to get the balance of.\n * @returns The balance.\n */\n public getBalance(address: Address) {\n return this.getContract().read.balanceOf([address]);\n }\n\n /**\n * Get the total supply of the token.\n *\n * @returns The total supply.\n */\n public getTotalSupply() {\n return this.getContract().read.totalSupply();\n }\n\n /**\n * Check if the total assets are valid. Used for checking if\n * synchronous deposit is possible.\n *\n * @returns True if the total assets are valid, false otherwise.\n */\n public isTotalAssetsValid() {\n return this.getContract().read.isTotalAssetsValid();\n }\n\n /**\n * Get the symbol of the token. (tacpufETH)\n *\n * @returns The symbol.\n */\n public symbol() {\n return this.getContract().read.symbol();\n }\n\n /**\n * Deposit an amount of the assets (pufETH) to the vault to get shares\n * (tacpufETH).\n *\n * @param amount The amount to deposit.\n * @param receiver The receiver of the tacpufETH.\n * @param controller The optional controller of the deposit. Set to\n * the receiver if not sure.\n * @returns The transaction.\n */\n public deposit(amount: bigint, receiver: Address, controller?: Address) {\n if (controller) {\n return this.getContract().write.deposit([amount, receiver, controller], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n return this.getContract().write.deposit([amount, receiver], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Synchronously deposit an amount of the assets (pufETH) to the vault\n * to get shares (tacpufETH). This is only possible if `isTotalAssetsValid`\n * is true.\n *\n * @param amount The amount to deposit.\n * @param receiver The receiver of the tacpufETH.\n * @param referral The referral of the deposit. Falls back to the\n * receiver if not provided.\n * @returns The transaction.\n */\n public syncDeposit(\n amount: bigint,\n receiver: Address,\n referral: Address = receiver,\n ) {\n return this.getContract().write.syncDeposit([amount, receiver, referral], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Request an asynchronous deposit of an amount of the assets (pufETH)\n * to the vault to get shares (tacpufETH). This should be used if\n * `isTotalAssetsValid` is false.\n *\n * @param amount The amount to deposit.\n * @param receiver The receiver of the tacpufETH.\n * @param controller The optional controller of the deposit. Falls back\n * to the receiver if not provided.\n * @returns The transaction.\n */\n public requestDeposit(\n amount: bigint,\n receiver: Address,\n controller: Address = receiver,\n ) {\n return this.getContract().write.requestDeposit(\n [amount, receiver, controller],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n value: amount,\n },\n );\n }\n\n /**\n * Withdraw an amount of the shares (pufETH) so the receiver\n * gets the assets (pufETH).\n *\n * @param assets The amount of assets (pufETH) to withdraw.\n * @param receiver The receiver of the assets.\n * @param controller The controller of the withdrawal. Falls back to\n * the receiver if not provided.\n * @returns The transaction.\n */\n public withdraw(\n assets: bigint,\n receiver: Address,\n controller: Address = receiver,\n ) {\n return this.getContract().write.withdraw([assets, receiver, controller], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Redeem an amount of the shares (tacpufETH) so the receiver\n * gets the assets (pufETH).\n *\n * @param shares The amount of shares (tacpufETH) to redeem.\n * @param receiver The receiver of the assets.\n * @param controller The controller of the withdrawal. Falls back to\n * the receiver if not provided.\n * @returns The transaction.\n */\n public redeem(\n shares: bigint,\n receiver: Address,\n controller: Address = receiver,\n ) {\n return this.getContract().write.redeem([shares, receiver, controller], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Request an asynchronous redeem of an amount of the shares (tacpufETH)\n * so the receiver gets the assets (pufETH).\n *\n * @param shares The amount of shares (tacpufETH) to redeem.\n * @param receiver The receiver of the assets.\n * @param controller The controller of the redemption. Falls back to\n * the receiver if not provided.\n * @returns The transaction.\n */\n public requestRedeem(\n shares: bigint,\n receiver: Address,\n controller: Address = receiver,\n ) {\n return this.getContract().write.requestRedeem(\n [shares, receiver, controller],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Provides a preview of the number of shares that would be minted for\n * a given deposit amount, after fees.\n *\n * @param amount The amount to deposit.\n * @returns The preview.\n */\n public previewDeposit(amount: bigint) {\n return this.getContract().read.previewDeposit([amount]);\n }\n\n /**\n * Provides a preview of the number of shares (tacpufETH) that would be\n * burned for the given amount of assets (pufETH).\n *\n * @param assets The amount of assets (pufETH) to withdraw.\n * @returns The preview.\n */\n public previewWithdraw(assets: bigint) {\n return this.getContract().read.previewWithdraw([assets]);\n }\n\n /**\n * Provides a preview of the amount of assets (pufETH) that would be redeemed\n * for the given shares (tacpufETH), after withdrawal fees. Subtracts\n * the withdrawal fee from the share amount to determine the net\n * shares for asset conversion.\n *\n * @param shares The amount of shares (tacpufETH) to redeem.\n * @returns The preview.\n */\n public previewRedeem(shares: bigint) {\n return this.getContract().read.previewRedeem([shares]);\n }\n}\n"],"names":["LagoonVaultHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","address","VAULTS_ADDRESSES","Token","abi","LagoonVault","client","getContract","spender","amount","owner","receiver","controller","referral","assets","shares"],"mappings":"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"}