"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOmniChainExecutorOwnerRevokePermissions = exports.getConvertersRevokePermissions = exports.getSFrxETHOracleRevokePermissions = exports.getConverterNetworkRevokePermissions = exports.getVTokenRevokePermissions = exports.getComptrollerRevokePermissions = exports.getPoolRegistryRevokePermissions = exports.getPoolRegistryRevokePermissionsForWildcard = exports.getIRMRevokePermissions = exports.getRewardDistributorRevokePermissions = exports.getXVSVaultRevokePermissions = exports.getBoundValidatorRevokePermissions = exports.getResilientOracleRevokePermissions = exports.getPrimeLiquidityProviderRevokePermissions = exports.getPrimeRevokePermissions = exports.getXVSVaultTreasuryRevokePermissions = exports.getXVSBridgeAdminRevokePermissions = exports.getOmniChainExecutorOwnerPermissions = exports.getXVSVaultTreasuryPermissions = exports.getConverterPermissions = exports.getIRMPermissions = exports.getRewardDistributorPermissionsBlockbased = exports.getRewardDistributorPermissionsTimebased = exports.getVTokenPermissions = exports.getComptrollerPermissions = exports.getConverterNetworkPermissions = exports.getProtocolShareReservePermissions = exports.getPrimeLiquidityProviderPermissions = exports.getPrimePermissions = exports.getPoolRegistryPermissions = exports.getXVSVaultPermissions = exports.getXVSBridgeAdminPermissions = exports.getXVSPermissions = exports.getBinanceOraclePermissions = exports.getSFrxETHOraclePermissions = exports.getBoundValidatorPermissions = exports.getRedstoneOraclePermissions = exports.getChainlinkOraclePermissions = exports.getResilientOraclePermissions = exports.AccountType = void 0;
const hardhat_1 = require("hardhat");
var AccountType;
(function (AccountType) {
    AccountType["NORMAL_TIMELOCK"] = "NormalTimelock";
    AccountType["FAST_TRACK_TIMELOCK"] = "FastTrackTimelock";
    AccountType["CRITICAL_TIMELOCK"] = "CriticalTimelock";
})(AccountType = exports.AccountType || (exports.AccountType = {}));
const accounts = [AccountType.NORMAL_TIMELOCK]
    .concat(AccountType.CRITICAL_TIMELOCK)
    .concat(AccountType.FAST_TRACK_TIMELOCK);
