@bananapus/nana-sdk-core 1.0.0 → 1.1.1
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/cjs/actions/JBSuckerAbi.js +4 -1
- package/dist/cjs/actions/JBSuckerAbi.js.map +1 -1
- package/dist/cjs/actions/dataHook.js +26 -22
- package/dist/cjs/actions/dataHook.js.map +1 -1
- package/dist/cjs/actions/projectMetadata.js +12 -8
- package/dist/cjs/actions/projectMetadata.js.map +1 -1
- package/dist/cjs/actions/suckerPairs.js +21 -17
- package/dist/cjs/actions/suckerPairs.js.map +1 -1
- package/dist/cjs/constants.js +89 -85
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts.js +22 -19
- package/dist/cjs/contracts.js.map +1 -1
- package/dist/cjs/generated/juicebox.js +94 -90
- package/dist/cjs/generated/juicebox.js.map +1 -1
- package/dist/cjs/index.js +24 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.js +15 -4
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/contracts.js +19 -14
- package/dist/cjs/utils/contracts.js.map +1 -1
- package/dist/cjs/utils/data.js +23 -13
- package/dist/cjs/utils/data.js.map +1 -1
- package/dist/cjs/utils/data.test.js +19 -17
- package/dist/cjs/utils/data.test.js.map +1 -1
- package/dist/cjs/utils/debug.js +4 -1
- package/dist/cjs/utils/debug.js.map +1 -1
- package/dist/cjs/utils/deploy.js +17 -13
- package/dist/cjs/utils/deploy.js.map +1 -1
- package/dist/cjs/utils/deploy.test.js +15 -13
- package/dist/cjs/utils/deploy.test.js.map +1 -1
- package/dist/cjs/utils/fee.js +6 -3
- package/dist/cjs/utils/fee.js.map +1 -1
- package/dist/cjs/utils/fee.test.js +8 -6
- package/dist/cjs/utils/fee.test.js.map +1 -1
- package/dist/cjs/utils/format.js +11 -6
- package/dist/cjs/utils/format.js.map +1 -1
- package/dist/cjs/utils/format.test.js +11 -9
- package/dist/cjs/utils/format.test.js.map +1 -1
- package/dist/cjs/utils/hook.js +9 -6
- package/dist/cjs/utils/hook.js.map +1 -1
- package/dist/cjs/utils/index.js +28 -12
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/ipfs.js +14 -6
- package/dist/cjs/utils/ipfs.js.map +1 -1
- package/dist/cjs/utils/ipfs.test.js +23 -18
- package/dist/cjs/utils/ipfs.test.js.map +1 -1
- package/dist/cjs/utils/revnet.js +9 -5
- package/dist/cjs/utils/revnet.js.map +1 -1
- package/dist/cjs/utils/revnet.test.js +9 -7
- package/dist/cjs/utils/revnet.test.js.map +1 -1
- package/dist/cjs/utils/ruleset.js +11 -7
- package/dist/cjs/utils/ruleset.js.map +1 -1
- package/dist/cjs/utils/ruleset.test.js +9 -7
- package/dist/cjs/utils/ruleset.test.js.map +1 -1
- package/dist/cjs/utils/token.js +26 -19
- package/dist/cjs/utils/token.js.map +1 -1
- package/dist/cjs/utils/token.test.js +25 -23
- package/dist/cjs/utils/token.test.js.map +1 -1
- package/dist/cjs/utils/tx.js +6 -3
- package/dist/cjs/utils/tx.js.map +1 -1
- package/dist/cjs/utils/urn.js +9 -5
- package/dist/cjs/utils/urn.js.map +1 -1
- package/dist/cjs/utils/urn.test.js +71 -69
- package/dist/cjs/utils/urn.test.js.map +1 -1
- package/dist/cjs/v6/cashOut.d.ts +88 -0
- package/dist/cjs/v6/cashOut.d.ts.map +1 -0
- package/dist/cjs/v6/cashOut.js +77 -0
- package/dist/cjs/v6/cashOut.js.map +1 -0
- package/dist/cjs/v6/cashOut.test.d.ts +2 -0
- package/dist/cjs/v6/cashOut.test.d.ts.map +1 -0
- package/dist/cjs/v6/cashOut.test.js +102 -0
- package/dist/cjs/v6/cashOut.test.js.map +1 -0
- package/dist/cjs/v6/currency.d.ts +43 -0
- package/dist/cjs/v6/currency.d.ts.map +1 -0
- package/dist/cjs/v6/currency.js +48 -0
- package/dist/cjs/v6/currency.js.map +1 -0
- package/dist/cjs/v6/currency.test.d.ts +2 -0
- package/dist/cjs/v6/currency.test.d.ts.map +1 -0
- package/dist/cjs/v6/currency.test.js +26 -0
- package/dist/cjs/v6/currency.test.js.map +1 -0
- package/dist/cjs/v6/fees.d.ts +43 -0
- package/dist/cjs/v6/fees.d.ts.map +1 -0
- package/dist/cjs/v6/fees.js +56 -0
- package/dist/cjs/v6/fees.js.map +1 -0
- package/dist/cjs/v6/fees.test.d.ts +2 -0
- package/dist/cjs/v6/fees.test.d.ts.map +1 -0
- package/dist/cjs/v6/fees.test.js +40 -0
- package/dist/cjs/v6/fees.test.js.map +1 -0
- package/dist/cjs/v6/index.d.ts +16 -0
- package/dist/cjs/v6/index.d.ts.map +1 -0
- package/dist/cjs/v6/index.js +32 -0
- package/dist/cjs/v6/index.js.map +1 -0
- package/dist/cjs/v6/launch.d.ts +2754 -0
- package/dist/cjs/v6/launch.d.ts.map +1 -0
- package/dist/cjs/v6/launch.js +184 -0
- package/dist/cjs/v6/launch.js.map +1 -0
- package/dist/cjs/v6/launch.test.d.ts +2 -0
- package/dist/cjs/v6/launch.test.d.ts.map +1 -0
- package/dist/cjs/v6/launch.test.js +137 -0
- package/dist/cjs/v6/launch.test.js.map +1 -0
- package/dist/cjs/v6/loans.d.ts +176 -0
- package/dist/cjs/v6/loans.d.ts.map +1 -0
- package/dist/cjs/v6/loans.js +177 -0
- package/dist/cjs/v6/loans.js.map +1 -0
- package/dist/cjs/v6/loans.test.d.ts +2 -0
- package/dist/cjs/v6/loans.test.d.ts.map +1 -0
- package/dist/cjs/v6/loans.test.js +129 -0
- package/dist/cjs/v6/loans.test.js.map +1 -0
- package/dist/cjs/v6/omnichain.d.ts +10997 -0
- package/dist/cjs/v6/omnichain.d.ts.map +1 -0
- package/dist/cjs/v6/omnichain.js +120 -0
- package/dist/cjs/v6/omnichain.js.map +1 -0
- package/dist/cjs/v6/omnichain.test.d.ts +2 -0
- package/dist/cjs/v6/omnichain.test.d.ts.map +1 -0
- package/dist/cjs/v6/omnichain.test.js +145 -0
- package/dist/cjs/v6/omnichain.test.js.map +1 -0
- package/dist/cjs/v6/pay.d.ts +110 -0
- package/dist/cjs/v6/pay.d.ts.map +1 -0
- package/dist/cjs/v6/pay.js +111 -0
- package/dist/cjs/v6/pay.js.map +1 -0
- package/dist/cjs/v6/pay.test.d.ts +2 -0
- package/dist/cjs/v6/pay.test.d.ts.map +1 -0
- package/dist/cjs/v6/pay.test.js +130 -0
- package/dist/cjs/v6/pay.test.js.map +1 -0
- package/dist/cjs/v6/permissions.d.ts +128 -0
- package/dist/cjs/v6/permissions.d.ts.map +1 -0
- package/dist/cjs/v6/permissions.js +125 -0
- package/dist/cjs/v6/permissions.js.map +1 -0
- package/dist/cjs/v6/permissions.test.d.ts +2 -0
- package/dist/cjs/v6/permissions.test.d.ts.map +1 -0
- package/dist/cjs/v6/permissions.test.js +117 -0
- package/dist/cjs/v6/permissions.test.js.map +1 -0
- package/dist/cjs/v6/revnets.d.ts +4459 -0
- package/dist/cjs/v6/revnets.d.ts.map +1 -0
- package/dist/cjs/v6/revnets.js +178 -0
- package/dist/cjs/v6/revnets.js.map +1 -0
- package/dist/cjs/v6/revnets.test.d.ts +2 -0
- package/dist/cjs/v6/revnets.test.d.ts.map +1 -0
- package/dist/cjs/v6/revnets.test.js +233 -0
- package/dist/cjs/v6/revnets.test.js.map +1 -0
- package/dist/cjs/v6/rulesets.d.ts +2700 -0
- package/dist/cjs/v6/rulesets.d.ts.map +1 -0
- package/dist/cjs/v6/rulesets.js +76 -0
- package/dist/cjs/v6/rulesets.js.map +1 -0
- package/dist/cjs/v6/rulesets.test.d.ts +2 -0
- package/dist/cjs/v6/rulesets.test.d.ts.map +1 -0
- package/dist/cjs/v6/rulesets.test.js +106 -0
- package/dist/cjs/v6/rulesets.test.js.map +1 -0
- package/dist/cjs/v6/splits.d.ts +2671 -0
- package/dist/cjs/v6/splits.d.ts.map +1 -0
- package/dist/cjs/v6/splits.js +116 -0
- package/dist/cjs/v6/splits.js.map +1 -0
- package/dist/cjs/v6/splits.test.d.ts +2 -0
- package/dist/cjs/v6/splits.test.d.ts.map +1 -0
- package/dist/cjs/v6/splits.test.js +135 -0
- package/dist/cjs/v6/splits.test.js.map +1 -0
- package/dist/cjs/v6/suckers.d.ts +247 -0
- package/dist/cjs/v6/suckers.d.ts.map +1 -0
- package/dist/cjs/v6/suckers.js +163 -0
- package/dist/cjs/v6/suckers.js.map +1 -0
- package/dist/cjs/v6/suckers.test.d.ts +2 -0
- package/dist/cjs/v6/suckers.test.d.ts.map +1 -0
- package/dist/cjs/v6/suckers.test.js +134 -0
- package/dist/cjs/v6/suckers.test.js.map +1 -0
- package/dist/cjs/v6/terminals.d.ts +67 -0
- package/dist/cjs/v6/terminals.d.ts.map +1 -0
- package/dist/cjs/v6/terminals.js +54 -0
- package/dist/cjs/v6/terminals.js.map +1 -0
- package/dist/cjs/v6/terminals.test.d.ts +2 -0
- package/dist/cjs/v6/terminals.test.d.ts.map +1 -0
- package/dist/cjs/v6/terminals.test.js +59 -0
- package/dist/cjs/v6/terminals.test.js.map +1 -0
- package/dist/cjs/v6/tokens.d.ts +194 -0
- package/dist/cjs/v6/tokens.d.ts.map +1 -0
- package/dist/cjs/v6/tokens.js +170 -0
- package/dist/cjs/v6/tokens.js.map +1 -0
- package/dist/cjs/v6/tokens.test.d.ts +2 -0
- package/dist/cjs/v6/tokens.test.d.ts.map +1 -0
- package/dist/cjs/v6/tokens.test.js +141 -0
- package/dist/cjs/v6/tokens.test.js.map +1 -0
- package/dist/cjs/v6/types.d.ts +12 -0
- package/dist/cjs/v6/types.d.ts.map +1 -0
- package/dist/cjs/v6/types.js +15 -0
- package/dist/cjs/v6/types.js.map +1 -0
- package/dist/esm/v6/cashOut.d.ts +88 -0
- package/dist/esm/v6/cashOut.d.ts.map +1 -0
- package/dist/esm/v6/cashOut.js +73 -0
- package/dist/esm/v6/cashOut.js.map +1 -0
- package/dist/esm/v6/cashOut.test.d.ts +2 -0
- package/dist/esm/v6/cashOut.test.d.ts.map +1 -0
- package/dist/esm/v6/cashOut.test.js +100 -0
- package/dist/esm/v6/cashOut.test.js.map +1 -0
- package/dist/esm/v6/currency.d.ts +43 -0
- package/dist/esm/v6/currency.d.ts.map +1 -0
- package/dist/esm/v6/currency.js +44 -0
- package/dist/esm/v6/currency.js.map +1 -0
- package/dist/esm/v6/currency.test.d.ts +2 -0
- package/dist/esm/v6/currency.test.d.ts.map +1 -0
- package/dist/esm/v6/currency.test.js +24 -0
- package/dist/esm/v6/currency.test.js.map +1 -0
- package/dist/esm/v6/fees.d.ts +43 -0
- package/dist/esm/v6/fees.d.ts.map +1 -0
- package/dist/esm/v6/fees.js +51 -0
- package/dist/esm/v6/fees.js.map +1 -0
- package/dist/esm/v6/fees.test.d.ts +2 -0
- package/dist/esm/v6/fees.test.d.ts.map +1 -0
- package/dist/esm/v6/fees.test.js +38 -0
- package/dist/esm/v6/fees.test.js.map +1 -0
- package/dist/esm/v6/index.d.ts +16 -0
- package/dist/esm/v6/index.d.ts.map +1 -0
- package/dist/esm/v6/index.js +16 -0
- package/dist/esm/v6/index.js.map +1 -0
- package/dist/esm/v6/launch.d.ts +2754 -0
- package/dist/esm/v6/launch.d.ts.map +1 -0
- package/dist/esm/v6/launch.js +176 -0
- package/dist/esm/v6/launch.js.map +1 -0
- package/dist/esm/v6/launch.test.d.ts +2 -0
- package/dist/esm/v6/launch.test.d.ts.map +1 -0
- package/dist/esm/v6/launch.test.js +135 -0
- package/dist/esm/v6/launch.test.js.map +1 -0
- package/dist/esm/v6/loans.d.ts +176 -0
- package/dist/esm/v6/loans.d.ts.map +1 -0
- package/dist/esm/v6/loans.js +170 -0
- package/dist/esm/v6/loans.js.map +1 -0
- package/dist/esm/v6/loans.test.d.ts +2 -0
- package/dist/esm/v6/loans.test.d.ts.map +1 -0
- package/dist/esm/v6/loans.test.js +127 -0
- package/dist/esm/v6/loans.test.js.map +1 -0
- package/dist/esm/v6/omnichain.d.ts +10997 -0
- package/dist/esm/v6/omnichain.d.ts.map +1 -0
- package/dist/esm/v6/omnichain.js +116 -0
- package/dist/esm/v6/omnichain.js.map +1 -0
- package/dist/esm/v6/omnichain.test.d.ts +2 -0
- package/dist/esm/v6/omnichain.test.d.ts.map +1 -0
- package/dist/esm/v6/omnichain.test.js +143 -0
- package/dist/esm/v6/omnichain.test.js.map +1 -0
- package/dist/esm/v6/pay.d.ts +110 -0
- package/dist/esm/v6/pay.d.ts.map +1 -0
- package/dist/esm/v6/pay.js +106 -0
- package/dist/esm/v6/pay.js.map +1 -0
- package/dist/esm/v6/pay.test.d.ts +2 -0
- package/dist/esm/v6/pay.test.d.ts.map +1 -0
- package/dist/esm/v6/pay.test.js +128 -0
- package/dist/esm/v6/pay.test.js.map +1 -0
- package/dist/esm/v6/permissions.d.ts +128 -0
- package/dist/esm/v6/permissions.d.ts.map +1 -0
- package/dist/esm/v6/permissions.js +120 -0
- package/dist/esm/v6/permissions.js.map +1 -0
- package/dist/esm/v6/permissions.test.d.ts +2 -0
- package/dist/esm/v6/permissions.test.d.ts.map +1 -0
- package/dist/esm/v6/permissions.test.js +115 -0
- package/dist/esm/v6/permissions.test.js.map +1 -0
- package/dist/esm/v6/revnets.d.ts +4459 -0
- package/dist/esm/v6/revnets.d.ts.map +1 -0
- package/dist/esm/v6/revnets.js +169 -0
- package/dist/esm/v6/revnets.js.map +1 -0
- package/dist/esm/v6/revnets.test.d.ts +2 -0
- package/dist/esm/v6/revnets.test.d.ts.map +1 -0
- package/dist/esm/v6/revnets.test.js +231 -0
- package/dist/esm/v6/revnets.test.js.map +1 -0
- package/dist/esm/v6/rulesets.d.ts +2700 -0
- package/dist/esm/v6/rulesets.d.ts.map +1 -0
- package/dist/esm/v6/rulesets.js +70 -0
- package/dist/esm/v6/rulesets.js.map +1 -0
- package/dist/esm/v6/rulesets.test.d.ts +2 -0
- package/dist/esm/v6/rulesets.test.d.ts.map +1 -0
- package/dist/esm/v6/rulesets.test.js +104 -0
- package/dist/esm/v6/rulesets.test.js.map +1 -0
- package/dist/esm/v6/splits.d.ts +2671 -0
- package/dist/esm/v6/splits.d.ts.map +1 -0
- package/dist/esm/v6/splits.js +109 -0
- package/dist/esm/v6/splits.js.map +1 -0
- package/dist/esm/v6/splits.test.d.ts +2 -0
- package/dist/esm/v6/splits.test.d.ts.map +1 -0
- package/dist/esm/v6/splits.test.js +133 -0
- package/dist/esm/v6/splits.test.js.map +1 -0
- package/dist/esm/v6/suckers.d.ts +247 -0
- package/dist/esm/v6/suckers.d.ts.map +1 -0
- package/dist/esm/v6/suckers.js +156 -0
- package/dist/esm/v6/suckers.js.map +1 -0
- package/dist/esm/v6/suckers.test.d.ts +2 -0
- package/dist/esm/v6/suckers.test.d.ts.map +1 -0
- package/dist/esm/v6/suckers.test.js +132 -0
- package/dist/esm/v6/suckers.test.js.map +1 -0
- package/dist/esm/v6/terminals.d.ts +67 -0
- package/dist/esm/v6/terminals.d.ts.map +1 -0
- package/dist/esm/v6/terminals.js +50 -0
- package/dist/esm/v6/terminals.js.map +1 -0
- package/dist/esm/v6/terminals.test.d.ts +2 -0
- package/dist/esm/v6/terminals.test.d.ts.map +1 -0
- package/dist/esm/v6/terminals.test.js +57 -0
- package/dist/esm/v6/terminals.test.js.map +1 -0
- package/dist/esm/v6/tokens.d.ts +194 -0
- package/dist/esm/v6/tokens.d.ts.map +1 -0
- package/dist/esm/v6/tokens.js +161 -0
- package/dist/esm/v6/tokens.js.map +1 -0
- package/dist/esm/v6/tokens.test.d.ts +2 -0
- package/dist/esm/v6/tokens.test.d.ts.map +1 -0
- package/dist/esm/v6/tokens.test.js +139 -0
- package/dist/esm/v6/tokens.test.js.map +1 -0
- package/dist/esm/v6/types.d.ts +12 -0
- package/dist/esm/v6/types.d.ts.map +1 -0
- package/dist/esm/v6/types.js +12 -0
- package/dist/esm/v6/types.js.map +1 -0
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { Address, Hex, PublicClient } from "viem";
|
|
2
|
+
import { jbControllerAbi } from "../generated/juicebox.js";
|
|
3
|
+
import { JBChainId } from "../types.js";
|
|
4
|
+
/**
|
|
5
|
+
* A prepared `deployERC20For` transaction request.
|
|
6
|
+
*/
|
|
7
|
+
export interface V6DeployErc20TxRequest {
|
|
8
|
+
chainId: JBChainId;
|
|
9
|
+
address: Address;
|
|
10
|
+
abi: typeof jbControllerAbi;
|
|
11
|
+
functionName: "deployERC20For";
|
|
12
|
+
args: readonly [bigint, string, string, Hex];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Build a `JBController.deployERC20For(projectId, name, symbol, salt)` transaction
|
|
16
|
+
* request, deploying a claimable ERC-20 for a project's tokens.
|
|
17
|
+
*
|
|
18
|
+
* Requires the project owner or the DEPLOY_ERC20 permission.
|
|
19
|
+
*
|
|
20
|
+
* @param args.chainId The chain to deploy on.
|
|
21
|
+
* @param args.projectId The project's id.
|
|
22
|
+
* @param args.name The ERC-20's name.
|
|
23
|
+
* @param args.symbol The ERC-20's symbol.
|
|
24
|
+
* @param args.salt A CREATE2 salt. Use the same non-zero salt (from the same deployer)
|
|
25
|
+
* across chains for a same-address omnichain ERC-20. Defaults to zero (non-deterministic
|
|
26
|
+
* address).
|
|
27
|
+
* @returns The transaction request.
|
|
28
|
+
*/
|
|
29
|
+
export declare function buildDeployErc20Tx({ chainId, projectId, name, symbol, salt, }: {
|
|
30
|
+
chainId: JBChainId;
|
|
31
|
+
projectId: bigint;
|
|
32
|
+
name: string;
|
|
33
|
+
symbol: string;
|
|
34
|
+
salt?: Hex;
|
|
35
|
+
}): V6DeployErc20TxRequest;
|
|
36
|
+
/**
|
|
37
|
+
* A prepared `claimTokensFor` transaction request.
|
|
38
|
+
*/
|
|
39
|
+
export interface V6ClaimTokensTxRequest {
|
|
40
|
+
chainId: JBChainId;
|
|
41
|
+
address: Address;
|
|
42
|
+
abi: typeof jbControllerAbi;
|
|
43
|
+
functionName: "claimTokensFor";
|
|
44
|
+
args: readonly [Address, bigint, bigint, Address];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Build a `JBController.claimTokensFor(holder, projectId, tokenCount, beneficiary)`
|
|
48
|
+
* transaction request, claiming a holder's internal token credits as ERC-20 tokens.
|
|
49
|
+
*
|
|
50
|
+
* The project must have an ERC-20 deployed (see {@link buildDeployErc20Tx}). Claiming
|
|
51
|
+
* for another holder requires the CLAIM_TOKENS permission.
|
|
52
|
+
*
|
|
53
|
+
* @param args.chainId The chain to claim on.
|
|
54
|
+
* @param args.holder The address whose credits are being claimed.
|
|
55
|
+
* @param args.projectId The project's id.
|
|
56
|
+
* @param args.tokenCount The number of credits to claim, as a fixed point number with
|
|
57
|
+
* 18 decimals.
|
|
58
|
+
* @param args.beneficiary The address that receives the ERC-20 tokens.
|
|
59
|
+
* @returns The transaction request.
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildClaimTokensTx({ chainId, holder, projectId, tokenCount, beneficiary, }: {
|
|
62
|
+
chainId: JBChainId;
|
|
63
|
+
holder: Address;
|
|
64
|
+
projectId: bigint;
|
|
65
|
+
tokenCount: bigint;
|
|
66
|
+
beneficiary: Address;
|
|
67
|
+
}): V6ClaimTokensTxRequest;
|
|
68
|
+
/**
|
|
69
|
+
* A prepared `transferCreditsFrom` transaction request.
|
|
70
|
+
*/
|
|
71
|
+
export interface V6TransferCreditsTxRequest {
|
|
72
|
+
chainId: JBChainId;
|
|
73
|
+
address: Address;
|
|
74
|
+
abi: typeof jbControllerAbi;
|
|
75
|
+
functionName: "transferCreditsFrom";
|
|
76
|
+
args: readonly [Address, bigint, Address, bigint];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Build a `JBController.transferCreditsFrom(holder, projectId, recipient,
|
|
80
|
+
* creditCount)` transaction request, transferring internal token credits (unclaimed
|
|
81
|
+
* tokens) to another address.
|
|
82
|
+
*
|
|
83
|
+
* Transferring another holder's credits requires the TRANSFER_CREDITS permission.
|
|
84
|
+
*
|
|
85
|
+
* @param args.chainId The chain to transfer on.
|
|
86
|
+
* @param args.holder The address whose credits are being transferred.
|
|
87
|
+
* @param args.projectId The project's id.
|
|
88
|
+
* @param args.recipient The address that receives the credits.
|
|
89
|
+
* @param args.creditCount The number of credits to transfer, as a fixed point number
|
|
90
|
+
* with 18 decimals.
|
|
91
|
+
* @returns The transaction request.
|
|
92
|
+
*/
|
|
93
|
+
export declare function buildTransferCreditsTx({ chainId, holder, projectId, recipient, creditCount, }: {
|
|
94
|
+
chainId: JBChainId;
|
|
95
|
+
holder: Address;
|
|
96
|
+
projectId: bigint;
|
|
97
|
+
recipient: Address;
|
|
98
|
+
creditCount: bigint;
|
|
99
|
+
}): V6TransferCreditsTxRequest;
|
|
100
|
+
/**
|
|
101
|
+
* A prepared `mintTokensOf` transaction request.
|
|
102
|
+
*/
|
|
103
|
+
export interface V6MintTokensTxRequest {
|
|
104
|
+
chainId: JBChainId;
|
|
105
|
+
address: Address;
|
|
106
|
+
abi: typeof jbControllerAbi;
|
|
107
|
+
functionName: "mintTokensOf";
|
|
108
|
+
args: readonly [bigint, bigint, Address, string, boolean];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Build a `JBController.mintTokensOf(projectId, tokenCount, beneficiary, memo,
|
|
112
|
+
* useReservedPercent)` transaction request, minting new project tokens.
|
|
113
|
+
*
|
|
114
|
+
* Only works when the project's ruleset allows owner minting; requires the project
|
|
115
|
+
* owner or the MINT_TOKENS permission.
|
|
116
|
+
*
|
|
117
|
+
* @param args.chainId The chain to mint on.
|
|
118
|
+
* @param args.projectId The project's id.
|
|
119
|
+
* @param args.tokenCount The number of tokens to mint, as a fixed point number with 18
|
|
120
|
+
* decimals.
|
|
121
|
+
* @param args.beneficiary The address that receives the minted tokens.
|
|
122
|
+
* @param args.memo A memo included in the MintTokens event. Defaults to "".
|
|
123
|
+
* @param args.useReservedPercent Whether the ruleset's reserved percent should be
|
|
124
|
+
* withheld from the mint for the project's reserved splits. Defaults to true.
|
|
125
|
+
* @returns The transaction request.
|
|
126
|
+
*/
|
|
127
|
+
export declare function buildMintTokensTx({ chainId, projectId, tokenCount, beneficiary, memo, useReservedPercent, }: {
|
|
128
|
+
chainId: JBChainId;
|
|
129
|
+
projectId: bigint;
|
|
130
|
+
tokenCount: bigint;
|
|
131
|
+
beneficiary: Address;
|
|
132
|
+
memo?: string;
|
|
133
|
+
useReservedPercent?: boolean;
|
|
134
|
+
}): V6MintTokensTxRequest;
|
|
135
|
+
/**
|
|
136
|
+
* A prepared `burnTokensOf` transaction request.
|
|
137
|
+
*/
|
|
138
|
+
export interface V6BurnTokensTxRequest {
|
|
139
|
+
chainId: JBChainId;
|
|
140
|
+
address: Address;
|
|
141
|
+
abi: typeof jbControllerAbi;
|
|
142
|
+
functionName: "burnTokensOf";
|
|
143
|
+
args: readonly [Address, bigint, bigint, string];
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Build a `JBController.burnTokensOf(holder, projectId, tokenCount, memo)` transaction
|
|
147
|
+
* request, burning a holder's project tokens.
|
|
148
|
+
*
|
|
149
|
+
* Burning another holder's tokens requires the BURN_TOKENS permission.
|
|
150
|
+
*
|
|
151
|
+
* @param args.chainId The chain to burn on.
|
|
152
|
+
* @param args.holder The address whose tokens are being burned.
|
|
153
|
+
* @param args.projectId The project's id.
|
|
154
|
+
* @param args.tokenCount The number of tokens to burn, as a fixed point number with 18
|
|
155
|
+
* decimals.
|
|
156
|
+
* @param args.memo A memo included in the BurnTokens event. Defaults to "".
|
|
157
|
+
* @returns The transaction request.
|
|
158
|
+
*/
|
|
159
|
+
export declare function buildBurnTokensTx({ chainId, holder, projectId, tokenCount, memo, }: {
|
|
160
|
+
chainId: JBChainId;
|
|
161
|
+
holder: Address;
|
|
162
|
+
projectId: bigint;
|
|
163
|
+
tokenCount: bigint;
|
|
164
|
+
memo?: string;
|
|
165
|
+
}): V6BurnTokensTxRequest;
|
|
166
|
+
/**
|
|
167
|
+
* Read a project's ERC-20 token address via `JBTokens.tokenOf(projectId)`.
|
|
168
|
+
*
|
|
169
|
+
* @param client A viem public client on the given chain.
|
|
170
|
+
* @param args.chainId The chain to read from.
|
|
171
|
+
* @param args.projectId The project's id.
|
|
172
|
+
* @returns The token address, or null when the project has no ERC-20 deployed (token
|
|
173
|
+
* balances are held as internal credits).
|
|
174
|
+
*/
|
|
175
|
+
export declare function getTokenAddress(client: PublicClient, { chainId, projectId, }: {
|
|
176
|
+
chainId: JBChainId;
|
|
177
|
+
projectId: bigint;
|
|
178
|
+
}): Promise<Address | null>;
|
|
179
|
+
/**
|
|
180
|
+
* Read a holder's internal token credit balance (unclaimed tokens) via
|
|
181
|
+
* `JBTokens.creditBalanceOf(holder, projectId)`.
|
|
182
|
+
*
|
|
183
|
+
* @param client A viem public client on the given chain.
|
|
184
|
+
* @param args.chainId The chain to read from.
|
|
185
|
+
* @param args.projectId The project's id.
|
|
186
|
+
* @param args.holder The holder to read the credit balance of.
|
|
187
|
+
* @returns The holder's credit balance, as a fixed point number with 18 decimals.
|
|
188
|
+
*/
|
|
189
|
+
export declare function getCreditBalance(client: PublicClient, { chainId, projectId, holder, }: {
|
|
190
|
+
chainId: JBChainId;
|
|
191
|
+
projectId: bigint;
|
|
192
|
+
holder: Address;
|
|
193
|
+
}): Promise<bigint>;
|
|
194
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/v6/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildDeployErc20Tx = buildDeployErc20Tx;
|
|
4
|
+
exports.buildClaimTokensTx = buildClaimTokensTx;
|
|
5
|
+
exports.buildTransferCreditsTx = buildTransferCreditsTx;
|
|
6
|
+
exports.buildMintTokensTx = buildMintTokensTx;
|
|
7
|
+
exports.buildBurnTokensTx = buildBurnTokensTx;
|
|
8
|
+
exports.getTokenAddress = getTokenAddress;
|
|
9
|
+
exports.getCreditBalance = getCreditBalance;
|
|
10
|
+
const viem_1 = require("viem");
|
|
11
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
12
|
+
const types_js_1 = require("./types.js");
|
|
13
|
+
/**
|
|
14
|
+
* Build a `JBController.deployERC20For(projectId, name, symbol, salt)` transaction
|
|
15
|
+
* request, deploying a claimable ERC-20 for a project's tokens.
|
|
16
|
+
*
|
|
17
|
+
* Requires the project owner or the DEPLOY_ERC20 permission.
|
|
18
|
+
*
|
|
19
|
+
* @param args.chainId The chain to deploy on.
|
|
20
|
+
* @param args.projectId The project's id.
|
|
21
|
+
* @param args.name The ERC-20's name.
|
|
22
|
+
* @param args.symbol The ERC-20's symbol.
|
|
23
|
+
* @param args.salt A CREATE2 salt. Use the same non-zero salt (from the same deployer)
|
|
24
|
+
* across chains for a same-address omnichain ERC-20. Defaults to zero (non-deterministic
|
|
25
|
+
* address).
|
|
26
|
+
* @returns The transaction request.
|
|
27
|
+
*/
|
|
28
|
+
function buildDeployErc20Tx({ chainId, projectId, name, symbol, salt = viem_1.zeroHash, }) {
|
|
29
|
+
return {
|
|
30
|
+
chainId,
|
|
31
|
+
address: (0, types_js_1.v6Address)("JBController", chainId),
|
|
32
|
+
abi: juicebox_js_1.jbControllerAbi,
|
|
33
|
+
functionName: "deployERC20For",
|
|
34
|
+
args: [projectId, name, symbol, salt],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build a `JBController.claimTokensFor(holder, projectId, tokenCount, beneficiary)`
|
|
39
|
+
* transaction request, claiming a holder's internal token credits as ERC-20 tokens.
|
|
40
|
+
*
|
|
41
|
+
* The project must have an ERC-20 deployed (see {@link buildDeployErc20Tx}). Claiming
|
|
42
|
+
* for another holder requires the CLAIM_TOKENS permission.
|
|
43
|
+
*
|
|
44
|
+
* @param args.chainId The chain to claim on.
|
|
45
|
+
* @param args.holder The address whose credits are being claimed.
|
|
46
|
+
* @param args.projectId The project's id.
|
|
47
|
+
* @param args.tokenCount The number of credits to claim, as a fixed point number with
|
|
48
|
+
* 18 decimals.
|
|
49
|
+
* @param args.beneficiary The address that receives the ERC-20 tokens.
|
|
50
|
+
* @returns The transaction request.
|
|
51
|
+
*/
|
|
52
|
+
function buildClaimTokensTx({ chainId, holder, projectId, tokenCount, beneficiary, }) {
|
|
53
|
+
return {
|
|
54
|
+
chainId,
|
|
55
|
+
address: (0, types_js_1.v6Address)("JBController", chainId),
|
|
56
|
+
abi: juicebox_js_1.jbControllerAbi,
|
|
57
|
+
functionName: "claimTokensFor",
|
|
58
|
+
args: [holder, projectId, tokenCount, beneficiary],
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Build a `JBController.transferCreditsFrom(holder, projectId, recipient,
|
|
63
|
+
* creditCount)` transaction request, transferring internal token credits (unclaimed
|
|
64
|
+
* tokens) to another address.
|
|
65
|
+
*
|
|
66
|
+
* Transferring another holder's credits requires the TRANSFER_CREDITS permission.
|
|
67
|
+
*
|
|
68
|
+
* @param args.chainId The chain to transfer on.
|
|
69
|
+
* @param args.holder The address whose credits are being transferred.
|
|
70
|
+
* @param args.projectId The project's id.
|
|
71
|
+
* @param args.recipient The address that receives the credits.
|
|
72
|
+
* @param args.creditCount The number of credits to transfer, as a fixed point number
|
|
73
|
+
* with 18 decimals.
|
|
74
|
+
* @returns The transaction request.
|
|
75
|
+
*/
|
|
76
|
+
function buildTransferCreditsTx({ chainId, holder, projectId, recipient, creditCount, }) {
|
|
77
|
+
return {
|
|
78
|
+
chainId,
|
|
79
|
+
address: (0, types_js_1.v6Address)("JBController", chainId),
|
|
80
|
+
abi: juicebox_js_1.jbControllerAbi,
|
|
81
|
+
functionName: "transferCreditsFrom",
|
|
82
|
+
args: [holder, projectId, recipient, creditCount],
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Build a `JBController.mintTokensOf(projectId, tokenCount, beneficiary, memo,
|
|
87
|
+
* useReservedPercent)` transaction request, minting new project tokens.
|
|
88
|
+
*
|
|
89
|
+
* Only works when the project's ruleset allows owner minting; requires the project
|
|
90
|
+
* owner or the MINT_TOKENS permission.
|
|
91
|
+
*
|
|
92
|
+
* @param args.chainId The chain to mint on.
|
|
93
|
+
* @param args.projectId The project's id.
|
|
94
|
+
* @param args.tokenCount The number of tokens to mint, as a fixed point number with 18
|
|
95
|
+
* decimals.
|
|
96
|
+
* @param args.beneficiary The address that receives the minted tokens.
|
|
97
|
+
* @param args.memo A memo included in the MintTokens event. Defaults to "".
|
|
98
|
+
* @param args.useReservedPercent Whether the ruleset's reserved percent should be
|
|
99
|
+
* withheld from the mint for the project's reserved splits. Defaults to true.
|
|
100
|
+
* @returns The transaction request.
|
|
101
|
+
*/
|
|
102
|
+
function buildMintTokensTx({ chainId, projectId, tokenCount, beneficiary, memo = "", useReservedPercent = true, }) {
|
|
103
|
+
return {
|
|
104
|
+
chainId,
|
|
105
|
+
address: (0, types_js_1.v6Address)("JBController", chainId),
|
|
106
|
+
abi: juicebox_js_1.jbControllerAbi,
|
|
107
|
+
functionName: "mintTokensOf",
|
|
108
|
+
args: [projectId, tokenCount, beneficiary, memo, useReservedPercent],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Build a `JBController.burnTokensOf(holder, projectId, tokenCount, memo)` transaction
|
|
113
|
+
* request, burning a holder's project tokens.
|
|
114
|
+
*
|
|
115
|
+
* Burning another holder's tokens requires the BURN_TOKENS permission.
|
|
116
|
+
*
|
|
117
|
+
* @param args.chainId The chain to burn on.
|
|
118
|
+
* @param args.holder The address whose tokens are being burned.
|
|
119
|
+
* @param args.projectId The project's id.
|
|
120
|
+
* @param args.tokenCount The number of tokens to burn, as a fixed point number with 18
|
|
121
|
+
* decimals.
|
|
122
|
+
* @param args.memo A memo included in the BurnTokens event. Defaults to "".
|
|
123
|
+
* @returns The transaction request.
|
|
124
|
+
*/
|
|
125
|
+
function buildBurnTokensTx({ chainId, holder, projectId, tokenCount, memo = "", }) {
|
|
126
|
+
return {
|
|
127
|
+
chainId,
|
|
128
|
+
address: (0, types_js_1.v6Address)("JBController", chainId),
|
|
129
|
+
abi: juicebox_js_1.jbControllerAbi,
|
|
130
|
+
functionName: "burnTokensOf",
|
|
131
|
+
args: [holder, projectId, tokenCount, memo],
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Read a project's ERC-20 token address via `JBTokens.tokenOf(projectId)`.
|
|
136
|
+
*
|
|
137
|
+
* @param client A viem public client on the given chain.
|
|
138
|
+
* @param args.chainId The chain to read from.
|
|
139
|
+
* @param args.projectId The project's id.
|
|
140
|
+
* @returns The token address, or null when the project has no ERC-20 deployed (token
|
|
141
|
+
* balances are held as internal credits).
|
|
142
|
+
*/
|
|
143
|
+
async function getTokenAddress(client, { chainId, projectId, }) {
|
|
144
|
+
const token = await client.readContract({
|
|
145
|
+
address: (0, types_js_1.v6Address)("JBTokens", chainId),
|
|
146
|
+
abi: juicebox_js_1.jbTokensAbi,
|
|
147
|
+
functionName: "tokenOf",
|
|
148
|
+
args: [projectId],
|
|
149
|
+
});
|
|
150
|
+
return token === viem_1.zeroAddress ? null : token;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Read a holder's internal token credit balance (unclaimed tokens) via
|
|
154
|
+
* `JBTokens.creditBalanceOf(holder, projectId)`.
|
|
155
|
+
*
|
|
156
|
+
* @param client A viem public client on the given chain.
|
|
157
|
+
* @param args.chainId The chain to read from.
|
|
158
|
+
* @param args.projectId The project's id.
|
|
159
|
+
* @param args.holder The holder to read the credit balance of.
|
|
160
|
+
* @returns The holder's credit balance, as a fixed point number with 18 decimals.
|
|
161
|
+
*/
|
|
162
|
+
async function getCreditBalance(client, { chainId, projectId, holder, }) {
|
|
163
|
+
return client.readContract({
|
|
164
|
+
address: (0, types_js_1.v6Address)("JBTokens", chainId),
|
|
165
|
+
abi: juicebox_js_1.jbTokensAbi,
|
|
166
|
+
functionName: "creditBalanceOf",
|
|
167
|
+
args: [holder, projectId],
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/v6/tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.test.d.ts","sourceRoot":"","sources":["../../../src/v6/tokens.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const viem_1 = require("viem");
|
|
4
|
+
const vitest_1 = require("vitest");
|
|
5
|
+
const constants_js_1 = require("../constants.js");
|
|
6
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
7
|
+
const tokens_js_1 = require("./tokens.js");
|
|
8
|
+
const types_js_1 = require("./types.js");
|
|
9
|
+
const chainId = 11155111;
|
|
10
|
+
const projectId = 3n;
|
|
11
|
+
const holder = "0x1111111111111111111111111111111111111111";
|
|
12
|
+
const beneficiary = "0x2222222222222222222222222222222222222222";
|
|
13
|
+
(0, vitest_1.describe)("tokens", () => {
|
|
14
|
+
(0, vitest_1.test)("buildDeployErc20Tx encodes deployERC20For", () => {
|
|
15
|
+
const tx = (0, tokens_js_1.buildDeployErc20Tx)({
|
|
16
|
+
chainId,
|
|
17
|
+
projectId,
|
|
18
|
+
name: "Token",
|
|
19
|
+
symbol: "TKN",
|
|
20
|
+
});
|
|
21
|
+
(0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
|
|
22
|
+
(0, vitest_1.expect)(tx.functionName).toEqual("deployERC20For");
|
|
23
|
+
(0, vitest_1.expect)(tx.args).toEqual([projectId, "Token", "TKN", viem_1.zeroHash]);
|
|
24
|
+
(0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
|
|
25
|
+
});
|
|
26
|
+
(0, vitest_1.test)("buildDeployErc20Tx passes a custom salt through", () => {
|
|
27
|
+
const salt = `0x${"11".repeat(32)}`;
|
|
28
|
+
const tx = (0, tokens_js_1.buildDeployErc20Tx)({
|
|
29
|
+
chainId,
|
|
30
|
+
projectId,
|
|
31
|
+
name: "Token",
|
|
32
|
+
symbol: "TKN",
|
|
33
|
+
salt,
|
|
34
|
+
});
|
|
35
|
+
(0, vitest_1.expect)(tx.args[3]).toEqual(salt);
|
|
36
|
+
});
|
|
37
|
+
(0, vitest_1.test)("buildClaimTokensTx encodes claimTokensFor", () => {
|
|
38
|
+
const tx = (0, tokens_js_1.buildClaimTokensTx)({
|
|
39
|
+
chainId,
|
|
40
|
+
holder,
|
|
41
|
+
projectId,
|
|
42
|
+
tokenCount: constants_js_1.ONE_ETHER,
|
|
43
|
+
beneficiary,
|
|
44
|
+
});
|
|
45
|
+
(0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
|
|
46
|
+
(0, vitest_1.expect)(tx.functionName).toEqual("claimTokensFor");
|
|
47
|
+
(0, vitest_1.expect)(tx.args).toEqual([holder, projectId, constants_js_1.ONE_ETHER, beneficiary]);
|
|
48
|
+
(0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
|
|
49
|
+
});
|
|
50
|
+
(0, vitest_1.test)("buildTransferCreditsTx encodes transferCreditsFrom", () => {
|
|
51
|
+
const tx = (0, tokens_js_1.buildTransferCreditsTx)({
|
|
52
|
+
chainId,
|
|
53
|
+
holder,
|
|
54
|
+
projectId,
|
|
55
|
+
recipient: beneficiary,
|
|
56
|
+
creditCount: constants_js_1.ONE_ETHER,
|
|
57
|
+
});
|
|
58
|
+
(0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
|
|
59
|
+
(0, vitest_1.expect)(tx.functionName).toEqual("transferCreditsFrom");
|
|
60
|
+
(0, vitest_1.expect)(tx.args).toEqual([holder, projectId, beneficiary, constants_js_1.ONE_ETHER]);
|
|
61
|
+
(0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
|
|
62
|
+
});
|
|
63
|
+
(0, vitest_1.test)("buildMintTokensTx encodes mintTokensOf with defaults", () => {
|
|
64
|
+
const tx = (0, tokens_js_1.buildMintTokensTx)({
|
|
65
|
+
chainId,
|
|
66
|
+
projectId,
|
|
67
|
+
tokenCount: constants_js_1.ONE_ETHER,
|
|
68
|
+
beneficiary,
|
|
69
|
+
});
|
|
70
|
+
(0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
|
|
71
|
+
(0, vitest_1.expect)(tx.functionName).toEqual("mintTokensOf");
|
|
72
|
+
(0, vitest_1.expect)(tx.args).toEqual([projectId, constants_js_1.ONE_ETHER, beneficiary, "", true]);
|
|
73
|
+
(0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
|
|
74
|
+
});
|
|
75
|
+
(0, vitest_1.test)("buildMintTokensTx can skip the reserved percent", () => {
|
|
76
|
+
const tx = (0, tokens_js_1.buildMintTokensTx)({
|
|
77
|
+
chainId,
|
|
78
|
+
projectId,
|
|
79
|
+
tokenCount: constants_js_1.ONE_ETHER,
|
|
80
|
+
beneficiary,
|
|
81
|
+
memo: "gm",
|
|
82
|
+
useReservedPercent: false,
|
|
83
|
+
});
|
|
84
|
+
(0, vitest_1.expect)(tx.args).toEqual([projectId, constants_js_1.ONE_ETHER, beneficiary, "gm", false]);
|
|
85
|
+
});
|
|
86
|
+
(0, vitest_1.test)("buildBurnTokensTx encodes burnTokensOf", () => {
|
|
87
|
+
const tx = (0, tokens_js_1.buildBurnTokensTx)({
|
|
88
|
+
chainId,
|
|
89
|
+
holder,
|
|
90
|
+
projectId,
|
|
91
|
+
tokenCount: constants_js_1.ONE_ETHER,
|
|
92
|
+
});
|
|
93
|
+
(0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
|
|
94
|
+
(0, vitest_1.expect)(tx.functionName).toEqual("burnTokensOf");
|
|
95
|
+
(0, vitest_1.expect)(tx.args).toEqual([holder, projectId, constants_js_1.ONE_ETHER, ""]);
|
|
96
|
+
(0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
|
|
97
|
+
});
|
|
98
|
+
(0, vitest_1.test)("getTokenAddress returns null when no ERC-20 is deployed", async () => {
|
|
99
|
+
const calls = [];
|
|
100
|
+
const client = {
|
|
101
|
+
async readContract(params) {
|
|
102
|
+
calls.push(params);
|
|
103
|
+
return viem_1.zeroAddress;
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
const token = await (0, tokens_js_1.getTokenAddress)(client, { chainId, projectId });
|
|
107
|
+
(0, vitest_1.expect)(token).toBeNull();
|
|
108
|
+
(0, vitest_1.expect)(calls[0].address).toEqual((0, types_js_1.v6Address)("JBTokens", chainId));
|
|
109
|
+
(0, vitest_1.expect)(calls[0].abi).toBe(juicebox_js_1.jbTokensAbi);
|
|
110
|
+
(0, vitest_1.expect)(calls[0].functionName).toEqual("tokenOf");
|
|
111
|
+
(0, vitest_1.expect)(calls[0].args).toEqual([projectId]);
|
|
112
|
+
});
|
|
113
|
+
(0, vitest_1.test)("getTokenAddress returns the deployed ERC-20", async () => {
|
|
114
|
+
const erc20 = "0x3333333333333333333333333333333333333333";
|
|
115
|
+
const client = {
|
|
116
|
+
async readContract() {
|
|
117
|
+
return erc20;
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
(0, vitest_1.expect)(await (0, tokens_js_1.getTokenAddress)(client, { chainId, projectId })).toEqual(erc20);
|
|
121
|
+
});
|
|
122
|
+
(0, vitest_1.test)("getCreditBalance reads creditBalanceOf(holder, projectId)", async () => {
|
|
123
|
+
const calls = [];
|
|
124
|
+
const client = {
|
|
125
|
+
async readContract(params) {
|
|
126
|
+
calls.push(params);
|
|
127
|
+
return 42n;
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
const balance = await (0, tokens_js_1.getCreditBalance)(client, {
|
|
131
|
+
chainId,
|
|
132
|
+
projectId,
|
|
133
|
+
holder,
|
|
134
|
+
});
|
|
135
|
+
(0, vitest_1.expect)(balance).toEqual(42n);
|
|
136
|
+
(0, vitest_1.expect)(calls[0].address).toEqual((0, types_js_1.v6Address)("JBTokens", chainId));
|
|
137
|
+
(0, vitest_1.expect)(calls[0].functionName).toEqual("creditBalanceOf");
|
|
138
|
+
(0, vitest_1.expect)(calls[0].args).toEqual([holder, projectId]);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=tokens.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.test.js","sourceRoot":"","sources":["../../../src/v6/tokens.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Address } from "viem";
|
|
2
|
+
import { jbContractAddress } from "../generated/juicebox.js";
|
|
3
|
+
import { JBChainId } from "../types.js";
|
|
4
|
+
/**
|
|
5
|
+
* The contracts deployed for Juicebox v6.
|
|
6
|
+
*/
|
|
7
|
+
export type V6Contract = keyof (typeof jbContractAddress)["6"];
|
|
8
|
+
/**
|
|
9
|
+
* The address of a v6 contract on a chain.
|
|
10
|
+
*/
|
|
11
|
+
export declare function v6Address(contract: V6Contract, chainId: JBChainId): Address;
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/v6/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAQ3E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.v6Address = v6Address;
|
|
4
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
5
|
+
/**
|
|
6
|
+
* The address of a v6 contract on a chain.
|
|
7
|
+
*/
|
|
8
|
+
function v6Address(contract, chainId) {
|
|
9
|
+
const address = juicebox_js_1.jbContractAddress["6"][contract][String(chainId)];
|
|
10
|
+
if (!address) {
|
|
11
|
+
throw new Error(`No v6 ${String(contract)} deployment on chain ${chainId}`);
|
|
12
|
+
}
|
|
13
|
+
return address;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/v6/types.ts"],"names":[],"mappings":";;AAYA,8BAQC;AAnBD,0DAA6D;AAQ7D;;GAEG;AACH,SAAgB,SAAS,CAAC,QAAoB,EAAE,OAAkB;IAChE,MAAM,OAAO,GAAI,+BAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAA6B,CAC3E,MAAM,CAAC,OAAO,CAAC,CAChB,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { Address, Hex, PublicClient } from "viem";
|
|
2
|
+
import { jbMultiTerminalAbi } from "../generated/juicebox.js";
|
|
3
|
+
import { JBChainId } from "../types.js";
|
|
4
|
+
/**
|
|
5
|
+
* A prepared `cashOutTokensOf` transaction request, accepted as-is by viem's
|
|
6
|
+
* `walletClient.writeContract` and wagmi's `writeContract`.
|
|
7
|
+
*/
|
|
8
|
+
export interface V6CashOutTxRequest {
|
|
9
|
+
chainId: JBChainId;
|
|
10
|
+
address: Address;
|
|
11
|
+
abi: typeof jbMultiTerminalAbi;
|
|
12
|
+
functionName: "cashOutTokensOf";
|
|
13
|
+
args: readonly [Address, bigint, bigint, Address, bigint, Address, Hex];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Build a `cashOutTokensOf(holder, projectId, cashOutCount, tokenToReclaim,
|
|
17
|
+
* minTokensReclaimed, beneficiary, metadata)` transaction request for a v6 terminal.
|
|
18
|
+
*
|
|
19
|
+
* @param args.chainId The chain to cash out on.
|
|
20
|
+
* @param args.terminal The terminal holding the project's `tokenToReclaim` balance.
|
|
21
|
+
* @param args.holder The address whose project tokens are being cashed out.
|
|
22
|
+
* @param args.projectId The project's id.
|
|
23
|
+
* @param args.cashOutCount The number of project tokens to cash out, as a fixed point
|
|
24
|
+
* number with 18 decimals.
|
|
25
|
+
* @param args.tokenToReclaim The terminal token to reclaim from the project's surplus.
|
|
26
|
+
* @param args.minTokensReclaimed The minimum `tokenToReclaim` amount that must be
|
|
27
|
+
* reclaimed, else the transaction reverts. Defaults to 0.
|
|
28
|
+
* @param args.beneficiary The address that receives the reclaimed tokens.
|
|
29
|
+
* @param args.metadata Hook metadata. Defaults to "0x".
|
|
30
|
+
* @returns The transaction request.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildCashOutTx({ chainId, terminal, holder, projectId, cashOutCount, tokenToReclaim, minTokensReclaimed, beneficiary, metadata, }: {
|
|
33
|
+
chainId: JBChainId;
|
|
34
|
+
terminal: Address;
|
|
35
|
+
holder: Address;
|
|
36
|
+
projectId: bigint;
|
|
37
|
+
cashOutCount: bigint;
|
|
38
|
+
tokenToReclaim: Address;
|
|
39
|
+
minTokensReclaimed?: bigint;
|
|
40
|
+
beneficiary: Address;
|
|
41
|
+
metadata?: Hex;
|
|
42
|
+
}): V6CashOutTxRequest;
|
|
43
|
+
/**
|
|
44
|
+
* A cash out quote.
|
|
45
|
+
*/
|
|
46
|
+
export interface CashOutQuote {
|
|
47
|
+
/**
|
|
48
|
+
* The reclaimable surplus for the cash out count, before the protocol fee.
|
|
49
|
+
*/
|
|
50
|
+
reclaimAmount: bigint;
|
|
51
|
+
/**
|
|
52
|
+
* The reclaim amount net of the 2.5% protocol cash out fee.
|
|
53
|
+
*
|
|
54
|
+
* The fee only applies when the ruleset's cash out tax rate is non-zero — for
|
|
55
|
+
* zero-tax rulesets the full {@link CashOutQuote.reclaimAmount} is paid out.
|
|
56
|
+
*/
|
|
57
|
+
reclaimAmountAfterFee: bigint;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Quote the surplus reclaimed by cashing out `cashOutCount` project tokens, via
|
|
61
|
+
* `JBTerminalStore.currentReclaimableSurplusOf(projectId, cashOutCount, [], [],
|
|
62
|
+
* decimals, currency)`. Passing empty terminal/token arrays uses all of the project's
|
|
63
|
+
* terminals and tokens.
|
|
64
|
+
*
|
|
65
|
+
* @param client A viem public client on the given chain.
|
|
66
|
+
* @param args.chainId The chain to quote on.
|
|
67
|
+
* @param args.projectId The project's id.
|
|
68
|
+
* @param args.cashOutCount The number of project tokens to cash out, as a fixed point
|
|
69
|
+
* number with 18 decimals.
|
|
70
|
+
* @param args.decimals The decimals to quote the reclaim amount in. Defaults to 18.
|
|
71
|
+
* @param args.currency The currency to quote the reclaim amount in (an
|
|
72
|
+
* accounting-context currency, `uint32(uint160(token))`). Defaults to the native
|
|
73
|
+
* token's currency (61166).
|
|
74
|
+
* @returns The raw reclaim amount and the amount net of the 2.5% protocol fee.
|
|
75
|
+
*
|
|
76
|
+
* NOTE: the defaults quote in NATIVE terms (decimals 18, token-keyed native
|
|
77
|
+
* currency). For a project whose accounting token is not the native token
|
|
78
|
+
* (e.g. USDC), pass that token's `decimals` and `tokenCurrencyId(token)` to
|
|
79
|
+
* quote in its own terms and avoid a price-feed conversion.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getCashOutQuote(client: PublicClient, { chainId, projectId, cashOutCount, decimals, currency, }: {
|
|
82
|
+
chainId: JBChainId;
|
|
83
|
+
projectId: bigint;
|
|
84
|
+
cashOutCount: bigint;
|
|
85
|
+
decimals?: bigint;
|
|
86
|
+
currency?: bigint;
|
|
87
|
+
}): Promise<CashOutQuote>;
|
|
88
|
+
//# sourceMappingURL=cashOut.d.ts.map
|