import { stablecoinVaultConstants } from "./constants"; // Morpho Blue USDC Approve Policy Configuration export const morphoBlueUSDCApprovePolicy = { id: "morpho_blue_usdc_approve", description: "Policy for approving USDC for Morpho Blue vault operations", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: stablecoinVaultConstants.ETHEREUM_DERIVATION_PATH, chain_environment: "EVM", restrictions: [ { method: "approve", contract_id: stablecoinVaultConstants.USDC_ADDRESS, schema: [ { path: "$.spender", type: "String", eq: stablecoinVaultConstants.MORPHO_BLUE_VAULT_ADDRESS, }, { path: "$.amount", type: "BigInt", lte: stablecoinVaultConstants.MAX_USDC_AMOUNT, }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.erc20Abi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Morpho Blue USDC Deposit Policy Configuration export const morphoBlueUSDCDepositPolicy = { id: "morpho_blue_usdc_deposit", description: "Policy for depositing USDC to Morpho Blue vault", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: stablecoinVaultConstants.ETHEREUM_DERIVATION_PATH, chain_environment: "EVM", restrictions: [ { method: "deposit", contract_id: stablecoinVaultConstants.USDC_ADDRESS, schema: [ { path: "$.assets", type: "BigInt", }, { path: "$.receiver", type: "String", eq: "0xc84E9a87A1aDBa546b7C739aBf2f8629065ae251", }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.vaultAbi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Morpho Blue USDC Redeem Policy Configuration export const morphoBlueUSDCRedeemPolicy = { id: "morpho_blue_usdc_redeem", description: "Policy for redeeming USDC from Morpho Blue vault", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: stablecoinVaultConstants.ETHEREUM_DERIVATION_PATH, chain_environment: "EVM", restrictions: [ { method: "redeem", contract_id: stablecoinVaultConstants.USDC_ADDRESS, schema: [ { path: "$.shares", type: "BigInt", }, { path: "$.receiver", type: "String", eq: "0xc84E9a87A1aDBa546b7C739aBf2f8629065ae251", }, { path: "$.owner", type: "String", eq: "0xc84E9a87A1aDBa546b7C739aBf2f8629065ae251", }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.vaultAbi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Euler Prime USDC Approve Policy Configuration export const eulerPrimeUSDCApprovePolicy = { id: "euler_prime_usdc_approve", description: "Policy for approving USDC for Euler Prime vault operations", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: stablecoinVaultConstants.ETHEREUM_DERIVATION_PATH, chain_environment: "EVM", restrictions: [ { method: "approve", contract_id: stablecoinVaultConstants.USDC_ADDRESS, schema: [ { path: "$.spender", type: "String", eq: stablecoinVaultConstants.EULER_PRIME_VAULT_ADDRESS, }, { path: "$.amount", type: "BigInt", lte: stablecoinVaultConstants.MAX_USDC_AMOUNT, }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.erc20Abi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Euler Prime USDC Deposit Policy Configuration export const eulerPrimeUSDCDepositPolicy = { id: "euler_prime_usdc_deposit", description: "Policy for depositing USDC to Euler Prime vault", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: stablecoinVaultConstants.ETHEREUM_DERIVATION_PATH, chain_environment: "EVM", restrictions: [ { method: "deposit", contract_id: stablecoinVaultConstants.EULER_PRIME_VAULT_ADDRESS, schema: [ { path: "$.assets", type: "BigInt", }, { path: "$.receiver", type: "String", eq: "0x64aff91dc6f7be29c46cbc35be24a18b5b2e92e6", }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.vaultAbi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Euler Prime USDC Redeem Policy Configuration export const eulerPrimeUSDCRedeemPolicy = { id: "euler_prime_usdc_redeem", description: "Policy for redeeming USDC from Euler Prime vault", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: stablecoinVaultConstants.ETHEREUM_DERIVATION_PATH, chain_environment: "EVM", restrictions: [ { method: "redeem", contract_id: stablecoinVaultConstants.EULER_PRIME_VAULT_ADDRESS, schema: [ { path: "$.shares", type: "BigInt", }, { path: "$.receiver", type: "String", eq: stablecoinVaultConstants.ETHEREUM_CHAINSIG_DERIVED_ADDRESS, }, { path: "$.owner", type: "String", eq: stablecoinVaultConstants.ETHEREUM_CHAINSIG_DERIVED_ADDRESS, }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.vaultAbi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Euler ARB USDC Approve Policy Configuration export const eulerARBUSDCApprovePolicy = { id: "euler_arb_usdc_approve", description: "Policy for approving USDC for Euler vault operations on Arbitrum", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: "arbitrum,1", chain_environment: "EVM", restrictions: [ { method: "approve", contract_id: stablecoinVaultConstants.USDC_ARB_ADDRESS, schema: [ { path: "$.spender", type: "String", eq: stablecoinVaultConstants.EULER_VAULT_ARBITRUM_ADDRESS, }, { path: "$.amount", type: "BigInt", }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.erc20Abi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Euler ARB USDC Deposit Policy Configuration export const eulerARBUSDCDepositPolicy = { id: "euler_arb_usdc_deposit", description: "Policy for depositing USDC to Euler vault on Arbitrum", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: "arbitrum,1", chain_environment: "EVM", restrictions: [ { method: "deposit", contract_id: stablecoinVaultConstants.EULER_VAULT_ARBITRUM_ADDRESS, schema: [ { path: "$.assets", type: "BigInt", }, { path: "$.receiver", type: "String", eq: stablecoinVaultConstants.ARBITRUM_CHAINSIG_DERIVED_ADDRESS, }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.vaultAbi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Euler ARB USDC Redeem Policy Configuration export const eulerARBUSDCRedeemPolicy = { id: "euler_arb_usdc_redeem", description: "Policy for redeeming USDC from Euler vault on Arbitrum", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: "arbitrum,1", chain_environment: "EVM", restrictions: [ { method: "redeem", contract_id: stablecoinVaultConstants.EULER_VAULT_ARBITRUM_ADDRESS, schema: [ { path: "$.shares", type: "BigInt", }, { path: "$.receiver", type: "String", eq: stablecoinVaultConstants.ARBITRUM_CHAINSIG_DERIVED_ADDRESS, }, { path: "$.owner", type: "String", eq: stablecoinVaultConstants.ARBITRUM_CHAINSIG_DERIVED_ADDRESS, }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.vaultAbi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // NEAR Intents Message Signing Policy Configuration export const nearIntentsMessagePolicy = { id: "sign_near_intents_message", description: "Policy for signing NEAR Intents swap messages using chain signatures - requires strategist role", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigMessage", activation_time: "0", policy_details: { ChainSigMessage: { derivation_path: "near_intents,1", sign_method: "NearIntentsSwap", }, }, proposal_expiry_time_nanosec: "86400000000000", }; // NEAR Native mt_transfer Policy Configuration export const nearNativeMtTransferPolicy = { id: "near_native_mt_transfer", description: "Policy for NEAR native multi-token transfers - allows transferring tokens on NEAR protocol", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "NearNativeTransaction", activation_time: "0", policy_details: { NearNativeTransaction: { restrictions: [ { method: "mt_transfer", contract_id: "intents.near", // Allow any multi-token contract schema: [ { path: "$.receiver_id", type: "String", eq: stablecoinVaultConstants.NEAR_CHAINSIG_DERIVED_ACCOUNT, }, { path: "$.token_id", type: "String", }, { path: "$.amount", type: "BigInt", }, { path: "$.memo", type: "String", optional: true, }, ], interface: "", }, ], chain_environment: "NearWasm", }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Morpho Blue ARB USDC Approve Policy Configuration export const morphoBlueARBUSDCApprovePolicy = { id: "morpho_blue_arb_usdc_approve", description: "Policy for approving USDC for Morpho Blue vault operations on Arbitrum", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: "arbitrum,1", chain_environment: "EVM", restrictions: [ { method: "approve", contract_id: stablecoinVaultConstants.USDC_ARB_ADDRESS, schema: [ { path: "$.spender", type: "String", eq: "0xa60643c90a542a95026c0f1dbdb0615ff42019cf", }, { path: "$.amount", type: "BigInt", lte: stablecoinVaultConstants.MAX_USDC_AMOUNT, }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.erc20Abi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Morpho Blue ARB USDC Deposit Policy Configuration export const morphoBlueARBUSDCDepositPolicy = { id: "morpho_blue_arb_usdc_deposit", description: "Policy for depositing USDC to Morpho Blue vault on Arbitrum", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: "arbitrum,1", chain_environment: "EVM", restrictions: [ { method: "deposit", contract_id: stablecoinVaultConstants.MORPHO_BLUE_ARB_VAULT_ADDRESS, schema: [ { path: "$.assets", type: "BigInt", }, { path: "$.receiver", type: "String", eq: stablecoinVaultConstants.ARBITRUM_CHAINSIG_DERIVED_ADDRESS, }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.vaultAbi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Morpho Blue ARB USDC Redeem Policy Configuration export const morphoBlueARBUSDCRedeemPolicy = { id: "morpho_blue_arb_usdc_redeem", description: "Policy for redeeming USDC from Morpho Blue vault on Arbitrum", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: "arbitrum,1", chain_environment: "EVM", restrictions: [ { method: "redeem", contract_id: stablecoinVaultConstants.MORPHO_BLUE_ARB_VAULT_ADDRESS, schema: [ { path: "$.shares", type: "BigInt", }, { path: "$.receiver", type: "String", eq: stablecoinVaultConstants.ARBITRUM_CHAINSIG_DERIVED_ADDRESS, }, { path: "$.owner", type: "String", eq: stablecoinVaultConstants.ARBITRUM_CHAINSIG_DERIVED_ADDRESS, }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.vaultAbi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // NEAR Native mt_transfer Policy Configuration export const nearIntentsFtWithdrawPolicyEthereum = { id: "near_intents_ft_withdraw_eth", description: "For briding tokens using near_intents directly to Ethereum", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "NearNativeTransaction", activation_time: "0", policy_details: { NearNativeTransaction: { restrictions: [ { method: "ft_withdraw", contract_id: "intents.near", // Allow any multi-token contract schema: [ { path: "$.receiver_id", type: "String", }, { path: "$.token", type: "String", }, { path: "$.amount", type: "BigInt", }, { path: "$.memo", type: "String", eq: "WITHDRAW_TO:0x64aff91dc6f7be29c46cbc35be24a18b5b2e92e6", }, ], interface: "", }, ], chain_environment: "NearWasm", }, }, proposal_expiry_time_nanosec: "86400000000000", }; // NEAR Native mt_transfer Policy Configuration export const nearIntentsFtWithdrawPolicyArbitrum = { id: "near_intents_ft_withdraw_arb", description: "For briding tokens using near_intents directly to Arbitrum", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "NearNativeTransaction", activation_time: "0", policy_details: { NearNativeTransaction: { restrictions: [ { method: "ft_withdraw", contract_id: "intents.near", // Allow any multi-token contract schema: [ { path: "$.receiver_id", type: "String", }, { path: "$.token", type: "String", }, { path: "$.amount", type: "BigInt", }, { path: "$.memo", type: "String", eq: "WITHDRAW_TO:0x24db64a117db9af57bb33a0f51018b67a529b831", }, ], interface: "", }, ], chain_environment: "NearWasm", }, }, proposal_expiry_time_nanosec: "86400000000000", }; export const proxyFtWithdrawPolicy = { id: "proxy_ft_withdraw_eth", description: "bridge to ethereum from proxy", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: "near_intents,1", chain_environment: "NearWasm", restrictions: [ { method: "ft_withdraw", contract_id: "intents.near", schema: [ { path: "$.receiver_id", type: "String", }, { path: "$.token", type: "String", }, { path: "$.amount", type: "BigInt", }, { path: "$.memo", type: "String", eq: "WITHDRAW_TO:0x64aff91dc6f7be29c46cbc35be24a18b5b2e92e6", }, ], interface: "", }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; export const arbUSDCDepositIntents = { id: "arbitrum_usdc_deposit_intents_vault", description: "Policy for depositing arbitrum USDC to near intents to vault", required_role: "strategist", required_vote_count: 1, policy_status: "Active", policy_type: "ChainSigTransaction", activation_time: "0", policy_details: { ChainSigTransaction: { derivation_path: stablecoinVaultConstants.ARBITRUM_DERIVATION_PATH, chain_environment: "EVM", restrictions: [ { method: "transfer", contract_id: stablecoinVaultConstants.USDC_ARB_ADDRESS, schema: [ { path: "$.to", type: "String", eq: stablecoinVaultConstants.ARBITRUM_NEAR_INTENT_DEPOSIT_ADDRESS_VAULT, }, { path: "$.value", type: "BigInt", }, ], interface: btoa(JSON.stringify(stablecoinVaultConstants.erc20Abi)), }, ], }, }, proposal_expiry_time_nanosec: "86400000000000", }; // Export all policies as an array export const stablecoinVaultPolicies = [ // morphoBlueUSDCApprovePolicy, // morphoBlueUSDCDepositPolicy, // morphoBlueUSDCRedeemPolicy, // eulerPrimeUSDCApprovePolicy, eulerPrimeUSDCDepositPolicy, // eulerPrimeUSDCRedeemPolicy, // eulerARBUSDCApprovePolicy, // eulerARBUSDCDepositPolicy, // eulerARBUSDCRedeemPolicy, // morphoBlueARBUSDCApprovePolicy, // morphoBlueARBUSDCDepositPolicy, // morphoBlueARBUSDCRedeemPolicy, // nearIntentsMessagePolicy, // nearNativeMtTransferPolicy, // nearIntentsFtWithdrawPolicyArbitrum, // nearIntentsFtWithdrawPolicyEthereum, // proxyFtWithdrawPolicy, // arbUSDCDepositIntents, ];