@lumina-dex/contracts
Version:
Contracts for Lumina DEX.
26 lines (23 loc) • 805 B
text/typescript
import { PublicKey, State } from "o1js"
/**
* Data needed by pool and pool token
*/
export interface IPool {
token0: State<PublicKey>
token1: State<PublicKey>
poolFactory: State<PublicKey>
}
/**
* Check if token is in order and don't be empty
* @param pool pool data
* @param isMinaPool is mina/token pool
* @returns true if correct
*/
export function checkToken(pool: IPool, isMinaPool: boolean): [PublicKey, PublicKey] {
const token0 = pool.token0.getAndRequireEquals()
const token1 = pool.token1.getAndRequireEquals()
// token 0 need to be empty on mina pool
token0.equals(PublicKey.empty()).assertEquals(isMinaPool, isMinaPool ? "Not a mina pool" : "Invalid token 0 address")
token1.equals(PublicKey.empty()).assertFalse("Invalid token 1 address")
return [token0, token1]
}