@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.
@@ -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"}
@@ -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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"}
@@ -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
@@ -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
@@ -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"}
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -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.0",
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
- const feeBps = BELUGA_CONFIG.FEE_TIERS[params.feeTier].bps;
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 as default, BelugaSwapSDK } from './sdk';
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
- // Re-export for convenience
11
+ // Default export
12
12
  import { BelugaSwapSDK } from './sdk';
13
13
  export default BelugaSwapSDK;