# Home

Polkastarter is a decentralized fundraising platform empowering Web3 projects to launch and raise funds through multi-chain token pools whilst significantly growing their communities.

The platform enables investors to secure early access to IDOs, NFTs and Gaming Web3 innovation.&#x20;

The Polkastarter team aims to continue building the leading decentralized fundraising platform that allows users to make well-informed decisions and participate in high potential IDOs, NFT sales and Gaming projects, while allowing companies to successfully fundraise and kickstart their projects as well as benefit from Polkastarter's growing experience and network.

**How can projects use Polkastarter?**

Polkastarter allows projects of all kinds to raise funds by setting up a swap pool with a fixed purchase price for tokens. Fixed swap pools have numerous advantages for token sale investors compared to traditional fundraising models like ICOs, IEOs and IDOs (Initial DEX Offerings), the main one being that they will maintain the token price throughout the sale until the initial supply runs out.

In order to launch your project on Polkastarter, please fill out [an IDO application](https://polkastarter.com/launch).<br>

Startups and projects can raise funds on Polkastarter’s interoperable and decentralized infrastructure.

This technology can also have other applications outside of fundraising, such as:

* Closed OTC deals with password protection&#x20;
* Discounted sales with allowlisted addresses&#x20;
* Investment syndicates&#x20;
* Crowdfunding


# History of Polkastarter

Back in the last quarter of 2020, with a new crypto bull run on the horizon, Daniel Stockhaus, Tiago Martins and Miguel Leite launched the Polkastarter MVP on the Ethereum blockchain after a last-minute pivot from Polkadot, where the name originated. Polkastarter is now a multi-chain, decentralized fundraising platform.

After great reception from users, the next steps were clear: cheaper transactions, secure and ultra-fast swaps, user-friendly design, and the possibility to buy and move assets across blockchains. The founders got down to work and built everything around fixed-swap pools. This allows projects to list at a fixed price, which is maintained as long as there are tokens remaining in the original supply. The perfect recipe for fundraising on the blockchain!

Since the technology was nascent and still unreliable, security and scam risks were aplenty. This was an unfair advantage for insiders, and it also meant poor protection from bots and non-compliant whales. The goal was to build a public, fair and secure on-chain fundraising platform, as well as an independent and decentralized vetting process for upcoming projects, including incubation and advisory.

In September 2020, the founding team raised $875,000 for product development from a group of industry investors and launched the $POLS token shortly after. Over the first year, Polkastarter's online community grew to more than 600K followers on Twitter and over 100K on Telegram. The core team grew to 30 people and counting!

Until the launch of the Gaming Guild in the latter stages of 2021, the main focus were IDO projects. Polkastarter's biggest raise to date was an NFT LAND sale in March 2022, with a record-breaking $3M for [Cryptoverse.vip](https://www.cryptoverse.vip/).

So far, Polkastarter has launched 102 projects, raising over $45 million, with 30,000 unique participants and 80,000 funding participations. Projects ranged from GameFi, DeFi, Web3 and NFTs, to Infrastructure and CeFi.

The $POLS token hit an ATH of $7.41 and it continues to represent the basis of Polkastarter today. The platform's metric is POLS Power, which is calculated based on how many POLS a user stakes in the Polkastarter smart contract. Staking gives users increased chances of entering project launches.

Polkastarter has also launched its own range of NFTs, [Paulie Diamond Hands](https://polkastarter.com/quests). These utility NFTs gave loyal POLS holders added benefits when entering IDOs in December 2021. Emerald Paulie, the last active Paulie, allows a single user to enter every IDO in 2022. Lucky!

The team aims to continue building the leading decentralized fundraising platform that allows users to make well-informed decisions and participate in high potential IDOs, NFT sales and Gaming projects, while allowing companies to successfully fundraise and kickstart their projects as well as benefit from Polkastarter's growing experience and network.


# Key Features

**KYC Integration**\
An allowlist model for added security benefits. It’s a KYC function that only allows verified users to participate in project launches.\
\
**Permissionless Fixed Swap Pools**\
Controlled by smart contracts, ensuring fair and transparent token distribution, projects can list their new tokens at predetermined prices.

**NFT Sales Platform** \
As of March 2022, projects can now launch their NFT projects with us. Whether these are Metaverse, art or in-game assets, our platform can host the lot.\
\
**Council**\
The Polkastarter Council is a group of independent companies, projects and individuals that steer the Polkastarter selection process and help guide the development of the platform.

**Flexible Allowlisting System** \
This allows unlimited addresses with individual maximum allocations resulting in low gas fees.\
\
**POLS Staking** \
POLS Power is the metric of Polkastarter. [Staking POLS](https://polkastarter.com/dashboard) within our smart contract grants you access to project launches and we’re soon launching more features around POLS Power and staker rewards.

**IDO Staking**\
Designed to reward IDO token holders with more tokens instead of solely focusing on the "sell-pressure” and, therefore, we’re offering yield farming on Polkastarter projects.

**Anti Scam Verification**\
Procedures giving a full allowlisting model with strict KYC ensures no bots can enter the project sales.

**Fair Lottery System**\
Fair and tamper-proof, token incentivized lottery and ticket system.


# What Problem is Polkastarter solving?

The first ever [Initial Decentralized Exchange Offering (IDO) of Raven Protocol](https://medium.com/meet-one/how-to-participate-in-the-first-ido-on-binance-chain-4c1d873dc0cb) took place on Binance DEX on June 17th 2019. At the time, decentralized exchanges, or DEXs, had yet to gain much traction in the market. With the explosion of DeFi in 2020, DEXs increased in popularity, and IDOs became an inexpensive way to get around the centralized initial exchange offering model.

The above in turn produced wild volatility and left many investors shell-shocked, additionally, this approach suffers from other significant downsides, most notably:

* Projects need to provide liquidity on both the asset for sale (base currency) and a quote currency (usually ETH) for it to initially trade against.&#x20;
* Automated market makers, such as the one powering Uniswap, would dynamically adjust the asset’s price based on supply and demand.&#x20;
* Increasing popularity and usage of platforms such as Uniswap reinforced scalability issues, with Ethereum network fees skyrocketing and slow platform performance, leaving end-users frustrated.

Users are increasingly demanding:

* Cheap transactions&#x20;
* Secure, ultra-fast swaps&#x20;
* User-friendly design&#x20;
* The possibility to buy and move assets between blockchains

Given our multi-chain support, projects can currently choose to raise on ETH, BNB Chain, Polygon, Avalanche and Celo. Each network comes with its own advantages.


# What is a Fixed Swap Pool?

Polkastarter will allow projects to list at a fixed price, which will be maintained for as long as there are tokens remaining in the original supply. This should ensure less volatility around a token launch.

It also allows a project and its investors increased transparency over the amount of money raised and tokens sold. This data is not as easily calculable when the tokens sold vary greatly with price volatility.

### **How Liquidity Pools work in AMM Swap Platforms**

A liquidity pool offers users liquidity at any price level. This property is a valuable benefit for projects seeking immediate liquidity for their project’s token. When the token has yet to go through an extended price discovery phase, it is really anyone’s guess as to its value. Thus, when a project creates a new liquidity pair for its protocol token, the initial price swings can be quite volatile, especially when there is less than $100,000 of value in the pool.

Each time a user swaps a token with the liquidity pool, the pool’s balance ratio shifts. Let’s say we have a pool that allows you to swap watermelons for grapes. The current rate for swapping watermelons for grapes is one against seven. At the moment, the pool holds 12 watermelons and 80 grapes.

Next, Alice swaps one watermelon for seven grapes. Now, the pool consists of 13 watermelons and 73 grapes. To offer liquidity at each price level, the pool needs to maintain an equal value balance (50/50 ratio).

Therefore, the smart contract controlling rate will automatically adjust the ratio, so each pool’s value is equal. Let’s divide 73 by 13, which results in the new ratio of 5.61 grapes per watermelon. This new ratio ensures a 50/50 ratio for both currencies in our liquidity pool.

### **Why Use a Fixed Swap Pool?**

Fixed swap pools solve three main challenges: .

1\) Lack of control mechanisms. Unfair token distribution and liquidity rug pulls&#x20;

2\) Prevent token dumps by private investors&#x20;

3\) Reduce token offering costs

As we can see, each time we swap with the liquidity pool, the rate changes. As projects try to launch their token via AMM liquidity pools, a popular token’s price can rapidly increase when plenty of investors buy it. This price increase is caused by the [bonding curve model](https://yos.io/2018/11/10/bonding-curves/#:~:text=A%20bonding%20curve%20is%20a,supply%20of%20the%20token%20increases.) that liquidity pools implement.

For that reason, a fixed swap pool sets a fixed price for token swaps. Projects who want to use the Initial DEX Offering (IDO) model know precisely how much money they’ve raised and how many tokens they’ve sold. They know that their fresh community of token holders has paid a fair price. Conversely, the new token holders can be confident that the value they have contributed will go directly to the development of the project.


# What are the benefits of Fixed Swaps?

### Amount raised + quantity of tokens sold is known

By ensuring a fixed exchange rate, investors as well know exactly how much they are paying for and how much they are getting. That allows smart investors to accurately calculate their cost basis in order to make better informed investment decisions in the future. This is completely different to the IDO model where the amount of tokens sold varies greatly alongside price volatility.

### Wide distribution of token holders

Having a large number of token holders, distributed geographically and demographically, is a key advantage to have as a token project. Many centralised exchanges will look at the amount and location of token holders as key indicators of whether or not to list a project. Fixed token swap pools can help to ensure that more investors are able to get in on an investment opportunity.

### Fair price

At Polkastarter, we firmly believe that funds raised belong to the project. Alternatively, interested token holders should be given every opportunity to acquire tokens they desire at a reasonable price without having to “ape” into them.

That’s why at Polkastarter we created fixed swap pools supported by our multi-chain infrastructure.


# Polkastarter’s NFT Sales Platform

Today, we primarily associate NFTs as digital art, virtual land and in-game assets. The gaming industry has seen an explosion in NFTs since it not only encapsulates the metaverse, but games bring a wealth of opportunities in the form of in-game assets. The NFT capabilities within the gaming space are endless.

### How do NFT sales work on Polkastarter?

Initially positioned as a fixed swap pool platform supporting IDOs and with the market obviously moving at pace in 2021, Polkastarter reacted to demands for NFT sales. Much like fixed swap pools, NFTs can be launched on Polkastarter at a fixed price, with limited supply and with various allocations amounts.

This is hugely beneficial, because projects can create multiple NFT categories at different prices which reflect scarcity. The user can choose multiple NFTs and check out using their wallet, a bit like an ecommerce experience.

The technological process is much the same as an IDO, but what happens after users have allocated funds towards their NFTs.

After an NFT sale, NFTs need to be minted. This means converting the digital files into crypto collections or digital assets on the blockchain. Minting happens on a project’s own website. Users will get invited to claim their NFTs either via an airdropped ERC20 token or simply verified by connecting their wallet.

Polkastarter plans to integrate a native minting process in 2022.


# Polkastarter Gaming

We launched the [Polkastarter Gaming Guild](https://polkastarter.gg/) with the purpose of supporting our partnered GameFi projects with the rising popularity of play-to-earn games.

Polkastarter Gaming connects GameFi projects and gaming enthusiasts around the globe. With our portfolio of top blockchain games, we’ve managed to grow a community of over 70,000+ players on discord and 30,000+ Twitter followers in 3 months of purely organic growth.

Polkastarter has launched a $2 million fund to support up-and-coming gaming & Metaverse projects, with the Polkastarter Gaming Guild being established to provide scholarships to onboard new players into the ecosystem.

The guild, among the first to directly launch and incubate games, such as WonderHero, has received over 4,000+ scholarship program applications, with 200+ active scholars playing since its launch in December with plans to scale & expand by partnering with the next generation of games including BigTime, Mobland, Blockchain Monster Hunt, Thetan Arena, The Wasted Lands, CyBall among many others.

### How does the Polkastarter Gaming Guild work?

You can think of a guild like an Esports team. Currently, these guilds are very integral to the blockchain gaming space as they lower barriers to entry by taking on the upfront costs in return for a split earnings commission rate.

We started PGG to do exactly that, while boasting one of the highest player-centric commission rates in the entire space reaching up to 80-90% in favour of the players.

Gaming is evolving and blockchain is sure to be at the epicentre of the major changes coming its way. There's a lot of interest in GameFi which helps with early mass adoption because you'll onboard way more people.

Arguably, a properly managed guild is the best investor for a game. They're the ones buying, holding, and using your assets in-game. Whereas the average investor just want to sell your assets for profit, often without ever trying your game.

As a guild, we’re typically very invested in the growth and development of the games we partner with, and we offer support beyond player onboarding through marketing promotion, AMAs with founders, content creation, themed community events, tournaments and so much more.

Guilds are an integral part of the current blockchain gaming ecosystem as they offer a perfect target audience for games, with the spending power necessary to onboard hundreds if not thousands of players into games.

At Polkastarter Gaming Guild, our mission is to continue to empower players to play and earn, support GameFi projects by onboarding players into their games and help grow the entire blockchain gaming ecosystem to take it from its current “play-to-earn” state, to a much more game-focused “play-and-earn” state with higher quality games and more crypto savvy players.


# What is the POLS Token Utility?

Polkastarter's native token currently has two main utilities:

### **1) POLS Power Staking for Pool Access**

POLS Power determines your chance of participating in an IDO and NFT sale. Think of it as an accelerator, it calculates a user's eligible POLS balance across the platform, both POLS held in their wallet and POLS they are staking.

To gain access to an IDO, users need to get their wallet addresses on the "allowlist". It’s a lottery system that rewards users 1 ticket for every 250 POLS. During an IDO, addresses are chosen at random. More tickets will increase a user's chances of being selected for the allowlist. In addition, the more POLS they either hold or stake, the higher the value of their tickets.

There are 5 tiers of POLS Power, which can increase the value of each ticket by up to 25%. The top tier (30,000+ POLS) will also grant users the “No Cooldown” status, meaning they can participate in as many IDOs as they wish without the 7 day Cooldown, provided they pass KYC.

**How to gain POLS Power?**

Hold POLS in a wallet: this is the easiest way to accumulate POLS Power. You can buy POLS from crypto exchanges like Binance, Coinbase, Kraken, KuCoin, or on DEXes like Uniswap, to later transfer them to your Metamask wallet. POLS tokens need to be held in your wallet, without moving or selling them, for at least 7 days before counting towards POLS Power.

Stake POLS: if you would rather stake your POLS, you can do so on the Ethereum or BNB chains. This will not only increase your POLS Power, but it will also grant you immediate access to all open and future IDO applications. The staked tokens will be locked on-chain for 7 days before they can be withdrawn.

### **2) Staking for Pool Access**&#x20;

As mentioned above, POLS staking is a fantastic way to increase your POLS power, not only because you don't need to stake them for a minimum of 7 days, but also because they grant you immediate access to current and future IDO applications. You can do this directly from the Polkastarter website by visiting the dashboard and connecting your wallet.

Please note that pool creators can limit pool access exclusively to POLS holders if they so wish. They can also offer different allocation amounts rewarding larger POLS holders within them.

For instance, if community members want access to certain token pools, they must stake POLS tokens. Token pool creators have full autonomy over this process. For projects that use the Polkastarter platform, our goal is to craft diverse token holder communities loyal to the project and invested in its long-term success.

Now you know more about the POLS token utility, you can read more on how to apply to a sale [here](https://blog.polkastarter.com/polkastarter-ido-guide/), or how to buy some for yourself [here](https://blog.polkastarter.com/how-to-buy-pols/).


# What are the Tokenomics?

Let’s look back to when $POLS launched and assess the tokenomics associated with it.

### Private-Sale Structure ($POLS)

![](https://lh5.googleusercontent.com/dBuJIil94f92YNJzitSbkil-KAzelf7AFuUo6MEiOW2AmpU9rQnJ-jRCpGM2D6mUv3J74_sAomHTPkfoPs-WpaGw0Bb5nl2rpPf029z2RWC3KX18O6-LBTCRng77fkKh5u7xpLiPv9IsDNdL)

### Sale Details

* Total supply: 100M POLS&#x20;
* Initial circ supply: 17.875M POLS&#x20;
* Seed sale price: $0.0125 USD&#x20;
* Private sale price: $0.025 USD&#x20;
* Uniswap listing price: $0.05 USD&#x20;
* Total amount raised: 875,000 USD&#x20;
* Total POLS sold: 42.5M (42.5% of the total supply)

### Market Cap&#x20;

* Seed sale: Initial mcap of $223.43k USD, fully diluted mcap of $1.25M USD.&#x20;
* Private sale: Initial mcap of $446.87k USD, fully diluted mcap of $2.5M USD.&#x20;
* Uniswap listing: Initial mcap of $893.75k USD, fully diluted mcap of $5M USD.&#x20;
* Initial Uniswap Liquidity: 200k USD&#x20;

### Token Distribution and Allocation

Polkastarter only raised the most necessary funds to get the Product Development going and to give the POLS token the right kickstart in terms of Liquidity, Exchange listings and Marketing.

While all Team, Advisor and Foundational tokens were locked for at least 1 year, the rest of the tokens were allocated to the Token Sale, as well as to Liquidity Provision and Marketing actions.

<figure><img src="/files/PUpbKLZr9u2Kj97NY19j" alt=""><figcaption></figcaption></figure>

### **Token Release Schedule**

![](https://lh6.googleusercontent.com/srGHtj-5Zz4-q2qFnrwkN1OX74KopYNuiRu4IYKeh51j0CnKEH5NbGYmymchHvu6LjHFwIdq9jeRfRGEZpdyZUULPgd4_2z3lChZK2z6Vi8OJZvUWU4vEfWf73dViepZuPLxHnnyl_pu88V3)

Release details Seed: 20% unlocked before listing, then 10% monthly over 8 months. Private: 25% unlocked before listing, then 25% monthly over 3 months Liquidity: 22.22% unlocked before listing, then 8.88% monthly over 5 months, then 6.67% monthly over 1 month, then 4.44% monthly over 6 months Marketing: 20% unlocked before listing, then 6.67% monthly over 12 months

### How did POLS perform after  IDO?

The $POLS token launched on 29th September 2020. Only 5 months later it reached an all time high of $7.61 as recorded by Crypto Rank on 16th February 2021. The POLS token is now listed on over 52 exchanges including [Binance](https://www.binance.com/en), [Kraken](https://www.kraken.com/) and [Coinbase](https://www.coinbase.com/) and traded in 30 markets.


# Introduction

The Polkastarter SDK exists to help developers build on top of Polkastarter. It's designed to run in any environment that can execute JavaScript (think websites, node scripts, mobile apps etc.). While simple enough to use in a hackathon project, it's also robust enough to power production applications.

## Installations

The easiest way to consume the SDK is via npm. To install it in your project, simply run `yarn add polkastarter-js` (or `npm install polkastarter-js`).

## Usage

To run code from the SDK in your application, use an `import` or `require` statement, depending on which your environment supports. Note that the guides following this page will use ES6 syntax.

### ES6 (import)

```typescript
import Application from 'polkastarter-js/src/models';
var app = new Application({mainnet: false});

let poolContract = app.getFixedSwapContract({ contractAddress : "0x.." });
poolContract.__init__();
await poolContract.assertERC20Info();

let res = await poolContract.isOpen();
console.log("Pool is Open ?", res);
```

```typescript
const Application = require('polkastarter-js/src/models';
var app = new Application({mainnet: false});

let poolContract = app.getFixedSwapContract({ contractAddress : "0x.." });
poolContract.__init__();
await poolContract.assertERC20Info();

let res = await poolContract.isOpen();
console.log("Pool is Open ?", res);
```

## Reference

Comprehensive reference material for the SDK is available here.


# API

## FixedSwapContract

**Kind**: global class<br>

### new FixedSwapContract(web3, tokenAddress, decimals, contractAddress)

Fixed Swap Object

| Param           | Type      | Description |
| --------------- | --------- | ----------- |
| web3            | `Web3`    |             |
| tokenAddress    | `Address` |             |
| decimals        | `Integer` |             |
| contractAddress | `Address` | ? (opt)     |

## setNewOwner(address)

Set New Owner of the Contract

**Kind**: global function

| Param   | Type     |
| ------- | -------- |
| address | `string` |

## owner() ⇒ `string`

Get Owner of the Contract

**Kind**: global function\
**Returns**: `string` - address<br>

## isPaused() ⇒ `boolean`

Get Owner of the Contract

**Kind**: global function<br>

## pauseContract() ⇒ `admin`

Pause Contract

**Kind**: global function<br>

## erc20() ⇒ `Address`

Get Token Address

**Kind**: global function\
**Returns**: `Address` - Token Address<br>

## decimals() ⇒ `Integer`

Get Decimals

**Kind**: global function\
**Returns**: `Integer` - Integer<br>

## unpauseContract() ⇒ `admin`

Unpause Contract

**Kind**: global function<br>

## tradeValue() ⇒ `Integer`

Get swapratio for the pool

**Kind**: global function\
**Returns**: `Integer` - trade value against ETH<br>

## startDate() ⇒ `Date`

Get Start Date of Pool

**Kind**: global function<br>

## endDate() ⇒ `Date`

Get End Date of Pool

**Kind**: global function<br>

## isFinalized() ⇒ `Boolean`

To see if contract was finalized

**Kind**: global function<br>

## individualMinimumAmount() ⇒ `Integer`

Get Individual Minimum Amount for each address

**Kind**: global function<br>

## individualMaximumAmount() ⇒ `Integer`

Get Individual Maximum Amount for each address

**Kind**: global function<br>

## minimumRaiseAchieved() ⇒ `Boolean`

Was Minimum Raise Achieved

**Kind**: global function<br>

## minimumRaise() ⇒ `Integer`

Get Minimum Raise amount for Token Sale

**Kind**: global function\
**Returns**: `Integer` - Amount in Tokens<br>

## tokensAllocated() ⇒ `Integer`

Get Total tokens Allocated already, therefore the tokens bought until now

**Kind**: global function\
**Returns**: `Integer` - Amount in Tokens<br>

## tokensForSale() ⇒ `Integer`

Get Total tokens Allocated/In Sale for the Pool

**Kind**: global function\
**Returns**: `Integer` - Amount in Tokens<br>

## hasMinimumRaise() ⇒ `Boolea`

See if hasMinimumRaise

**Kind**: global function<br>

## minimumReached() ⇒ `Integer`

See if minimumRaise was Reached

**Kind**: global function<br>

## tokensAvailable() ⇒ `Integer`

Get Total tokens owned by the Pool

**Kind**: global function\
**Returns**: `Integer` - Amount in Tokens<br>

## tokensLeft() ⇒ `Integer`

Get Total tokens available to be sold in the pool

**Kind**: global function\
**Returns**: `Integer` - Amount in Tokens<br>

## withdrawableUnsoldTokens() ⇒ `Integer`

Get Total tokens available to be withdrawn by the admin

**Kind**: global function\
**Returns**: `Integer` - Amount in Tokens<br>

## withdrawableFunds() ⇒ `Integer`

Get Total funds raised to be withdrawn by the admin

**Kind**: global function\
**Returns**: `Integer` - Amount in ETH<br>

## isTokenSwapAtomic() ⇒ `Boolean`

Verify if the Token Swap is atomic on this pool

**Kind**: global function<br>

## hasWhitelisting() ⇒ `Boolean`

Verify if swap has whitelisting

**Kind**: global function<br>

## isWhitelisted() ⇒ `Boolean`

Verify if address is whitelisted

**Kind**: global function<br>

## wereUnsoldTokensReedemed() ⇒ `Boolean`

Verify if the admin already reemeded unsold tokens

**Kind**: global function<br>

## isFunded() ⇒ `Boolean`

Verify if the Token Sale is Funded with all Tokens proposed in tokensForSale

**Kind**: global function<br>

## isOpen() ⇒ `Boolean`

Verify if the Token Sale is Open for Swap

**Kind**: global function<br>

## hasStarted() ⇒ `Boolean`

Verify if the Token Sale has started the Swap

**Kind**: global function<br>

## hasFinalized() ⇒ `Boolean`

Verify if the Token Sale has finalized, if the current date is after endDate

**Kind**: global function<br>

## isPreStart() ⇒ `Boolean`

Verify if the Token Sale in not open yet, where the admin can fund the pool

**Kind**: global function<br>

## getPurchase(purchase\_id) ⇒ `Integer` | `Integer` | `Address` | `Integer` | `Date` | `Boolean` | `Boolean`

Get Purchase based on ID

**Kind**: global function\
**Returns**: `Integer` - \_id`Integer` - amount`Address` - purchaser`Integer` - ethAmount`Date` - timestamp`Boolean` - wasFinalized`Boolean` - reverted

| Param        | Type      |
| ------------ | --------- |
| purchase\_id | `Integer` |

## getWhiteListedAddresses() ⇒ `Array` | `Address`

Get Whitelisted Addresses

**Kind**: global function\
**Returns**: `Array` | `Address` - addresses<br>

## getBuyers() ⇒ `Array` | `Integer`

Get Buyers

**Kind**: global function\
**Returns**: `Array` | `Integer` - \_ids<br>

## getPurchaseIds() ⇒ `Array` | `Integer`

Get All Purchase Ids

**Kind**: global function\
**Returns**: `Array` | `Integer` - \_ids<br>

## getPurchaseIds(address) ⇒ `Array` | `Integer`

Get All Purchase Ids filter by Address/Purchaser

**Kind**: global function\
**Returns**: `Array` | `Integer` - \_ids

| Param   | Type      |
| ------- | --------- |
| address | `Address` |

## getETHCostFromTokens(tokenAmount) ⇒ `Integer`

Get ETH Cost from Tokens Amount

**Kind**: global function\
**Returns**: `Integer` - ethAmount

| Param       | Type      |
| ----------- | --------- |
| tokenAmount | `Integer` |

## swap(tokenAmount)

Swap tokens by Ethereum

**Kind**: global function

| Param       | Type      |
| ----------- | --------- |
| tokenAmount | `Integer` |

## redeemTokens(purchase\_id)

Reedem tokens bought

**Kind**: global function

| Param        | Type      |
| ------------ | --------- |
| purchase\_id | `Integer` |

## redeemGivenMinimumGoalNotAchieved(purchase\_id)

Reedem Ethereum from sale that did not achieve minimum goal

**Kind**: global function

| Param        | Type      |
| ------------ | --------- |
| purchase\_id | `Integer` |

## withdrawUnsoldTokens()

Withdraw unsold tokens of sale

**Kind**: global function<br>

## withdrawFunds()

Withdraw all funds from tokens sold

**Kind**: global function<br>

## approveFundERC20()

Approve the pool to use approved tokens for sale

**Kind**: global function<br>

## isApproved(tokenAmount, address) ⇒ `Boolean`

Verify if the Admin has approved the pool to use receive the tokens for sale

**Kind**: global function

| Param       | Type      |
| ----------- | --------- |
| tokenAmount | `Integer` |
| address     | `Address` |

## fund(tokenAmount)

Send tokens to pool for sale, fund the sale

**Kind**: global function

| Param       | Type      |
| ----------- | --------- |
| tokenAmount | `Integer` |

## addWhitelistedAddress(Addresses)

add WhiteListed Address

**Kind**: global function

| Param     | Type                   |
| --------- | ---------------------- |
| Addresses | `Array` \| `Addresses` |

## removeWhitelistedAddress()

remove WhiteListed Address

**Kind**: global function<br>

## safePull()

Safe Pull all tokens & ETH

**Kind**: global function<br>

## removeOtherERC20Tokens(tokenAddress, toAddress)

Remove Tokens from other ERC20 Address (in case of accident)

**Kind**: global function

| Param        | Type      |
| ------------ | --------- |
| tokenAddress | `Address` |
| toAddress    | `Address` |

## deploy()

Deploy the Pool Contract

**Kind**: global function<br>

## getOwner(Address)

Get owner address of contract

**Kind**: global function

| Param   | Type      |
| ------- | --------- |
| Address | `Address` |

## getBalance(Balance)

Get Balance of Contract

**Kind**: global function

| Param   | Type      |
| ------- | --------- |
| Balance | `Integer` |


