# IMaverickV2BoostedPositionFactory

### Functions <a href="#functions" id="functions"></a>

#### createBoostedPosition <a href="#createboostedposition" id="createboostedposition"></a>

Creates BP from the specified input parameters. Requirements:

* Pool must be from pool factory
* BP kind must be supported by the pool
* BinIds have to be sorted in ascending order
* ratios\[0] must be 1e18; ratios are specified in D18 scale
* ratio and binId arrays have to be the same length
* movement-mode BPs can only have one binId
* static-mode BPs can have at most 24 binIds

```solidity
function createBoostedPosition(IMaverickV2Pool pool, uint32[] memory binIds, uint128[] memory ratios, uint8 kind)
    external
    returns (IMaverickV2BoostedPosition boostedPosition);
```

#### lookup <a href="#lookup" id="lookup"></a>

Look up BPs by range of indexes.

```solidity
function lookup(uint256 startIndex, uint256 endIndex) external view returns (IMaverickV2BoostedPosition[] memory);
```

#### lookup <a href="#lookup-1" id="lookup-1"></a>

Look up BPs by range of indexes for a given pool.

```solidity
function lookup(IMaverickV2Pool pool, uint256 startIndex, uint256 endIndex)
    external
    view
    returns (IMaverickV2BoostedPosition[] memory);
```

#### isFactoryBoostedPosition <a href="#isfactoryboostedposition" id="isfactoryboostedposition"></a>

Returns whether or not input BP was created by this factory.

```solidity
function isFactoryBoostedPosition(IMaverickV2BoostedPosition) external returns (bool);
```

#### poolFactory <a href="#poolfactory" id="poolfactory"></a>

Pool factory that all BPs pool must be deployed from.

```solidity
function poolFactory() external returns (IMaverickV2Factory);
```

### Events <a href="#events" id="events"></a>

#### CreateBoostedPosition <a href="#createboostedposition-1" id="createboostedposition-1"></a>

```solidity
event CreateBoostedPosition(
    IMaverickV2Pool pool, uint32[] binIds, uint128[] ratios, uint8 kind, IMaverickV2BoostedPosition boostedPosition
);
```

### Errors <a href="#errors" id="errors"></a>

#### BoostedPositionFactoryNotFactoryPool <a href="#boostedpositionfactorynotfactorypool" id="boostedpositionfactorynotfactorypool"></a>

```solidity
error BoostedPositionFactoryNotFactoryPool();
```

#### BoostedPositionFactoryKindNotSupportedByPool <a href="#boostedpositionfactorykindnotsupportedbypool" id="boostedpositionfactorykindnotsupportedbypool"></a>

```solidity
error BoostedPositionFactoryKindNotSupportedByPool(uint8 poolKinds, uint8 kind);
```

#### BoostedPositionFactoryInvalidRatioZero <a href="#boostedpositionfactoryinvalidratiozero" id="boostedpositionfactoryinvalidratiozero"></a>

```solidity
error BoostedPositionFactoryInvalidRatioZero(uint128 ratioZero);
```

#### BoostedPositionFactoryInvalidLengths <a href="#boostedpositionfactoryinvalidlengths" id="boostedpositionfactoryinvalidlengths"></a>

```solidity
error BoostedPositionFactoryInvalidLengths(uint256 ratioLength, uint256 binIdsLength);
```

#### BoostedPositionFactoryInvalidLengthForKind <a href="#boostedpositionfactoryinvalidlengthforkind" id="boostedpositionfactoryinvalidlengthforkind"></a>

```solidity
error BoostedPositionFactoryInvalidLengthForKind(uint8 kind, uint256 ratiosLength);
```

#### BoostedPositionFactoryInvalidBinIdOrder <a href="#boostedpositionfactoryinvalidbinidorder" id="boostedpositionfactoryinvalidbinidorder"></a>

```solidity
error BoostedPositionFactoryInvalidBinIdOrder(uint32 lastBinId, uint32 thisBinId);
```

#### BoostedPositionFactoryInvalidBinKind <a href="#boostedpositionfactoryinvalidbinkind" id="boostedpositionfactoryinvalidbinkind"></a>

```solidity
error BoostedPositionFactoryInvalidBinKind(uint8 inputKind, uint8 binKind, uint32 binId);
```

<br>
