diff --git a/.env.example b/.env.example index 932c5db..189f9ca 100644 --- a/.env.example +++ b/.env.example @@ -31,7 +31,6 @@ PAYMENT_TOKEN="0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc POSITION_NFT_ADDRESS="0x04afc78d6fec3b122fc1f60276f074e557749df1a77a93416451be72c435120f" # Positions NFT (update per network; defaults to Sepolia guardian) BUYBACK_TOKEN="0x053b40a647cedfca6ca84f542a0fe36736031905a9639a7f19a3c1e66bfd5080" # USDC (Sepolia) TREASURY_ADDRESS="0x041bb7729efa185f2cab327de0a668886302f1d4969e3edf504c4741648f858b" -VELORDS_ADDRESS="0x041bb7729efa185f2cab327de0a668886302f1d4969e3edf504c4741648f858b" # Ekubo infrastructure (override to deploy on custom forks) EKUBO_CORE_ADDRESS="" diff --git a/AGENTS.md b/AGENTS.md index 00a07f5..f36c061 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -13,7 +13,7 @@ Adopt four-space indentation, grouped imports, and snake_case for functions/modu Favor positive and guard-path assertions for any new logic; regressions need reproducing tests. Unit helpers should live with their modules (e.g., TWAMM helpers in `src/utils.cairo`), while end-to-end scenarios stay under `tests/`. Name tests `test__` to keep failure output searchable. For fork tests, annotate with `#[fork("")]` and verify prerequisites such as approvals or oracle mocks. Leverage Foundry fuzzing and storage inspection when defending edge cases like low-issuance mode transitions. When adding new storage variables or getters (e.g., `liquidity_position_id`), ensure corresponding getter tests verify storage consistency after relevant state transitions. ## Commit & Pull Request Guidelines -Follow Conventional Commits (`feat:`, `fix:`, `refactor:`, `docs:`) with subjects under ~70 characters. Squash fixups locally and avoid merge commits in feature branches. PR descriptions should summarize context, cite the `snforge` commands run, link relevant issues, and highlight security-sensitive touchpoints (reentrancy, access control, math safety). Before requesting review, ensure formatting is clean, fork tests are green, and new parameters (e.g., oracle, veLords, position NFT addresses) are wired through constructors and deployment helpers. +Follow Conventional Commits (`feat:`, `fix:`, `refactor:`, `docs:`) with subjects under ~70 characters. Squash fixups locally and avoid merge commits in feature branches. PR descriptions should summarize context, cite the `snforge` commands run, link relevant issues, and highlight security-sensitive touchpoints (reentrancy, access control, math safety). Before requesting review, ensure formatting is clean, fork tests are green, and new parameters (e.g., oracle, position NFT addresses) are wired through constructors and deployment helpers. ## Security & Review Focus Validate oracle-driven low-issuance flows (`enable_low_issuance_mode`, `disable_low_issuance_mode`) with both entry and exit tests. Treat proceeds distribution, TWAMM interactions, and owner-only pathways as audit priorities—justify any departure from existing patterns. Confirm external calls (registries, Ekubo dispatchers, ERC20/ERC721 withdrawals) respect access control and cannot strand tokens. When touching deployment scripts, thread new addresses and ticks end-to-end to prevent misconfigured mainnet operations. diff --git a/README.md b/README.md index f6b7a4a..d9a6d71 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,6 @@ constructor( extension_address: ContractAddress, registry_address: ContractAddress, oracle_address: ContractAddress, - velords_address: ContractAddress, issuance_reduction_price_x128: u256, issuance_reduction_price_duration: u64, issuance_reduction_bips: u128, @@ -61,8 +60,7 @@ constructor( - Mints the distribution ERC20 to a configurable list of recipients and records the remainder for TWAMM execution (`tokens_for_distribution`) - Stores Ekubo dispatchers (core, positions, registry, extension), the associated position NFT - address, oracle access, the veLords revenue recipient, and bootstrap parameters for both the - distribution and buyback legs + address, oracle access, and bootstrap parameters for both the distribution and buyback legs - Defers pool ticks and seed liquidity to owner-only bootstrap calls so deployment-time pricing can be computed off-chain after the contract address is known - Validates and caches issuance throttling configuration: a Q128 price threshold (`issuance_reduction_price_x128`), @@ -102,7 +100,7 @@ The contract follows a strict four-phase deployment sequence: 4. **Recycle Proceeds** – Ongoing operations after distribution starts: - `claim_proceeds()`: Withdraws realized payment token sales from the distribution TWAMM order - - `distribute_proceeds(end_time)`: Splits proceeds 80% to buybacks and 20% to veLords, then creates a new TWAMM buyback order that starts immediately and runs until `end_time` + - `distribute_proceeds(end_time)`: Uses all proceeds to create a new TWAMM buyback order that starts immediately and runs until `end_time` - `claim_and_distribute_buybacks(limit)`: Iterates through matured buyback orders, withdrawing completed buyback tokens and forwarding them to the treasury address ### Buyback Order Configuration @@ -155,13 +153,12 @@ The on-chain interface (`ITicketMaster`) exposes: `get_distribution_end_time`, `get_distribution_initial_tick`, `get_dungeon_ticket_price_x128` - **Issuance telemetry**: `is_low_issuance_mode`, `get_issuance_reduction_price_x128`, `get_issuance_reduction_price_duration`, `get_issuance_reduction_bips` -- **Administrative controls**: `set_treasury_address`, `set_velords_address`, - `set_issuance_reduction_price_x128`, `set_issuance_reduction_price_duration`, - `set_issuance_reduction_bips`, `set_buyback_order_config`, +- **Administrative controls**: `set_treasury_address`, `set_issuance_reduction_price_x128`, + `set_issuance_reduction_price_duration`, `set_issuance_reduction_bips`, `set_buyback_order_config`, `withdraw_erc721`, `withdraw_erc20` - **Deployment helpers**: `get_deployed_at`, `get_payment_token`, `get_buyback_token`, `get_extension_address`, `get_core_dispatcher`, `get_positions_dispatcher`, - `get_registry_dispatcher`, `get_oracle_address`, `get_velords_address`, `get_treasury_address`, + `get_registry_dispatcher`, `get_oracle_address`, `get_treasury_address`, `is_pool_initialized`, `get_deployment_state` ### Time Utilities @@ -239,13 +236,13 @@ scarb fmt ## Security Considerations - **State machine guards**: Prevent re-entry into lifecycle phases out of order through strict `deployment_state` assertions -- **Address validation**: All external addresses (tokens, Ekubo contracts, treasury, veLords) are validated against the zero address during construction +- **Address validation**: All external addresses (tokens, Ekubo contracts, treasury) are validated against the zero address during construction - **Distribution supply protection**: Distribution supply is only minted when the TWAMM order is opened, preventing stranded balances - **Time alignment**: Clamps distribution windows and enforces Ekubo's maximum duration to prevent invalid TWAMM operations - **Issuance throttling safeguards**: Validates the configured oracle price floor, lookback duration, and basis-point reduction before mutating the distribution rate. Ensures reduction bips are less than `BIPS_BASIS` (10000) to prevent arithmetic errors - **Emergency controls**: The owner can use `withdraw_erc20` and `withdraw_erc721` to recover any ERC20 or ERC721 tokens from the contract - **Administrative flexibility**: The owner can adjust `issuance_reduction_price_duration` via `set_issuance_reduction_price_duration` to tune the oracle lookback period without redeployment -- **Revenue distribution**: The 20% veLords revenue share ships with a constructor-provided address that the owner can rotate post-deployment via `set_velords_address`. Treasury address can similarly be updated via `set_treasury_address` +- **Revenue distribution**: All proceeds are used for buybacks, with the resulting tokens sent to the treasury. The treasury address can be updated via `set_treasury_address` - **Registry integration**: Token registration with Ekubo's registry is part of deployment, ensuring the token metadata is discoverable on-chain ## Contributing diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 9dd0948..06b7078 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -170,10 +170,6 @@ PY } resolve_owner_address() { - if [ -n "${OWNER_ADDRESS:-}" ] && [ "${OWNER_ADDRESS}" != "0x0" ]; then - echo "$OWNER_ADDRESS" - return 0 - fi if command -v jq >/dev/null 2>&1 && [ -f "$STARKNET_ACCOUNT" ]; then local candidate candidate=$(jq -r '.deployment.address // .address // empty' "$STARKNET_ACCOUNT" 2>/dev/null || true) @@ -182,13 +178,18 @@ resolve_owner_address() { return 0 fi fi - print_error "Unable to determine OWNER_ADDRESS. Set OWNER_ADDRESS in your environment." + print_error "Unable to determine deployer address from $STARKNET_ACCOUNT" exit 1 } require_env STARKNET_NETWORK STARKNET_RPC STARKNET_ACCOUNT STARKNET_PK TOKEN_NAME TOKEN_SYMBOL TOKEN_SUPPLY PAYMENT_TOKEN BUYBACK_TOKEN TREASURY_ADDRESS -OWNER=$(resolve_owner_address) +DEPLOYER=$(resolve_owner_address) +FINAL_OWNER=${OWNER_ADDRESS:-$DEPLOYER} +print_info "Resolved deployer address: $DEPLOYER" +if [ "$FINAL_OWNER" != "$DEPLOYER" ]; then + print_info "Will transfer ownership to: $FINAL_OWNER" +fi TOKEN_NAME_ENC="bytearray:str:${TOKEN_NAME}" TOKEN_SYMBOL_ENC="bytearray:str:${TOKEN_SYMBOL}" TOTAL_SUPPLY=${TOKEN_SUPPLY} @@ -202,7 +203,6 @@ case "$STARKNET_NETWORK" in EXTENSION_ADDRESS_DEFAULT="0x073ec792c33b52d5f96940c2860d512b3884f2127d25e023eb9d44a678e4b971" REGISTRY_ADDRESS_DEFAULT="0x04484f91f0d2482bad844471ca8dc8e846d3a0211792322e72f21f0f44be63e5" ORACLE_ADDRESS_DEFAULT="0x003ccf3ee24638dd5f1a51ceb783e120695f53893f6fd947cc2dcabb3f86dc65" - VELORDS_ADDRESS_DEFAULT="" ;; mainnet) CORE_ADDRESS_DEFAULT="0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b" @@ -210,7 +210,6 @@ case "$STARKNET_NETWORK" in EXTENSION_ADDRESS_DEFAULT="0x043e4f09c32d13d43a880e85f69f7de93ceda62d6cf2581a582c6db635548fdc" REGISTRY_ADDRESS_DEFAULT="0x064bdb4094881140bc39340146c5fcc5a187a98aec5a53f448ac702e5de5067e" ORACLE_ADDRESS_DEFAULT="0x005e470ff654d834983a46b8f29dfa99963d5044b993cb7b9c92243a69dab38f" - VELORDS_ADDRESS_DEFAULT="0x045c587318c9ebcf2fbe21febf288ee2e3597a21cd48676005a5770a50d433c5" ;; *) print_warn "Unknown network ${STARKNET_NETWORK}. Provide EKUBO_* environment overrides." @@ -219,7 +218,6 @@ case "$STARKNET_NETWORK" in EXTENSION_ADDRESS_DEFAULT="" REGISTRY_ADDRESS_DEFAULT="" ORACLE_ADDRESS_DEFAULT="" - VELORDS_ADDRESS_DEFAULT="" ;; esac @@ -228,7 +226,6 @@ POSITIONS_ADDRESS="${EKUBO_POSITIONS_ADDRESS:-$POSITIONS_ADDRESS_DEFAULT}" EXTENSION_ADDRESS="${EKUBO_TWAMM_EXTENSION_ADDRESS:-$EXTENSION_ADDRESS_DEFAULT}" REGISTRY_ADDRESS="${EKUBO_REGISTRY_ADDRESS:-$REGISTRY_ADDRESS_DEFAULT}" ORACLE_ADDRESS="${EKUBO_ORACLE_ADDRESS:-$ORACLE_ADDRESS_DEFAULT}" -VELORDS_ADDRESS="${EKUBO_VELORDS_ADDRESS:-$VELORDS_ADDRESS_DEFAULT}" if [ -z "${POSITION_NFT_ADDRESS:-}" ]; then POSITION_NFT_ADDRESS="$POSITIONS_ADDRESS" fi @@ -243,30 +240,36 @@ fi ISSUANCE_REDUCTION_PRICE_DURATION=${ISSUANCE_REDUCTION_PRICE_DURATION:-259200} ISSUANCE_REDUCTION_BIPS=${ISSUANCE_REDUCTION_BIPS:-2500} -RECIPIENTS_PARAM=(0) -AMOUNTS_PARAM=(0) +# Parse premint recipients and amounts if provided +PREMINT_RECIPIENTS=() +PREMINT_AMOUNTS=() if [ -n "${RECIPIENTS:-}" ] && [ -n "${AMOUNTS:-}" ]; then IFS=',' read -ra RECIPIENT_ARRAY <<< "${RECIPIENTS}" IFS=',' read -ra AMOUNT_ARRAY <<< "${AMOUNTS}" if [ ${#RECIPIENT_ARRAY[@]} -ne ${#AMOUNT_ARRAY[@]} ]; then - print_error "Recipients and amounts must have matching lengths" + print_error "RECIPIENTS and AMOUNTS must have matching lengths" exit 1 fi - RECIPIENTS_PARAM=("${#RECIPIENT_ARRAY[@]}") for recipient in "${RECIPIENT_ARRAY[@]}"; do recipient_trimmed="${recipient//[[:space:]]/}" if [ -z "$recipient_trimmed" ]; then print_error "Recipient address cannot be empty" exit 1 fi - RECIPIENTS_PARAM+=("$recipient_trimmed") + PREMINT_RECIPIENTS+=("$recipient_trimmed") done - AMOUNTS_PARAM=("${#AMOUNT_ARRAY[@]}") for amt in "${AMOUNT_ARRAY[@]}"; do amt_trimmed="${amt//[[:space:]]/}" - read -r low high < <(to_u256_parts "$amt_trimmed") - AMOUNTS_PARAM+=("$low" "$high") + if [ -z "$amt_trimmed" ]; then + print_error "Amount cannot be empty" + exit 1 + fi + PREMINT_AMOUNTS+=("$amt_trimmed") done + print_info "Premint configuration: ${#PREMINT_RECIPIENTS[@]} recipient(s)" +elif [ -n "${RECIPIENTS:-}" ] || [ -n "${AMOUNTS:-}" ]; then + print_error "Both RECIPIENTS and AMOUNTS must be provided together, or neither" + exit 1 fi DISTRIBUTION_END_TIME=${DISTRIBUTION_END_TIMESTAMP} @@ -287,9 +290,9 @@ if [[ "$INITIAL_PAYMENT_TOKEN_LIQUIDITY" =~ ^0+$ ]] || [[ "$INITIAL_DUNGEON_TICK exit 1 fi -TARGET_CLASS="target/dev/ticket_master_TicketMaster.contract_class.json" +TARGET_CLASS="target/release/ticket_master_TicketMaster.contract_class.json" print_info "Building package" -scarb build +scarb --release build if [ ! -f "$TARGET_CLASS" ]; then print_error "Contract artifact not found at $TARGET_CLASS" exit 1 @@ -312,7 +315,7 @@ fi print_info "Class hash: $CLASS_HASH" CONSTRUCTOR_ARGS=( - "$OWNER" + "$DEPLOYER" "$TOKEN_NAME_ENC" "$TOKEN_SYMBOL_ENC" "$TOTAL_SUPPLY" @@ -325,17 +328,11 @@ CONSTRUCTOR_ARGS=( "$EXTENSION_ADDRESS" "$REGISTRY_ADDRESS" "$ORACLE_ADDRESS" - "$VELORDS_ADDRESS" "$ISSUANCE_PRICE_LOW" "$ISSUANCE_PRICE_HIGH" "$ISSUANCE_REDUCTION_PRICE_DURATION" "$ISSUANCE_REDUCTION_BIPS" "$TREASURY_ADDRESS" -) - -CONSTRUCTOR_ARGS+=("${RECIPIENTS_PARAM[@]}") -CONSTRUCTOR_ARGS+=("${AMOUNTS_PARAM[@]}") -CONSTRUCTOR_ARGS+=( "$DISTRIBUTION_END_TIME" "$BUYBACK_MIN_DELAY" "$BUYBACK_MAX_DELAY" @@ -347,7 +344,8 @@ CONSTRUCTOR_ARGS+=( print_info "Deployment parameters" echo " Network: $STARKNET_NETWORK" echo " RPC: $STARKNET_RPC" -echo " Owner: $OWNER" +echo " Deployer: $DEPLOYER" +echo " Final owner: $FINAL_OWNER" echo " Token: $TOKEN_NAME ($TOKEN_SYMBOL)" echo " Total supply: $TOTAL_SUPPLY" echo " Distribution fee: $DISTRIBUTION_POOL_FEE" @@ -360,7 +358,6 @@ echo " Position NFT: $POSITION_NFT_ADDRESS" echo " Extension: $EXTENSION_ADDRESS" echo " Registry: $REGISTRY_ADDRESS" echo " Oracle: $ORACLE_ADDRESS" -echo " Velords: $VELORDS_ADDRESS" echo " End time: $DISTRIBUTION_END_TIME" echo " Initial pay liq: $INITIAL_PAYMENT_TOKEN_LIQUIDITY" echo " Initial ticket liq: $INITIAL_DUNGEON_TICKET_LIQUIDITY" @@ -476,53 +473,100 @@ cat > "$DEPLOY_FILE" <&1 || true) -APPROVE_EXIT=$? -if [ $APPROVE_EXIT -ne 0 ]; then - print_error "Payment token approval failed" - echo "$APPROVE_OUTPUT" - exit 1 -fi -APPROVE_TX=$(echo "$APPROVE_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') -if [ -n "$APPROVE_TX" ]; then print_tx "$APPROVE_TX"; fi - -print_info "Initializing distribution pool" -INIT_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" init_distribution_pool "$DIST_TICK_MAG" "$DIST_TICK_SIGN" 2>&1 || true) -INIT_EXIT=$? -if [ $INIT_EXIT -ne 0 ]; then - print_error "init_distribution_pool failed" - echo "$INIT_OUTPUT" - exit 1 -fi -INIT_TX=$(echo "$INIT_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') -if [ -n "$INIT_TX" ]; then print_tx "$INIT_TX"; fi - -print_info "Providing initial liquidity" -echo " Payment token (wei): $INITIAL_PAYMENT_TOKEN_LIQUIDITY" -echo " Dungeon token (wei): $INITIAL_DUNGEON_TICKET_LIQUIDITY" -echo " Min liquidity: $INITIAL_MIN_LIQUIDITY" -#starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" provide_initial_liquidity "$INITIAL_PAYMENT_TOKEN_LIQUIDITY" "$INITIAL_DUNGEON_TICKET_LIQUIDITY" "$INITIAL_MIN_LIQUIDITY" -LIQ_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" provide_initial_liquidity "$INITIAL_PAYMENT_TOKEN_LIQUIDITY" "$INITIAL_DUNGEON_TICKET_LIQUIDITY" "$INITIAL_MIN_LIQUIDITY" 2>&1 || true) -LIQ_EXIT=$? -if [ $LIQ_EXIT -ne 0 ]; then - print_error "provide_initial_liquidity failed" - echo "$LIQ_OUTPUT" - exit 1 + +# Call premint_tokens if recipients and amounts were provided +if [ ${#PREMINT_RECIPIENTS[@]} -gt 0 ]; then + print_info "Preminting tokens to ${#PREMINT_RECIPIENTS[@]} recipient(s)" + + # Build the recipients array argument + RECIPIENTS_ARRAY_ARG="${#PREMINT_RECIPIENTS[@]}" + for recipient in "${PREMINT_RECIPIENTS[@]}"; do + RECIPIENTS_ARRAY_ARG="$RECIPIENTS_ARRAY_ARG $recipient" + done + + # Build the amounts array argument (convert each amount to u256) + AMOUNTS_ARRAY_ARG="${#PREMINT_AMOUNTS[@]}" + for amt in "${PREMINT_AMOUNTS[@]}"; do + read -r low high < <(to_u256_parts "$amt") + AMOUNTS_ARRAY_ARG="$AMOUNTS_ARRAY_ARG $low $high" + done + + # Call premint_tokens + PREMINT_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" premint_tokens $RECIPIENTS_ARRAY_ARG $AMOUNTS_ARRAY_ARG) + #PREMINT_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" premint_tokens $RECIPIENTS_ARRAY_ARG $AMOUNTS_ARRAY_ARG 2>&1 || true) + PREMINT_EXIT=$? + if [ $PREMINT_EXIT -ne 0 ]; then + print_error "premint_tokens failed" + echo "$PREMINT_OUTPUT" + exit 1 + fi + PREMINT_TX=$(echo "$PREMINT_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') + if [ -n "$PREMINT_TX" ]; then print_tx "$PREMINT_TX"; fi + print_info "Tokens preminted successfully" fi -LIQ_TX=$(echo "$LIQ_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') -if [ -n "$LIQ_TX" ]; then print_tx "$LIQ_TX"; fi - -print_info "Starting token distribution" -DIST_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" start_token_distribution 2>&1 || true) -DIST_EXIT=$? -if [ $DIST_EXIT -ne 0 ]; then - print_error "start_token_distribution failed" - echo "$DIST_OUTPUT" - exit 1 + +# Transfer ownership to final owner if different from deployer +if [ "$FINAL_OWNER" != "$DEPLOYER" ]; then + print_info "Transferring ownership to $FINAL_OWNER" + TRANSFER_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" transfer_ownership "$FINAL_OWNER" 2>&1 || true) + TRANSFER_EXIT=$? + if [ $TRANSFER_EXIT -ne 0 ]; then + print_error "transfer_ownership failed" + echo "$TRANSFER_OUTPUT" + exit 1 + fi + TRANSFER_TX=$(echo "$TRANSFER_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') + if [ -n "$TRANSFER_TX" ]; then print_tx "$TRANSFER_TX"; fi + print_info "Ownership transferred successfully" fi -DIST_TX=$(echo "$DIST_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') -if [ -n "$DIST_TX" ]; then print_tx "$DIST_TX"; fi + +# print_info "Approving payment token" +# APPROVE_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$PAYMENT_TOKEN" approve "$CONTRACT_ADDRESS" u256:$INITIAL_PAYMENT_TOKEN_LIQUIDITY 2>&1 || true) +# APPROVE_EXIT=$? +# if [ $APPROVE_EXIT -ne 0 ]; then +# print_error "Payment token approval failed" +# echo "$APPROVE_OUTPUT" +# exit 1 +# fi +# APPROVE_TX=$(echo "$APPROVE_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') +# if [ -n "$APPROVE_TX" ]; then print_tx "$APPROVE_TX"; fi + +# print_info "Initializing distribution pool" +# INIT_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" init_distribution_pool "$DIST_TICK_MAG" "$DIST_TICK_SIGN" 2>&1 || true) +# INIT_EXIT=$? +# if [ $INIT_EXIT -ne 0 ]; then +# print_error "init_distribution_pool failed" +# echo "$INIT_OUTPUT" +# exit 1 +# fi +# INIT_TX=$(echo "$INIT_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') +# if [ -n "$INIT_TX" ]; then print_tx "$INIT_TX"; fi + +# print_info "Providing initial liquidity" +# echo " Payment token (wei): $INITIAL_PAYMENT_TOKEN_LIQUIDITY" +# echo " Dungeon token (wei): $INITIAL_DUNGEON_TICKET_LIQUIDITY" +# echo " Min liquidity: $INITIAL_MIN_LIQUIDITY" +# #starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" provide_initial_liquidity "$INITIAL_PAYMENT_TOKEN_LIQUIDITY" "$INITIAL_DUNGEON_TICKET_LIQUIDITY" "$INITIAL_MIN_LIQUIDITY" +# LIQ_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" provide_initial_liquidity "$INITIAL_PAYMENT_TOKEN_LIQUIDITY" "$INITIAL_DUNGEON_TICKET_LIQUIDITY" "$INITIAL_MIN_LIQUIDITY" 2>&1 || true) +# LIQ_EXIT=$? +# if [ $LIQ_EXIT -ne 0 ]; then +# print_error "provide_initial_liquidity failed" +# echo "$LIQ_OUTPUT" +# exit 1 +# fi +# LIQ_TX=$(echo "$LIQ_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') +# if [ -n "$LIQ_TX" ]; then print_tx "$LIQ_TX"; fi + +# print_info "Starting token distribution" +# DIST_OUTPUT=$(starkli invoke --watch --account "$STARKNET_ACCOUNT" --private-key "$STARKNET_PK" --rpc "$STARKNET_RPC" "$CONTRACT_ADDRESS" start_token_distribution 2>&1 || true) +# DIST_EXIT=$? +# if [ $DIST_EXIT -ne 0 ]; then +# print_error "start_token_distribution failed" +# echo "$DIST_OUTPUT" +# exit 1 +# fi +# DIST_TX=$(echo "$DIST_OUTPUT" | grep -oE 'transaction: 0x[0-9a-fA-F]+' | head -1 | awk '{print $2}') +# if [ -n "$DIST_TX" ]; then print_tx "$DIST_TX"; fi print_info "Deployment workflow complete" print_info "Deployment details saved to $DEPLOY_FILE" diff --git a/src/contract.cairo b/src/contract.cairo index 2b312a7..9b72674 100644 --- a/src/contract.cairo +++ b/src/contract.cairo @@ -71,7 +71,6 @@ pub mod TicketMaster { pub deployment_state: u8, // State machine: 0=initial, 1=pool_initialized, 2=liquidity_provided, 3=distribution_started pub tokens_for_distribution: u256, // Tokens to mint for TWAMM distribution pub treasury_address: ContractAddress, - pub velords_address: ContractAddress, pub buyback_order_config: BuybackOrderConfig, } @@ -97,7 +96,6 @@ pub mod TicketMaster { /// @param extension_address The address of the Ekubo extension contract /// @param registry_address The address of the Ekubo registry contract /// @param oracle_address The address of the Ekubo oracle contract - /// @param velords_address The address that receives the veLords proceeds share /// @param position_nft_address The address of the ERC721 contract that minted the distribution /// position token /// @param issuance_reduction_price_x128 The 3-day average price threshold (Q128) that triggers @@ -124,7 +122,6 @@ pub mod TicketMaster { extension_address: ContractAddress, registry_address: ContractAddress, oracle_address: ContractAddress, - velords_address: ContractAddress, issuance_reduction_price_x128: u256, issuance_reduction_price_duration: u64, issuance_reduction_bips: u128, @@ -142,7 +139,6 @@ pub mod TicketMaster { assert(extension_address != zero_address, 'Invalid extension address'); assert(registry_address != zero_address, 'Invalid registry address'); assert(oracle_address != zero_address, 'Invalid oracle address'); - assert(velords_address != zero_address, 'Invalid veLords address'); assert(treasury_address != zero_address, 'Invalid treasury address'); assert(total_supply > 0, 'Invalid total supply'); @@ -172,7 +168,6 @@ pub mod TicketMaster { .registry_dispatcher .write(ITokenRegistryDispatcher { contract_address: registry_address }); self.treasury_address.write(treasury_address); - self.velords_address.write(velords_address); self.oracle_address.write(IOracleDispatcher { contract_address: oracle_address }); assert(issuance_reduction_bips < BIPS_BASIS, Errors::INVALID_REDUCTION_BIPS); self.issuance_reduction_price_x128.write(issuance_reduction_price_x128); @@ -186,7 +181,7 @@ pub mod TicketMaster { _register_token(ref self); // Store tokens remaining for distribution - self.tokens_for_distribution.write(total_supply.into()); + self.tokens_for_distribution.write((total_supply - ERC20_UNIT).into()); } #[abi(embed_v0)] @@ -334,7 +329,7 @@ pub mod TicketMaster { proceeds } - /// @notice Distributes the proceeds from selling tokens to the veLords and buybacks + /// @notice Distributes the proceeds from selling tokens to buybacks /// @dev This function should be called periodically to distribute proceeds /// @dev start time for the order is 0 which will start order immediately /// @param end_time The end time of the order @@ -356,25 +351,15 @@ pub mod TicketMaster { assert(proceeds > 0, 'No proceeds available'); - let amount_to_velords = proceeds / 5; - let amount_to_buybacks = proceeds - amount_to_velords; - - let velords_address = self.velords_address.read(); - // send 20% to veLords - payment_token_dispatcher.transfer(velords_address, amount_to_velords); - - // use the remainder to buy back the reward token via DCA - // start by moving the remaining proceeds to positions contract + // use all proceeds to buy back the reward token via DCA + // start by moving the proceeds to positions contract let positions_dispatcher = self.positions_dispatcher.read(); - payment_token_dispatcher - .transfer(positions_dispatcher.contract_address, amount_to_buybacks); + payment_token_dispatcher.transfer(positions_dispatcher.contract_address, proceeds); let position_token_id = self.position_token_id.read(); let order_key = _get_buyback_order_key(@self, 0, end_time); let sale_rate_increase = positions_dispatcher - .increase_sell_amount( - position_token_id, order_key, amount_to_buybacks.try_into().unwrap(), - ); + .increase_sell_amount(position_token_id, order_key, proceeds.try_into().unwrap()); // Update the rewards distribution rate let previous_sale_rate = self.buyback_rate.read(); @@ -391,7 +376,7 @@ pub mod TicketMaster { self.buyback_order_key_counter.write(order_index + 1); } - /// @notice Claims the proceeds from selling tokens and distributes them to the veLords and + /// @notice Claims the proceeds from buyback orders and sends them to the treasury /// @param limit The maximum number of buyback orders to claim /// @dev If limit is 0, all buyback orders will be claimed /// @return u128 The amount of proceeds claimed @@ -534,16 +519,6 @@ pub mod TicketMaster { self.treasury_address.write(treasury_address); } - /// @notice Updates the veLords distribution recipient address - /// @param velords_address The new veLords recipient address - fn set_velords_address(ref self: ContractState, velords_address: ContractAddress) { - self.ownable.assert_only_owner(); - let zero_address: ContractAddress = 0.try_into().unwrap(); - assert(velords_address != zero_address, Errors::INVALID_RECIPIENT); - - self.velords_address.write(velords_address); - } - /// @notice Withdraws ERC20 tokens from the contract /// @param token_address The address of the ERC20 token /// @param amount The amount of tokens to withdraw @@ -743,12 +718,6 @@ pub mod TicketMaster { _get_treasury_address(self) } - /// @notice Returns the address that receives the veLords share - /// @return ContractAddress The veLords recipient address - fn get_velords_address(self: @ContractState) -> ContractAddress { - _get_velords_address(self) - } - fn get_buyback_order_key_counter(self: @ContractState) -> u128 { _get_buyback_order_key_counter(self) } @@ -1019,11 +988,6 @@ pub mod TicketMaster { self.treasury_address.read() } - #[inline(always)] - fn _get_velords_address(self: @ContractState) -> ContractAddress { - self.velords_address.read() - } - #[inline(always)] fn _get_buyback_order_key_counter(self: @ContractState) -> u128 { self.buyback_order_key_counter.read() diff --git a/src/interfaces.cairo b/src/interfaces.cairo index c05bef6..3369e19 100644 --- a/src/interfaces.cairo +++ b/src/interfaces.cairo @@ -34,7 +34,6 @@ pub trait ITicketMaster { fn set_issuance_reduction_price_duration(ref self: TContractState, duration: u64); fn set_issuance_reduction_bips(ref self: TContractState, bips: u128); fn set_treasury_address(ref self: TContractState, treasury_address: ContractAddress); - fn set_velords_address(ref self: TContractState, velords_address: ContractAddress); fn withdraw_erc20(ref self: TContractState, token_address: ContractAddress, amount: u256); fn withdraw_erc721(ref self: TContractState, token_address: ContractAddress, token_id: u256); fn get_token_distribution_rate(self: @TContractState) -> u128; @@ -63,7 +62,6 @@ pub trait ITicketMaster { fn get_oracle_address(self: @TContractState) -> IOracleDispatcher; fn get_tokens_for_distribution(self: @TContractState) -> u256; fn get_treasury_address(self: @TContractState) -> ContractAddress; - fn get_velords_address(self: @TContractState) -> ContractAddress; fn get_distribution_pool_key_hash(self: @TContractState) -> felt252; fn is_pool_initialized(self: @TContractState) -> bool; fn get_deployment_state(self: @TContractState) -> u8; diff --git a/tests/constants.cairo b/tests/constants.cairo index b74addc..e08d3c4 100644 --- a/tests/constants.cairo +++ b/tests/constants.cairo @@ -80,7 +80,6 @@ pub const EKUBO_ORACLE_SEPOLIA: ContractAddress = .unwrap(); pub const MOCK_TREASURY: ContractAddress = 'treasury'.try_into().unwrap(); -pub const MOCK_VELORDS_ADDRESS: ContractAddress = 'velords'.try_into().unwrap(); pub const MAINNET_TREASURY: ContractAddress = 0x041bb7729efa185f2cab327de0a668886302f1d4969e3edf504c4741648f858b diff --git a/tests/helper.cairo b/tests/helper.cairo index 4fd8192..a4aa9fa 100644 --- a/tests/helper.cairo +++ b/tests/helper.cairo @@ -17,7 +17,6 @@ pub fn setup( extension_address: ContractAddress, registry_address: ContractAddress, oracle_address: ContractAddress, - velords_address: ContractAddress, issuance_reduction_price_x128: u256, issuance_reduction_price_duration: u64, issuance_reduction_bips: u128, @@ -47,7 +46,6 @@ pub fn setup( extension_address, registry_address, oracle_address, - velords_address, issuance_reduction_price_x128, issuance_reduction_price_duration, issuance_reduction_bips, @@ -125,7 +123,6 @@ pub fn ticket_master_calldata_custom( extension_address: ContractAddress, registry_address: ContractAddress, oracle_address: ContractAddress, - velords_address: ContractAddress, issuance_reduction_price_x128: u256, issuance_reduction_price_duration: u64, issuance_reduction_bips: u128, @@ -148,7 +145,6 @@ pub fn ticket_master_calldata_custom( extension_address.serialize(ref calldata); registry_address.serialize(ref calldata); oracle_address.serialize(ref calldata); - velords_address.serialize(ref calldata); issuance_reduction_price_x128.serialize(ref calldata); issuance_reduction_price_duration.serialize(ref calldata); issuance_reduction_bips.serialize(ref calldata); @@ -168,7 +164,6 @@ pub fn ticket_master_calldata( extension_address: ContractAddress, registry_address: ContractAddress, oracle_address: ContractAddress, - velords_address: ContractAddress, issuance_reduction_price_x128: u256, issuance_reduction_price_duration: u64, issuance_reduction_bips: u128, @@ -196,7 +191,6 @@ pub fn ticket_master_calldata( extension_address, registry_address, oracle_address, - velords_address, issuance_reduction_price_x128, issuance_reduction_price_duration, issuance_reduction_bips, diff --git a/tests/test_contract.cairo b/tests/test_contract.cairo index 72dda89..987394d 100644 --- a/tests/test_contract.cairo +++ b/tests/test_contract.cairo @@ -25,7 +25,7 @@ use super::constants::{ MAINNET_POSITION_NFT_ADDRESS, MAINNET_REGISTRY_ADDRESS, MAINNET_TREASURY, MAINNET_TWAMM_EXTENSION_ADDRESS, MOCK_CORE_ADDRESS, MOCK_POSITIONS_ADDRESS, MOCK_POSITION_NFT_ADDRESS, MOCK_REGISTRY_ADDRESS, MOCK_TREASURY, MOCK_TWAMM_EXTENSION_ADDRESS, - MOCK_VELORDS_ADDRESS, PAYMENT_TOKEN_INITIAL_SUPPLY, REWARD_TOKEN_INITIAL_SUPPLY, ZERO_ADDRESS, + PAYMENT_TOKEN_INITIAL_SUPPLY, REWARD_TOKEN_INITIAL_SUPPLY, ZERO_ADDRESS, }; use super::helper::{ declare_class, deploy, mock_ekubo_core, panic_data_to_byte_array, setup, @@ -64,7 +64,6 @@ fn constructor_sets_initial_state() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -97,10 +96,6 @@ fn constructor_sets_initial_state() { "buyback token mismatch", ); assert!(ticket_master_dispatcher.get_treasury_address() == MOCK_TREASURY, "treasury mismatch"); - assert!( - ticket_master_dispatcher.get_velords_address() == MOCK_VELORDS_ADDRESS, - "veLords address mismatch", - ); assert!( ticket_master_dispatcher.get_core_dispatcher().contract_address == MOCK_CORE_ADDRESS, "core dispatcher mismatch", @@ -155,7 +150,9 @@ fn constructor_sets_initial_state() { "registry should receive single token", ); - let expected_tokens_for_distribution = DUNGEON_TICKET_SUPPLY.into() - premint_amount; + let expected_tokens_for_distribution = DUNGEON_TICKET_SUPPLY.into() + - premint_amount + - registry_token_amount; assert!( ticket_master_dispatcher.get_tokens_for_distribution() == expected_tokens_for_distribution, "tokens_for_distribution mismatch. Expected: {}, Actual: {}", @@ -193,7 +190,6 @@ fn premint_tokens_distributes_correctly() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -260,7 +256,6 @@ fn premint_tokens_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -314,7 +309,6 @@ fn premint_tokens_rejects_after_state_transition() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -370,7 +364,6 @@ fn premint_tokens_can_be_called_multiple_times_in_state_0() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -439,7 +432,6 @@ fn burn_reduces_balance_and_total_supply() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -511,7 +503,6 @@ fn burn_from_reduces_balance_and_total_supply() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -593,7 +584,6 @@ fn burn_from_rejects_without_allowance() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -662,7 +652,6 @@ fn fuzz_constructor_valid_configs( MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -712,7 +701,6 @@ fn constructor_rejects_zero_payment_token() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -751,7 +739,6 @@ fn constructor_rejects_zero_reward_token() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -794,7 +781,6 @@ fn constructor_rejects_zero_core_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -837,7 +823,6 @@ fn constructor_rejects_zero_positions_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -880,7 +865,6 @@ fn constructor_rejects_zero_position_nft_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -923,7 +907,6 @@ fn constructor_rejects_zero_extension_address() { ZERO_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -964,7 +947,6 @@ fn constructor_rejects_zero_registry_address() { MOCK_TWAMM_EXTENSION_ADDRESS, ZERO_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1007,7 +989,6 @@ fn constructor_rejects_zero_oracle_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, ZERO_ADDRESS, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1020,49 +1001,6 @@ fn constructor_rejects_zero_oracle_address() { assert_constructor_revert_with_message(deploy_result, 'Invalid oracle address'); } -#[test] -fn constructor_rejects_zero_velords_address() { - start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); - - let erc20_class = declare_class("ERC20Mock"); - let payment_token_address = deploy( - erc20_class, - token_calldata("Payment Token", "PT", PAYMENT_TOKEN_INITIAL_SUPPLY, DEPLOYER_ADDRESS), - ); - let reward_token_address = deploy( - erc20_class, - token_calldata("Reward Token", "RT", REWARD_TOKEN_INITIAL_SUPPLY, DEPLOYER_ADDRESS), - ); - - let ticket_master_class = declare_class("TicketMaster"); - - let calldata = ticket_master_calldata_custom( - DEPLOYER_ADDRESS, - "Beasts Dungeon Ticket", - "BDT", - DUNGEON_TICKET_SUPPLY, - DISTRIBUTION_POOL_FEE_BPS, - payment_token_address, - reward_token_address, - MOCK_CORE_ADDRESS, - MOCK_POSITIONS_ADDRESS, - MOCK_POSITION_NFT_ADDRESS, - MOCK_TWAMM_EXTENSION_ADDRESS, - MOCK_REGISTRY_ADDRESS, - EKUBO_ORACLE_MAINNET, - ZERO_ADDRESS, - ISSUANCE_REDUCTION_PRICE_X128, - ISSUANCE_REDUCTION_PRICE_DURATION, - ISSUANCE_REDUCTION_BIPS, - MOCK_TREASURY, - DISTRIBUTION_END_TIME, - BUYBACK_ORDER_CONFIG, - ); - - let deploy_result = ticket_master_class.deploy(@calldata); - assert_constructor_revert_with_message(deploy_result, 'Invalid veLords address'); -} - #[test] fn constructor_rejects_zero_treasury_address() { start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); @@ -1093,7 +1031,6 @@ fn constructor_rejects_zero_treasury_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1118,7 +1055,6 @@ fn constructor_rejects_mismatched_lengths() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1166,7 +1102,6 @@ fn constructor_rejects_end_before_now() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1223,7 +1158,6 @@ fn constructor_rejects_end_past_max_duration() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1248,7 +1182,6 @@ fn constructor_rejects_zero_recipient() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1275,7 +1208,6 @@ fn constructor_rejects_distribution_exceeding_supply() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1321,7 +1253,6 @@ fn constructor_rejects_zero_total_supply() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1364,7 +1295,6 @@ fn constructor_rejects_reduction_bips_at_limit() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, BIPS_BASIS, // issuance_reduction_bips at limit (should reject) @@ -1407,7 +1337,6 @@ fn constructor_accepts_reduction_bips_boundary() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, BIPS_BASIS - 1, // issuance_reduction_bips at boundary (should accept) @@ -1443,7 +1372,6 @@ fn provide_initial_liquidity_rejects_insufficient_remaining_supply() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1479,7 +1407,6 @@ fn provide_initial_liquidity_rejects_when_tokens_insufficient() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1513,7 +1440,6 @@ fn provide_initial_liquidity_rejects_zero_payment_amount() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1541,7 +1467,6 @@ fn provide_initial_liquidity_rejects_zero_dungeon_amount() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1568,7 +1493,6 @@ fn init_distribution_pool_sets_state() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1597,7 +1521,6 @@ fn init_distribution_pool_wrong_state() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1622,7 +1545,6 @@ fn init_distribution_pool_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1649,7 +1571,6 @@ fn provide_initial_liquidity_happy_path() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1702,7 +1623,6 @@ fn provide_initial_liquidity_wrong_state() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1730,7 +1650,6 @@ fn provide_initial_liquidity_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1765,7 +1684,6 @@ fn provide_initial_liquidity_without_pool_id() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1831,7 +1749,6 @@ fn test_provide_initial_liquidity_consumes_stored_config( MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1907,7 +1824,6 @@ fn test_provide_initial_liquidity_updates_tokens_for_distribution() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1969,7 +1885,6 @@ fn start_token_distribution_wrong_state() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -1991,7 +1906,6 @@ fn start_token_distribution_without_pool() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2020,7 +1934,6 @@ fn start_token_distribution_happy_path() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2072,7 +1985,6 @@ fn get_deployment_state_transitions_correctly() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2139,7 +2051,6 @@ fn init_distribution_pool_cannot_be_called_twice() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2165,7 +2076,6 @@ fn provide_initial_liquidity_requires_state_1() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2195,7 +2105,6 @@ fn provide_initial_liquidity_cannot_be_called_twice() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2242,7 +2151,6 @@ fn start_token_distribution_requires_state_2() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2269,7 +2177,6 @@ fn start_token_distribution_cannot_be_called_twice() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2312,7 +2219,6 @@ fn withdraw_erc721_owner_fork() { MAINNET_TWAMM_EXTENSION_ADDRESS, MAINNET_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2367,7 +2273,6 @@ fn withdraw_erc721_not_owner_fork() { MAINNET_TWAMM_EXTENSION_ADDRESS, MAINNET_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2422,7 +2327,6 @@ fn claim_proceeds_before_pool_initialized() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2445,7 +2349,6 @@ fn claim_proceeds_before_distribution_started() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2469,7 +2372,6 @@ fn claim_proceeds_returns_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2517,7 +2419,6 @@ fn low_issuance_mode_adjusts_distribution_rate() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2613,7 +2514,6 @@ fn enable_low_issuance_mode_rejects_before_distribution_started() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2654,7 +2554,6 @@ fn enable_low_issuance_mode_rejects_when_already_active() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2704,7 +2603,6 @@ fn enable_low_issuance_mode_rejects_when_price_not_below_threshold() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2752,7 +2650,6 @@ fn enable_low_issuance_mode_rejects_when_price_equals_threshold() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2803,7 +2700,6 @@ fn enable_low_issuance_mode_succeeds_when_price_below_threshold() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2859,7 +2755,6 @@ fn disable_low_issuance_mode_rejects_when_not_active() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2904,7 +2799,6 @@ fn disable_low_issuance_mode_rejects_when_price_not_above_threshold() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -2957,7 +2851,6 @@ fn disable_low_issuance_mode_rejects_when_price_equals_threshold() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3015,7 +2908,6 @@ fn disable_low_issuance_mode_rejects_when_no_tickets_available() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3082,7 +2974,6 @@ fn disable_low_issuance_mode_succeeds_when_price_above_threshold() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3158,7 +3049,6 @@ fn force_enable_low_issuance_mode_succeeds_for_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3212,7 +3102,6 @@ fn force_enable_low_issuance_mode_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3260,7 +3149,6 @@ fn force_disable_low_issuance_mode_succeeds_for_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3331,7 +3219,6 @@ fn force_disable_low_issuance_mode_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3392,7 +3279,6 @@ fn set_issuance_reduction_price_duration_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3417,7 +3303,6 @@ fn set_issuance_reduction_price_duration_rejects_zero() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3439,7 +3324,6 @@ fn set_issuance_reduction_price_duration_succeeds() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3473,7 +3357,6 @@ fn set_issuance_reduction_price_x128_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3498,7 +3381,6 @@ fn set_issuance_reduction_price_x128_rejects_zero() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3520,7 +3402,6 @@ fn set_issuance_reduction_price_x128_succeeds() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3553,7 +3434,6 @@ fn set_issuance_reduction_bips_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3578,7 +3458,6 @@ fn set_issuance_reduction_bips_rejects_zero() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3601,7 +3480,6 @@ fn set_issuance_reduction_bips_rejects_exceeds_basis() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3623,7 +3501,6 @@ fn set_issuance_reduction_bips_succeeds() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3641,62 +3518,6 @@ fn set_issuance_reduction_bips_succeeds() { assert_eq!(ticket_master_dispatcher.get_issuance_reduction_bips(), new_bips); } -#[test] -#[should_panic(expected: ('Caller is not the owner',))] -fn set_velords_address_rejects_non_owner() { - start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); - let NON_OWNER_ADDRESS: ContractAddress = 'non_owner'.try_into().unwrap(); - - let (ticket_master_dispatcher, _, _) = setup( - MOCK_CORE_ADDRESS, - MOCK_POSITIONS_ADDRESS, - MOCK_POSITION_NFT_ADDRESS, - MOCK_TWAMM_EXTENSION_ADDRESS, - MOCK_REGISTRY_ADDRESS, - EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, - ISSUANCE_REDUCTION_PRICE_X128, - ISSUANCE_REDUCTION_PRICE_DURATION, - ISSUANCE_REDUCTION_BIPS, - MOCK_TREASURY, - ); - - // Try to set velords address as non-owner - let new_velords_address: ContractAddress = 0x999.try_into().unwrap(); - start_cheat_caller_address(ticket_master_dispatcher.contract_address, NON_OWNER_ADDRESS); - ticket_master_dispatcher.set_velords_address(new_velords_address); - stop_cheat_caller_address(ticket_master_dispatcher.contract_address); -} - -#[test] -fn set_velords_address_succeeds() { - start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); - - let (ticket_master_dispatcher, _, _) = setup( - MOCK_CORE_ADDRESS, - MOCK_POSITIONS_ADDRESS, - MOCK_POSITION_NFT_ADDRESS, - MOCK_TWAMM_EXTENSION_ADDRESS, - MOCK_REGISTRY_ADDRESS, - EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, - ISSUANCE_REDUCTION_PRICE_X128, - ISSUANCE_REDUCTION_PRICE_DURATION, - ISSUANCE_REDUCTION_BIPS, - MOCK_TREASURY, - ); - - // Verify initial velords address - assert_eq!(ticket_master_dispatcher.get_velords_address(), MOCK_VELORDS_ADDRESS); - - // Set new velords address - let new_velords_address: ContractAddress = 0x999.try_into().unwrap(); - ticket_master_dispatcher.set_velords_address(new_velords_address); - - // Verify address was updated - assert_eq!(ticket_master_dispatcher.get_velords_address(), new_velords_address); -} - #[test] #[should_panic(expected: ('Caller is not the owner',))] fn withdraw_erc20_rejects_non_owner() { @@ -3710,7 +3531,6 @@ fn withdraw_erc20_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3734,7 +3554,6 @@ fn withdraw_erc20_succeeds_for_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3781,7 +3600,6 @@ fn withdraw_erc20_can_withdraw_full_balance() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3816,7 +3634,6 @@ fn distribute_proceeds_before_pool_initialized() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3839,7 +3656,6 @@ fn distribute_proceeds_before_distribution_started() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3868,7 +3684,6 @@ fn distribute_proceeds_rejects_expired_end_time() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3916,7 +3731,6 @@ fn distribute_proceeds_rejects_duration_too_short() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -3964,7 +3778,6 @@ fn distribute_proceeds_rejects_duration_too_long() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4012,7 +3825,6 @@ fn distribute_proceeds_rejects_when_no_balance() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4061,7 +3873,6 @@ fn fuzz_buyback_claim_limits( MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4210,7 +4021,6 @@ fn claim_and_distribute_buybacks_claims_limited_matured_orders() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4263,7 +4073,6 @@ fn claim_and_distribute_buybacks_limit_zero_claims_remaining() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4312,7 +4121,6 @@ fn test_claim_and_distribute_buybacks_success_path() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4358,7 +4166,6 @@ fn claim_and_distribute_buybacks_when_all_claimed() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4385,7 +4192,6 @@ fn test_claim_and_distribute_buybacks_without_mature_proceeds() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4418,7 +4224,6 @@ fn set_treasury_address_updates_for_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4447,7 +4252,6 @@ fn set_treasury_address_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4473,7 +4277,6 @@ fn set_treasury_address_no_zero_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4499,7 +4302,6 @@ fn set_issuance_reduction_price_x128_updates_for_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4524,7 +4326,6 @@ fn set_issuance_reduction_price_x128_rejects_zero_price() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4545,7 +4346,6 @@ fn set_issuance_reduction_bips_updates_for_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4570,7 +4370,6 @@ fn set_issuance_reduction_bips_rejects_zero_bips() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4592,7 +4391,6 @@ fn set_issuance_reduction_bips_rejects_bips_above_limit() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4617,7 +4415,6 @@ fn get_token_distribution_rate_returns_zero_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4639,7 +4436,6 @@ fn get_buyback_rate_returns_zero_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4661,7 +4457,6 @@ fn get_distribution_end_time_returns_configured_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4683,7 +4478,6 @@ fn get_pool_id_returns_zero_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4705,7 +4499,6 @@ fn get_position_token_id_returns_zero_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4727,7 +4520,6 @@ fn get_payment_token_returns_configured_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4753,7 +4545,6 @@ fn get_buyback_token_returns_configured_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4779,7 +4570,6 @@ fn get_extension_address_returns_configured_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4801,7 +4591,6 @@ fn get_issuance_reduction_price_x128_returns_configured_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4825,7 +4614,6 @@ fn is_low_issuance_mode_returns_false_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4847,7 +4635,6 @@ fn get_treasury_address_returns_configured_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4858,28 +4645,6 @@ fn get_treasury_address_returns_configured_value() { assert_eq!(treasury, MOCK_TREASURY, "Treasury address should match constructor value"); } -#[test] -fn get_velords_address_returns_configured_value() { - start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); - - let (ticket_master_dispatcher, _, _) = setup( - MOCK_CORE_ADDRESS, - MOCK_POSITIONS_ADDRESS, - MOCK_POSITION_NFT_ADDRESS, - MOCK_TWAMM_EXTENSION_ADDRESS, - MOCK_REGISTRY_ADDRESS, - EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, - ISSUANCE_REDUCTION_PRICE_X128, - ISSUANCE_REDUCTION_PRICE_DURATION, - ISSUANCE_REDUCTION_BIPS, - MOCK_TREASURY, - ); - - let velords = ticket_master_dispatcher.get_velords_address(); - assert_eq!(velords, MOCK_VELORDS_ADDRESS, "VeLords address should match constructor value"); -} - #[test] fn get_position_nft_address_returns_configured_value() { start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); @@ -4891,7 +4656,6 @@ fn get_position_nft_address_returns_configured_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4913,7 +4677,6 @@ fn get_issuance_reduction_bips_returns_configured_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4935,7 +4698,6 @@ fn get_deployment_state_returns_initial_state() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4957,7 +4719,6 @@ fn is_pool_initialized_returns_false_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -4979,7 +4740,6 @@ fn get_buyback_order_key_counter_returns_zero_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5001,7 +4761,6 @@ fn get_buyback_order_key_bookmark_returns_zero_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5023,7 +4782,6 @@ fn get_unclaimed_buyback_orders_count_returns_zero_initially() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5045,7 +4803,6 @@ fn get_distribution_pool_fee_returns_configured_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5069,7 +4826,6 @@ fn get_buyback_order_config_returns_configured_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5095,7 +4851,6 @@ fn get_core_dispatcher_returns_configured_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5117,7 +4872,6 @@ fn get_positions_dispatcher_returns_configured_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5143,7 +4897,6 @@ fn get_registry_dispatcher_returns_configured_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5169,7 +4922,6 @@ fn get_oracle_address_returns_configured_address() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5185,6 +4937,7 @@ fn get_oracle_address_returns_configured_address() { #[test] fn get_tokens_for_distribution_returns_initial_value() { start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); + let registry_token_amount: u256 = 1000000000000000000_u128.into(); let (ticket_master_dispatcher, _, _) = setup( MOCK_CORE_ADDRESS, @@ -5193,7 +4946,6 @@ fn get_tokens_for_distribution_returns_initial_value() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5201,9 +4953,16 @@ fn get_tokens_for_distribution_returns_initial_value() { ); let tokens = ticket_master_dispatcher.get_tokens_for_distribution(); + // Should be total supply (registry token not deducted from tokens_for_distribution) - let expected = DUNGEON_TICKET_SUPPLY.into(); - assert_eq!(tokens, expected, "Tokens for distribution should match"); + let expected = DUNGEON_TICKET_SUPPLY.into() - registry_token_amount; + assert_eq!( + tokens, + expected, + "Tokens for distribution should match. Expected: {}, Actual: {}", + expected, + tokens, + ); } // ================================ @@ -5221,7 +4980,6 @@ fn burn_reduces_total_supply() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5260,7 +5018,6 @@ fn burn_reverts_when_insufficient_balance() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5306,7 +5063,6 @@ fn burn_from_reduces_target_balance() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5377,7 +5133,6 @@ fn burn_from_reverts_without_approval() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5415,7 +5170,6 @@ fn set_issuance_reduction_bips_accepts_bips_at_limit() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5427,52 +5181,6 @@ fn set_issuance_reduction_bips_accepts_bips_at_limit() { assert_eq!(ticket_master_dispatcher.get_issuance_reduction_bips(), BIPS_BASIS); } -#[test] -fn set_velords_address_updates_for_owner() { - start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); - - let (ticket_master_dispatcher, _, _) = setup( - MOCK_CORE_ADDRESS, - MOCK_POSITIONS_ADDRESS, - MOCK_POSITION_NFT_ADDRESS, - MOCK_TWAMM_EXTENSION_ADDRESS, - MOCK_REGISTRY_ADDRESS, - EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, - ISSUANCE_REDUCTION_PRICE_X128, - ISSUANCE_REDUCTION_PRICE_DURATION, - ISSUANCE_REDUCTION_BIPS, - MOCK_TREASURY, - ); - - let new_velords: ContractAddress = 'new_velords'.try_into().unwrap(); - ticket_master_dispatcher.set_velords_address(new_velords); - - assert_eq!(ticket_master_dispatcher.get_velords_address(), new_velords); -} - -#[test] -#[should_panic(expected: 'invalid recipient')] -fn set_velords_address_rejects_zero_address() { - start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); - - let (ticket_master_dispatcher, _, _) = setup( - MOCK_CORE_ADDRESS, - MOCK_POSITIONS_ADDRESS, - MOCK_POSITION_NFT_ADDRESS, - MOCK_TWAMM_EXTENSION_ADDRESS, - MOCK_REGISTRY_ADDRESS, - EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, - ISSUANCE_REDUCTION_PRICE_X128, - ISSUANCE_REDUCTION_PRICE_DURATION, - ISSUANCE_REDUCTION_BIPS, - MOCK_TREASURY, - ); - - ticket_master_dispatcher.set_velords_address(ZERO_ADDRESS); -} - #[test] fn set_buyback_order_config_updates_for_owner() { start_mock_call(MOCK_REGISTRY_ADDRESS, selector!("register_token"), 0); @@ -5484,7 +5192,6 @@ fn set_buyback_order_config_updates_for_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5520,7 +5227,6 @@ fn set_buyback_order_config_rejects_non_owner() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5551,7 +5257,6 @@ fn test_get_distribution_end_time_after_constructor() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5572,7 +5277,6 @@ fn get_distribution_pool_key_respects_token_ordering() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5606,7 +5310,6 @@ fn pause_like_behavior_via_owner_change() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5670,7 +5373,6 @@ fn insufficient_payment_tokens_edge() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5738,7 +5440,6 @@ fn test_start_token_distribution_without_tokens() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5803,7 +5504,6 @@ fn distribution_start_succeeds_with_minimal_tokens_for_distribution() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -5825,8 +5525,11 @@ fn distribution_start_succeeds_with_minimal_tokens_for_distribution() { start_cheat_caller_address(ticket_master_dispatcher.contract_address, DEPLOYER_ADDRESS); let recipient: ContractAddress = 'tiny_recipient'.try_into().unwrap(); let minimal_distribution = 10_000_000_000_000_000_u128; - // Registry token is no longer deducted from tokens_for_distribution - let recipient_amount = total_supply - INITIAL_LIQUIDITY_DUNGEON_TICKETS - minimal_distribution; + // Registry token (ERC20_UNIT) is deducted from tokens_for_distribution + let recipient_amount = total_supply + - INITIAL_LIQUIDITY_DUNGEON_TICKETS + - minimal_distribution + - ERC20_UNIT; ticket_master_dispatcher.premint_tokens(array![recipient], array![recipient_amount.into()]); stop_cheat_caller_address(ticket_master_dispatcher.contract_address); @@ -5897,7 +5600,6 @@ fn simple_mainnet() { MAINNET_TWAMM_EXTENSION_ADDRESS, MAINNET_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -6008,7 +5710,6 @@ fn mainnet_full() { MAINNET_TWAMM_EXTENSION_ADDRESS, MAINNET_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -6090,7 +5791,6 @@ fn test_get_liquidity_position_id_matches_provide_initial_liquidity() { MAINNET_TWAMM_EXTENSION_ADDRESS, MAINNET_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS, @@ -6136,7 +5836,6 @@ fn mock_simple_flow() { MOCK_TWAMM_EXTENSION_ADDRESS, MOCK_REGISTRY_ADDRESS, EKUBO_ORACLE_MAINNET, - MOCK_VELORDS_ADDRESS, ISSUANCE_REDUCTION_PRICE_X128, ISSUANCE_REDUCTION_PRICE_DURATION, ISSUANCE_REDUCTION_BIPS,