const getResilientOraclePermissions = (resilientOracle) => {
    return [
        ...accounts.map(timelock => [resilientOracle, "pause()", timelock]),
        ...accounts.map(timelock => [resilientOracle, "unpause()", timelock]),
        ...accounts.map(timelock => [resilientOracle, "setTokenConfig(TokenConfig)", timelock]),
        [resilientOracle, "setOracle(address,address,uint8)", AccountType.NORMAL_TIMELOCK],
        [resilientOracle, "enableOracle(address,uint8,bool)", AccountType.NORMAL_TIMELOCK],
    ];
};
exports.getResilientOraclePermissions = getResilientOraclePermissions;
const getChainlinkOraclePermissions = (chainlinkOracle) => {
    return [
        ...accounts.map(timelock => [chainlinkOracle, "setTokenConfig(TokenConfig)", timelock]),
        ...accounts.map(timelock => [chainlinkOracle, "setDirectPrice(address,uint256)", timelock]),
    ];
};
exports.getChainlinkOraclePermissions = getChainlinkOraclePermissions;
const getRedstoneOraclePermissions = (redstoneOracle) => {
    return [
        ...accounts.map(timelock => [redstoneOracle, "setTokenConfig(TokenConfig)", timelock]),
        ...accounts.map(timelock => [redstoneOracle, "setDirectPrice(address,uint256)", timelock]),
    ];
};
exports.getRedstoneOraclePermissions = getRedstoneOraclePermissions;
const getBoundValidatorPermissions = (boundValidator) => {
    return [[boundValidator, "setValidateConfig(ValidateConfig)", AccountType.NORMAL_TIMELOCK]];
};
exports.getBoundValidatorPermissions = getBoundValidatorPermissions;
const getSFrxETHOraclePermissions = (sFrxETHOracle) => {
    return [...accounts.map(timelock => [sFrxETHOracle, "setMaxAllowedPriceDifference(uint256)", timelock])];
};
exports.getSFrxETHOraclePermissions = getSFrxETHOraclePermissions;
const getBinanceOraclePermissions = (binanceOracle) => {
    return [
        ...accounts.map(timelock => [binanceOracle, "setMaxStalePeriod(string,uint256)", timelock]),
        ...accounts.map(timelock => [binanceOracle, "setSymbolOverride(string,string)", timelock]),
    ];
};
exports.getBinanceOraclePermissions = getBinanceOraclePermissions;
const getXVSPermissions = (xvs) => {
    return [
        ...accounts.map(timelock => [xvs, "migrateMinterTokens(address,address)", timelock]),
        ...accounts.map(timelock => [xvs, "setMintCap(address,uint256)", timelock]),
        ...accounts.map(timelock => [xvs, "updateBlacklist(address,bool)", timelock]),
        ...accounts.map(timelock => [xvs, "pause()", timelock]),
        ...accounts.map(timelock => [xvs, "unpause()", timelock]),
    ];
};
exports.getXVSPermissions = getXVSPermissions;
const getXVSBridgeAdminPermissions = (xvsBridgeAdmin) => {
    return [
        ...accounts.map(timelock => [xvsBridgeAdmin, "setSendVersion(uint16)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "setReceiveVersion(uint16)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "forceResumeReceive(uint16,bytes)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "setMaxSingleTransactionLimit(uint16,uint256)", timelock]),
        [xvsBridgeAdmin, "setOracle(address)", AccountType.NORMAL_TIMELOCK],
        ...accounts.map(timelock => [xvsBridgeAdmin, "setMaxDailyLimit(uint16,uint256)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "setMaxSingleReceiveTransactionLimit(uint16,uint256)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "setMaxDailyReceiveLimit(uint16,uint256)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "pause()", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "unpause()", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "removeTrustedRemote(uint16)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "dropFailedMessage(uint16,bytes,uint64)", timelock]),
        [xvsBridgeAdmin, "setPrecrime(address)", AccountType.NORMAL_TIMELOCK],
        ...accounts.map(timelock => [xvsBridgeAdmin, "setMinDstGas(uint16,uint16,uint256)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "setPayloadSizeLimit(uint16,uint256)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "setWhitelist(address,bool)", timelock]),
        ...accounts.map(timelock => [xvsBridgeAdmin, "setConfig(uint16,uint16,uint256,bytes)", timelock]),
        [xvsBridgeAdmin, "sweepToken(address,address,uint256)", AccountType.NORMAL_TIMELOCK],
        ...accounts.map(timelock => [xvsBridgeAdmin, "updateSendAndCallEnabled(bool)", timelock]),
        [xvsBridgeAdmin, "setTrustedRemoteAddress(uint16,bytes)", AccountType.NORMAL_TIMELOCK],
        [xvsBridgeAdmin, "transferBridgeOwnership(address)", AccountType.NORMAL_TIMELOCK],
    ];
};
exports.getXVSBridgeAdminPermissions = getXVSBridgeAdminPermissions;
const getXVSVaultPermissions = (xvsVault) => {
    return [
        [xvsVault, "pause()", AccountType.CRITICAL_TIMELOCK],
        [xvsVault, "resume()", AccountType.CRITICAL_TIMELOCK],
        [xvsVault, "setRewardAmountPerBlockOrSecond(address,uint256)", AccountType.CRITICAL_TIMELOCK],
        [xvsVault, "pause()", AccountType.FAST_TRACK_TIMELOCK],
        [xvsVault, "resume()", AccountType.FAST_TRACK_TIMELOCK],
        [xvsVault, "setRewardAmountPerBlockOrSecond(address,uint256)", AccountType.FAST_TRACK_TIMELOCK],
        [xvsVault, "pause()", AccountType.NORMAL_TIMELOCK],
        [xvsVault, "resume()", AccountType.NORMAL_TIMELOCK],
        [xvsVault, "add(address,uint256,address,uint256,uint256)", AccountType.NORMAL_TIMELOCK],
        [xvsVault, "set(address,uint256,uint256)", AccountType.NORMAL_TIMELOCK],
        [xvsVault, "setRewardAmountPerBlockOrSecond(address,uint256)", AccountType.NORMAL_TIMELOCK],
        [xvsVault, "setWithdrawalLockingPeriod(address,uint256,uint256)", AccountType.NORMAL_TIMELOCK],
    ];
};
exports.getXVSVaultPermissions = getXVSVaultPermissions;
const getPoolRegistryPermissions = (poolRegistry) => {
    return [
        [poolRegistry, "addPool(string,address,uint256,uint256,uint256)", AccountType.NORMAL_TIMELOCK],
        [poolRegistry, "addMarket(AddMarketInput)", AccountType.NORMAL_TIMELOCK],
        [poolRegistry, "setPoolName(address,string)", AccountType.NORMAL_TIMELOCK],
        [poolRegistry, "updatePoolMetadata(address,VenusPoolMetaData)", AccountType.NORMAL_TIMELOCK],
    ];
};
exports.getPoolRegistryPermissions = getPoolRegistryPermissions;
const getPrimePermissions = (prime) => {
    return [
        ...accounts.map(timelock => [prime, "updateAlpha(uint128,uint128)", timelock]),
        ...accounts.map(timelock => [prime, "updateMultipliers(address,uint256,uint256)", timelock]),
        ...accounts.map(timelock => [prime, "setStakedAt(address[],uint256[])", timelock]),
        ...accounts.map(timelock => [prime, "addMarket(address,address,uint256,uint256)", timelock]),
        ...accounts.map(timelock => [prime, "setLimit(uint256,uint256)", timelock]),
        ...accounts.map(timelock => [prime, "setMaxLoopsLimit(uint256)", timelock]),
        ...accounts.map(timelock => [prime, "issue(bool,address[])", timelock]),
        ...accounts.map(timelock => [prime, "burn(address)", timelock]),
        ...accounts.map(timelock => [prime, "togglePause()", timelock]),
    ];
};
exports.getPrimePermissions = getPrimePermissions;
const getPrimeLiquidityProviderPermissions = (primeLiquidityProvider) => {
    return [
        ...accounts.map(timelock => [primeLiquidityProvider, "setTokensDistributionSpeed(address[],uint256[])", timelock]),
        ...accounts.map(timelock => [
            primeLiquidityProvider,
            "setMaxTokensDistributionSpeed(address[],uint256[])",
            timelock,
        ]),
        ...accounts.map(timelock => [primeLiquidityProvider, "setMaxLoopsLimit(uint256)", timelock]),
        ...accounts.map(timelock => [primeLiquidityProvider, "pauseFundsTransfer()", timelock]),
        ...accounts.map(timelock => [primeLiquidityProvider, "resumeFundsTransfer()", timelock]),
    ];
};
exports.getPrimeLiquidityProviderPermissions = getPrimeLiquidityProviderPermissions;
const getProtocolShareReservePermissions = (protocolShareReserve) => {
    return [
        ...accounts.map(timelock => [
            protocolShareReserve,
            "addOrUpdateDistributionConfigs(DistributionConfig[])",
            timelock,
        ]),
        ...accounts.map(timelock => [protocolShareReserve, "removeDistributionConfig(Schema,address)", timelock]),
    ];
};
exports.getProtocolShareReservePermissions = getProtocolShareReservePermissions;
const getConverterNetworkPermissions = (converterNetwork) => {
    return [
        ...accounts.map(timelock => [converterNetwork, "addTokenConverter(address)", timelock]),
        ...accounts.map(timelock => [converterNetwork, "removeTokenConverter(address)", timelock]),
    ];
};
exports.getConverterNetworkPermissions = getConverterNetworkPermissions;
const getComptrollerPermissions = () => {
    return [
        ...accounts.map(timelock => [
            hardhat_1.ethers.constants.AddressZero,
            "setCollateralFactor(address,uint256,uint256)",
            timelock,
        ]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "setMarketBorrowCaps(address[],uint256[])", timelock]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "setMarketSupplyCaps(address[],uint256[])", timelock]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "setActionsPaused(address[],uint256[],bool)", timelock]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "setForcedLiquidation(address,bool)", timelock]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "unlistMarket(address)", timelock]),
        [hardhat_1.ethers.constants.AddressZero, "setCloseFactor(uint256)", AccountType.NORMAL_TIMELOCK],
        [hardhat_1.ethers.constants.AddressZero, "setLiquidationIncentive(uint256)", AccountType.NORMAL_TIMELOCK],
        [hardhat_1.ethers.constants.AddressZero, "setMinLiquidatableCollateral(uint256)", AccountType.NORMAL_TIMELOCK],
    ];
};
exports.getComptrollerPermissions = getComptrollerPermissions;
const getVTokenPermissions = () => {
    return [
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "setReserveFactor(uint256)", timelock]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "setInterestRateModel(address)", timelock]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "setReduceReservesBlockDelta(uint256)", timelock]),
        [hardhat_1.ethers.constants.AddressZero, "setProtocolSeizeShare(uint256)", AccountType.NORMAL_TIMELOCK],
    ];
};
exports.getVTokenPermissions = getVTokenPermissions;
const getRewardDistributorPermissionsTimebased = () => {
    return [
        [hardhat_1.ethers.constants.AddressZero, "setRewardTokenSpeeds(address[],uint256[],uint256[])", AccountType.NORMAL_TIMELOCK],
        [
            hardhat_1.ethers.constants.AddressZero,
            "setLastRewardingBlockTimestamps(address[],uint256[],uint256[])",
            AccountType.NORMAL_TIMELOCK,
        ],
    ];
};
exports.getRewardDistributorPermissionsTimebased = getRewardDistributorPermissionsTimebased;
const getRewardDistributorPermissionsBlockbased = () => {
    return [
        [hardhat_1.ethers.constants.AddressZero, "setRewardTokenSpeeds(address[],uint256[],uint256[])", AccountType.NORMAL_TIMELOCK],
        [hardhat_1.ethers.constants.AddressZero, "setLastRewardingBlocks(address[],uint32[],uint32[])", AccountType.NORMAL_TIMELOCK],
    ];
};
exports.getRewardDistributorPermissionsBlockbased = getRewardDistributorPermissionsBlockbased;
const getIRMPermissions = () => {
    return [
        [hardhat_1.ethers.constants.AddressZero, "updateJumpRateModel(uint256,uint256,uint256,uint256)", AccountType.NORMAL_TIMELOCK],
    ];
};
exports.getIRMPermissions = getIRMPermissions;
const getConverterPermissions = () => {
    return [
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "pauseConversion()", timelock]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "resumeConversion()", timelock]),
        ...accounts.map(timelock => [hardhat_1.ethers.constants.AddressZero, "setMinAmountToConvert(uint256)", timelock]),
        ...accounts.map(timelock => [
            hardhat_1.ethers.constants.AddressZero,
            "setConversionConfig(address,address,ConversionConfig)",
            timelock,
        ]),
    ];
};
exports.getConverterPermissions = getConverterPermissions;
const getXVSVaultTreasuryPermissions = (xvsVaultTreasury) => {
    return [...accounts.map(timelock => [xvsVaultTreasury, "fundXVSVault(uint256)", timelock])];
};
exports.getXVSVaultTreasuryPermissions = getXVSVaultTreasuryPermissions;
const getOmniChainExecutorOwnerPermissions = (omniChainExecutor, guardian) => {
    return [
        [omniChainExecutor, "setSrcChainId(uint16)", AccountType.NORMAL_TIMELOCK],
        [omniChainExecutor, "transferBridgeOwnership(address)", AccountType.NORMAL_TIMELOCK],
        [omniChainExecutor, "setSrcChainId(uint16)", guardian],
        [omniChainExecutor, "transferBridgeOwnership(address)", guardian],
    ];
};
exports.getOmniChainExecutorOwnerPermissions = getOmniChainExecutorOwnerPermissions;
const getXVSBridgeAdminRevokePermissions = (xvsBridgeAdmin, guardian) => {
    return [
        [xvsBridgeAdmin, "setSendVersion(uint16)", guardian],
        [xvsBridgeAdmin, "setReceiveVersion(uint16)", guardian],
        [xvsBridgeAdmin, "forceResumeReceive(uint16,bytes)", guardian],
        [xvsBridgeAdmin, "setOracle(address)", guardian],
        [xvsBridgeAdmin, "removeTrustedRemote(uint16)", guardian],
        [xvsBridgeAdmin, "dropFailedMessage(uint16,bytes,uint64)", guardian],
        [xvsBridgeAdmin, "setPrecrime(address)", guardian],
        [xvsBridgeAdmin, "setMinDstGas(uint16,uint16,uint256)", guardian],
        [xvsBridgeAdmin, "setPayloadSizeLimit(uint16,uint256)", guardian],
        [xvsBridgeAdmin, "setWhitelist(address,bool)", guardian],
        [xvsBridgeAdmin, "setConfig(uint16,uint16,uint256,bytes)", guardian],
        [xvsBridgeAdmin, "sweepToken(address,address,uint256)", guardian],
        [xvsBridgeAdmin, "updateSendAndCallEnabled(bool)", guardian],
        [xvsBridgeAdmin, "setTrustedRemoteAddress(uint16,bytes)", guardian],
        [xvsBridgeAdmin, "transferBridgeOwnership(address)", guardian],
    ];
};
exports.getXVSBridgeAdminRevokePermissions = getXVSBridgeAdminRevokePermissions;
const getXVSVaultTreasuryRevokePermissions = (xvsVaultTreasury, guardian) => {
    return [[xvsVaultTreasury, "fundXVSVault(uint256)", guardian]];
};
exports.getXVSVaultTreasuryRevokePermissions = getXVSVaultTreasuryRevokePermissions;
const getPrimeRevokePermissions = (prime, guardian) => {
    return [
        [prime, "updateAlpha(uint128,uint128)", guardian],
        [prime, "updateMultipliers(address,uint256,uint256)", guardian],
        [prime, "setStakedAt(address[],uint256[])", guardian],
        [prime, "addMarket(address,address,uint256,uint256)", guardian],
        [prime, "setLimit(uint256,uint256)", guardian],
        [prime, "setMaxLoopsLimit(uint256)", guardian],
        [prime, "issue(bool,address[])", guardian],
        [prime, "burn(address)", guardian],
    ];
};
exports.getPrimeRevokePermissions = getPrimeRevokePermissions;
const getPrimeLiquidityProviderRevokePermissions = (primeLiquidityProvider, guardian) => {
    return [
        [primeLiquidityProvider, "setTokensDistributionSpeed(address[],uint256[])", guardian],
        [primeLiquidityProvider, "setMaxTokensDistributionSpeed(address[],uint256[])", guardian],
        [primeLiquidityProvider, "setMaxLoopsLimit(uint256)", guardian],
    ];
};
exports.getPrimeLiquidityProviderRevokePermissions = getPrimeLiquidityProviderRevokePermissions;
const getResilientOracleRevokePermissions = (resilientOracle, guardian) => {
    return [
        [resilientOracle, "setOracle(address,address,uint8)", guardian],
        [resilientOracle, "enableOracle(address,uint8,bool)", guardian],
    ];
};
exports.getResilientOracleRevokePermissions = getResilientOracleRevokePermissions;
const getBoundValidatorRevokePermissions = (boundValidator, guardian) => {
    return [[boundValidator, "setValidateConfig(ValidateConfig)", guardian]];
};
exports.getBoundValidatorRevokePermissions = getBoundValidatorRevokePermissions;
const getXVSVaultRevokePermissions = (xvsVault, guardian) => {
    return [
        [xvsVault, "add(address,uint256,address,uint256,uint256)", guardian],
        [xvsVault, "set(address,uint256,uint256)", guardian],
        [xvsVault, "setRewardAmountPerBlockOrSecond(address,uint256)", guardian],
        [xvsVault, "setWithdrawalLockingPeriod(address,uint256,uint256)", guardian],
    ];
};
exports.getXVSVaultRevokePermissions = getXVSVaultRevokePermissions;
const getRewardDistributorRevokePermissions = (guardian, lastRewardingBlockTimestamp) => {
    const permissions = [
        [hardhat_1.ethers.constants.AddressZero, "setLastRewardingBlock(address[],uint32[],uint32[])", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setLastRewardingBlocks(address[],uint32[],uint32[])", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setRewardTokenSpeeds(address[],uint256[],uint256[])", guardian],
    ];
    if (lastRewardingBlockTimestamp) {
        permissions.push([
            hardhat_1.ethers.constants.AddressZero,
            "setLastRewardingBlockTimestamps(address[],uint256[],uint256[])",
            guardian,
        ]);
    }
    return permissions;
};
exports.getRewardDistributorRevokePermissions = getRewardDistributorRevokePermissions;
const getIRMRevokePermissions = (guardian) => {
    return [[hardhat_1.ethers.constants.AddressZero, "updateJumpRateModel(uint256,uint256,uint256,uint256)", guardian]];
};
exports.getIRMRevokePermissions = getIRMRevokePermissions;
const getPoolRegistryRevokePermissionsForWildcard = (guardian) => {
    return [
        [hardhat_1.ethers.constants.AddressZero, "addPool(string,address,uint256,uint256,uint256)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "addMarket(AddMarketInput)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setPoolName(address,string)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "updatePoolMetadata(address,VenusPoolMetaData)", guardian],
    ];
};
exports.getPoolRegistryRevokePermissionsForWildcard = getPoolRegistryRevokePermissionsForWildcard;
const getPoolRegistryRevokePermissions = (poolRegistry, guardian) => {
    return [
        [poolRegistry, "addPool(string,address,uint256,uint256,uint256)", guardian],
        [poolRegistry, "addMarket(AddMarketInput)", guardian],
        [poolRegistry, "setPoolName(address,string)", guardian],
        [poolRegistry, "updatePoolMetadata(address,VenusPoolMetaData)", guardian],
    ];
};
exports.getPoolRegistryRevokePermissions = getPoolRegistryRevokePermissions;
const getComptrollerRevokePermissions = (guardian) => {
    return [
        [hardhat_1.ethers.constants.AddressZero, "setCloseFactor(uint256)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setLiquidationIncentive(uint256)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setMinLiquidatableCollateral(uint256)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setForcedLiquidation(address,bool)", guardian],
    ];
};
exports.getComptrollerRevokePermissions = getComptrollerRevokePermissions;
const getVTokenRevokePermissions = (guardian) => {
    return [
        [hardhat_1.ethers.constants.AddressZero, "setProtocolSeizeShare(uint256)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setReserveFactor(uint256)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setInterestRateModel(address)", guardian],
        [hardhat_1.ethers.constants.AddressZero, "setReduceReservesBlockDelta(uint256)", guardian],
    ];
};
exports.getVTokenRevokePermissions = getVTokenRevokePermissions;
const getConverterNetworkRevokePermissions = (converterNetwork, guardian) => {
    return [
        [converterNetwork, "addTokenConverter(address)", guardian],
        [converterNetwork, "removeTokenConverter(address)", guardian],
    ];
};
exports.getConverterNetworkRevokePermissions = getConverterNetworkRevokePermissions;
const getSFrxETHOracleRevokePermissions = (sFrxETHOracle, guardian) => {
    return [[sFrxETHOracle, "setMaxAllowedPriceDifference(uint256)", guardian]];
};
exports.getSFrxETHOracleRevokePermissions = getSFrxETHOracleRevokePermissions;
const getConvertersRevokePermissions = (converters, guardian) => {
    return [
        ...converters.map(converter => [converter, "setMinAmountToConvert(uint256)", guardian]),
        ...converters.map(converter => [converter, "setConversionConfig(address,address,ConversionConfig)", guardian]),
    ];
};
exports.getConvertersRevokePermissions = getConvertersRevokePermissions;
const getOmniChainExecutorOwnerRevokePermissions = (omniChainExecutor, guardian) => {
    return [
        [omniChainExecutor, "setTrustedRemoteAddress(uint16,bytes)", AccountType.CRITICAL_TIMELOCK],
        [omniChainExecutor, "setTimelockPendingAdmin(address,uint8)", AccountType.CRITICAL_TIMELOCK],
        [omniChainExecutor, "setGuardian(address)", AccountType.CRITICAL_TIMELOCK],
        [omniChainExecutor, "setTrustedRemoteAddress(uint16,bytes)", AccountType.FAST_TRACK_TIMELOCK],
        [omniChainExecutor, "setTimelockPendingAdmin(address,uint8)", AccountType.FAST_TRACK_TIMELOCK],
        [omniChainExecutor, "setGuardian(address)", AccountType.FAST_TRACK_TIMELOCK],
        [omniChainExecutor, "setSendVersion(uint16)", guardian],
        [omniChainExecutor, "setPrecrime(address)", guardian],
        [omniChainExecutor, "setMinDstGas(uint16,uint16,uint256)", guardian],
        [omniChainExecutor, "setPayloadSizeLimit(uint16,uint256)", guardian],
    ];
};
exports.getOmniChainExecutorOwnerRevokePermissions = getOmniChainExecutorOwnerRevokePermissions;
//# sourceMappingURL=permissions.js.map