Deploying HIP-1 and HIP-2 assets
The API for deploying HIP-1 and HIP-2 assets is a five-step process which involves sending the 5 variants of the enum in the order below.
type SpotDeployAction =
| {
type: "spotDeploy";
registerToken2: RegisterToken2;
}
| {
type: "spotDeploy";
userGenesis: UserGenesis;
}
| {
type: "spotDeploy";
genesis: Genesis;
}
| {
type: "spotDeploy";
registerSpot: RegisterSpot;
}
| {
type: "spotDeploy";
registerHyperliquidity: RegisterHyperliquidity;
};
type RegisterToken2 = {
spec: TokenSpec;
maxGas: number;
fullName?: string;
}
type TokenSpec = {
name: string,
szDecimals: number,
weiDecimals: number,
}
/**
* UserGenesis can be called multiple times
* @param token - The token involved in the genesis.
* @param userAndWei - A list of tuples of user address and genesis amount (wei).
* @param existingTokenAndWei - A list of tuples of existing token and total genesis amount for holders of that token (wei).
* @param blacklistUsers - A list of tuples of users and blacklist status (True if blacklist, False to remove existing blacklisted user).
*/
type UserGenesis = {
token: number;
userAndWei: Array<[string, string]>;
existingTokenAndWei: Array<[number, string]>;
blacklistUsers?: Array<[string, boolean]>;
}
/**
* Genesis denotes the initial creation of a token with a maximum supply.
* @param maxSupply - Checksum ensureing all calls to UserGenesis succeeded
* @param noHyperliquidity - Set hyperliquidity balance to 0.
*/
type Genesis = {
token: number;
maxSupply: string;
noHyperliquidity?: boolean;
}
/**
* @param tokens - [base index, quote index]
*/
type RegisterSpot = {
tokens: [number, number];
}
/**
* @param spot - The spot index (different from base token index)
* @param startPx - The starting price.
* @param orderSz - The size of each order (float, not wei)
* @param nOrders - The number of orders. If "noHyperliquidity" was set to True, then this must be 0.
* @param nSeededLevels - The number of levels the deployer wishes to seed with usdc instead of tokens.
*/
type RegisterHyperliquidity = {
spot: number;
startPx: string;
orderSz: string;
nOrders: number;
nSeededLevels?: number;
}
/**
* This is an optional action that can be performed at any time after
* RegisterToken2. While the fee share defaults to 100%, this action
* can be resent multiple times as long as the fee share is not increasing.
* @param token - The token
* @param share - The deployer trading fee share. Range: ["0%", "100%"]. Examples: "0.012%", "99.4%"
*/
type SetDeployerTradingFeeShare {
token: number;
share: string;
}
Last updated