const rulesetConfig = {
mustStartAtOrAfter: 0,
duration: 0, // Infinite ruleset
weight: 1_000_000_000_000_000_000_000_000, // 1M tokens per ETH
weightCutPercent: 0,
approvalHook: ethers.ZeroAddress,
metadata: {
reservedPercent: 5_000, // 50%
cashOutTaxRate: 0,
baseCurrency: 1, // ETH
pausePay: false,
pauseCreditTransfers: false,
allowOwnerMinting: false,
allowTerminalMigration: false,
allowSetTerminals: false,
allowSetController: false,
allowAddAccountingContext: false,
allowAddPriceFeed: false,
ownerMustSendPayouts: false,
holdFees: false,
useTotalSurplusForCashOuts: false,
useDataHookForPay: false,
useDataHookForCashOut: false,
dataHook: ethers.ZeroAddress,
metadata: 0
},
splitGroups: [
{
groupId: 1, // Payouts
splits: [
{
preferAddToBalance: false,
percent: 500_000_000, // 50%
projectId: 0,
beneficiary: "0x...",
lockedUntil: 0,
hook: ethers.ZeroAddress
}
]
}
],
fundAccessLimitGroups: [
{
terminal: JBMultiTerminal.address,
token: ethers.ZeroAddress, // Native token
payoutLimits: [
{ amount: ethers.parseEther("10"), currency: 1 }
],
surplusAllowances: []
}
]
};
const terminalConfig = {
terminal: JBMultiTerminal.address,
accountingContextsToAccept: [
{
token: ethers.ZeroAddress, // ETH
decimals: 18,
currency: 61166 // Native token currency
}
]
};