@beluswap/sdk 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +56 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +53 -0
- package/dist/config.js.map +1 -0
- package/dist/converters.d.ts +29 -0
- package/dist/converters.d.ts.map +1 -0
- package/dist/converters.js +77 -0
- package/dist/converters.js.map +1 -0
- package/dist/factory.d.ts +14 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +106 -0
- package/dist/factory.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/pool.d.ts +45 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +166 -0
- package/dist/pool.js.map +1 -0
- package/dist/sdk.d.ts +26 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +49 -0
- package/dist/sdk.js.map +1 -0
- package/dist/types.d.ts +148 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +2 -2
- package/src/factory.ts +6 -1
- package/src/index.ts +2 -2
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export declare const BELUGA_CONFIG: {
|
|
2
|
+
readonly STROOPS_DECIMALS: 7;
|
|
3
|
+
readonly STROOPS_MULTIPLIER: 10000000;
|
|
4
|
+
readonly Q64: bigint;
|
|
5
|
+
readonly ONE_X64: bigint;
|
|
6
|
+
readonly MIN_TICK: -887272;
|
|
7
|
+
readonly MAX_TICK: 887272;
|
|
8
|
+
readonly TICK_BASE: 1.0001;
|
|
9
|
+
readonly FEE_TIERS: {
|
|
10
|
+
readonly STABLE: {
|
|
11
|
+
readonly name: "STABLE";
|
|
12
|
+
readonly bps: 5;
|
|
13
|
+
readonly spacing: 10;
|
|
14
|
+
readonly percent: 0.05;
|
|
15
|
+
readonly description: "For stablecoin pairs (0.05% fee)";
|
|
16
|
+
};
|
|
17
|
+
readonly VOLATILE: {
|
|
18
|
+
readonly name: "VOLATILE";
|
|
19
|
+
readonly bps: 30;
|
|
20
|
+
readonly spacing: 60;
|
|
21
|
+
readonly percent: 0.3;
|
|
22
|
+
readonly description: "For volatile pairs (0.30% fee)";
|
|
23
|
+
};
|
|
24
|
+
readonly EXOTIC: {
|
|
25
|
+
readonly name: "EXOTIC";
|
|
26
|
+
readonly bps: 100;
|
|
27
|
+
readonly spacing: 200;
|
|
28
|
+
readonly percent: 1;
|
|
29
|
+
readonly description: "For exotic/meme pairs (1.00% fee)";
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
readonly MIN_LOCK_DURATION_LEDGERS: 120960;
|
|
33
|
+
readonly MIN_INITIAL_LIQUIDITY: 1000000;
|
|
34
|
+
readonly MIN_CREATOR_FEE_BPS: 10;
|
|
35
|
+
readonly MAX_CREATOR_FEE_BPS: 1000;
|
|
36
|
+
readonly MAX_SLIPPAGE_BPS: 5000;
|
|
37
|
+
};
|
|
38
|
+
export type FeeTier = keyof typeof BELUGA_CONFIG.FEE_TIERS;
|
|
39
|
+
export interface NetworkConfig {
|
|
40
|
+
rpcUrl: string;
|
|
41
|
+
networkPassphrase: string;
|
|
42
|
+
name?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare const NETWORKS: {
|
|
45
|
+
readonly TESTNET: {
|
|
46
|
+
readonly rpcUrl: "https://soroban-testnet.stellar.org";
|
|
47
|
+
readonly networkPassphrase: "Test SDF Network ; September 2015";
|
|
48
|
+
readonly name: "Testnet";
|
|
49
|
+
};
|
|
50
|
+
readonly MAINNET: {
|
|
51
|
+
readonly rpcUrl: "https://soroban-mainnet.stellar.org";
|
|
52
|
+
readonly networkPassphrase: "Public Global Stellar Network ; September 2015";
|
|
53
|
+
readonly name: "Mainnet";
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ChB,CAAC;AAKX,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,aAAa,CAAC,SAAS,CAAC;AAK3D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,eAAO,MAAM,QAAQ;;;;;;;;;;;CAWX,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NETWORKS = exports.BELUGA_CONFIG = void 0;
|
|
4
|
+
exports.BELUGA_CONFIG = {
|
|
5
|
+
STROOPS_DECIMALS: 7,
|
|
6
|
+
STROOPS_MULTIPLIER: 10000000,
|
|
7
|
+
Q64: BigInt(2) ** BigInt(64),
|
|
8
|
+
ONE_X64: BigInt(2) ** BigInt(64),
|
|
9
|
+
MIN_TICK: -887272,
|
|
10
|
+
MAX_TICK: 887272,
|
|
11
|
+
TICK_BASE: 1.0001,
|
|
12
|
+
FEE_TIERS: {
|
|
13
|
+
STABLE: {
|
|
14
|
+
name: 'STABLE',
|
|
15
|
+
bps: 5,
|
|
16
|
+
spacing: 10,
|
|
17
|
+
percent: 0.05,
|
|
18
|
+
description: 'For stablecoin pairs (0.05% fee)',
|
|
19
|
+
},
|
|
20
|
+
VOLATILE: {
|
|
21
|
+
name: 'VOLATILE',
|
|
22
|
+
bps: 30,
|
|
23
|
+
spacing: 60,
|
|
24
|
+
percent: 0.30,
|
|
25
|
+
description: 'For volatile pairs (0.30% fee)',
|
|
26
|
+
},
|
|
27
|
+
EXOTIC: {
|
|
28
|
+
name: 'EXOTIC',
|
|
29
|
+
bps: 100,
|
|
30
|
+
spacing: 200,
|
|
31
|
+
percent: 1.00,
|
|
32
|
+
description: 'For exotic/meme pairs (1.00% fee)',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
MIN_LOCK_DURATION_LEDGERS: 120960,
|
|
36
|
+
MIN_INITIAL_LIQUIDITY: 1000000,
|
|
37
|
+
MIN_CREATOR_FEE_BPS: 10,
|
|
38
|
+
MAX_CREATOR_FEE_BPS: 1000,
|
|
39
|
+
MAX_SLIPPAGE_BPS: 5000,
|
|
40
|
+
};
|
|
41
|
+
exports.NETWORKS = {
|
|
42
|
+
TESTNET: {
|
|
43
|
+
rpcUrl: 'https://soroban-testnet.stellar.org',
|
|
44
|
+
networkPassphrase: 'Test SDF Network ; September 2015',
|
|
45
|
+
name: 'Testnet',
|
|
46
|
+
},
|
|
47
|
+
MAINNET: {
|
|
48
|
+
rpcUrl: 'https://soroban-mainnet.stellar.org',
|
|
49
|
+
networkPassphrase: 'Public Global Stellar Network ; September 2015',
|
|
50
|
+
name: 'Mainnet',
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;AAMa,QAAA,aAAa,GAAG;IAE3B,gBAAgB,EAAE,CAAC;IACnB,kBAAkB,EAAE,QAAU;IAG9B,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC;IAGhC,QAAQ,EAAE,CAAC,MAAM;IACjB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IAGjB,SAAS,EAAE;QACT,MAAM,EAAE;YACN,IAAI,EAAE,QAAiB;YACvB,GAAG,EAAE,CAAC;YACN,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,kCAAkC;SAChD;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,UAAmB;YACzB,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,gCAAgC;SAC9C;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAiB;YACvB,GAAG,EAAE,GAAG;YACR,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,mCAAmC;SACjD;KACF;IAGD,yBAAyB,EAAE,MAAO;IAClC,qBAAqB,EAAE,OAAS;IAChC,mBAAmB,EAAE,EAAE;IACvB,mBAAmB,EAAE,IAAI;IACzB,gBAAgB,EAAE,IAAI;CACd,CAAC;AAmBE,QAAA,QAAQ,GAAG;IACtB,OAAO,EAAE;QACP,MAAM,EAAE,qCAAqC;QAC7C,iBAAiB,EAAE,mCAAmC;QACtD,IAAI,EAAE,SAAS;KAChB;IACD,OAAO,EAAE;QACP,MAAM,EAAE,qCAAqC;QAC7C,iBAAiB,EAAE,gDAAgD;QACnE,IAAI,EAAE,SAAS;KAChB;CACO,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare class PriceConverter {
|
|
2
|
+
static toSqrtPrice(price: number): bigint;
|
|
3
|
+
static fromSqrtPrice(sqrtPriceX64: bigint): number;
|
|
4
|
+
static format(sqrtPriceX64: bigint, decimals?: number): string;
|
|
5
|
+
}
|
|
6
|
+
export declare class TickConverter {
|
|
7
|
+
static priceToTick(price: number): number;
|
|
8
|
+
static tickToPrice(tick: number): number;
|
|
9
|
+
static align(tick: number, spacing: number): number;
|
|
10
|
+
static createRange(lowerPrice: number, upperPrice: number, spacing: number): {
|
|
11
|
+
lowerTick: number;
|
|
12
|
+
upperTick: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare class AmountConverter {
|
|
16
|
+
static toStroops(amount: number): bigint;
|
|
17
|
+
static fromStroops(stroops: bigint | number): number;
|
|
18
|
+
static format(stroops: bigint | number, decimals?: number): string;
|
|
19
|
+
static formatWithSymbol(stroops: bigint | number, symbol: string, decimals?: number): string;
|
|
20
|
+
}
|
|
21
|
+
export declare class FeeConverter {
|
|
22
|
+
static percentToBps(percent: number): number;
|
|
23
|
+
static bpsToPercent(bps: number): number;
|
|
24
|
+
}
|
|
25
|
+
export declare class TimeConverter {
|
|
26
|
+
static daysToLedgers(days: number): number;
|
|
27
|
+
static ledgersToDays(ledgers: number): number;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=converters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converters.d.ts","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":"AAQA,qBAAa,cAAc;IAIzB,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IASzC,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAQlD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM;CAIlE;AAKD,qBAAa,aAAa;IAIxB,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAQzC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOxC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAOnD,MAAM,CAAC,WAAW,CAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;CAM5C;AAKD,qBAAa,eAAe;IAI1B,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAOxC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IAQpD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM;IAQrE,MAAM,CAAC,gBAAgB,CACrB,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAU,GACnB,MAAM;CAGV;AAKD,qBAAa,YAAY;IAIvB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAO5C,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGzC;AAKD,qBAAa,aAAa;IAIxB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQ1C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAG9C"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TimeConverter = exports.FeeConverter = exports.AmountConverter = exports.TickConverter = exports.PriceConverter = void 0;
|
|
4
|
+
const config_1 = require("./config");
|
|
5
|
+
class PriceConverter {
|
|
6
|
+
static toSqrtPrice(price) {
|
|
7
|
+
if (price <= 0)
|
|
8
|
+
throw new Error("Price must be positive");
|
|
9
|
+
const sqrtPrice = Math.sqrt(price);
|
|
10
|
+
return BigInt(Math.floor(sqrtPrice * Number(config_1.BELUGA_CONFIG.Q64)));
|
|
11
|
+
}
|
|
12
|
+
static fromSqrtPrice(sqrtPriceX64) {
|
|
13
|
+
const sqrtPrice = Number(sqrtPriceX64) / Number(config_1.BELUGA_CONFIG.Q64);
|
|
14
|
+
return sqrtPrice * sqrtPrice;
|
|
15
|
+
}
|
|
16
|
+
static format(sqrtPriceX64, decimals = 6) {
|
|
17
|
+
const price = this.fromSqrtPrice(sqrtPriceX64);
|
|
18
|
+
return price.toFixed(decimals);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.PriceConverter = PriceConverter;
|
|
22
|
+
class TickConverter {
|
|
23
|
+
static priceToTick(price) {
|
|
24
|
+
if (price <= 0)
|
|
25
|
+
throw new Error("Price must be positive");
|
|
26
|
+
return Math.floor(Math.log(price) / Math.log(config_1.BELUGA_CONFIG.TICK_BASE));
|
|
27
|
+
}
|
|
28
|
+
static tickToPrice(tick) {
|
|
29
|
+
return Math.pow(config_1.BELUGA_CONFIG.TICK_BASE, tick);
|
|
30
|
+
}
|
|
31
|
+
static align(tick, spacing) {
|
|
32
|
+
return Math.floor(tick / spacing) * spacing;
|
|
33
|
+
}
|
|
34
|
+
static createRange(lowerPrice, upperPrice, spacing) {
|
|
35
|
+
return {
|
|
36
|
+
lowerTick: this.align(this.priceToTick(lowerPrice), spacing),
|
|
37
|
+
upperTick: this.align(this.priceToTick(upperPrice), spacing),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.TickConverter = TickConverter;
|
|
42
|
+
class AmountConverter {
|
|
43
|
+
static toStroops(amount) {
|
|
44
|
+
return BigInt(Math.floor(amount * config_1.BELUGA_CONFIG.STROOPS_MULTIPLIER));
|
|
45
|
+
}
|
|
46
|
+
static fromStroops(stroops) {
|
|
47
|
+
const stroopsNum = typeof stroops === 'bigint' ? Number(stroops) : stroops;
|
|
48
|
+
return stroopsNum / config_1.BELUGA_CONFIG.STROOPS_MULTIPLIER;
|
|
49
|
+
}
|
|
50
|
+
static format(stroops, decimals = 7) {
|
|
51
|
+
const amount = this.fromStroops(stroops);
|
|
52
|
+
return amount.toFixed(decimals);
|
|
53
|
+
}
|
|
54
|
+
static formatWithSymbol(stroops, symbol, decimals = 7) {
|
|
55
|
+
return `${this.format(stroops, decimals)} ${symbol}`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.AmountConverter = AmountConverter;
|
|
59
|
+
class FeeConverter {
|
|
60
|
+
static percentToBps(percent) {
|
|
61
|
+
return Math.floor(percent * 100);
|
|
62
|
+
}
|
|
63
|
+
static bpsToPercent(bps) {
|
|
64
|
+
return bps / 100;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.FeeConverter = FeeConverter;
|
|
68
|
+
class TimeConverter {
|
|
69
|
+
static daysToLedgers(days) {
|
|
70
|
+
return Math.floor(days * 17280);
|
|
71
|
+
}
|
|
72
|
+
static ledgersToDays(ledgers) {
|
|
73
|
+
return ledgers / 17280;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.TimeConverter = TimeConverter;
|
|
77
|
+
//# sourceMappingURL=converters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converters.js","sourceRoot":"","sources":["../src/converters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SorobanRpc } from '@stellar/stellar-sdk';
|
|
2
|
+
import type { CreatePoolParams, CreatePoolResult, GetPoolParams } from './types';
|
|
3
|
+
export declare class BelugaFactorySDK {
|
|
4
|
+
private contractId;
|
|
5
|
+
private rpc;
|
|
6
|
+
private networkPassphrase;
|
|
7
|
+
private contract;
|
|
8
|
+
constructor(contractId: string, rpc: SorobanRpc.Server, networkPassphrase: string);
|
|
9
|
+
createPool(params: CreatePoolParams): Promise<CreatePoolResult>;
|
|
10
|
+
getPool(params: GetPoolParams): Promise<string | null>;
|
|
11
|
+
poolExists(params: GetPoolParams): Promise<boolean>;
|
|
12
|
+
getTotalPools(): Promise<number>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAMjF,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,iBAAiB;IAL3B,OAAO,CAAC,QAAQ,CAAW;gBAGjB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,UAAU,CAAC,MAAM,EACtB,iBAAiB,EAAE,MAAM;IAQ7B,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoG/D,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAiBtD,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnD,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAIvC"}
|
package/dist/factory.js
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BelugaFactorySDK = void 0;
|
|
4
|
+
const stellar_sdk_1 = require("@stellar/stellar-sdk");
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
const converters_1 = require("./converters");
|
|
7
|
+
class BelugaFactorySDK {
|
|
8
|
+
constructor(contractId, rpc, networkPassphrase) {
|
|
9
|
+
this.contractId = contractId;
|
|
10
|
+
this.rpc = rpc;
|
|
11
|
+
this.networkPassphrase = networkPassphrase;
|
|
12
|
+
this.contract = new stellar_sdk_1.Contract(contractId);
|
|
13
|
+
}
|
|
14
|
+
async createPool(params) {
|
|
15
|
+
const feeTier = config_1.BELUGA_CONFIG.FEE_TIERS[params.feeTier];
|
|
16
|
+
const feeBps = feeTier.bps;
|
|
17
|
+
const tickSpacing = feeTier.spacing;
|
|
18
|
+
const creatorFeeBps = converters_1.FeeConverter.percentToBps(params.creatorFeePercent);
|
|
19
|
+
if (creatorFeeBps < config_1.BELUGA_CONFIG.MIN_CREATOR_FEE_BPS ||
|
|
20
|
+
creatorFeeBps > config_1.BELUGA_CONFIG.MAX_CREATOR_FEE_BPS) {
|
|
21
|
+
throw new Error("Creator fee must be between 0.1% and 10%");
|
|
22
|
+
}
|
|
23
|
+
const initialSqrtPrice = converters_1.PriceConverter.toSqrtPrice(params.initialPrice);
|
|
24
|
+
const currentTick = converters_1.TickConverter.priceToTick(params.initialPrice);
|
|
25
|
+
const amount0Stroops = converters_1.AmountConverter.toStroops(params.amount0);
|
|
26
|
+
const amount1Stroops = converters_1.AmountConverter.toStroops(params.amount1);
|
|
27
|
+
if (amount0Stroops < config_1.BELUGA_CONFIG.MIN_INITIAL_LIQUIDITY ||
|
|
28
|
+
amount1Stroops < config_1.BELUGA_CONFIG.MIN_INITIAL_LIQUIDITY) {
|
|
29
|
+
throw new Error("Minimum amount is 0.1 tokens each");
|
|
30
|
+
}
|
|
31
|
+
const range = converters_1.TickConverter.createRange(params.priceRangeLower, params.priceRangeUpper, tickSpacing);
|
|
32
|
+
if (range.lowerTick >= range.upperTick) {
|
|
33
|
+
throw new Error("Lower price must be less than upper price");
|
|
34
|
+
}
|
|
35
|
+
let lockDuration;
|
|
36
|
+
if (params.permanent) {
|
|
37
|
+
lockDuration = 0;
|
|
38
|
+
}
|
|
39
|
+
else if (params.lockDurationDays) {
|
|
40
|
+
lockDuration = converters_1.TimeConverter.daysToLedgers(params.lockDurationDays);
|
|
41
|
+
if (lockDuration < config_1.BELUGA_CONFIG.MIN_LOCK_DURATION_LEDGERS) {
|
|
42
|
+
throw new Error("Minimum lock duration is 7 days");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
lockDuration = config_1.BELUGA_CONFIG.MIN_LOCK_DURATION_LEDGERS;
|
|
47
|
+
}
|
|
48
|
+
const contractParams = {
|
|
49
|
+
creator: params.creator,
|
|
50
|
+
params: {
|
|
51
|
+
token_a: params.tokenA,
|
|
52
|
+
token_b: params.tokenB,
|
|
53
|
+
fee_bps: feeBps,
|
|
54
|
+
creator_fee_bps: creatorFeeBps,
|
|
55
|
+
initial_sqrt_price_x64: initialSqrtPrice.toString(),
|
|
56
|
+
amount0_desired: amount0Stroops.toString(),
|
|
57
|
+
amount1_desired: amount1Stroops.toString(),
|
|
58
|
+
lower_tick: range.lowerTick,
|
|
59
|
+
upper_tick: range.upperTick,
|
|
60
|
+
lock_duration: lockDuration,
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
return {
|
|
64
|
+
summary: {
|
|
65
|
+
pair: `${params.tokenA}/${params.tokenB}`,
|
|
66
|
+
fee: `${feeTier.percent}%`,
|
|
67
|
+
creatorFee: `${params.creatorFeePercent}%`,
|
|
68
|
+
initialPrice: params.initialPrice,
|
|
69
|
+
priceRange: `${params.priceRangeLower} - ${params.priceRangeUpper}`,
|
|
70
|
+
amounts: `${params.amount0} + ${params.amount1}`,
|
|
71
|
+
lockDuration: params.permanent
|
|
72
|
+
? 'Permanent'
|
|
73
|
+
: `${params.lockDurationDays} days`,
|
|
74
|
+
},
|
|
75
|
+
contractParams,
|
|
76
|
+
technical: {
|
|
77
|
+
feeBps,
|
|
78
|
+
creatorFeeBps,
|
|
79
|
+
sqrtPriceX64: initialSqrtPrice.toString(),
|
|
80
|
+
currentTick,
|
|
81
|
+
tickSpacing,
|
|
82
|
+
lowerTick: range.lowerTick,
|
|
83
|
+
upperTick: range.upperTick,
|
|
84
|
+
amount0Stroops: amount0Stroops.toString(),
|
|
85
|
+
amount1Stroops: amount1Stroops.toString(),
|
|
86
|
+
lockDurationLedgers: lockDuration,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
async getPool(params) {
|
|
91
|
+
console.log('Contract ID:', this.contractId);
|
|
92
|
+
console.log('Using RPC:', this.rpc.serverURL);
|
|
93
|
+
console.log('Network:', this.networkPassphrase);
|
|
94
|
+
const _feeBps = config_1.BELUGA_CONFIG.FEE_TIERS[params.feeTier].bps;
|
|
95
|
+
throw new Error("Not implemented - add contract integration");
|
|
96
|
+
}
|
|
97
|
+
async poolExists(params) {
|
|
98
|
+
const pool = await this.getPool(params);
|
|
99
|
+
return pool !== null;
|
|
100
|
+
}
|
|
101
|
+
async getTotalPools() {
|
|
102
|
+
throw new Error("Not implemented - add contract integration");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.BelugaFactorySDK = BelugaFactorySDK;
|
|
106
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../src/factory.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { BelugaSwapSDK } from './sdk';
|
|
2
|
+
export { BelugaFactorySDK } from './factory';
|
|
3
|
+
export { BelugaPoolSDK } from './pool';
|
|
4
|
+
export { BELUGA_CONFIG } from './config';
|
|
5
|
+
export * from './types';
|
|
6
|
+
export * from './converters';
|
|
7
|
+
import { BelugaSwapSDK } from './sdk';
|
|
8
|
+
export default BelugaSwapSDK;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,eAAe,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.BELUGA_CONFIG = exports.BelugaPoolSDK = exports.BelugaFactorySDK = exports.BelugaSwapSDK = void 0;
|
|
18
|
+
var sdk_1 = require("./sdk");
|
|
19
|
+
Object.defineProperty(exports, "BelugaSwapSDK", { enumerable: true, get: function () { return sdk_1.BelugaSwapSDK; } });
|
|
20
|
+
var factory_1 = require("./factory");
|
|
21
|
+
Object.defineProperty(exports, "BelugaFactorySDK", { enumerable: true, get: function () { return factory_1.BelugaFactorySDK; } });
|
|
22
|
+
var pool_1 = require("./pool");
|
|
23
|
+
Object.defineProperty(exports, "BelugaPoolSDK", { enumerable: true, get: function () { return pool_1.BelugaPoolSDK; } });
|
|
24
|
+
var config_1 = require("./config");
|
|
25
|
+
Object.defineProperty(exports, "BELUGA_CONFIG", { enumerable: true, get: function () { return config_1.BELUGA_CONFIG; } });
|
|
26
|
+
__exportStar(require("./types"), exports);
|
|
27
|
+
__exportStar(require("./converters"), exports);
|
|
28
|
+
const sdk_2 = require("./sdk");
|
|
29
|
+
exports.default = sdk_2.BelugaSwapSDK;
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,6BAAsC;AAA7B,oGAAA,aAAa,OAAA;AACtB,qCAA6C;AAApC,2GAAA,gBAAgB,OAAA;AACzB,+BAAuC;AAA9B,qGAAA,aAAa,OAAA;AACtB,mCAAyC;AAAhC,uGAAA,aAAa,OAAA;AACtB,0CAAwB;AACxB,+CAA6B;AAG7B,+BAAsC;AACtC,kBAAe,mBAAa,CAAC"}
|
package/dist/pool.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { SorobanRpc } from '@stellar/stellar-sdk';
|
|
2
|
+
import type { AddLiquidityParams, AddLiquidityResult, RemoveLiquidityParams, SwapParams, SwapResult, PreviewSwapResult, GetPositionParams, PositionInfo, CollectFeesParams, PoolState } from './types';
|
|
3
|
+
export declare class BelugaPoolSDK {
|
|
4
|
+
private contractId;
|
|
5
|
+
private rpc;
|
|
6
|
+
private networkPassphrase;
|
|
7
|
+
private contract;
|
|
8
|
+
constructor(contractId: string, rpc: SorobanRpc.Server, networkPassphrase: string);
|
|
9
|
+
addLiquidity(params: AddLiquidityParams): Promise<AddLiquidityResult>;
|
|
10
|
+
removeLiquidity(params: RemoveLiquidityParams): Promise<{
|
|
11
|
+
summary: {
|
|
12
|
+
removing: string;
|
|
13
|
+
priceRange: string;
|
|
14
|
+
};
|
|
15
|
+
contractParams: {
|
|
16
|
+
owner: string;
|
|
17
|
+
lower_tick: number;
|
|
18
|
+
upper_tick: number;
|
|
19
|
+
};
|
|
20
|
+
technical: {
|
|
21
|
+
lowerTick: number;
|
|
22
|
+
upperTick: number;
|
|
23
|
+
percentToRemove: number;
|
|
24
|
+
};
|
|
25
|
+
}>;
|
|
26
|
+
swap(params: SwapParams): Promise<SwapResult>;
|
|
27
|
+
previewSwap(params: {
|
|
28
|
+
tokenIn: string;
|
|
29
|
+
amountIn: number;
|
|
30
|
+
}): Promise<PreviewSwapResult>;
|
|
31
|
+
getPosition(params: GetPositionParams): Promise<PositionInfo>;
|
|
32
|
+
collectFees(params: CollectFeesParams): Promise<{
|
|
33
|
+
contractParams: {
|
|
34
|
+
owner: string;
|
|
35
|
+
lower_tick: number;
|
|
36
|
+
upper_tick: number;
|
|
37
|
+
};
|
|
38
|
+
technical: {
|
|
39
|
+
lowerTick: number;
|
|
40
|
+
upperTick: number;
|
|
41
|
+
};
|
|
42
|
+
}>;
|
|
43
|
+
getPoolState(): Promise<PoolState>;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAG5D,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACV,MAAM,SAAS,CAAC;AAMjB,qBAAa,aAAa;IAItB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,iBAAiB;IAL3B,OAAO,CAAC,QAAQ,CAAW;gBAGjB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,UAAU,CAAC,MAAM,EACtB,iBAAiB,EAAE,MAAM;IAQ7B,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2CrE,eAAe,CAAC,MAAM,EAAE,qBAAqB;;;;;;;;;;;;;;;;IAiC7C,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAmD7C,WAAW,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAgBxB,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAoC7D,WAAW,CAAC,MAAM,EAAE,iBAAiB;;;;;;;;;;;IAwBrC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CAqBzC"}
|
package/dist/pool.js
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BelugaPoolSDK = void 0;
|
|
4
|
+
const stellar_sdk_1 = require("@stellar/stellar-sdk");
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
const converters_1 = require("./converters");
|
|
7
|
+
class BelugaPoolSDK {
|
|
8
|
+
constructor(contractId, rpc, networkPassphrase) {
|
|
9
|
+
this.contractId = contractId;
|
|
10
|
+
this.rpc = rpc;
|
|
11
|
+
this.networkPassphrase = networkPassphrase;
|
|
12
|
+
this.contract = new stellar_sdk_1.Contract(contractId);
|
|
13
|
+
}
|
|
14
|
+
async addLiquidity(params) {
|
|
15
|
+
const tickSpacing = config_1.BELUGA_CONFIG.FEE_TIERS[params.feeTier].spacing;
|
|
16
|
+
const range = converters_1.TickConverter.createRange(params.priceRangeLower, params.priceRangeUpper, tickSpacing);
|
|
17
|
+
const amount0Stroops = converters_1.AmountConverter.toStroops(params.amount0);
|
|
18
|
+
const amount1Stroops = converters_1.AmountConverter.toStroops(params.amount1);
|
|
19
|
+
const contractParams = {
|
|
20
|
+
owner: params.owner,
|
|
21
|
+
lower_tick: range.lowerTick,
|
|
22
|
+
upper_tick: range.upperTick,
|
|
23
|
+
amount0_desired: amount0Stroops.toString(),
|
|
24
|
+
amount1_desired: amount1Stroops.toString(),
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
summary: {
|
|
28
|
+
priceRange: `${params.priceRangeLower.toFixed(4)} - ${params.priceRangeUpper.toFixed(4)}`,
|
|
29
|
+
amounts: `${params.amount0} + ${params.amount1}`,
|
|
30
|
+
},
|
|
31
|
+
contractParams,
|
|
32
|
+
technical: {
|
|
33
|
+
lowerTick: range.lowerTick,
|
|
34
|
+
upperTick: range.upperTick,
|
|
35
|
+
tickSpacing,
|
|
36
|
+
amount0Stroops: amount0Stroops.toString(),
|
|
37
|
+
amount1Stroops: amount1Stroops.toString(),
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async removeLiquidity(params) {
|
|
42
|
+
if (params.liquidityPercent <= 0 || params.liquidityPercent > 100) {
|
|
43
|
+
throw new Error("Liquidity percent must be between 0 and 100");
|
|
44
|
+
}
|
|
45
|
+
const tickSpacing = config_1.BELUGA_CONFIG.FEE_TIERS[params.feeTier].spacing;
|
|
46
|
+
const range = converters_1.TickConverter.createRange(params.priceRangeLower, params.priceRangeUpper, tickSpacing);
|
|
47
|
+
return {
|
|
48
|
+
summary: {
|
|
49
|
+
removing: `${params.liquidityPercent}% of liquidity`,
|
|
50
|
+
priceRange: `${params.priceRangeLower} - ${params.priceRangeUpper}`,
|
|
51
|
+
},
|
|
52
|
+
contractParams: {
|
|
53
|
+
owner: params.owner,
|
|
54
|
+
lower_tick: range.lowerTick,
|
|
55
|
+
upper_tick: range.upperTick,
|
|
56
|
+
},
|
|
57
|
+
technical: {
|
|
58
|
+
lowerTick: range.lowerTick,
|
|
59
|
+
upperTick: range.upperTick,
|
|
60
|
+
percentToRemove: params.liquidityPercent,
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async swap(params) {
|
|
65
|
+
const amountInStroops = converters_1.AmountConverter.toStroops(params.amountIn);
|
|
66
|
+
const slippageBps = Math.floor(params.slippagePercent * 100);
|
|
67
|
+
if (slippageBps > config_1.BELUGA_CONFIG.MAX_SLIPPAGE_BPS) {
|
|
68
|
+
throw new Error("Slippage cannot exceed 50%");
|
|
69
|
+
}
|
|
70
|
+
const currentPrice = 1.0;
|
|
71
|
+
const estimatedOut = params.amountIn * currentPrice;
|
|
72
|
+
const minAmountOut = estimatedOut * (1 - params.slippagePercent / 100);
|
|
73
|
+
const minAmountOutStroops = converters_1.AmountConverter.toStroops(minAmountOut);
|
|
74
|
+
const sqrtPriceLimitX64 = params.priceLimit
|
|
75
|
+
? converters_1.PriceConverter.toSqrtPrice(params.priceLimit)
|
|
76
|
+
: BigInt(0);
|
|
77
|
+
const contractParams = {
|
|
78
|
+
sender: params.sender,
|
|
79
|
+
token_in: params.tokenIn,
|
|
80
|
+
amount_in: amountInStroops.toString(),
|
|
81
|
+
amount_out_min: minAmountOutStroops.toString(),
|
|
82
|
+
sqrt_price_limit_x64: sqrtPriceLimitX64.toString(),
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
summary: {
|
|
86
|
+
swapping: `${params.amountIn} ${params.tokenIn}`,
|
|
87
|
+
estimatedOutput: `~${estimatedOut.toFixed(4)}`,
|
|
88
|
+
minimumOutput: `${minAmountOut.toFixed(4)}`,
|
|
89
|
+
slippage: `${params.slippagePercent}%`,
|
|
90
|
+
priceLimit: params.priceLimit ? `${params.priceLimit}` : 'None',
|
|
91
|
+
},
|
|
92
|
+
contractParams,
|
|
93
|
+
technical: {
|
|
94
|
+
amountInStroops: amountInStroops.toString(),
|
|
95
|
+
minAmountOutStroops: minAmountOutStroops.toString(),
|
|
96
|
+
slippageBps,
|
|
97
|
+
sqrtPriceLimitX64: sqrtPriceLimitX64.toString(),
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async previewSwap(params) {
|
|
102
|
+
const amountInStroops = converters_1.AmountConverter.toStroops(params.amountIn);
|
|
103
|
+
return {
|
|
104
|
+
amountOut: params.amountIn * 0.997,
|
|
105
|
+
priceImpact: 0.3,
|
|
106
|
+
newPrice: 1.003,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
async getPosition(params) {
|
|
110
|
+
const tickSpacing = config_1.BELUGA_CONFIG.FEE_TIERS[params.feeTier].spacing;
|
|
111
|
+
const range = converters_1.TickConverter.createRange(params.priceRangeLower, params.priceRangeUpper, tickSpacing);
|
|
112
|
+
const result = {
|
|
113
|
+
liquidity: 10000000,
|
|
114
|
+
amount0: BigInt(50000000),
|
|
115
|
+
amount1: BigInt(50000000),
|
|
116
|
+
fees_owed_0: BigInt(500000),
|
|
117
|
+
fees_owed_1: BigInt(500000),
|
|
118
|
+
};
|
|
119
|
+
return {
|
|
120
|
+
liquidity: result.liquidity,
|
|
121
|
+
amount0: converters_1.AmountConverter.fromStroops(result.amount0),
|
|
122
|
+
amount1: converters_1.AmountConverter.fromStroops(result.amount1),
|
|
123
|
+
feesOwed0: converters_1.AmountConverter.fromStroops(result.fees_owed_0),
|
|
124
|
+
feesOwed1: converters_1.AmountConverter.fromStroops(result.fees_owed_1),
|
|
125
|
+
formatted: {
|
|
126
|
+
liquidity: result.liquidity.toLocaleString(),
|
|
127
|
+
amounts: `${converters_1.AmountConverter.fromStroops(result.amount0)} + ${converters_1.AmountConverter.fromStroops(result.amount1)}`,
|
|
128
|
+
fees: `${converters_1.AmountConverter.fromStroops(result.fees_owed_0)} + ${converters_1.AmountConverter.fromStroops(result.fees_owed_1)}`,
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
async collectFees(params) {
|
|
133
|
+
const tickSpacing = config_1.BELUGA_CONFIG.FEE_TIERS[params.feeTier].spacing;
|
|
134
|
+
const range = converters_1.TickConverter.createRange(params.priceRangeLower, params.priceRangeUpper, tickSpacing);
|
|
135
|
+
return {
|
|
136
|
+
contractParams: {
|
|
137
|
+
owner: params.owner,
|
|
138
|
+
lower_tick: range.lowerTick,
|
|
139
|
+
upper_tick: range.upperTick,
|
|
140
|
+
},
|
|
141
|
+
technical: {
|
|
142
|
+
lowerTick: range.lowerTick,
|
|
143
|
+
upperTick: range.upperTick,
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
async getPoolState() {
|
|
148
|
+
const state = {
|
|
149
|
+
sqrt_price_x64: (BigInt(1) << BigInt(64)).toString(),
|
|
150
|
+
current_tick: 0,
|
|
151
|
+
liquidity: 100000000,
|
|
152
|
+
};
|
|
153
|
+
return {
|
|
154
|
+
currentPrice: converters_1.PriceConverter.fromSqrtPrice(BigInt(state.sqrt_price_x64)),
|
|
155
|
+
currentTick: state.current_tick,
|
|
156
|
+
liquidity: state.liquidity,
|
|
157
|
+
technical: {
|
|
158
|
+
sqrtPriceX64: state.sqrt_price_x64,
|
|
159
|
+
currentTick: state.current_tick,
|
|
160
|
+
liquidity: state.liquidity,
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.BelugaPoolSDK = BelugaPoolSDK;
|
|
166
|
+
//# sourceMappingURL=pool.js.map
|
package/dist/pool.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SorobanRpc } from '@stellar/stellar-sdk';
|
|
2
|
+
import { BelugaFactorySDK } from './factory';
|
|
3
|
+
import { BelugaPoolSDK } from './pool';
|
|
4
|
+
export interface BelugaSDKConfig {
|
|
5
|
+
factoryAddress: string;
|
|
6
|
+
poolAddress?: string;
|
|
7
|
+
rpcUrl?: string;
|
|
8
|
+
networkPassphrase?: string;
|
|
9
|
+
network?: 'testnet' | 'mainnet';
|
|
10
|
+
}
|
|
11
|
+
export declare class BelugaSwapSDK {
|
|
12
|
+
factory: BelugaFactorySDK;
|
|
13
|
+
pool?: BelugaPoolSDK;
|
|
14
|
+
private rpc;
|
|
15
|
+
private networkPassphrase;
|
|
16
|
+
constructor(config: BelugaSDKConfig);
|
|
17
|
+
connectPool(poolAddress: string): BelugaPoolSDK;
|
|
18
|
+
getAndConnectPool(params: {
|
|
19
|
+
tokenA: string;
|
|
20
|
+
tokenB: string;
|
|
21
|
+
feeTier: 'STABLE' | 'VOLATILE' | 'EXOTIC';
|
|
22
|
+
}): Promise<BelugaPoolSDK>;
|
|
23
|
+
getRpc(): SorobanRpc.Server;
|
|
24
|
+
getNetworkPassphrase(): string;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAOvC,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACjC;AAMD,qBAAa,aAAa;IACjB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,CAAC,EAAE,aAAa,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,MAAM,EAAE,eAAe;IA0CnC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa;IAYzC,iBAAiB,CAAC,MAAM,EAAE;QAC9B,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;KAC3C,GAAG,OAAO,CAAC,aAAa,CAAC;IAW1B,MAAM,IAAI,UAAU,CAAC,MAAM;IAO3B,oBAAoB,IAAI,MAAM;CAG/B"}
|
package/dist/sdk.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BelugaSwapSDK = void 0;
|
|
4
|
+
const stellar_sdk_1 = require("@stellar/stellar-sdk");
|
|
5
|
+
const factory_1 = require("./factory");
|
|
6
|
+
const pool_1 = require("./pool");
|
|
7
|
+
const config_1 = require("./config");
|
|
8
|
+
class BelugaSwapSDK {
|
|
9
|
+
constructor(config) {
|
|
10
|
+
let networkConfig;
|
|
11
|
+
if (config.network) {
|
|
12
|
+
networkConfig = config_1.NETWORKS[config.network.toUpperCase()];
|
|
13
|
+
}
|
|
14
|
+
else if (config.rpcUrl && config.networkPassphrase) {
|
|
15
|
+
networkConfig = {
|
|
16
|
+
rpcUrl: config.rpcUrl,
|
|
17
|
+
networkPassphrase: config.networkPassphrase,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
throw new Error('Must provide either "network" (testnet/mainnet) or both "rpcUrl" and "networkPassphrase"');
|
|
22
|
+
}
|
|
23
|
+
this.rpc = new stellar_sdk_1.SorobanRpc.Server(networkConfig.rpcUrl);
|
|
24
|
+
this.networkPassphrase = networkConfig.networkPassphrase;
|
|
25
|
+
this.factory = new factory_1.BelugaFactorySDK(config.factoryAddress, this.rpc, this.networkPassphrase);
|
|
26
|
+
if (config.poolAddress) {
|
|
27
|
+
this.pool = new pool_1.BelugaPoolSDK(config.poolAddress, this.rpc, this.networkPassphrase);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
connectPool(poolAddress) {
|
|
31
|
+
this.pool = new pool_1.BelugaPoolSDK(poolAddress, this.rpc, this.networkPassphrase);
|
|
32
|
+
return this.pool;
|
|
33
|
+
}
|
|
34
|
+
async getAndConnectPool(params) {
|
|
35
|
+
const poolAddress = await this.factory.getPool(params);
|
|
36
|
+
if (!poolAddress) {
|
|
37
|
+
throw new Error('Pool does not exist');
|
|
38
|
+
}
|
|
39
|
+
return this.connectPool(poolAddress);
|
|
40
|
+
}
|
|
41
|
+
getRpc() {
|
|
42
|
+
return this.rpc;
|
|
43
|
+
}
|
|
44
|
+
getNetworkPassphrase() {
|
|
45
|
+
return this.networkPassphrase;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.BelugaSwapSDK = BelugaSwapSDK;
|
|
49
|
+
//# sourceMappingURL=sdk.js.map
|
package/dist/sdk.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":";;;AAGA,sDAAkD;AAClD,uCAA6C;AAC7C,iCAAuC;AACvC,qCAAoC;AAkBpC,MAAa,aAAa;IAMxB,YAAY,MAAuB;QAEjC,IAAI,aAA4B,CAAC;QAEjC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAEnB,aAAa,GAAG,iBAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAA2B,CAAC,CAAC;QAClF,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAErD,aAAa,GAAG;gBACd,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;aAC5C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,wBAAU,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,CAAC;QAGzD,IAAI,CAAC,OAAO,GAAG,IAAI,0BAAgB,CACjC,MAAM,CAAC,cAAc,EACrB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,iBAAiB,CACvB,CAAC;QAGF,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAa,CAC3B,MAAM,CAAC,WAAW,EAClB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,iBAAiB,CACvB,CAAC;QACJ,CAAC;IACH,CAAC;IAKD,WAAW,CAAC,WAAmB;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAa,CAC3B,WAAW,EACX,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,iBAAiB,CACvB,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAKD,KAAK,CAAC,iBAAiB,CAAC,MAIvB;QACC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAKD,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAKD,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;CACF;AArFD,sCAqFC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { FeeTier } from './config';
|
|
2
|
+
export interface CreatePoolParams {
|
|
3
|
+
creator: string;
|
|
4
|
+
tokenA: string;
|
|
5
|
+
tokenB: string;
|
|
6
|
+
feeTier: FeeTier;
|
|
7
|
+
creatorFeePercent: number;
|
|
8
|
+
initialPrice: number;
|
|
9
|
+
amount0: number;
|
|
10
|
+
amount1: number;
|
|
11
|
+
priceRangeLower: number;
|
|
12
|
+
priceRangeUpper: number;
|
|
13
|
+
lockDurationDays?: number;
|
|
14
|
+
permanent?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface CreatePoolResult {
|
|
17
|
+
summary: {
|
|
18
|
+
pair: string;
|
|
19
|
+
fee: string;
|
|
20
|
+
creatorFee: string;
|
|
21
|
+
initialPrice: number;
|
|
22
|
+
priceRange: string;
|
|
23
|
+
amounts: string;
|
|
24
|
+
lockDuration: string;
|
|
25
|
+
};
|
|
26
|
+
contractParams: any;
|
|
27
|
+
technical: {
|
|
28
|
+
feeBps: number;
|
|
29
|
+
creatorFeeBps: number;
|
|
30
|
+
sqrtPriceX64: string;
|
|
31
|
+
currentTick: number;
|
|
32
|
+
tickSpacing: number;
|
|
33
|
+
lowerTick: number;
|
|
34
|
+
upperTick: number;
|
|
35
|
+
amount0Stroops: string;
|
|
36
|
+
amount1Stroops: string;
|
|
37
|
+
lockDurationLedgers: number;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export interface AddLiquidityParams {
|
|
41
|
+
owner: string;
|
|
42
|
+
amount0: number;
|
|
43
|
+
amount1: number;
|
|
44
|
+
priceRangeLower: number;
|
|
45
|
+
priceRangeUpper: number;
|
|
46
|
+
feeTier: FeeTier;
|
|
47
|
+
}
|
|
48
|
+
export interface AddLiquidityResult {
|
|
49
|
+
summary: {
|
|
50
|
+
priceRange: string;
|
|
51
|
+
amounts: string;
|
|
52
|
+
};
|
|
53
|
+
contractParams: {
|
|
54
|
+
owner: string;
|
|
55
|
+
lower_tick: number;
|
|
56
|
+
upper_tick: number;
|
|
57
|
+
amount0_desired: string;
|
|
58
|
+
amount1_desired: string;
|
|
59
|
+
};
|
|
60
|
+
technical: {
|
|
61
|
+
lowerTick: number;
|
|
62
|
+
upperTick: number;
|
|
63
|
+
tickSpacing: number;
|
|
64
|
+
amount0Stroops: string;
|
|
65
|
+
amount1Stroops: string;
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export interface RemoveLiquidityParams {
|
|
69
|
+
owner: string;
|
|
70
|
+
liquidityPercent: number;
|
|
71
|
+
priceRangeLower: number;
|
|
72
|
+
priceRangeUpper: number;
|
|
73
|
+
feeTier: FeeTier;
|
|
74
|
+
}
|
|
75
|
+
export interface SwapParams {
|
|
76
|
+
sender: string;
|
|
77
|
+
tokenIn: string;
|
|
78
|
+
amountIn: number;
|
|
79
|
+
slippagePercent: number;
|
|
80
|
+
priceLimit?: number;
|
|
81
|
+
}
|
|
82
|
+
export interface SwapResult {
|
|
83
|
+
summary: {
|
|
84
|
+
swapping: string;
|
|
85
|
+
estimatedOutput: string;
|
|
86
|
+
minimumOutput: string;
|
|
87
|
+
slippage: string;
|
|
88
|
+
priceLimit: string;
|
|
89
|
+
};
|
|
90
|
+
contractParams: {
|
|
91
|
+
sender: string;
|
|
92
|
+
token_in: string;
|
|
93
|
+
amount_in: string;
|
|
94
|
+
amount_out_min: string;
|
|
95
|
+
sqrt_price_limit_x64: string;
|
|
96
|
+
};
|
|
97
|
+
technical: {
|
|
98
|
+
amountInStroops: string;
|
|
99
|
+
minAmountOutStroops: string;
|
|
100
|
+
slippageBps: number;
|
|
101
|
+
sqrtPriceLimitX64: string;
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export interface PreviewSwapResult {
|
|
105
|
+
amountOut: number;
|
|
106
|
+
priceImpact: number;
|
|
107
|
+
newPrice: number;
|
|
108
|
+
}
|
|
109
|
+
export interface PositionInfo {
|
|
110
|
+
liquidity: number;
|
|
111
|
+
amount0: number;
|
|
112
|
+
amount1: number;
|
|
113
|
+
feesOwed0: number;
|
|
114
|
+
feesOwed1: number;
|
|
115
|
+
formatted: {
|
|
116
|
+
liquidity: string;
|
|
117
|
+
amounts: string;
|
|
118
|
+
fees: string;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
export interface PoolState {
|
|
122
|
+
currentPrice: number;
|
|
123
|
+
currentTick: number;
|
|
124
|
+
liquidity: number;
|
|
125
|
+
technical: {
|
|
126
|
+
sqrtPriceX64: string;
|
|
127
|
+
currentTick: number;
|
|
128
|
+
liquidity: number;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export interface GetPositionParams {
|
|
132
|
+
owner: string;
|
|
133
|
+
priceRangeLower: number;
|
|
134
|
+
priceRangeUpper: number;
|
|
135
|
+
feeTier: FeeTier;
|
|
136
|
+
}
|
|
137
|
+
export interface CollectFeesParams {
|
|
138
|
+
owner: string;
|
|
139
|
+
priceRangeLower: number;
|
|
140
|
+
priceRangeUpper: number;
|
|
141
|
+
feeTier: FeeTier;
|
|
142
|
+
}
|
|
143
|
+
export interface GetPoolParams {
|
|
144
|
+
tokenA: string;
|
|
145
|
+
tokenB: string;
|
|
146
|
+
feeTier: FeeTier;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beluswap/sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "BelugaSwap TypeScript SDK with human-friendly inputs",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"license": "Apache-2.0",
|
|
34
34
|
"repository": {
|
|
35
35
|
"type": "git",
|
|
36
|
-
"url": "https://github.com/Beluga-Swap/sdk.git"
|
|
36
|
+
"url": "git+https://github.com/Beluga-Swap/sdk.git"
|
|
37
37
|
},
|
|
38
38
|
"bugs": {
|
|
39
39
|
"url": "https://github.com/Beluga-Swap/sdk/issues"
|
package/src/factory.ts
CHANGED
|
@@ -125,7 +125,12 @@ export class BelugaFactorySDK {
|
|
|
125
125
|
* Get pool address
|
|
126
126
|
*/
|
|
127
127
|
async getPool(params: GetPoolParams): Promise<string | null> {
|
|
128
|
-
|
|
128
|
+
// Use contract, rpc, networkPassphrase when implementing
|
|
129
|
+
console.log('Contract ID:', this.contractId);
|
|
130
|
+
console.log('Using RPC:', this.rpc.serverURL);
|
|
131
|
+
console.log('Network:', this.networkPassphrase);
|
|
132
|
+
|
|
133
|
+
const _feeBps = BELUGA_CONFIG.FEE_TIERS[params.feeTier].bps;
|
|
129
134
|
|
|
130
135
|
// TODO: Implement contract call
|
|
131
136
|
// const result = await this.contract.call('get_pool_address', ...);
|
package/src/index.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
// BelugaSwap SDK - Main Export
|
|
2
2
|
// Version: 0.1.0
|
|
3
3
|
|
|
4
|
-
export { BelugaSwapSDK
|
|
4
|
+
export { BelugaSwapSDK } from './sdk';
|
|
5
5
|
export { BelugaFactorySDK } from './factory';
|
|
6
6
|
export { BelugaPoolSDK } from './pool';
|
|
7
7
|
export { BELUGA_CONFIG } from './config';
|
|
8
8
|
export * from './types';
|
|
9
9
|
export * from './converters';
|
|
10
10
|
|
|
11
|
-
//
|
|
11
|
+
// Default export
|
|
12
12
|
import { BelugaSwapSDK } from './sdk';
|
|
13
13
|
export default BelugaSwapSDK;
|