@pufferfinance/puffer-sdk 1.25.3 → 1.26.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/dist/api/puffer-client.cjs +1 -1
- package/dist/api/puffer-client.cjs.map +1 -1
- package/dist/api/puffer-client.d.ts +3 -0
- package/dist/api/puffer-client.js +28 -21
- package/dist/api/puffer-client.js.map +1 -1
- package/dist/contracts/abis/mainnet/vlPUFFER.cjs +2 -0
- package/dist/contracts/abis/mainnet/vlPUFFER.cjs.map +1 -0
- package/dist/contracts/abis/mainnet/vlPUFFER.d.ts +437 -0
- package/dist/contracts/abis/mainnet/vlPUFFER.js +269 -0
- package/dist/contracts/abis/mainnet/vlPUFFER.js.map +1 -0
- package/dist/contracts/common/lib/types.cjs +2 -0
- package/dist/contracts/common/lib/types.cjs.map +1 -0
- package/dist/contracts/common/lib/types.d.ts +8 -0
- package/dist/contracts/common/lib/types.js +2 -0
- package/dist/contracts/common/lib/types.js.map +1 -0
- package/dist/contracts/handlers/erc20-permit-handler.cjs +1 -1
- package/dist/contracts/handlers/erc20-permit-handler.cjs.map +1 -1
- package/dist/contracts/handlers/erc20-permit-handler.d.ts +10 -0
- package/dist/contracts/handlers/erc20-permit-handler.js +56 -40
- package/dist/contracts/handlers/erc20-permit-handler.js.map +1 -1
- package/dist/contracts/handlers/lagoon-vault-handler.cjs +1 -1
- package/dist/contracts/handlers/lagoon-vault-handler.cjs.map +1 -1
- package/dist/contracts/handlers/lagoon-vault-handler.d.ts +51 -0
- package/dist/contracts/handlers/lagoon-vault-handler.js +87 -6
- package/dist/contracts/handlers/lagoon-vault-handler.js.map +1 -1
- package/dist/contracts/handlers/nucleus-boring-vault-handler.cjs +1 -1
- package/dist/contracts/handlers/nucleus-boring-vault-handler.cjs.map +1 -1
- package/dist/contracts/handlers/nucleus-boring-vault-handler.d.ts +2 -6
- package/dist/contracts/handlers/nucleus-boring-vault-handler.js +17 -17
- package/dist/contracts/handlers/nucleus-boring-vault-handler.js.map +1 -1
- package/dist/contracts/handlers/nucleus-teller-handler.cjs +1 -1
- package/dist/contracts/handlers/nucleus-teller-handler.cjs.map +1 -1
- package/dist/contracts/handlers/nucleus-teller-handler.d.ts +2 -6
- package/dist/contracts/handlers/nucleus-teller-handler.js +11 -20
- package/dist/contracts/handlers/nucleus-teller-handler.js.map +1 -1
- package/dist/contracts/handlers/puf-locker-handler.cjs +1 -1
- package/dist/contracts/handlers/puf-locker-handler.cjs.map +1 -1
- package/dist/contracts/handlers/puf-locker-handler.js +31 -40
- package/dist/contracts/handlers/puf-locker-handler.js.map +1 -1
- package/dist/contracts/handlers/puffer-depositor-handler.cjs +1 -1
- package/dist/contracts/handlers/puffer-depositor-handler.cjs.map +1 -1
- package/dist/contracts/handlers/puffer-depositor-handler.js +26 -38
- package/dist/contracts/handlers/puffer-depositor-handler.js.map +1 -1
- package/dist/contracts/handlers/puffer-l2-depositor-handler.cjs +1 -1
- package/dist/contracts/handlers/puffer-l2-depositor-handler.cjs.map +1 -1
- package/dist/contracts/handlers/puffer-l2-depositor-handler.js +28 -37
- package/dist/contracts/handlers/puffer-l2-depositor-handler.js.map +1 -1
- package/dist/contracts/handlers/puffer-protocol-handler.cjs.map +1 -1
- package/dist/contracts/handlers/puffer-protocol-handler.d.ts +49 -55
- package/dist/contracts/handlers/puffer-protocol-handler.js.map +1 -1
- package/dist/contracts/handlers/puffer-withdrawal-manager-handler.cjs +1 -1
- package/dist/contracts/handlers/puffer-withdrawal-manager-handler.cjs.map +1 -1
- package/dist/contracts/handlers/puffer-withdrawal-manager-handler.js +21 -27
- package/dist/contracts/handlers/puffer-withdrawal-manager-handler.js.map +1 -1
- package/dist/contracts/handlers/validator-ticket-handler.cjs.map +1 -1
- package/dist/contracts/handlers/validator-ticket-handler.d.ts +1 -7
- package/dist/contracts/handlers/validator-ticket-handler.js.map +1 -1
- package/dist/contracts/handlers/vl-puffer-handler.cjs +2 -0
- package/dist/contracts/handlers/vl-puffer-handler.cjs.map +1 -0
- package/dist/contracts/handlers/vl-puffer-handler.d.ts +14802 -0
- package/dist/contracts/handlers/vl-puffer-handler.js +357 -0
- package/dist/contracts/handlers/vl-puffer-handler.js.map +1 -0
- package/dist/contracts/tokens.cjs +1 -1
- package/dist/contracts/tokens.cjs.map +1 -1
- package/dist/contracts/tokens.d.ts +2 -1
- package/dist/contracts/tokens.js +8 -3
- package/dist/contracts/tokens.js.map +1 -1
- package/dist/utils/version.cjs +1 -1
- package/dist/utils/version.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"puffer-withdrawal-manager-handler.js","sources":["../../../lib/contracts/handlers/puffer-withdrawal-manager-handler.ts"],"sourcesContent":["import {\n Address,\n getContract,\n GetContractReturnType,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport { CONTRACT_ADDRESSES } from '../addresses';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { ERC20PermitHandler } from './erc20-permit-handler';\nimport { Token } from '../tokens';\nimport { PufferWithdrawalManager } from '../abis/mainnet/PufferWithdrawalManager';\n\n/**\n * Handler for the `PufferWithdrawalsManager` contract exposing methods to\n * interact with the contract.\n */\nexport class PufferWithdrawalManagerHandler {\n private viemChain: ViemChain;\n private erc20PermitHandler: ERC20PermitHandler;\n\n /**\n * Create the handler for the `PufferWithdrawalsManager` contract exposing\n * methods to interact with the contract.\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.erc20PermitHandler = new ERC20PermitHandler(\n chain,\n walletClient,\n publicClient,\n );\n }\n\n /**\n * Get the contract.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = CONTRACT_ADDRESSES[this.chain]\n .PufferWithdrawalManager as Address;\n const abi = PufferWithdrawalManager;\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 * Request a withdrawal of the given amount to the given address, with a permit.\n *\n * @param walletAddress The account address to request the withdrawal for.\n * @param amount The pufETH amount to request the withdrawal for.\n * @returns The transaction hash of the withdrawal.\n */\n public async requestWithdrawal(walletAddress: Address, amount: bigint) {\n const transact = async () =>\n await this.getContract().write.requestWithdrawal(\n [amount, walletAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.requestWithdrawal(\n [amount, walletAddress],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Request a withdrawal of the given amount to the given address.\n *\n * @param walletAddress The account address to request the withdrawal for.\n * @param amount The pufETHamount to request the withdrawal for.\n * @returns The transaction hash of the withdrawal.\n */\n public async requestWithdrawalWithPermit(\n walletAddress: Address,\n amount: bigint,\n ) {\n const
|
|
1
|
+
{"version":3,"file":"puffer-withdrawal-manager-handler.js","sources":["../../../lib/contracts/handlers/puffer-withdrawal-manager-handler.ts"],"sourcesContent":["import {\n Address,\n getContract,\n GetContractReturnType,\n PublicClient,\n WalletClient,\n} from 'viem';\nimport { CONTRACT_ADDRESSES } from '../addresses';\nimport { Chain, VIEM_CHAINS, ViemChain } from '../../chains/constants';\nimport { ERC20PermitHandler } from './erc20-permit-handler';\nimport { Token } from '../tokens';\nimport { PufferWithdrawalManager } from '../abis/mainnet/PufferWithdrawalManager';\n\n/**\n * Handler for the `PufferWithdrawalsManager` contract exposing methods to\n * interact with the contract.\n */\nexport class PufferWithdrawalManagerHandler {\n private viemChain: ViemChain;\n private erc20PermitHandler: ERC20PermitHandler;\n\n /**\n * Create the handler for the `PufferWithdrawalsManager` contract exposing\n * methods to interact with the contract.\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.erc20PermitHandler = new ERC20PermitHandler(\n chain,\n walletClient,\n publicClient,\n );\n }\n\n /**\n * Get the contract.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = CONTRACT_ADDRESSES[this.chain]\n .PufferWithdrawalManager as Address;\n const abi = PufferWithdrawalManager;\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 * Request a withdrawal of the given amount to the given address, with a permit.\n *\n * @param walletAddress The account address to request the withdrawal for.\n * @param amount The pufETH amount to request the withdrawal for.\n * @returns The transaction hash of the withdrawal.\n */\n public async requestWithdrawal(walletAddress: Address, amount: bigint) {\n const transact = async () =>\n await this.getContract().write.requestWithdrawal(\n [amount, walletAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.requestWithdrawal(\n [amount, walletAddress],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Request a withdrawal of the given amount to the given address.\n *\n * @param walletAddress The account address to request the withdrawal for.\n * @param amount The pufETHamount to request the withdrawal for.\n * @returns The transaction hash of the withdrawal.\n */\n public async requestWithdrawalWithPermit(\n walletAddress: Address,\n amount: bigint,\n ) {\n const permitData = await this.erc20PermitHandler\n .withToken(Token.pufETH)\n .getPermitData(\n walletAddress,\n CONTRACT_ADDRESSES[this.chain].PufferWithdrawalManager as Address,\n amount,\n );\n\n const transact = async () =>\n await this.getContract().write.requestWithdrawalWithPermit(\n [permitData, walletAddress],\n {\n account: walletAddress,\n chain: this.viemChain,\n },\n );\n\n const estimate = async () =>\n await this.getContract().estimateGas.requestWithdrawalWithPermit(\n [permitData, walletAddress],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Complete a withdrawal from the queue.\n *\n * @param withdrawalIdx The index of the withdrawal to complete.\n * @returns The transaction hash of the withdrawal.\n */\n public async completeQueuedWithdrawal(\n walletAddress: Address,\n withdrawalIdx: bigint,\n ) {\n const transact = async () =>\n await this.getContract().write.completeQueuedWithdrawal([withdrawalIdx], {\n account: walletAddress,\n chain: this.viemChain,\n });\n\n const estimate = async () =>\n await this.getContract().estimateGas.completeQueuedWithdrawal(\n [withdrawalIdx],\n { account: walletAddress },\n );\n\n return { transact, estimate };\n }\n\n /**\n * Get the withdrawal at the given index.\n *\n * @param withdrawalIdx The index of the withdrawal to get.\n * @returns The withdrawal at the given index.\n */\n public async getWithdrawal(withdrawalIdx: bigint) {\n return await this.getContract().read.getWithdrawal([withdrawalIdx]);\n }\n}\n"],"names":["PufferWithdrawalManagerHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","ERC20PermitHandler","address","CONTRACT_ADDRESSES","abi","PufferWithdrawalManager","client","getContract","walletAddress","amount","permitData","Token","withdrawalIdx"],"mappings":";;;;;;;;;AAiBO,MAAMA,EAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc1C,YACUC,GACAC,GACAC,GACR;AAjBM,IAAAC,EAAA;AACA,IAAAA,EAAA;AAaE,SAAA,QAAAH,GACA,KAAA,eAAAC,GACA,KAAA,eAAAC,GAEH,KAAA,YAAYE,EAAYJ,CAAK,GAClC,KAAK,qBAAqB,IAAIK;AAAA,MAC5BL;AAAA,MACAC;AAAA,MACAC;AAAA,IACF;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQK,cAAc;AACnB,UAAMI,IAAUC,EAAmB,KAAK,KAAK,EAC1C,yBACGC,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,EAc7C,MAAa,kBAAkBE,GAAwBC,GAAgB;AAgB9D,WAAA,EAAE,UAfQ,YACf,MAAM,KAAK,cAAc,MAAM;AAAA,MAC7B,CAACA,GAAQD,CAAa;AAAA,MACtB;AAAA,QACE,SAASA;AAAA,QACT,OAAO,KAAK;AAAA,MAAA;AAAA,IAEhB,GAQiB,UANF,YACf,MAAM,KAAK,cAAc,YAAY;AAAA,MACnC,CAACC,GAAQD,CAAa;AAAA,MACtB,EAAE,SAASA,EAAc;AAAA,IAC3B,EAE0B;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU9B,MAAa,4BACXA,GACAC,GACA;AACA,UAAMC,IAAa,MAAM,KAAK,mBAC3B,UAAUC,EAAM,MAAM,EACtB;AAAA,MACCH;AAAA,MACAL,EAAmB,KAAK,KAAK,EAAE;AAAA,MAC/BM;AAAA,IACF;AAiBK,WAAA,EAAE,UAfQ,YACf,MAAM,KAAK,cAAc,MAAM;AAAA,MAC7B,CAACC,GAAYF,CAAa;AAAA,MAC1B;AAAA,QACE,SAASA;AAAA,QACT,OAAO,KAAK;AAAA,MAAA;AAAA,IAEhB,GAQiB,UANF,YACf,MAAM,KAAK,cAAc,YAAY;AAAA,MACnC,CAACE,GAAYF,CAAa;AAAA,MAC1B,EAAE,SAASA,EAAc;AAAA,IAC3B,EAE0B;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS9B,MAAa,yBACXA,GACAI,GACA;AAaO,WAAA,EAAE,UAZQ,YACf,MAAM,KAAK,cAAc,MAAM,yBAAyB,CAACA,CAAa,GAAG;AAAA,MACvE,SAASJ;AAAA,MACT,OAAO,KAAK;AAAA,IAAA,CACb,GAQgB,UANF,YACf,MAAM,KAAK,cAAc,YAAY;AAAA,MACnC,CAACI,CAAa;AAAA,MACd,EAAE,SAASJ,EAAc;AAAA,IAC3B,EAE0B;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS9B,MAAa,cAAcI,GAAuB;AACzC,WAAA,MAAM,KAAK,YAAY,EAAE,KAAK,cAAc,CAACA,CAAa,CAAC;AAAA,EAAA;AAEtE;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator-ticket-handler.cjs","sources":["../../../lib/contracts/handlers/validator-ticket-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 { CONTRACT_ADDRESSES } from '../addresses';\nimport { ValidatorTicket } from '../abis/mainnet/ValidatorTicket';\n\nexport type PermitData = {\n deadline: bigint;\n amount: bigint;\n v: number;\n r: Address;\n s: Address;\n};\n\n/**\n * Handler for the `ValidatorTicket` contract exposing methods to interact\n * with the contract.\n */\nexport class ValidatorTicketHandler {\n private viemChain: ViemChain;\n\n /**\n * Create the handler for the `ValidatorTicket` contract exposing\n * methods to interact with the contract.\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 = CONTRACT_ADDRESSES[this.chain].ValidatorTicket as Address;\n const abi = ValidatorTicket;\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 * Purchase validator ticket with ETH.\n *\n * @param recipient The recipient of the validator ticket.\n * @param payableAmount The amount of ETH to send with the transaction.\n * @returns The transaction.\n */\n public purchaseValidatorTicket(recipient: Address, payableAmount: bigint) {\n return this.getContract().write.purchaseValidatorTicket([recipient], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n value: payableAmount,\n });\n }\n\n /**\n * Purchase validator ticket with pufETH.\n *\n * @param recipient The recipient of the validator ticket.\n * @param vtAmount The amount of validator tickets to purchase.\n * @returns The transaction.\n */\n public purchaseValidatorTicketWithPufETH(\n recipient: Address,\n vtAmount: bigint,\n ) {\n return this.getContract().write.purchaseValidatorTicketWithPufETH(\n [recipient, vtAmount],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Purchase validator ticket with pufETH and permit.\n *\n * @param recipient The recipient of the validator ticket.\n * @param vtAmount The amount of validator tickets to purchase.\n * @param permitData The permit data for pufETH approval.\n * @returns The transaction.\n */\n public purchaseValidatorTicketWithPufETHAndPermit(\n recipient: Address,\n vtAmount: bigint,\n permitData: PermitData,\n ) {\n return this.getContract().write.purchaseValidatorTicketWithPufETHAndPermit(\n [recipient, vtAmount, permitData],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Approve a spender to spend the validator ticket.\n *\n * @param spender The spender of the validator ticket.\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 validator ticket.\n *\n * @returns The total supply.\n */\n public getTotalSupply() {\n return this.getContract().read.totalSupply();\n }\n\n /**\n * Burn validator tickets.\n *\n * @param amount The amount to burn.\n * @returns The transaction.\n */\n public burn(amount: bigint) {\n return this.getContract().write.burn([amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Transfer validator tickets.\n *\n * @param to The recipient address.\n * @param amount The amount to transfer.\n * @returns The transaction.\n */\n public transfer(to: Address, amount: bigint) {\n return this.getContract().write.transfer([to, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Transfer validator tickets from another address.\n *\n * @param from The sender address.\n * @param to The recipient address.\n * @param amount The amount to transfer.\n * @returns The transaction.\n */\n public transferFrom(from: Address, to: Address, amount: bigint) {\n return this.getContract().write.transferFrom([from, to, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the guardians fee rate.\n *\n * @returns The guardians fee rate.\n */\n public getGuardiansFeeRate() {\n return this.getContract().read.getGuardiansFeeRate();\n }\n\n /**\n * Get the protocol fee rate.\n *\n * @returns The protocol fee rate.\n */\n public getProtocolFeeRate() {\n return this.getContract().read.getProtocolFeeRate();\n }\n\n /**\n * Get the domain separator for EIP-712 signatures.\n *\n * @returns The domain separator.\n */\n public getDomainSeparator() {\n return this.getContract().read.DOMAIN_SEPARATOR();\n }\n\n /**\n * Get the nonce for an owner.\n *\n * @param owner The owner address.\n * @returns The nonce.\n */\n public getNonce(owner: Address) {\n return this.getContract().read.nonces([owner]);\n }\n\n /**\n * Permit function for EIP-2612 approval.\n *\n * @param owner The owner address.\n * @param spender The spender address.\n * @param value The amount to approve.\n * @param deadline The deadline for the permit.\n * @param v The v component of the signature.\n * @param r The r component of the signature.\n * @param s The s component of the signature.\n * @returns The transaction.\n */\n public permit(\n owner: Address,\n spender: Address,\n value: bigint,\n deadline: bigint,\n v: number,\n r: Address,\n s: Address,\n ) {\n return this.getContract().write.permit(\n [owner, spender, value, deadline, v, r, s],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Get the EIP-712 domain information.\n *\n * @returns The EIP-712 domain information.\n */\n public getEip712Domain() {\n return this.getContract().read.eip712Domain();\n }\n\n /**\n * Get the name of the token.\n *\n * @returns The token name.\n */\n public getName() {\n return this.getContract().read.name();\n }\n\n /**\n * Get the symbol of the token.\n *\n * @returns The token symbol.\n */\n public getSymbol() {\n return this.getContract().read.symbol();\n }\n\n /**\n * Get the decimals of the token.\n *\n * @returns The token decimals.\n */\n public getDecimals() {\n return this.getContract().read.decimals();\n }\n}\n"],"names":["ValidatorTicketHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","address","CONTRACT_ADDRESSES","abi","ValidatorTicket","client","getContract","recipient","payableAmount","vtAmount","permitData","spender","amount","owner","to","from","value","deadline","v","r"],"mappings":"+ZAwBO,MAAMA,CAAuB,CAalC,YACUC,EACAC,EACAC,EACR,CAhBMC,EAAA,kBAaE,KAAA,MAAAH,EACA,KAAA,aAAAC,EACA,KAAA,aAAAC,EAEH,KAAA,UAAYE,cAAYJ,CAAK,CAAA,CAQ7B,aAAc,CACnB,MAAMK,EAAUC,EAAA,mBAAmB,KAAK,KAAK,EAAE,gBACzCC,EAAMC,EAAA,gBACNC,EAAS,CAAE,OAAQ,KAAK,aAAc,OAAQ,KAAK,YAAa,EAEtE,OAAOC,EAAY,YAAA,CAAE,QAAAL,EAAS,IAAAE,EAAK,OAAAE,EAAQ,CAAA,CActC,wBAAwBE,EAAoBC,EAAuB,CACxE,OAAO,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAACD,CAAS,EAAG,CACnE,QAAS,KAAK,aAAa,QAC3B,MAAO,KAAK,UACZ,MAAOC,CAAA,CACR,CAAA,CAUI,kCACLD,EACAE,EACA,CACO,OAAA,KAAK,cAAc,MAAM,kCAC9B,CAACF,EAAWE,CAAQ,EACpB,CACE,QAAS,KAAK,aAAa,QAC3B,MAAO,KAAK,SAAA,CAEhB,CAAA,CAWK,2CACLF,EACAE,EACAC,EACA,CACO,OAAA,KAAK,cAAc,MAAM,2CAC9B,CAACH,EAAWE,EAAUC,CAAU,EAChC,CACE,QAAS,KAAK,aAAa,QAC3B,MAAO,KAAK,SAAA,CAEhB,CAAA,CAUK,QAAQC,EAAkBC,EAAgB,CACxC,OAAA,KAAK,cAAc,MAAM,QAAQ,CAACD,EAASC,CAAM,EAAG,CACzD,QAAS,KAAK,aAAa,QAC3B,MAAO,KAAK,SAAA,CACb,CAAA,CAUI,aAAaC,EAAgBF,EAAkB,CAC7C,OAAA,KAAK,cAAc,KAAK,UAAU,CAACE,EAAOF,CAAO,CAAC,CAAA,CASpD,WAAWV,EAAkB,CAClC,OAAO,KAAK,YAAY,EAAE,KAAK,UAAU,CAACA,CAAO,CAAC,CAAA,CAQ7C,gBAAiB,CACtB,OAAO,KAAK,cAAc,KAAK,YAAY,CAAA,CAStC,KAAKW,EAAgB,CAC1B,OAAO,KAAK,YAAY,EAAE,MAAM,KAAK,CAACA,CAAM,EAAG,CAC7C,QAAS,KAAK,aAAa,QAC3B,MAAO,KAAK,SAAA,CACb,CAAA,CAUI,SAASE,EAAaF,EAAgB,CACpC,OAAA,KAAK,cAAc,MAAM,SAAS,CAACE,EAAIF,CAAM,EAAG,CACrD,QAAS,KAAK,aAAa,QAC3B,MAAO,KAAK,SAAA,CACb,CAAA,CAWI,aAAaG,EAAeD,EAAaF,EAAgB,CACvD,OAAA,KAAK,cAAc,MAAM,aAAa,CAACG,EAAMD,EAAIF,CAAM,EAAG,CAC/D,QAAS,KAAK,aAAa,QAC3B,MAAO,KAAK,SAAA,CACb,CAAA,CAQI,qBAAsB,CAC3B,OAAO,KAAK,cAAc,KAAK,oBAAoB,CAAA,CAQ9C,oBAAqB,CAC1B,OAAO,KAAK,cAAc,KAAK,mBAAmB,CAAA,CAQ7C,oBAAqB,CAC1B,OAAO,KAAK,cAAc,KAAK,iBAAiB,CAAA,CAS3C,SAASC,EAAgB,CAC9B,OAAO,KAAK,YAAY,EAAE,KAAK,OAAO,CAACA,CAAK,CAAC,CAAA,CAexC,OACLA,EACAF,EACAK,EACAC,EACAC,EACAC,EACA,EACA,CACO,OAAA,KAAK,cAAc,MAAM,OAC9B,CAACN,EAAOF,EAASK,EAAOC,EAAUC,EAAGC,EAAG,CAAC,EACzC,CACE,QAAS,KAAK,aAAa,QAC3B,MAAO,KAAK,SAAA,CAEhB,CAAA,CAQK,iBAAkB,CACvB,OAAO,KAAK,cAAc,KAAK,aAAa,CAAA,CAQvC,SAAU,CACf,OAAO,KAAK,cAAc,KAAK,KAAK,CAAA,CAQ/B,WAAY,CACjB,OAAO,KAAK,cAAc,KAAK,OAAO,CAAA,CAQjC,aAAc,CACnB,OAAO,KAAK,cAAc,KAAK,SAAS,CAAA,CAE5C"}
|
|
1
|
+
{"version":3,"file":"validator-ticket-handler.cjs","sources":["../../../lib/contracts/handlers/validator-ticket-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 { CONTRACT_ADDRESSES } from '../addresses';\nimport { ValidatorTicket } from '../abis/mainnet/ValidatorTicket';\nimport { PermitData } from '../common/lib/types';\n\n/**\n * Handler for the `ValidatorTicket` contract exposing methods to interact\n * with the contract.\n */\nexport class ValidatorTicketHandler {\n private viemChain: ViemChain;\n\n /**\n * Create the handler for the `ValidatorTicket` contract exposing\n * methods to interact with the contract.\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 = CONTRACT_ADDRESSES[this.chain].ValidatorTicket as Address;\n const abi = ValidatorTicket;\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 * Purchase validator ticket with ETH.\n *\n * @param recipient The recipient of the validator ticket.\n * @param payableAmount The amount of ETH to send with the transaction.\n * @returns The transaction.\n */\n public purchaseValidatorTicket(recipient: Address, payableAmount: bigint) {\n return this.getContract().write.purchaseValidatorTicket([recipient], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n value: payableAmount,\n });\n }\n\n /**\n * Purchase validator ticket with pufETH.\n *\n * @param recipient The recipient of the validator ticket.\n * @param vtAmount The amount of validator tickets to purchase.\n * @returns The transaction.\n */\n public purchaseValidatorTicketWithPufETH(\n recipient: Address,\n vtAmount: bigint,\n ) {\n return this.getContract().write.purchaseValidatorTicketWithPufETH(\n [recipient, vtAmount],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Purchase validator ticket with pufETH and permit.\n *\n * @param recipient The recipient of the validator ticket.\n * @param vtAmount The amount of validator tickets to purchase.\n * @param permitData The permit data for pufETH approval.\n * @returns The transaction.\n */\n public purchaseValidatorTicketWithPufETHAndPermit(\n recipient: Address,\n vtAmount: bigint,\n permitData: PermitData,\n ) {\n return this.getContract().write.purchaseValidatorTicketWithPufETHAndPermit(\n [recipient, vtAmount, permitData],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Approve a spender to spend the validator ticket.\n *\n * @param spender The spender of the validator ticket.\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 validator ticket.\n *\n * @returns The total supply.\n */\n public getTotalSupply() {\n return this.getContract().read.totalSupply();\n }\n\n /**\n * Burn validator tickets.\n *\n * @param amount The amount to burn.\n * @returns The transaction.\n */\n public burn(amount: bigint) {\n return this.getContract().write.burn([amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Transfer validator tickets.\n *\n * @param to The recipient address.\n * @param amount The amount to transfer.\n * @returns The transaction.\n */\n public transfer(to: Address, amount: bigint) {\n return this.getContract().write.transfer([to, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Transfer validator tickets from another address.\n *\n * @param from The sender address.\n * @param to The recipient address.\n * @param amount The amount to transfer.\n * @returns The transaction.\n */\n public transferFrom(from: Address, to: Address, amount: bigint) {\n return this.getContract().write.transferFrom([from, to, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the guardians fee rate.\n *\n * @returns The guardians fee rate.\n */\n public getGuardiansFeeRate() {\n return this.getContract().read.getGuardiansFeeRate();\n }\n\n /**\n * Get the protocol fee rate.\n *\n * @returns The protocol fee rate.\n */\n public getProtocolFeeRate() {\n return this.getContract().read.getProtocolFeeRate();\n }\n\n /**\n * Get the domain separator for EIP-712 signatures.\n *\n * @returns The domain separator.\n */\n public getDomainSeparator() {\n return this.getContract().read.DOMAIN_SEPARATOR();\n }\n\n /**\n * Get the nonce for an owner.\n *\n * @param owner The owner address.\n * @returns The nonce.\n */\n public getNonce(owner: Address) {\n return this.getContract().read.nonces([owner]);\n }\n\n /**\n * Permit function for EIP-2612 approval.\n *\n * @param owner The owner address.\n * @param spender The spender address.\n * @param value The amount to approve.\n * @param deadline The deadline for the permit.\n * @param v The v component of the signature.\n * @param r The r component of the signature.\n * @param s The s component of the signature.\n * @returns The transaction.\n */\n public permit(\n owner: Address,\n spender: Address,\n value: bigint,\n deadline: bigint,\n v: number,\n r: Address,\n s: Address,\n ) {\n return this.getContract().write.permit(\n [owner, spender, value, deadline, v, r, s],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Get the EIP-712 domain information.\n *\n * @returns The EIP-712 domain information.\n */\n public getEip712Domain() {\n return this.getContract().read.eip712Domain();\n }\n\n /**\n * Get the name of the token.\n *\n * @returns The token name.\n */\n public getName() {\n return this.getContract().read.name();\n }\n\n /**\n * Get the symbol of the token.\n *\n * @returns The token symbol.\n */\n public getSymbol() {\n return this.getContract().read.symbol();\n }\n\n /**\n * Get the decimals of the token.\n *\n * @returns The token decimals.\n */\n public getDecimals() {\n return this.getContract().read.decimals();\n }\n}\n"],"names":["ValidatorTicketHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","address","CONTRACT_ADDRESSES","abi","ValidatorTicket","client","getContract","recipient","payableAmount","vtAmount","permitData","spender","amount","owner","to","from","value","deadline","v","r"],"mappings":"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"}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import { WalletClient, PublicClient, Address, GetContractReturnType, Account } from 'viem';
|
|
2
2
|
import { Chain, ViemChain } from '../../chains/constants';
|
|
3
|
-
|
|
4
|
-
deadline: bigint;
|
|
5
|
-
amount: bigint;
|
|
6
|
-
v: number;
|
|
7
|
-
r: Address;
|
|
8
|
-
s: Address;
|
|
9
|
-
};
|
|
3
|
+
import { PermitData } from '../common/lib/types';
|
|
10
4
|
/**
|
|
11
5
|
* Handler for the `ValidatorTicket` contract exposing methods to interact
|
|
12
6
|
* with the contract.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator-ticket-handler.js","sources":["../../../lib/contracts/handlers/validator-ticket-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 { CONTRACT_ADDRESSES } from '../addresses';\nimport { ValidatorTicket } from '../abis/mainnet/ValidatorTicket';\n\nexport type PermitData = {\n deadline: bigint;\n amount: bigint;\n v: number;\n r: Address;\n s: Address;\n};\n\n/**\n * Handler for the `ValidatorTicket` contract exposing methods to interact\n * with the contract.\n */\nexport class ValidatorTicketHandler {\n private viemChain: ViemChain;\n\n /**\n * Create the handler for the `ValidatorTicket` contract exposing\n * methods to interact with the contract.\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 = CONTRACT_ADDRESSES[this.chain].ValidatorTicket as Address;\n const abi = ValidatorTicket;\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 * Purchase validator ticket with ETH.\n *\n * @param recipient The recipient of the validator ticket.\n * @param payableAmount The amount of ETH to send with the transaction.\n * @returns The transaction.\n */\n public purchaseValidatorTicket(recipient: Address, payableAmount: bigint) {\n return this.getContract().write.purchaseValidatorTicket([recipient], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n value: payableAmount,\n });\n }\n\n /**\n * Purchase validator ticket with pufETH.\n *\n * @param recipient The recipient of the validator ticket.\n * @param vtAmount The amount of validator tickets to purchase.\n * @returns The transaction.\n */\n public purchaseValidatorTicketWithPufETH(\n recipient: Address,\n vtAmount: bigint,\n ) {\n return this.getContract().write.purchaseValidatorTicketWithPufETH(\n [recipient, vtAmount],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Purchase validator ticket with pufETH and permit.\n *\n * @param recipient The recipient of the validator ticket.\n * @param vtAmount The amount of validator tickets to purchase.\n * @param permitData The permit data for pufETH approval.\n * @returns The transaction.\n */\n public purchaseValidatorTicketWithPufETHAndPermit(\n recipient: Address,\n vtAmount: bigint,\n permitData: PermitData,\n ) {\n return this.getContract().write.purchaseValidatorTicketWithPufETHAndPermit(\n [recipient, vtAmount, permitData],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Approve a spender to spend the validator ticket.\n *\n * @param spender The spender of the validator ticket.\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 validator ticket.\n *\n * @returns The total supply.\n */\n public getTotalSupply() {\n return this.getContract().read.totalSupply();\n }\n\n /**\n * Burn validator tickets.\n *\n * @param amount The amount to burn.\n * @returns The transaction.\n */\n public burn(amount: bigint) {\n return this.getContract().write.burn([amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Transfer validator tickets.\n *\n * @param to The recipient address.\n * @param amount The amount to transfer.\n * @returns The transaction.\n */\n public transfer(to: Address, amount: bigint) {\n return this.getContract().write.transfer([to, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Transfer validator tickets from another address.\n *\n * @param from The sender address.\n * @param to The recipient address.\n * @param amount The amount to transfer.\n * @returns The transaction.\n */\n public transferFrom(from: Address, to: Address, amount: bigint) {\n return this.getContract().write.transferFrom([from, to, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the guardians fee rate.\n *\n * @returns The guardians fee rate.\n */\n public getGuardiansFeeRate() {\n return this.getContract().read.getGuardiansFeeRate();\n }\n\n /**\n * Get the protocol fee rate.\n *\n * @returns The protocol fee rate.\n */\n public getProtocolFeeRate() {\n return this.getContract().read.getProtocolFeeRate();\n }\n\n /**\n * Get the domain separator for EIP-712 signatures.\n *\n * @returns The domain separator.\n */\n public getDomainSeparator() {\n return this.getContract().read.DOMAIN_SEPARATOR();\n }\n\n /**\n * Get the nonce for an owner.\n *\n * @param owner The owner address.\n * @returns The nonce.\n */\n public getNonce(owner: Address) {\n return this.getContract().read.nonces([owner]);\n }\n\n /**\n * Permit function for EIP-2612 approval.\n *\n * @param owner The owner address.\n * @param spender The spender address.\n * @param value The amount to approve.\n * @param deadline The deadline for the permit.\n * @param v The v component of the signature.\n * @param r The r component of the signature.\n * @param s The s component of the signature.\n * @returns The transaction.\n */\n public permit(\n owner: Address,\n spender: Address,\n value: bigint,\n deadline: bigint,\n v: number,\n r: Address,\n s: Address,\n ) {\n return this.getContract().write.permit(\n [owner, spender, value, deadline, v, r, s],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Get the EIP-712 domain information.\n *\n * @returns The EIP-712 domain information.\n */\n public getEip712Domain() {\n return this.getContract().read.eip712Domain();\n }\n\n /**\n * Get the name of the token.\n *\n * @returns The token name.\n */\n public getName() {\n return this.getContract().read.name();\n }\n\n /**\n * Get the symbol of the token.\n *\n * @returns The token symbol.\n */\n public getSymbol() {\n return this.getContract().read.symbol();\n }\n\n /**\n * Get the decimals of the token.\n *\n * @returns The token decimals.\n */\n public getDecimals() {\n return this.getContract().read.decimals();\n }\n}\n"],"names":["ValidatorTicketHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","address","CONTRACT_ADDRESSES","abi","ValidatorTicket","client","getContract","recipient","payableAmount","vtAmount","permitData","spender","amount","owner","to","from","value","deadline","v","r","s"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validator-ticket-handler.js","sources":["../../../lib/contracts/handlers/validator-ticket-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 { CONTRACT_ADDRESSES } from '../addresses';\nimport { ValidatorTicket } from '../abis/mainnet/ValidatorTicket';\nimport { PermitData } from '../common/lib/types';\n\n/**\n * Handler for the `ValidatorTicket` contract exposing methods to interact\n * with the contract.\n */\nexport class ValidatorTicketHandler {\n private viemChain: ViemChain;\n\n /**\n * Create the handler for the `ValidatorTicket` contract exposing\n * methods to interact with the contract.\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 = CONTRACT_ADDRESSES[this.chain].ValidatorTicket as Address;\n const abi = ValidatorTicket;\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 * Purchase validator ticket with ETH.\n *\n * @param recipient The recipient of the validator ticket.\n * @param payableAmount The amount of ETH to send with the transaction.\n * @returns The transaction.\n */\n public purchaseValidatorTicket(recipient: Address, payableAmount: bigint) {\n return this.getContract().write.purchaseValidatorTicket([recipient], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n value: payableAmount,\n });\n }\n\n /**\n * Purchase validator ticket with pufETH.\n *\n * @param recipient The recipient of the validator ticket.\n * @param vtAmount The amount of validator tickets to purchase.\n * @returns The transaction.\n */\n public purchaseValidatorTicketWithPufETH(\n recipient: Address,\n vtAmount: bigint,\n ) {\n return this.getContract().write.purchaseValidatorTicketWithPufETH(\n [recipient, vtAmount],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Purchase validator ticket with pufETH and permit.\n *\n * @param recipient The recipient of the validator ticket.\n * @param vtAmount The amount of validator tickets to purchase.\n * @param permitData The permit data for pufETH approval.\n * @returns The transaction.\n */\n public purchaseValidatorTicketWithPufETHAndPermit(\n recipient: Address,\n vtAmount: bigint,\n permitData: PermitData,\n ) {\n return this.getContract().write.purchaseValidatorTicketWithPufETHAndPermit(\n [recipient, vtAmount, permitData],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Approve a spender to spend the validator ticket.\n *\n * @param spender The spender of the validator ticket.\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 validator ticket.\n *\n * @returns The total supply.\n */\n public getTotalSupply() {\n return this.getContract().read.totalSupply();\n }\n\n /**\n * Burn validator tickets.\n *\n * @param amount The amount to burn.\n * @returns The transaction.\n */\n public burn(amount: bigint) {\n return this.getContract().write.burn([amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Transfer validator tickets.\n *\n * @param to The recipient address.\n * @param amount The amount to transfer.\n * @returns The transaction.\n */\n public transfer(to: Address, amount: bigint) {\n return this.getContract().write.transfer([to, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Transfer validator tickets from another address.\n *\n * @param from The sender address.\n * @param to The recipient address.\n * @param amount The amount to transfer.\n * @returns The transaction.\n */\n public transferFrom(from: Address, to: Address, amount: bigint) {\n return this.getContract().write.transferFrom([from, to, amount], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the guardians fee rate.\n *\n * @returns The guardians fee rate.\n */\n public getGuardiansFeeRate() {\n return this.getContract().read.getGuardiansFeeRate();\n }\n\n /**\n * Get the protocol fee rate.\n *\n * @returns The protocol fee rate.\n */\n public getProtocolFeeRate() {\n return this.getContract().read.getProtocolFeeRate();\n }\n\n /**\n * Get the domain separator for EIP-712 signatures.\n *\n * @returns The domain separator.\n */\n public getDomainSeparator() {\n return this.getContract().read.DOMAIN_SEPARATOR();\n }\n\n /**\n * Get the nonce for an owner.\n *\n * @param owner The owner address.\n * @returns The nonce.\n */\n public getNonce(owner: Address) {\n return this.getContract().read.nonces([owner]);\n }\n\n /**\n * Permit function for EIP-2612 approval.\n *\n * @param owner The owner address.\n * @param spender The spender address.\n * @param value The amount to approve.\n * @param deadline The deadline for the permit.\n * @param v The v component of the signature.\n * @param r The r component of the signature.\n * @param s The s component of the signature.\n * @returns The transaction.\n */\n public permit(\n owner: Address,\n spender: Address,\n value: bigint,\n deadline: bigint,\n v: number,\n r: Address,\n s: Address,\n ) {\n return this.getContract().write.permit(\n [owner, spender, value, deadline, v, r, s],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Get the EIP-712 domain information.\n *\n * @returns The EIP-712 domain information.\n */\n public getEip712Domain() {\n return this.getContract().read.eip712Domain();\n }\n\n /**\n * Get the name of the token.\n *\n * @returns The token name.\n */\n public getName() {\n return this.getContract().read.name();\n }\n\n /**\n * Get the symbol of the token.\n *\n * @returns The token symbol.\n */\n public getSymbol() {\n return this.getContract().read.symbol();\n }\n\n /**\n * Get the decimals of the token.\n *\n * @returns The token decimals.\n */\n public getDecimals() {\n return this.getContract().read.decimals();\n }\n}\n"],"names":["ValidatorTicketHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","address","CONTRACT_ADDRESSES","abi","ValidatorTicket","client","getContract","recipient","payableAmount","vtAmount","permitData","spender","amount","owner","to","from","value","deadline","v","r","s"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var h=Object.defineProperty;var l=(n,t,e)=>t in n?h(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var c=(n,t,e)=>l(n,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("../../constants-CxSgz27h.cjs"),C=require("../abis/mainnet/vlPUFFER.cjs"),g=require("./erc20-permit-handler.cjs"),o=require("../tokens.cjs"),d=require("../../getContract-DUA3M2pm.cjs");class m{constructor(t,e,r){c(this,"viemChain");c(this,"erc20PermitHandler");this.chain=t,this.walletClient=e,this.publicClient=r,this.viemChain=u.VIEM_CHAINS[t],this.erc20PermitHandler=new g.ERC20PermitHandler(t,e,r)}getContract(){const t=o.TOKENS_ADDRESSES[o.Token.vlPUFFER][this.chain],e=C.vlPUFFER,r={public:this.publicClient,wallet:this.walletClient};return d.getContract({address:t,abi:e,client:r})}PUFFER(){return this.getContract().read.PUFFER()}decimals(){return this.getContract().read.decimals()}delegates(t){return this.getContract().read.delegates([t])}owner(){return this.getContract().read.owner()}allowance(t,e){return this.getContract().read.allowance([t,e])}transferFrom(t,e,r){return this.getContract().write.transferFrom([t,e,r],{account:this.walletClient.account,chain:this.viemChain})}totalSupply(){return this.getContract().read.totalSupply()}symbol(){return this.getContract().read.symbol()}isPaused(){return this.getContract().read.paused()}async lockInfos(t){const[e,r]=await this.getContract().read.lockInfos([t]);return{pufferAmount:e,unlockTime:r}}getPastTotalSupply(t){return this.getContract().read.getPastTotalSupply([t])}balanceOf(t){return this.getContract().read.balanceOf([t])}nonces(t){return this.getContract().read.nonces([t])}votes(t){return this.getContract().read.getVotes([t])}delegateBySig(t,e,r,a,i,s){return this.getContract().write.delegateBySig([t,e,r,a,i,s],{account:this.walletClient.account,chain:this.viemChain})}transfer(t,e){return this.getContract().write.transfer([t,e],{account:this.walletClient.account,chain:this.viemChain})}getClockMode(){return this.getContract().read.CLOCK_MODE()}numCheckpoints(t){return this.getContract().read.numCheckpoints([t])}approve(t,e){return this.getContract().write.approve([t,e],{account:this.walletClient.account,chain:this.viemChain})}reLock(t,e){return this.getContract().write.reLock([t,e],{account:this.walletClient.account,chain:this.viemChain})}getPastVotes(t,e){return this.getContract().read.getPastVotes([t,e])}checkpoints(t,e){return this.getContract().read.checkpoints([t,e])}name(){return this.getContract().read.name()}createLock(t,e){return this.getContract().write.createLock([t,e],{account:this.walletClient.account,chain:this.viemChain})}createLockWithPermit(t,e,r){return this.getContract().write.createLockWithPermit([t,e,r],{account:this.walletClient.account,chain:this.viemChain})}async lock(t,e,r){if(r)return this.createLock(t,e);const a=this.walletClient.account,i=await this.erc20PermitHandler.withToken(o.Token.PUFFER).getPermitData(a.address,this.getContract().address,t);return this.getContract().write.createLockWithPermit([t,e,i],{account:this.walletClient.account,chain:this.viemChain})}getClock(){return this.getContract().read.clock()}withdraw(t){return this.getContract().write.withdraw([t],{account:this.walletClient.account,chain:this.viemChain})}delegate(t){return this.getContract().write.delegate([t],{account:this.walletClient.account,chain:this.viemChain})}}exports.VLPufferHandler=m;
|
|
2
|
+
//# sourceMappingURL=vl-puffer-handler.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vl-puffer-handler.cjs","sources":["../../../lib/contracts/handlers/vl-puffer-handler.ts"],"sourcesContent":["import {\n Address,\n GetContractReturnType,\n PublicClient,\n Chain as ViemChain,\n WalletClient,\n getContract,\n Account,\n Hex,\n} from 'viem';\nimport { Chain, VIEM_CHAINS } from '../../chains/constants';\nimport { vlPUFFER } from '../abis/mainnet/vlPUFFER';\nimport { ERC20PermitHandler } from './erc20-permit-handler';\nimport { Token, TOKENS_ADDRESSES } from '../tokens';\nimport { PermitData } from '../common/lib/types';\n\n/**\n * Handler for the `vlPUFFER` contract exposing methods to interact\n * with the contract.\n */\nexport class VLPufferHandler {\n private viemChain: ViemChain;\n private erc20PermitHandler: ERC20PermitHandler;\n\n /**\n * Create the handler for the `vlPUFFER` contract exposing methods to\n * interact with the contract.\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.erc20PermitHandler = new ERC20PermitHandler(\n chain,\n walletClient,\n publicClient,\n );\n }\n\n /**\n * Get the contract.\n *\n * @returns The viem contract.\n */\n public getContract() {\n const address = TOKENS_ADDRESSES[Token.vlPUFFER][this.chain] as Address;\n const abi = vlPUFFER;\n const client = { public: this.publicClient, wallet: this.walletClient };\n\n return getContract({ address, abi, client }) as GetContractReturnType<\n typeof vlPUFFER,\n typeof client,\n Address\n >;\n }\n\n /**\n * Get the PUFFER token address.\n *\n * @returns The PUFFER token address.\n */\n public PUFFER() {\n return this.getContract().read.PUFFER();\n }\n\n /**\n * Get the decimals of the token.\n *\n * @returns The decimals.\n */\n public decimals() {\n return this.getContract().read.decimals();\n }\n\n /**\n * Get the delegates for an account.\n *\n * @param account The account to get delegates for.\n * @returns The delegate address.\n */\n public delegates(account: Address) {\n return this.getContract().read.delegates([account]);\n }\n\n /**\n * Get the owner of the contract.\n *\n * @returns The owner address.\n */\n public owner() {\n return this.getContract().read.owner();\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 allowance(owner: Address, spender: Address) {\n return this.getContract().read.allowance([owner, spender]);\n }\n\n /**\n * Transfer tokens from one address to another.\n *\n * @param from The address to transfer from.\n * @param to The address to transfer to.\n * @param value The amount to transfer.\n * @returns The transaction.\n */\n public transferFrom(from: Address, to: Address, value: bigint) {\n return this.getContract().write.transferFrom([from, to, value], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the total supply of the token.\n *\n * @returns The total supply.\n */\n public totalSupply() {\n return this.getContract().read.totalSupply();\n }\n\n /**\n * Get the symbol of the token.\n *\n * @returns The symbol.\n */\n public symbol() {\n return this.getContract().read.symbol();\n }\n\n /**\n * Check if the contract is paused.\n *\n * @returns True if paused, false otherwise.\n */\n public isPaused() {\n return this.getContract().read.paused();\n }\n\n /**\n * Get the lock information for a user.\n *\n * @param user The user address.\n * @returns The lock information.\n */\n public async lockInfos(user: Address) {\n const [pufferAmount, unlockTime] = await this.getContract().read.lockInfos([\n user,\n ]);\n\n return { pufferAmount, unlockTime };\n }\n\n /**\n * Get the past total supply at a specific timepoint.\n *\n * @param timepoint The timepoint to get the total supply for.\n * @returns The past total supply.\n */\n public getPastTotalSupply(timepoint: bigint) {\n return this.getContract().read.getPastTotalSupply([timepoint]);\n }\n\n /**\n * Get the balance for an address.\n *\n * @param account The address to get the balance of.\n * @returns The balance.\n */\n public balanceOf(account: Address) {\n return this.getContract().read.balanceOf([account]);\n }\n\n /**\n * Get the nonce for an owner.\n *\n * @param owner The owner address.\n * @returns The nonce.\n */\n public nonces(owner: Address) {\n return this.getContract().read.nonces([owner]);\n }\n\n /**\n * Get the votes for an account.\n *\n * @param account The account to get votes for.\n * @returns The votes.\n */\n public votes(account: Address) {\n return this.getContract().read.getVotes([account]);\n }\n\n /**\n * Delegate by signature.\n *\n * @param delegatee The delegatee address.\n * @param nonce The nonce.\n * @param expiry The expiry time.\n * @param v The v component of the signature.\n * @param r The r component of the signature.\n * @param s The s component of the signature.\n * @returns The transaction.\n */\n public delegateBySig(\n delegatee: Address,\n nonce: bigint,\n expiry: bigint,\n v: number,\n r: Hex,\n s: Hex,\n ) {\n return this.getContract().write.delegateBySig(\n [delegatee, nonce, expiry, v, r, s],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Transfer tokens to another address.\n *\n * @param to The address to transfer to.\n * @param value The amount to transfer.\n * @returns The transaction.\n */\n public transfer(to: Address, value: bigint) {\n return this.getContract().write.transfer([to, value], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the clock mode.\n *\n * @returns The clock mode.\n */\n public getClockMode() {\n return this.getContract().read.CLOCK_MODE();\n }\n\n /**\n * Get the number of checkpoints for an account.\n *\n * @param account The account to get checkpoints for.\n * @returns The number of checkpoints.\n */\n public numCheckpoints(account: Address) {\n return this.getContract().read.numCheckpoints([account]);\n }\n\n /**\n * Approve a spender to spend tokens.\n *\n * @param spender The spender address.\n * @param value The amount to approve.\n * @returns The transaction.\n */\n public approve(spender: Address, value: bigint) {\n return this.getContract().write.approve([spender, value], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Re-lock with the specified amount and multiplier.\n *\n * @param amount The amount to re-lock.\n * @param multiplier The multiplier for the re-lock.\n * @returns The transaction.\n */\n public reLock(amount: bigint, multiplier: bigint) {\n return this.getContract().write.reLock([amount, multiplier], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Get the past votes for an account at a specific timepoint.\n *\n * @param account The account to get past votes for.\n * @param timepoint The timepoint to get votes for.\n * @returns The past votes.\n */\n public getPastVotes(account: Address, timepoint: bigint) {\n return this.getContract().read.getPastVotes([account, timepoint]);\n }\n\n /**\n * Get the checkpoints for an account at a specific position.\n *\n * @param account The account to get checkpoints for.\n * @param pos The position of the checkpoint.\n * @returns The checkpoint.\n */\n public checkpoints(account: Address, pos: number) {\n return this.getContract().read.checkpoints([account, pos]);\n }\n\n /**\n * Get the name of the token.\n *\n * @returns The name.\n */\n public name() {\n return this.getContract().read.name();\n }\n\n /**\n * Create a lock with the specified amount and multiplier.\n *\n * @param amount The amount to lock.\n * @param multiplier The multiplier for the lock.\n * @returns The transaction.\n */\n public createLock(amount: bigint, multiplier: bigint) {\n return this.getContract().write.createLock([amount, multiplier], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Create a lock with permit.\n *\n * @param value The amount to lock.\n * @param multiplier The multiplier for the lock.\n * @param permitData The permit data.\n * @returns The transaction.\n */\n public createLockWithPermit(\n value: bigint,\n multiplier: bigint,\n permitData: PermitData,\n ) {\n return this.getContract().write.createLockWithPermit(\n [value, multiplier, permitData],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Create a lock with permit.\n *\n * @param value The amount to lock.\n * @param multiplier The multiplier for the lock.\n * @param isPreapproved Whether the PUFFER token is preapproved.\n * @returns The transaction.\n */\n public async lock(value: bigint, multiplier: bigint, isPreapproved: boolean) {\n if (isPreapproved) {\n return this.createLock(value, multiplier);\n }\n\n const account = this.walletClient.account as Account;\n // Internally create a permit signature for the PUFFER token.\n const permitData = await this.erc20PermitHandler\n .withToken(Token.PUFFER)\n .getPermitData(account.address, this.getContract().address, value);\n\n // Create a lock with the permit data.\n return this.getContract().write.createLockWithPermit(\n [value, multiplier, permitData],\n {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n },\n );\n }\n\n /**\n * Get the current clock value.\n *\n * @returns The clock value.\n */\n public getClock() {\n return this.getContract().read.clock();\n }\n\n /**\n * Withdraw tokens to a recipient.\n *\n * @param recipient The recipient address.\n * @returns The transaction.\n */\n public withdraw(recipient: Address) {\n return this.getContract().write.withdraw([recipient], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n\n /**\n * Delegate votes to another address.\n *\n * @param delegatee The delegatee address.\n * @returns The transaction.\n */\n public delegate(delegatee: Address) {\n return this.getContract().write.delegate([delegatee], {\n account: this.walletClient.account as Account,\n chain: this.viemChain,\n });\n }\n}\n"],"names":["VLPufferHandler","chain","walletClient","publicClient","__publicField","VIEM_CHAINS","ERC20PermitHandler","address","TOKENS_ADDRESSES","Token","abi","vlPUFFER","client","getContract","account","owner","spender","from","to","value","user","pufferAmount","unlockTime","timepoint","delegatee","nonce","expiry","v","r","amount","multiplier","pos","permitData","isPreapproved","recipient"],"mappings":"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"}
|