@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 @@
|
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../src/v6/launch.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { zeroAddress } from "viem";
|
|
2
|
+
import { NATIVE_TOKEN, NATIVE_TOKEN_DECIMALS } from "../constants.js";
|
|
3
|
+
import { jbControllerAbi, jbProjectsAbi } from "../generated/juicebox.js";
|
|
4
|
+
import { BASE_CURRENCY_ETH, tokenCurrencyId } from "./currency.js";
|
|
5
|
+
import { v6Address } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Read the fee (in wei) that `JBProjects` charges to create a new project.
|
|
8
|
+
*
|
|
9
|
+
* Launch transactions must send EXACTLY this value as `msg.value` or they
|
|
10
|
+
* revert. The fee is dynamic — read it per chain right before launching, and
|
|
11
|
+
* never reuse a value across chains.
|
|
12
|
+
*/
|
|
13
|
+
export async function getProjectCreationFee(client, chainId) {
|
|
14
|
+
return client.readContract({
|
|
15
|
+
address: v6Address("JBProjects", chainId),
|
|
16
|
+
abi: jbProjectsAbi,
|
|
17
|
+
functionName: "creationFee",
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build a `JBAccountingContext` for a token.
|
|
22
|
+
*
|
|
23
|
+
* The context currency is ALWAYS token-keyed: `uint32(uint160(token))`
|
|
24
|
+
* (native token → 61166). This is distinct from a ruleset's `baseCurrency`,
|
|
25
|
+
* which must be a standard currency id (ETH=1, USD=2) — never use a
|
|
26
|
+
* token-keyed currency as a base currency to "skip the price feed".
|
|
27
|
+
*
|
|
28
|
+
* @param token The token address. Defaults to the native token sentinel
|
|
29
|
+
* (`0x…EEEe`).
|
|
30
|
+
* @param decimals The token's decimals. Defaults to 18 for the native token;
|
|
31
|
+
* REQUIRED for any other token (there is no safe default).
|
|
32
|
+
*/
|
|
33
|
+
export function buildAccountingContext(token = NATIVE_TOKEN, decimals) {
|
|
34
|
+
const isNative = token.toLowerCase() === NATIVE_TOKEN.toLowerCase();
|
|
35
|
+
if (decimals === undefined && !isNative) {
|
|
36
|
+
throw new Error(`decimals is required for non-native token ${token} (there is no safe default)`);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
token,
|
|
40
|
+
decimals: decimals ?? NATIVE_TOKEN_DECIMALS,
|
|
41
|
+
currency: tokenCurrencyId(token),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build the standard terminal configurations for a launch:
|
|
46
|
+
*
|
|
47
|
+
* 1. `JBMultiTerminal` accepting the given accounting contexts (the
|
|
48
|
+
* project's treasury), and
|
|
49
|
+
* 2. `JBRouterTerminalRegistry` with EMPTY accounting contexts — registering
|
|
50
|
+
* the router registry makes the project accept ANY token via swap
|
|
51
|
+
* routing. It is skipped on chains where it isn't deployed.
|
|
52
|
+
*
|
|
53
|
+
* @param args.accountingContexts The contexts the multi terminal accepts.
|
|
54
|
+
* Defaults to just the native token context.
|
|
55
|
+
*/
|
|
56
|
+
export function buildTerminalConfigurations(args) {
|
|
57
|
+
const configurations = [
|
|
58
|
+
{
|
|
59
|
+
terminal: v6Address("JBMultiTerminal", args.chainId),
|
|
60
|
+
accountingContextsToAccept: args.accountingContexts ?? [
|
|
61
|
+
buildAccountingContext(),
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
try {
|
|
66
|
+
configurations.push({
|
|
67
|
+
terminal: v6Address("JBRouterTerminalRegistry", args.chainId),
|
|
68
|
+
accountingContextsToAccept: [],
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// No router terminal registry on this chain — the multi terminal alone
|
|
73
|
+
// is a valid configuration.
|
|
74
|
+
}
|
|
75
|
+
return configurations;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Build a `JBRulesetMetadata` with safe defaults (v6 field names ONLY):
|
|
79
|
+
* everything false/zero, `baseCurrency` ETH (1), no data hook.
|
|
80
|
+
*
|
|
81
|
+
* Note `scopeCashOutsToLocalBalances` is the v6 spelling — it replaces the
|
|
82
|
+
* old inverted `useTotalSurplusForCashOuts`, and `false` keeps the v6
|
|
83
|
+
* default behavior of cashing out against total surplus.
|
|
84
|
+
*
|
|
85
|
+
* @param overrides Any metadata fields to override.
|
|
86
|
+
*/
|
|
87
|
+
export function buildRulesetMetadata(overrides) {
|
|
88
|
+
return {
|
|
89
|
+
reservedPercent: 0,
|
|
90
|
+
cashOutTaxRate: 0,
|
|
91
|
+
baseCurrency: BASE_CURRENCY_ETH,
|
|
92
|
+
pausePay: false,
|
|
93
|
+
pauseCreditTransfers: false,
|
|
94
|
+
allowOwnerMinting: false,
|
|
95
|
+
allowSetCustomToken: false,
|
|
96
|
+
allowTerminalMigration: false,
|
|
97
|
+
allowSetTerminals: false,
|
|
98
|
+
allowSetController: false,
|
|
99
|
+
allowAddAccountingContext: false,
|
|
100
|
+
allowAddPriceFeed: false,
|
|
101
|
+
ownerMustSendPayouts: false,
|
|
102
|
+
holdFees: false,
|
|
103
|
+
scopeCashOutsToLocalBalances: false,
|
|
104
|
+
useDataHookForPay: false,
|
|
105
|
+
useDataHookForCashOut: false,
|
|
106
|
+
dataHook: zeroAddress,
|
|
107
|
+
metadata: 0,
|
|
108
|
+
...overrides,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Build a `JBRulesetConfig` with safe defaults: starts as soon as possible,
|
|
113
|
+
* no duration (rules can change any time), no issuance (`weight` 0), no
|
|
114
|
+
* approval hook, default metadata, no splits, and ZERO payouts (an empty
|
|
115
|
+
* `fundAccessLimitGroups` means the project can pay out NOTHING — funds can
|
|
116
|
+
* only leave via cash outs).
|
|
117
|
+
*
|
|
118
|
+
* @param args.mustStartAtOrAfter Earliest start timestamp (uint48). 0 (the
|
|
119
|
+
* default) starts at the deploy block. For omnichain launches pass ONE
|
|
120
|
+
* shared timestamp so every chain's ruleset is byte-identical.
|
|
121
|
+
* @param args.duration Seconds the ruleset is locked for. 0 = no duration.
|
|
122
|
+
* @param args.weight Tokens issued per unit of `baseCurrency` paid, as an
|
|
123
|
+
* 18-decimal fixed point (uint112).
|
|
124
|
+
* @param args.weightCutPercent Issuance cut applied each cycle, out of 1e9.
|
|
125
|
+
* @param args.approvalHook A deadline contract queued rulesets must clear.
|
|
126
|
+
* @param args.metadata Ruleset metadata; see {@link buildRulesetMetadata}.
|
|
127
|
+
* @param args.splitGroups Split groups to set alongside the ruleset.
|
|
128
|
+
* @param args.fundAccessLimitGroups Payout limits / surplus allowances.
|
|
129
|
+
*/
|
|
130
|
+
export function buildRulesetConfiguration(args) {
|
|
131
|
+
return {
|
|
132
|
+
mustStartAtOrAfter: args?.mustStartAtOrAfter ?? 0,
|
|
133
|
+
duration: args?.duration ?? 0,
|
|
134
|
+
weight: args?.weight ?? 0n,
|
|
135
|
+
weightCutPercent: args?.weightCutPercent ?? 0,
|
|
136
|
+
approvalHook: args?.approvalHook ?? zeroAddress,
|
|
137
|
+
metadata: args?.metadata ?? buildRulesetMetadata(),
|
|
138
|
+
splitGroups: args?.splitGroups ?? [],
|
|
139
|
+
fundAccessLimitGroups: args?.fundAccessLimitGroups ?? [],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Build a `JBController.launchProjectFor` transaction request creating a new
|
|
144
|
+
* project on a single chain.
|
|
145
|
+
*
|
|
146
|
+
* The transaction is payable and must send EXACTLY the current project
|
|
147
|
+
* creation fee — read it with {@link getProjectCreationFee} on the same
|
|
148
|
+
* chain right before sending.
|
|
149
|
+
*
|
|
150
|
+
* @param args.owner The address that receives the project NFT (full control).
|
|
151
|
+
* @param args.projectUri An IPFS URI (`ipfs://…`) pointing to the project's
|
|
152
|
+
* metadata.
|
|
153
|
+
* @param args.rulesetConfigurations The project's initial rulesets; see
|
|
154
|
+
* {@link buildRulesetConfiguration}.
|
|
155
|
+
* @param args.terminalConfigurations The project's terminals; see
|
|
156
|
+
* {@link buildTerminalConfigurations}.
|
|
157
|
+
* @param args.memo An optional memo emitted with the launch event.
|
|
158
|
+
* @param args.creationFee The exact fee read from `JBProjects.creationFee()`.
|
|
159
|
+
*/
|
|
160
|
+
export function buildLaunchProjectTx(args) {
|
|
161
|
+
return {
|
|
162
|
+
chainId: args.chainId,
|
|
163
|
+
address: v6Address("JBController", args.chainId),
|
|
164
|
+
abi: jbControllerAbi,
|
|
165
|
+
functionName: "launchProjectFor",
|
|
166
|
+
args: [
|
|
167
|
+
args.owner,
|
|
168
|
+
args.projectUri,
|
|
169
|
+
args.rulesetConfigurations,
|
|
170
|
+
args.terminalConfigurations,
|
|
171
|
+
args.memo ?? "",
|
|
172
|
+
],
|
|
173
|
+
value: args.creationFee,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=launch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/v6/launch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.test.d.ts","sourceRoot":"","sources":["../../../src/v6/launch.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { decodeFunctionData, encodeFunctionData, parseEther, zeroAddress, } from "viem";
|
|
2
|
+
import { sepolia } from "viem/chains";
|
|
3
|
+
import { describe, expect, test } from "vitest";
|
|
4
|
+
import { NATIVE_TOKEN, USDC_ADDRESSES } from "../constants.js";
|
|
5
|
+
import { jbControllerAbi } from "../generated/juicebox.js";
|
|
6
|
+
import { buildAccountingContext, buildLaunchProjectTx, buildRulesetConfiguration, buildRulesetMetadata, buildTerminalConfigurations, getProjectCreationFee, } from "./launch.js";
|
|
7
|
+
import { v6Address } from "./types.js";
|
|
8
|
+
const OWNER = "0x000000000000000000000000000000000000dEaD";
|
|
9
|
+
/** A stub PublicClient that records readContract calls. */
|
|
10
|
+
function stubClient(returnValue, calls = []) {
|
|
11
|
+
const client = {
|
|
12
|
+
readContract: async (params) => {
|
|
13
|
+
calls.push(params);
|
|
14
|
+
return returnValue;
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
return { client, calls };
|
|
18
|
+
}
|
|
19
|
+
describe("buildAccountingContext", () => {
|
|
20
|
+
test("defaults to the native token (61166 currency, 18 decimals)", () => {
|
|
21
|
+
expect(buildAccountingContext()).toEqual({
|
|
22
|
+
token: NATIVE_TOKEN,
|
|
23
|
+
decimals: 18,
|
|
24
|
+
currency: 61166,
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
test("keys the currency off the token address", () => {
|
|
28
|
+
const usdc = USDC_ADDRESSES[sepolia.id];
|
|
29
|
+
const context = buildAccountingContext(usdc, 6);
|
|
30
|
+
expect(context.token).toBe(usdc);
|
|
31
|
+
expect(context.decimals).toBe(6);
|
|
32
|
+
expect(context.currency).toBe(Number(BigInt(usdc) & 0xffffffffn));
|
|
33
|
+
});
|
|
34
|
+
test("requires decimals for non-native tokens", () => {
|
|
35
|
+
expect(() => buildAccountingContext(USDC_ADDRESSES[sepolia.id])).toThrow(/decimals is required/);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe("buildTerminalConfigurations", () => {
|
|
39
|
+
test("pairs the multi terminal with the router registry (empty contexts)", () => {
|
|
40
|
+
const configurations = buildTerminalConfigurations({
|
|
41
|
+
chainId: sepolia.id,
|
|
42
|
+
});
|
|
43
|
+
expect(configurations).toHaveLength(2);
|
|
44
|
+
expect(configurations[0].terminal).toBe(v6Address("JBMultiTerminal", sepolia.id));
|
|
45
|
+
expect(configurations[0].accountingContextsToAccept).toEqual([
|
|
46
|
+
buildAccountingContext(),
|
|
47
|
+
]);
|
|
48
|
+
expect(configurations[1].terminal).toBe(v6Address("JBRouterTerminalRegistry", sepolia.id));
|
|
49
|
+
expect(configurations[1].accountingContextsToAccept).toEqual([]);
|
|
50
|
+
});
|
|
51
|
+
test("accepts explicit accounting contexts", () => {
|
|
52
|
+
const usdcContext = buildAccountingContext(USDC_ADDRESSES[sepolia.id], 6);
|
|
53
|
+
const configurations = buildTerminalConfigurations({
|
|
54
|
+
chainId: sepolia.id,
|
|
55
|
+
accountingContexts: [usdcContext],
|
|
56
|
+
});
|
|
57
|
+
expect(configurations[0].accountingContextsToAccept).toEqual([usdcContext]);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe("buildRulesetMetadata", () => {
|
|
61
|
+
test("uses safe v6 defaults", () => {
|
|
62
|
+
const metadata = buildRulesetMetadata();
|
|
63
|
+
expect(metadata.reservedPercent).toBe(0);
|
|
64
|
+
expect(metadata.cashOutTaxRate).toBe(0);
|
|
65
|
+
expect(metadata.baseCurrency).toBe(1);
|
|
66
|
+
expect(metadata.scopeCashOutsToLocalBalances).toBe(false);
|
|
67
|
+
expect(metadata.dataHook).toBe(zeroAddress);
|
|
68
|
+
expect(metadata.metadata).toBe(0);
|
|
69
|
+
// v6 field name only — the old inverted field must not exist.
|
|
70
|
+
expect("useTotalSurplusForCashOuts" in metadata).toBe(false);
|
|
71
|
+
});
|
|
72
|
+
test("honors overrides", () => {
|
|
73
|
+
const metadata = buildRulesetMetadata({
|
|
74
|
+
reservedPercent: 5000,
|
|
75
|
+
baseCurrency: 2,
|
|
76
|
+
allowOwnerMinting: true,
|
|
77
|
+
});
|
|
78
|
+
expect(metadata.reservedPercent).toBe(5000);
|
|
79
|
+
expect(metadata.baseCurrency).toBe(2);
|
|
80
|
+
expect(metadata.allowOwnerMinting).toBe(true);
|
|
81
|
+
expect(metadata.pausePay).toBe(false);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
describe("buildRulesetConfiguration", () => {
|
|
85
|
+
test("uses safe defaults (zero payouts, no approval hook)", () => {
|
|
86
|
+
const configuration = buildRulesetConfiguration();
|
|
87
|
+
expect(configuration.mustStartAtOrAfter).toBe(0);
|
|
88
|
+
expect(configuration.duration).toBe(0);
|
|
89
|
+
expect(configuration.weight).toBe(0n);
|
|
90
|
+
expect(configuration.weightCutPercent).toBe(0);
|
|
91
|
+
expect(configuration.approvalHook).toBe(zeroAddress);
|
|
92
|
+
expect(configuration.splitGroups).toEqual([]);
|
|
93
|
+
expect(configuration.fundAccessLimitGroups).toEqual([]);
|
|
94
|
+
expect(configuration.metadata).toEqual(buildRulesetMetadata());
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
describe("buildLaunchProjectTx", () => {
|
|
98
|
+
test("encodes against the controller ABI with the creation fee as value", () => {
|
|
99
|
+
const creationFee = parseEther("0.01");
|
|
100
|
+
const request = buildLaunchProjectTx({
|
|
101
|
+
chainId: sepolia.id,
|
|
102
|
+
owner: OWNER,
|
|
103
|
+
projectUri: "ipfs://bafy",
|
|
104
|
+
rulesetConfigurations: [
|
|
105
|
+
buildRulesetConfiguration({ weight: parseEther("1000") }),
|
|
106
|
+
],
|
|
107
|
+
terminalConfigurations: buildTerminalConfigurations({
|
|
108
|
+
chainId: sepolia.id,
|
|
109
|
+
}),
|
|
110
|
+
creationFee,
|
|
111
|
+
});
|
|
112
|
+
expect(request.address).toBe(v6Address("JBController", sepolia.id));
|
|
113
|
+
expect(request.value).toBe(creationFee);
|
|
114
|
+
expect(request.args[4]).toBe(""); // default memo
|
|
115
|
+
const data = encodeFunctionData(request);
|
|
116
|
+
const decoded = decodeFunctionData({ abi: jbControllerAbi, data });
|
|
117
|
+
if (decoded.functionName !== "launchProjectFor") {
|
|
118
|
+
throw new Error("decoded the wrong function");
|
|
119
|
+
}
|
|
120
|
+
expect(decoded.args[0].toLowerCase()).toBe(OWNER.toLowerCase());
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
describe("getProjectCreationFee", () => {
|
|
124
|
+
test("reads JBProjects.creationFee on the requested chain", async () => {
|
|
125
|
+
const { client, calls } = stubClient(parseEther("0.001"));
|
|
126
|
+
const fee = await getProjectCreationFee(client, sepolia.id);
|
|
127
|
+
expect(fee).toBe(parseEther("0.001"));
|
|
128
|
+
expect(calls).toHaveLength(1);
|
|
129
|
+
expect(calls[0]).toMatchObject({
|
|
130
|
+
address: v6Address("JBProjects", sepolia.id),
|
|
131
|
+
functionName: "creationFee",
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
//# sourceMappingURL=launch.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launch.test.js","sourceRoot":"","sources":["../../../src/v6/launch.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { Address, Hex, PublicClient } from "viem";
|
|
2
|
+
import { revLoansAbi } from "../generated/juicebox.js";
|
|
3
|
+
import { JBChainId } from "../types.js";
|
|
4
|
+
/**
|
|
5
|
+
* The denominator for REVLoans fee percents: prepaid fee percents and source fee percents
|
|
6
|
+
* are expressed out of 1000.
|
|
7
|
+
*/
|
|
8
|
+
export declare const LOANS_MAX_FEE = 1000n;
|
|
9
|
+
/**
|
|
10
|
+
* The minimum `prepaidFeePercent` REVLoans accepts when borrowing: 25 of {@link LOANS_MAX_FEE}
|
|
11
|
+
* (2.5%), paid upfront to the source revnet. Prepaying more than the minimum extends the
|
|
12
|
+
* loan's zero-additional-cost duration; after it expires the repayment cost increases
|
|
13
|
+
* linearly until the loan liquidates at 10 years.
|
|
14
|
+
*/
|
|
15
|
+
export declare const MIN_PREPAID_FEE_PERCENT = 25n;
|
|
16
|
+
/**
|
|
17
|
+
* The upfront fee REVLoans routes to the $REV revnet on every borrow: 10 of
|
|
18
|
+
* {@link LOANS_MAX_FEE} (1%), taken in addition to the prepaid fee.
|
|
19
|
+
*/
|
|
20
|
+
export declare const REV_PREPAID_FEE_PERCENT = 10n;
|
|
21
|
+
/**
|
|
22
|
+
* The JBPermissions permission id apps grant to the REVLoans contract before borrowing
|
|
23
|
+
* against a holder's tokens (v6 ROOT permission id 1). REVLoans needs it to manage the
|
|
24
|
+
* holder's collateral tokens on their behalf.
|
|
25
|
+
*/
|
|
26
|
+
export declare const REVLOANS_PERMISSION_ID = 1;
|
|
27
|
+
/**
|
|
28
|
+
* A Permit2 single allowance, passed to `repayLoan` when repaying with an ERC-20 via a
|
|
29
|
+
* signed permit. Pass {@link EMPTY_SINGLE_ALLOWANCE} (the default) when repaying with the
|
|
30
|
+
* native token or a pre-approved ERC-20.
|
|
31
|
+
*/
|
|
32
|
+
export type JBSingleAllowance = {
|
|
33
|
+
sigDeadline: bigint;
|
|
34
|
+
amount: bigint;
|
|
35
|
+
expiration: number;
|
|
36
|
+
nonce: number;
|
|
37
|
+
signature: Hex;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* An empty Permit2 allowance: use when no permit signature is needed (native-token
|
|
41
|
+
* repayments, or ERC-20s already approved to REVLoans).
|
|
42
|
+
*/
|
|
43
|
+
export declare const EMPTY_SINGLE_ALLOWANCE: JBSingleAllowance;
|
|
44
|
+
/**
|
|
45
|
+
* Builds a `borrowFrom` transaction on REVLoans, opening a loan against a holder's revnet
|
|
46
|
+
* tokens.
|
|
47
|
+
*
|
|
48
|
+
* The caller must be the holder or have permission to act on their behalf, and the holder
|
|
49
|
+
* must have granted permission id {@link REVLOANS_PERMISSION_ID} to REVLoans.
|
|
50
|
+
*
|
|
51
|
+
* @param args.chainId The chain to borrow on.
|
|
52
|
+
* @param args.revnetId The revnet to borrow from.
|
|
53
|
+
* @param args.token The terminal token to borrow.
|
|
54
|
+
* @param args.minBorrowAmount The minimum amount to borrow, denominated in `token`.
|
|
55
|
+
* Defaults to 0.
|
|
56
|
+
* @param args.collateralCount The number of revnet tokens to lock as collateral, as a
|
|
57
|
+
* fixed point number with 18 decimals.
|
|
58
|
+
* @param args.beneficiary The address that receives the borrowed funds and the loan NFT.
|
|
59
|
+
* @param args.prepaidFeePercent The fee percent to prepay, out of {@link LOANS_MAX_FEE}.
|
|
60
|
+
* Must be at least {@link MIN_PREPAID_FEE_PERCENT}.
|
|
61
|
+
* @param args.holder The address whose tokens are used as collateral.
|
|
62
|
+
*/
|
|
63
|
+
export declare function buildBorrowTx({ chainId, revnetId, token, minBorrowAmount, collateralCount, beneficiary, prepaidFeePercent, holder, }: {
|
|
64
|
+
chainId: JBChainId;
|
|
65
|
+
revnetId: bigint;
|
|
66
|
+
token: Address;
|
|
67
|
+
minBorrowAmount?: bigint;
|
|
68
|
+
collateralCount: bigint;
|
|
69
|
+
beneficiary: Address;
|
|
70
|
+
prepaidFeePercent: bigint;
|
|
71
|
+
holder: Address;
|
|
72
|
+
}): {
|
|
73
|
+
chainId: JBChainId;
|
|
74
|
+
address: Address;
|
|
75
|
+
abi: typeof revLoansAbi;
|
|
76
|
+
functionName: "borrowFrom";
|
|
77
|
+
args: readonly [bigint, Address, bigint, bigint, Address, bigint, Address];
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Builds a `repayLoan` transaction on REVLoans, paying down a loan and reclaiming
|
|
81
|
+
* collateral.
|
|
82
|
+
*
|
|
83
|
+
* Payable: when the loan's source token is the native token, send the repayment as
|
|
84
|
+
* `value`.
|
|
85
|
+
*
|
|
86
|
+
* @param args.chainId The chain the loan lives on.
|
|
87
|
+
* @param args.loanId The id of the loan being repaid (also the loan NFT's token id).
|
|
88
|
+
* @param args.maxRepayBorrowAmount The maximum amount to repay, denominated in the loan's
|
|
89
|
+
* source token. Excess above what's owed is refunded.
|
|
90
|
+
* @param args.collateralCountToReturn The number of collateral tokens to reclaim, as a
|
|
91
|
+
* fixed point number with 18 decimals.
|
|
92
|
+
* @param args.beneficiary The address that receives the reclaimed collateral (and any new
|
|
93
|
+
* loan NFT for a partial repayment).
|
|
94
|
+
* @param args.allowance A Permit2 allowance for ERC-20 repayments. Defaults to
|
|
95
|
+
* {@link EMPTY_SINGLE_ALLOWANCE}.
|
|
96
|
+
* @param args.value The native-token repayment to send along. Defaults to 0.
|
|
97
|
+
*/
|
|
98
|
+
export declare function buildRepayLoanTx({ chainId, loanId, maxRepayBorrowAmount, collateralCountToReturn, beneficiary, allowance, value, }: {
|
|
99
|
+
chainId: JBChainId;
|
|
100
|
+
loanId: bigint;
|
|
101
|
+
maxRepayBorrowAmount: bigint;
|
|
102
|
+
collateralCountToReturn: bigint;
|
|
103
|
+
beneficiary: Address;
|
|
104
|
+
allowance?: JBSingleAllowance;
|
|
105
|
+
value?: bigint;
|
|
106
|
+
}): {
|
|
107
|
+
chainId: JBChainId;
|
|
108
|
+
address: Address;
|
|
109
|
+
abi: typeof revLoansAbi;
|
|
110
|
+
functionName: "repayLoan";
|
|
111
|
+
args: readonly [bigint, bigint, bigint, Address, JBSingleAllowance];
|
|
112
|
+
value: bigint;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Builds a `reallocateCollateralFromLoan` transaction on REVLoans, moving collateral out
|
|
116
|
+
* of an existing loan and into a new loan (optionally adding more collateral and borrowing
|
|
117
|
+
* more).
|
|
118
|
+
*
|
|
119
|
+
* Note: this internally opens a new loan with the full current borrow capacity, so it is
|
|
120
|
+
* economically equivalent to borrowing.
|
|
121
|
+
*
|
|
122
|
+
* @param args.chainId The chain the loan lives on.
|
|
123
|
+
* @param args.loanId The id of the loan to reallocate collateral from.
|
|
124
|
+
* @param args.collateralCountToTransfer The number of collateral tokens to move from the
|
|
125
|
+
* existing loan into the new one, as a fixed point number with 18 decimals.
|
|
126
|
+
* @param args.token The terminal token to borrow with the new loan.
|
|
127
|
+
* @param args.minBorrowAmount The minimum amount the new loan must borrow, denominated in
|
|
128
|
+
* `token`. Defaults to 0.
|
|
129
|
+
* @param args.collateralCountToAdd The number of additional collateral tokens to add to
|
|
130
|
+
* the new loan, as a fixed point number with 18 decimals.
|
|
131
|
+
* @param args.beneficiary The address that receives the borrowed funds and the new loan
|
|
132
|
+
* NFT.
|
|
133
|
+
* @param args.prepaidFeePercent The fee percent to prepay on the new loan, out of
|
|
134
|
+
* {@link LOANS_MAX_FEE}. Must be at least {@link MIN_PREPAID_FEE_PERCENT}.
|
|
135
|
+
*/
|
|
136
|
+
export declare function buildReallocateCollateralTx({ chainId, loanId, collateralCountToTransfer, token, minBorrowAmount, collateralCountToAdd, beneficiary, prepaidFeePercent, }: {
|
|
137
|
+
chainId: JBChainId;
|
|
138
|
+
loanId: bigint;
|
|
139
|
+
collateralCountToTransfer: bigint;
|
|
140
|
+
token: Address;
|
|
141
|
+
minBorrowAmount?: bigint;
|
|
142
|
+
collateralCountToAdd: bigint;
|
|
143
|
+
beneficiary: Address;
|
|
144
|
+
prepaidFeePercent: bigint;
|
|
145
|
+
}): {
|
|
146
|
+
chainId: JBChainId;
|
|
147
|
+
address: Address;
|
|
148
|
+
abi: typeof revLoansAbi;
|
|
149
|
+
functionName: "reallocateCollateralFromLoan";
|
|
150
|
+
args: readonly [bigint, bigint, Address, bigint, bigint, Address, bigint];
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Reads how much a given collateral count can borrow from a revnet, via
|
|
154
|
+
* `REVLoans.borrowableAmountFrom`.
|
|
155
|
+
*
|
|
156
|
+
* @param client A viem PublicClient connected to `chainId`.
|
|
157
|
+
* @param args.chainId The chain to read on.
|
|
158
|
+
* @param args.revnetId The revnet to borrow from.
|
|
159
|
+
* @param args.collateralCount The number of revnet tokens that would be locked as
|
|
160
|
+
* collateral, as a fixed point number with 18 decimals.
|
|
161
|
+
* @param args.decimals The decimals the returned amounts should be denominated in.
|
|
162
|
+
* @param args.currency The currency the returned amounts should be denominated in.
|
|
163
|
+
* @returns `borrowableNow` (currently borrowable, net of the revnet's cash-out delay) and
|
|
164
|
+
* `borrowableCapacity` (the full capacity the collateral represents).
|
|
165
|
+
*/
|
|
166
|
+
export declare function getBorrowableAmount(client: PublicClient, { chainId, revnetId, collateralCount, decimals, currency, }: {
|
|
167
|
+
chainId: JBChainId;
|
|
168
|
+
revnetId: bigint;
|
|
169
|
+
collateralCount: bigint;
|
|
170
|
+
decimals: bigint;
|
|
171
|
+
currency: bigint;
|
|
172
|
+
}): Promise<{
|
|
173
|
+
borrowableNow: bigint;
|
|
174
|
+
borrowableCapacity: bigint;
|
|
175
|
+
}>;
|
|
176
|
+
//# sourceMappingURL=loans.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loans.d.ts","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":"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"}
|