"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BastionProtocolSwap__factory = void 0;
const ethers_1 = require("ethers");
const _abi = [
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'provider',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256[]',
                name: 'tokenAmounts',
                type: 'uint256[]',
            },
            {
                indexed: false,
                internalType: 'uint256[]',
                name: 'fees',
                type: 'uint256[]',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'invariant',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'lpTokenSupply',
                type: 'uint256',
            },
        ],
        name: 'AddLiquidity',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'receiver',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint8',
                name: 'tokenIndex',
                type: 'uint8',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'amountFee',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'protocolFee',
                type: 'uint256',
            },
        ],
        name: 'FlashLoan',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'newAdminFee',
                type: 'uint256',
            },
        ],
        name: 'NewAdminFee',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'newSwapFee',
                type: 'uint256',
            },
        ],
        name: 'NewSwapFee',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'newWithdrawFee',
                type: 'uint256',
            },
        ],
        name: 'NewWithdrawFee',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'previousOwner',
                type: 'address',
            },
            {
                indexed: true,
                internalType: 'address',
                name: 'newOwner',
                type: 'address',
            },
        ],
        name: 'OwnershipTransferred',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'account',
                type: 'address',
            },
        ],
        name: 'Paused',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'oldA',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'newA',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'initialTime',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'futureTime',
                type: 'uint256',
            },
        ],
        name: 'RampA',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'provider',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256[]',
                name: 'tokenAmounts',
                type: 'uint256[]',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'lpTokenSupply',
                type: 'uint256',
            },
        ],
        name: 'RemoveLiquidity',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'provider',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256[]',
                name: 'tokenAmounts',
                type: 'uint256[]',
            },
            {
                indexed: false,
                internalType: 'uint256[]',
                name: 'fees',
                type: 'uint256[]',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'invariant',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'lpTokenSupply',
                type: 'uint256',
            },
        ],
        name: 'RemoveLiquidityImbalance',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'provider',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'lpTokenAmount',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'lpTokenSupply',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'boughtId',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'tokensBought',
                type: 'uint256',
            },
        ],
        name: 'RemoveLiquidityOne',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'uint256',
                name: 'currentA',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'time',
                type: 'uint256',
            },
        ],
        name: 'StopRampA',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: true,
                internalType: 'address',
                name: 'buyer',
                type: 'address',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'tokensSold',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint256',
                name: 'tokensBought',
                type: 'uint256',
            },
            {
                indexed: false,
                internalType: 'uint128',
                name: 'soldId',
                type: 'uint128',
            },
            {
                indexed: false,
                internalType: 'uint128',
                name: 'boughtId',
                type: 'uint128',
            },
        ],
        name: 'TokenSwap',
        type: 'event',
    },
    {
        anonymous: false,
        inputs: [
            {
                indexed: false,
                internalType: 'address',
                name: 'account',
                type: 'address',
            },
        ],
        name: 'Unpaused',
        type: 'event',
    },
    {
        inputs: [],
        name: 'MAX_BPS',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256[]',
                name: 'amounts',
                type: 'uint256[]',
            },
            {
                internalType: 'uint256',
                name: 'minToMint',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'deadline',
                type: 'uint256',
            },
        ],
        name: 'addLiquidity',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
        ],
        name: 'calculateRemoveLiquidity',
        outputs: [
            {
                internalType: 'uint256[]',
                name: '',
                type: 'uint256[]',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'tokenAmount',
                type: 'uint256',
            },
            {
                internalType: 'uint8',
                name: 'tokenIndex',
                type: 'uint8',
            },
        ],
        name: 'calculateRemoveLiquidityOneToken',
        outputs: [
            {
                internalType: 'uint256',
                name: 'availableTokenAmount',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint8',
                name: 'tokenIndexFrom',
                type: 'uint8',
            },
            {
                internalType: 'uint8',
                name: 'tokenIndexTo',
                type: 'uint8',
            },
            {
                internalType: 'uint256',
                name: 'dx',
                type: 'uint256',
            },
        ],
        name: 'calculateSwap',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256[]',
                name: 'amounts',
                type: 'uint256[]',
            },
            {
                internalType: 'bool',
                name: 'deposit',
                type: 'bool',
            },
        ],
        name: 'calculateTokenAmount',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'receiver',
                type: 'address',
            },
            {
                internalType: 'contract IERC20',
                name: 'token',
                type: 'address',
            },
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
            {
                internalType: 'bytes',
                name: 'params',
                type: 'bytes',
            },
        ],
        name: 'flashLoan',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'flashLoanFeeBPS',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'getA',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'getAPrecise',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'index',
                type: 'uint256',
            },
        ],
        name: 'getAdminBalance',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint8',
                name: 'index',
                type: 'uint8',
            },
        ],
        name: 'getToken',
        outputs: [
            {
                internalType: 'contract IERC20',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint8',
                name: 'index',
                type: 'uint8',
            },
        ],
        name: 'getTokenBalance',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'tokenAddress',
                type: 'address',
            },
        ],
        name: 'getTokenIndex',
        outputs: [
            {
                internalType: 'uint8',
                name: '',
                type: 'uint8',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'getVirtualPrice',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'contract IERC20[]',
                name: '_pooledTokens',
                type: 'address[]',
            },
            {
                internalType: 'uint8[]',
                name: 'decimals',
                type: 'uint8[]',
            },
            {
                internalType: 'string',
                name: 'lpTokenName',
                type: 'string',
            },
            {
                internalType: 'string',
                name: 'lpTokenSymbol',
                type: 'string',
            },
            {
                internalType: 'uint256',
                name: '_a',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: '_fee',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: '_adminFee',
                type: 'uint256',
            },
            {
                internalType: 'address',
                name: 'lpTokenTargetAddress',
                type: 'address',
            },
        ],
        name: 'initialize',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'owner',
        outputs: [
            {
                internalType: 'address',
                name: '',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'pause',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'paused',
        outputs: [
            {
                internalType: 'bool',
                name: '',
                type: 'bool',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [],
        name: 'protocolFeeShareBPS',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'futureA',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'futureTime',
                type: 'uint256',
            },
        ],
        name: 'rampA',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'amount',
                type: 'uint256',
            },
            {
                internalType: 'uint256[]',
                name: 'minAmounts',
                type: 'uint256[]',
            },
            {
                internalType: 'uint256',
                name: 'deadline',
                type: 'uint256',
            },
        ],
        name: 'removeLiquidity',
        outputs: [
            {
                internalType: 'uint256[]',
                name: '',
                type: 'uint256[]',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256[]',
                name: 'amounts',
                type: 'uint256[]',
            },
            {
                internalType: 'uint256',
                name: 'maxBurnAmount',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'deadline',
                type: 'uint256',
            },
        ],
        name: 'removeLiquidityImbalance',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'tokenAmount',
                type: 'uint256',
            },
            {
                internalType: 'uint8',
                name: 'tokenIndex',
                type: 'uint8',
            },
            {
                internalType: 'uint256',
                name: 'minAmount',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'deadline',
                type: 'uint256',
            },
        ],
        name: 'removeLiquidityOneToken',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'renounceOwnership',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'newAdminFee',
                type: 'uint256',
            },
        ],
        name: 'setAdminFee',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'newFlashLoanFeeBPS',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'newProtocolFeeShareBPS',
                type: 'uint256',
            },
        ],
        name: 'setFlashLoanFees',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint256',
                name: 'newSwapFee',
                type: 'uint256',
            },
        ],
        name: 'setSwapFee',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'stopRampA',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'uint8',
                name: 'tokenIndexFrom',
                type: 'uint8',
            },
            {
                internalType: 'uint8',
                name: 'tokenIndexTo',
                type: 'uint8',
            },
            {
                internalType: 'uint256',
                name: 'dx',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'minDy',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'deadline',
                type: 'uint256',
            },
        ],
        name: 'swap',
        outputs: [
            {
                internalType: 'uint256',
                name: '',
                type: 'uint256',
            },
        ],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'swapStorage',
        outputs: [
            {
                internalType: 'uint256',
                name: 'initialA',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'futureA',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'initialATime',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'futureATime',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'swapFee',
                type: 'uint256',
            },
            {
                internalType: 'uint256',
                name: 'adminFee',
                type: 'uint256',
            },
            {
                internalType: 'contract LPToken',
                name: 'lpToken',
                type: 'address',
            },
        ],
        stateMutability: 'view',
        type: 'function',
    },
    {
        inputs: [
            {
                internalType: 'address',
                name: 'newOwner',
                type: 'address',
            },
        ],
        name: 'transferOwnership',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'unpause',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
    {
        inputs: [],
        name: 'withdrawAdminFees',
        outputs: [],
        stateMutability: 'nonpayable',
        type: 'function',
    },
];
class BastionProtocolSwap__factory {
    static createInterface() {
        return new ethers_1.utils.Interface(_abi);
    }
    static connect(address, signerOrProvider) {
        return new ethers_1.Contract(address, _abi, signerOrProvider);
    }
}
exports.BastionProtocolSwap__factory = BastionProtocolSwap__factory;
BastionProtocolSwap__factory.abi = _abi;
//# sourceMappingURL=BastionProtocolSwap__factory.js.map