genius-intents 0.1.4
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/CHANGELOG.md +45 -0
- package/LICENSE +21 -0
- package/README.md +376 -0
- package/dist/src/index.d.ts +27 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +62 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/intents-protocols.d.ts +69 -0
- package/dist/src/intents-protocols.d.ts.map +1 -0
- package/dist/src/intents-protocols.js +371 -0
- package/dist/src/intents-protocols.js.map +1 -0
- package/dist/src/interfaces/intent-protocol.d.ts +21 -0
- package/dist/src/interfaces/intent-protocol.d.ts.map +1 -0
- package/dist/src/interfaces/intent-protocol.js +3 -0
- package/dist/src/interfaces/intent-protocol.js.map +1 -0
- package/dist/src/protocols/aftermath/aftermath.service.d.ts +28 -0
- package/dist/src/protocols/aftermath/aftermath.service.d.ts.map +1 -0
- package/dist/src/protocols/aftermath/aftermath.service.js +162 -0
- package/dist/src/protocols/aftermath/aftermath.service.js.map +1 -0
- package/dist/src/protocols/aftermath/aftermath.types.d.ts +100 -0
- package/dist/src/protocols/aftermath/aftermath.types.d.ts.map +1 -0
- package/dist/src/protocols/aftermath/aftermath.types.js +3 -0
- package/dist/src/protocols/aftermath/aftermath.types.js.map +1 -0
- package/dist/src/protocols/aftermath/index.d.ts +3 -0
- package/dist/src/protocols/aftermath/index.d.ts.map +1 -0
- package/dist/src/protocols/aftermath/index.js +7 -0
- package/dist/src/protocols/aftermath/index.js.map +1 -0
- package/dist/src/protocols/debridge/debridge.service.d.ts +157 -0
- package/dist/src/protocols/debridge/debridge.service.d.ts.map +1 -0
- package/dist/src/protocols/debridge/debridge.service.js +462 -0
- package/dist/src/protocols/debridge/debridge.service.js.map +1 -0
- package/dist/src/protocols/debridge/debridge.types.d.ts +82 -0
- package/dist/src/protocols/debridge/debridge.types.d.ts.map +1 -0
- package/dist/src/protocols/debridge/debridge.types.js +3 -0
- package/dist/src/protocols/debridge/debridge.types.js.map +1 -0
- package/dist/src/protocols/debridge/index.d.ts +3 -0
- package/dist/src/protocols/debridge/index.d.ts.map +1 -0
- package/dist/src/protocols/debridge/index.js +7 -0
- package/dist/src/protocols/debridge/index.js.map +1 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.service.d.ts +36 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.service.d.ts.map +1 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.service.js +312 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.service.js.map +1 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.types.d.ts +100 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.types.d.ts.map +1 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.types.js +3 -0
- package/dist/src/protocols/genius-bridge/genius-bridge.types.js.map +1 -0
- package/dist/src/protocols/genius-bridge/index.d.ts +3 -0
- package/dist/src/protocols/genius-bridge/index.d.ts.map +1 -0
- package/dist/src/protocols/genius-bridge/index.js +7 -0
- package/dist/src/protocols/genius-bridge/index.js.map +1 -0
- package/dist/src/protocols/jupiter/index.d.ts +3 -0
- package/dist/src/protocols/jupiter/index.d.ts.map +1 -0
- package/dist/src/protocols/jupiter/index.js +7 -0
- package/dist/src/protocols/jupiter/index.js.map +1 -0
- package/dist/src/protocols/jupiter/jupiter.service.d.ts +37 -0
- package/dist/src/protocols/jupiter/jupiter.service.d.ts.map +1 -0
- package/dist/src/protocols/jupiter/jupiter.service.js +188 -0
- package/dist/src/protocols/jupiter/jupiter.service.js.map +1 -0
- package/dist/src/protocols/jupiter/jupiter.types.d.ts +272 -0
- package/dist/src/protocols/jupiter/jupiter.types.d.ts.map +1 -0
- package/dist/src/protocols/jupiter/jupiter.types.js +3 -0
- package/dist/src/protocols/jupiter/jupiter.types.js.map +1 -0
- package/dist/src/protocols/kyberswap/index.d.ts +3 -0
- package/dist/src/protocols/kyberswap/index.d.ts.map +1 -0
- package/dist/src/protocols/kyberswap/index.js +7 -0
- package/dist/src/protocols/kyberswap/index.js.map +1 -0
- package/dist/src/protocols/kyberswap/kyberswap.service.d.ts +34 -0
- package/dist/src/protocols/kyberswap/kyberswap.service.d.ts.map +1 -0
- package/dist/src/protocols/kyberswap/kyberswap.service.js +218 -0
- package/dist/src/protocols/kyberswap/kyberswap.service.js.map +1 -0
- package/dist/src/protocols/kyberswap/kyberswap.types.d.ts +114 -0
- package/dist/src/protocols/kyberswap/kyberswap.types.d.ts.map +1 -0
- package/dist/src/protocols/kyberswap/kyberswap.types.js +3 -0
- package/dist/src/protocols/kyberswap/kyberswap.types.js.map +1 -0
- package/dist/src/protocols/odos/index.d.ts +3 -0
- package/dist/src/protocols/odos/index.d.ts.map +1 -0
- package/dist/src/protocols/odos/index.js +7 -0
- package/dist/src/protocols/odos/index.js.map +1 -0
- package/dist/src/protocols/odos/odos.service.d.ts +39 -0
- package/dist/src/protocols/odos/odos.service.d.ts.map +1 -0
- package/dist/src/protocols/odos/odos.service.js +207 -0
- package/dist/src/protocols/odos/odos.service.js.map +1 -0
- package/dist/src/protocols/odos/odos.types.d.ts +114 -0
- package/dist/src/protocols/odos/odos.types.d.ts.map +1 -0
- package/dist/src/protocols/odos/odos.types.js +3 -0
- package/dist/src/protocols/odos/odos.types.js.map +1 -0
- package/dist/src/protocols/okx/index.d.ts +3 -0
- package/dist/src/protocols/okx/index.d.ts.map +1 -0
- package/dist/src/protocols/okx/index.js +7 -0
- package/dist/src/protocols/okx/index.js.map +1 -0
- package/dist/src/protocols/okx/okx.service.d.ts +36 -0
- package/dist/src/protocols/okx/okx.service.d.ts.map +1 -0
- package/dist/src/protocols/okx/okx.service.js +281 -0
- package/dist/src/protocols/okx/okx.service.js.map +1 -0
- package/dist/src/protocols/okx/okx.types.d.ts +119 -0
- package/dist/src/protocols/okx/okx.types.d.ts.map +1 -0
- package/dist/src/protocols/okx/okx.types.js +4 -0
- package/dist/src/protocols/okx/okx.types.js.map +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.service.d.ts +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.service.d.ts.map +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.service.js +2 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.service.js.map +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.types.d.ts +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.types.d.ts.map +1 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.types.js +2 -0
- package/dist/src/protocols/okx-bridge/okx-bridge.types.js.map +1 -0
- package/dist/src/protocols/openocean/index.d.ts +3 -0
- package/dist/src/protocols/openocean/index.d.ts.map +1 -0
- package/dist/src/protocols/openocean/index.js +7 -0
- package/dist/src/protocols/openocean/index.js.map +1 -0
- package/dist/src/protocols/openocean/openocean.service.d.ts +29 -0
- package/dist/src/protocols/openocean/openocean.service.d.ts.map +1 -0
- package/dist/src/protocols/openocean/openocean.service.js +181 -0
- package/dist/src/protocols/openocean/openocean.service.js.map +1 -0
- package/dist/src/protocols/openocean/openocean.types.d.ts +68 -0
- package/dist/src/protocols/openocean/openocean.types.d.ts.map +1 -0
- package/dist/src/protocols/openocean/openocean.types.js +3 -0
- package/dist/src/protocols/openocean/openocean.types.js.map +1 -0
- package/dist/src/protocols/pumpfun/index.d.ts +3 -0
- package/dist/src/protocols/pumpfun/index.d.ts.map +1 -0
- package/dist/src/protocols/pumpfun/index.js +7 -0
- package/dist/src/protocols/pumpfun/index.js.map +1 -0
- package/dist/src/protocols/pumpfun/pumpfun.service.d.ts +45 -0
- package/dist/src/protocols/pumpfun/pumpfun.service.d.ts.map +1 -0
- package/dist/src/protocols/pumpfun/pumpfun.service.js +217 -0
- package/dist/src/protocols/pumpfun/pumpfun.service.js.map +1 -0
- package/dist/src/protocols/pumpfun/pumpfun.types.d.ts +14 -0
- package/dist/src/protocols/pumpfun/pumpfun.types.d.ts.map +1 -0
- package/dist/src/protocols/pumpfun/pumpfun.types.js +3 -0
- package/dist/src/protocols/pumpfun/pumpfun.types.js.map +1 -0
- package/dist/src/protocols/raydium/index.d.ts +3 -0
- package/dist/src/protocols/raydium/index.d.ts.map +1 -0
- package/dist/src/protocols/raydium/index.js +7 -0
- package/dist/src/protocols/raydium/index.js.map +1 -0
- package/dist/src/protocols/raydium/raydium-v2.service.d.ts +35 -0
- package/dist/src/protocols/raydium/raydium-v2.service.d.ts.map +1 -0
- package/dist/src/protocols/raydium/raydium-v2.service.js +301 -0
- package/dist/src/protocols/raydium/raydium-v2.service.js.map +1 -0
- package/dist/src/protocols/raydium/raydium-v2.types.d.ts +96 -0
- package/dist/src/protocols/raydium/raydium-v2.types.d.ts.map +1 -0
- package/dist/src/protocols/raydium/raydium-v2.types.js +3 -0
- package/dist/src/protocols/raydium/raydium-v2.types.js.map +1 -0
- package/dist/src/protocols/zeroX/index.d.ts +3 -0
- package/dist/src/protocols/zeroX/index.d.ts.map +1 -0
- package/dist/src/protocols/zeroX/index.js +7 -0
- package/dist/src/protocols/zeroX/index.js.map +1 -0
- package/dist/src/protocols/zeroX/zeroX.service.d.ts +37 -0
- package/dist/src/protocols/zeroX/zeroX.service.d.ts.map +1 -0
- package/dist/src/protocols/zeroX/zeroX.service.js +209 -0
- package/dist/src/protocols/zeroX/zeroX.service.js.map +1 -0
- package/dist/src/protocols/zeroX/zeroX.types.d.ts +120 -0
- package/dist/src/protocols/zeroX/zeroX.types.d.ts.map +1 -0
- package/dist/src/protocols/zeroX/zeroX.types.js +3 -0
- package/dist/src/protocols/zeroX/zeroX.types.js.map +1 -0
- package/dist/src/types/enums.d.ts +42 -0
- package/dist/src/types/enums.d.ts.map +1 -0
- package/dist/src/types/enums.js +49 -0
- package/dist/src/types/enums.js.map +1 -0
- package/dist/src/types/intents-protocols.d.ts +89 -0
- package/dist/src/types/intents-protocols.d.ts.map +1 -0
- package/dist/src/types/intents-protocols.js +3 -0
- package/dist/src/types/intents-protocols.js.map +1 -0
- package/dist/src/types/price-response.d.ts +26 -0
- package/dist/src/types/price-response.d.ts.map +1 -0
- package/dist/src/types/price-response.js +3 -0
- package/dist/src/types/price-response.js.map +1 -0
- package/dist/src/types/quote-response.d.ts +31 -0
- package/dist/src/types/quote-response.d.ts.map +1 -0
- package/dist/src/types/quote-response.js +3 -0
- package/dist/src/types/quote-response.js.map +1 -0
- package/dist/src/utils/address-validation.d.ts +9 -0
- package/dist/src/utils/address-validation.d.ts.map +1 -0
- package/dist/src/utils/address-validation.js +42 -0
- package/dist/src/utils/address-validation.js.map +1 -0
- package/dist/src/utils/address.d.ts +9 -0
- package/dist/src/utils/address.d.ts.map +1 -0
- package/dist/src/utils/address.js +74 -0
- package/dist/src/utils/address.js.map +1 -0
- package/dist/src/utils/base64-to-base58.d.ts +2 -0
- package/dist/src/utils/base64-to-base58.d.ts.map +1 -0
- package/dist/src/utils/base64-to-base58.js +22 -0
- package/dist/src/utils/base64-to-base58.js.map +1 -0
- package/dist/src/utils/chain-id-name.d.ts +3 -0
- package/dist/src/utils/chain-id-name.d.ts.map +1 -0
- package/dist/src/utils/chain-id-name.js +23 -0
- package/dist/src/utils/chain-id-name.js.map +1 -0
- package/dist/src/utils/check-vm.d.ts +8 -0
- package/dist/src/utils/check-vm.d.ts.map +1 -0
- package/dist/src/utils/check-vm.js +39 -0
- package/dist/src/utils/check-vm.js.map +1 -0
- package/dist/src/utils/constants.d.ts +7 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/constants.js +10 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/create-error-message.d.ts +5 -0
- package/dist/src/utils/create-error-message.d.ts.map +1 -0
- package/dist/src/utils/create-error-message.js +42 -0
- package/dist/src/utils/create-error-message.js.map +1 -0
- package/dist/src/utils/fetch-spl-metadata.d.ts +4 -0
- package/dist/src/utils/fetch-spl-metadata.d.ts.map +1 -0
- package/dist/src/utils/fetch-spl-metadata.js +108 -0
- package/dist/src/utils/fetch-spl-metadata.js.map +1 -0
- package/dist/src/utils/is-native.d.ts +2 -0
- package/dist/src/utils/is-native.d.ts.map +1 -0
- package/dist/src/utils/is-native.js +23 -0
- package/dist/src/utils/is-native.js.map +1 -0
- package/dist/src/utils/logger.d.ts +56 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +108 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/throw-error.d.ts +3 -0
- package/dist/src/utils/throw-error.d.ts.map +1 -0
- package/dist/src/utils/throw-error.js +8 -0
- package/dist/src/utils/throw-error.js.map +1 -0
- package/dist/tests/core/intent-protocol-suite.test.d.ts +2 -0
- package/dist/tests/core/intent-protocol-suite.test.d.ts.map +1 -0
- package/dist/tests/core/intent-protocol-suite.test.js +485 -0
- package/dist/tests/core/intent-protocol-suite.test.js.map +1 -0
- package/dist/tests/core/intents-protocols.test.d.ts +2 -0
- package/dist/tests/core/intents-protocols.test.d.ts.map +1 -0
- package/dist/tests/core/intents-protocols.test.js +307 -0
- package/dist/tests/core/intents-protocols.test.js.map +1 -0
- package/dist/tests/core/protocol-test-runner.d.ts +62 -0
- package/dist/tests/core/protocol-test-runner.d.ts.map +1 -0
- package/dist/tests/core/protocol-test-runner.js +260 -0
- package/dist/tests/core/protocol-test-runner.js.map +1 -0
- package/dist/tests/core/setup.test.d.ts +1 -0
- package/dist/tests/core/setup.test.d.ts.map +1 -0
- package/dist/tests/core/setup.test.js +13 -0
- package/dist/tests/core/setup.test.js.map +1 -0
- package/dist/tests/fixtures/test-data.d.ts +84 -0
- package/dist/tests/fixtures/test-data.d.ts.map +1 -0
- package/dist/tests/fixtures/test-data.js +142 -0
- package/dist/tests/fixtures/test-data.js.map +1 -0
- package/dist/tests/integration/cross-chain.test.d.ts +2 -0
- package/dist/tests/integration/cross-chain.test.d.ts.map +1 -0
- package/dist/tests/integration/cross-chain.test.js +44 -0
- package/dist/tests/integration/cross-chain.test.js.map +1 -0
- package/dist/tests/protocols/simple-protocol.test.d.ts +2 -0
- package/dist/tests/protocols/simple-protocol.test.d.ts.map +1 -0
- package/dist/tests/protocols/simple-protocol.test.js +77 -0
- package/dist/tests/protocols/simple-protocol.test.js.map +1 -0
- package/dist/tests/setup.d.ts +24 -0
- package/dist/tests/setup.d.ts.map +1 -0
- package/dist/tests/setup.js +48 -0
- package/dist/tests/setup.js.map +1 -0
- package/dist/tests/utils/test-generator.d.ts +30 -0
- package/dist/tests/utils/test-generator.d.ts.map +1 -0
- package/dist/tests/utils/test-generator.js +153 -0
- package/dist/tests/utils/test-generator.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type PumpFunConfig = {
|
|
2
|
+
solanaRpcUrl: string;
|
|
3
|
+
};
|
|
4
|
+
export type PumpFunPriceResponse = {
|
|
5
|
+
tokenMint: string;
|
|
6
|
+
tokenAmount: string;
|
|
7
|
+
solAmount: string;
|
|
8
|
+
operation: 'buy' | 'sell';
|
|
9
|
+
feeBasisPoint: string;
|
|
10
|
+
};
|
|
11
|
+
export type PumpFunQuoteResponse = {
|
|
12
|
+
transactions: string[];
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=pumpfun.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pumpfun.types.d.ts","sourceRoot":"","sources":["../../../../src/protocols/pumpfun/pumpfun.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAEjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pumpfun.types.js","sourceRoot":"","sources":["../../../../src/protocols/pumpfun/pumpfun.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { RaydiumV2Service } from './raydium-v2.service';
|
|
2
|
+
export type { RaydiumSdkConfig, RaydiumApiPriceParams, RaydiumApiQuoteParams, RaydiumTokenAccountsResponse, RaydiumV2PriceResponse, RaydiumV2QuoteResponse, RaydiumV2QuoteErrorResponse, RaydiumV2FeesResponse, RaydiumV2TransactionResponse, RaydiumV2FeeData, RaydiumQuoteResponses, } from './raydium-v2.types';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/protocols/raydium/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,4BAA4B,EAC5B,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RaydiumV2Service = void 0;
|
|
4
|
+
// Raydium Protocol - All exports
|
|
5
|
+
var raydium_v2_service_1 = require("./raydium-v2.service");
|
|
6
|
+
Object.defineProperty(exports, "RaydiumV2Service", { enumerable: true, get: function () { return raydium_v2_service_1.RaydiumV2Service; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/protocols/raydium/index.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AACjC,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { IIntentProtocol } from '../../interfaces/intent-protocol';
|
|
2
|
+
import { ChainIdEnum, ProtocolEnum } from '../../types/enums';
|
|
3
|
+
import { IntentPriceParams } from '../../types/price-params';
|
|
4
|
+
import { PriceResponse, RawProtocolPriceResponse } from '../../types/price-response';
|
|
5
|
+
import { RaydiumApiPriceParams, RaydiumApiQuoteParams, RaydiumSdkConfig } from './raydium-v2.types';
|
|
6
|
+
import { RaydiumV2PriceResponse, RaydiumV2QuoteResponse, RaydiumV2FeeData, RaydiumTokenAccountsResponse } from './raydium-v2.types';
|
|
7
|
+
import { IntentQuoteParams } from '../../types/quote-params';
|
|
8
|
+
import { QuoteResponse } from '../../types/quote-response';
|
|
9
|
+
import { Connection } from '@solana/web3.js';
|
|
10
|
+
import { IntentsSDKConfig } from '../../types/sdk-config';
|
|
11
|
+
export declare class RaydiumV2Service implements IIntentProtocol {
|
|
12
|
+
readonly protocol = ProtocolEnum.RAYDIUM_V2;
|
|
13
|
+
readonly chains: ChainIdEnum[];
|
|
14
|
+
readonly singleChain: boolean;
|
|
15
|
+
readonly multiChain: boolean;
|
|
16
|
+
readonly txVersion: string;
|
|
17
|
+
protected readonly connection: Connection | undefined;
|
|
18
|
+
constructor(config: IntentsSDKConfig & RaydiumSdkConfig);
|
|
19
|
+
isCorrectConfig<T extends {
|
|
20
|
+
[key: string]: string;
|
|
21
|
+
}>(config: {
|
|
22
|
+
[key: string]: string;
|
|
23
|
+
}): config is T;
|
|
24
|
+
fetchPrice(params: IntentPriceParams): Promise<Omit<PriceResponse, 'protocolResponse'> & {
|
|
25
|
+
protocolResponse: RaydiumV2PriceResponse;
|
|
26
|
+
}>;
|
|
27
|
+
fetchQuote(params: IntentQuoteParams): Promise<QuoteResponse>;
|
|
28
|
+
requestRaydiumV2Price(params: RaydiumApiPriceParams): Promise<RaydiumV2PriceResponse>;
|
|
29
|
+
requestRaydiumV2Quote(params: RaydiumApiQuoteParams): Promise<RaydiumV2QuoteResponse>;
|
|
30
|
+
requestRaydiumFees(): Promise<RaydiumV2FeeData>;
|
|
31
|
+
protected fetchTokenAccountData(owner: string, connection: Connection): Promise<RaydiumTokenAccountsResponse>;
|
|
32
|
+
protected validatePriceParams(params: IntentPriceParams): void;
|
|
33
|
+
protected isRaydiumPriceResponse(response: RawProtocolPriceResponse): response is RaydiumV2PriceResponse;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=raydium-v2.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raydium-v2.service.d.ts","sourceRoot":"","sources":["../../../../src/protocols/raydium/raydium-v2.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAO1D,qBAAa,gBAAiB,YAAW,eAAe;IACtD,SAAgB,QAAQ,2BAA2B;IACnD,SAAgB,MAAM,gBAAwB;IAE9C,SAAgB,WAAW,EAAE,OAAO,CAAQ;IAC5C,SAAgB,UAAU,EAAE,OAAO,CAAS;IAE5C,SAAgB,SAAS,EAAE,MAAM,CAAQ;IAEzC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;gBAE1C,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;IAavD,eAAe,CAAC,CAAC,SAAS;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,GAAG,MAAM,IAAI,CAAC;IAIF,UAAU,CACrB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CACR,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG;QAAE,gBAAgB,EAAE,sBAAsB,CAAA;KAAE,CACvF;IAoDY,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAoH7D,qBAAqB,CAChC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IA+BrB,qBAAqB,CAChC,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,sBAAsB,CAAC;IAuCrB,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAC;cAuB5C,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,4BAA4B,CAAC;IAuCxC,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAiB9D,SAAS,CAAC,sBAAsB,CAC9B,QAAQ,EAAE,wBAAwB,GACjC,QAAQ,IAAI,sBAAsB;CAqBtC"}
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RaydiumV2Service = void 0;
|
|
7
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
8
|
+
const enums_1 = require("../../types/enums");
|
|
9
|
+
const constants_1 = require("../../utils/constants");
|
|
10
|
+
const throw_error_1 = require("../../utils/throw-error");
|
|
11
|
+
const logger_1 = require("../../utils/logger");
|
|
12
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
13
|
+
const axios_1 = __importDefault(require("axios"));
|
|
14
|
+
const raydium_sdk_v2_1 = require("@raydium-io/raydium-sdk-v2");
|
|
15
|
+
const base64_to_base58_1 = require("../../utils/base64-to-base58");
|
|
16
|
+
const create_error_message_1 = require("../../utils/create-error-message");
|
|
17
|
+
let logger;
|
|
18
|
+
class RaydiumV2Service {
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.protocol = enums_1.ProtocolEnum.RAYDIUM_V2;
|
|
21
|
+
this.chains = [enums_1.ChainIdEnum.SOLANA];
|
|
22
|
+
this.singleChain = true;
|
|
23
|
+
this.multiChain = false;
|
|
24
|
+
this.txVersion = 'V0';
|
|
25
|
+
if (config.debug) {
|
|
26
|
+
logger_1.LoggerFactory.configure(logger_1.LoggerFactory.createConsoleLogger({ level: logger_1.LogLevelEnum.DEBUG }));
|
|
27
|
+
}
|
|
28
|
+
// Use custom logger if provided
|
|
29
|
+
else if (config.logger) {
|
|
30
|
+
logger_1.LoggerFactory.configure(config.logger);
|
|
31
|
+
}
|
|
32
|
+
logger = logger_1.LoggerFactory.getLogger();
|
|
33
|
+
this.connection = new web3_js_1.Connection(config.solanaRpcUrl, 'confirmed');
|
|
34
|
+
}
|
|
35
|
+
isCorrectConfig(config) {
|
|
36
|
+
return typeof config['solanaRpcUrl'] === 'string' && config['solanaRpcUrl'].length > 0;
|
|
37
|
+
}
|
|
38
|
+
async fetchPrice(params) {
|
|
39
|
+
this.validatePriceParams(params);
|
|
40
|
+
const { tokenIn, tokenOut, amountIn, slippage } = params;
|
|
41
|
+
try {
|
|
42
|
+
const inputMint = tokenIn === constants_1.NATIVE_SOL ? constants_1.WRAPPED_SOL : tokenIn;
|
|
43
|
+
const outputMint = tokenOut === constants_1.NATIVE_SOL ? constants_1.WRAPPED_SOL : tokenOut;
|
|
44
|
+
logger.debug('Making Raydium V2 price request', {
|
|
45
|
+
inputMint,
|
|
46
|
+
outputMint,
|
|
47
|
+
amountIn,
|
|
48
|
+
slippage,
|
|
49
|
+
});
|
|
50
|
+
const priceResponse = await this.requestRaydiumV2Price({
|
|
51
|
+
tokenIn: inputMint,
|
|
52
|
+
tokenOut: outputMint,
|
|
53
|
+
amountIn: amountIn,
|
|
54
|
+
slippage,
|
|
55
|
+
});
|
|
56
|
+
const amountOut = priceResponse.data.outputAmount;
|
|
57
|
+
const priceImpact = priceResponse.data.priceImpactPct;
|
|
58
|
+
logger.debug('Successfully received price info from Raydium V2', {
|
|
59
|
+
amountOut,
|
|
60
|
+
priceImpact,
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
protocol: enums_1.ProtocolEnum.RAYDIUM_V2,
|
|
64
|
+
networkIn: enums_1.ChainIdEnum.SOLANA,
|
|
65
|
+
networkOut: enums_1.ChainIdEnum.SOLANA,
|
|
66
|
+
tokenIn,
|
|
67
|
+
tokenOut,
|
|
68
|
+
amountIn,
|
|
69
|
+
amountOut,
|
|
70
|
+
slippage: params.slippage,
|
|
71
|
+
protocolResponse: priceResponse,
|
|
72
|
+
priceImpact,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
|
|
77
|
+
logger.error(`Failed to fetch Raydium V2 swap price`, errorMessageError);
|
|
78
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Failed to fetch Raydium V2 swap price, error: ${errorMessage}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async fetchQuote(params) {
|
|
82
|
+
this.validatePriceParams(params);
|
|
83
|
+
if (!this.connection) {
|
|
84
|
+
logger.error('Connection not initialized');
|
|
85
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.MISSING_RPC_URL, 'Connection not initialized');
|
|
86
|
+
}
|
|
87
|
+
const { from } = params;
|
|
88
|
+
let { priceResponse } = params;
|
|
89
|
+
try {
|
|
90
|
+
if (!priceResponse || !this.isRaydiumPriceResponse(priceResponse.protocolResponse)) {
|
|
91
|
+
logger.debug('No valid price response provided, fetching price first');
|
|
92
|
+
priceResponse = await this.fetchPrice(params);
|
|
93
|
+
}
|
|
94
|
+
if (!this.isRaydiumPriceResponse(priceResponse.protocolResponse)) {
|
|
95
|
+
logger.error(`Invalid Raydium price response`);
|
|
96
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.PRICE_NOT_FOUND, `Invalid Raydium price response: ${JSON.stringify(priceResponse)}`);
|
|
97
|
+
}
|
|
98
|
+
const tokenIn = priceResponse.tokenIn;
|
|
99
|
+
const tokenOut = priceResponse.tokenOut;
|
|
100
|
+
const isInputSol = tokenIn === constants_1.NATIVE_SOL || tokenIn === constants_1.WRAPPED_SOL;
|
|
101
|
+
const isOutputSol = tokenOut === constants_1.NATIVE_SOL || tokenOut === constants_1.WRAPPED_SOL;
|
|
102
|
+
const inputTokenAddress = isInputSol ? constants_1.WRAPPED_SOL : tokenIn;
|
|
103
|
+
const outputTokenAddress = isOutputSol ? constants_1.WRAPPED_SOL : tokenOut;
|
|
104
|
+
logger.debug('Fetching token accounts and compute budget tiers');
|
|
105
|
+
const tokenAccountsPromise = this.fetchTokenAccountData(from, this.connection);
|
|
106
|
+
const computeBudgetTiersPromise = this.requestRaydiumFees();
|
|
107
|
+
const [tokenAccountsResp, computeBudgetTiers] = await Promise.all([
|
|
108
|
+
tokenAccountsPromise,
|
|
109
|
+
computeBudgetTiersPromise,
|
|
110
|
+
]);
|
|
111
|
+
const { tokenAccounts } = tokenAccountsResp;
|
|
112
|
+
const inputTokenAcc = tokenAccounts.find(a => a.mint.toBase58() === inputTokenAddress)?.publicKey;
|
|
113
|
+
const outputTokenAcc = tokenAccounts.find(a => a.mint.toBase58() === outputTokenAddress)?.publicKey;
|
|
114
|
+
if (!inputTokenAcc && !isInputSol) {
|
|
115
|
+
logger.error(`Failed to find input token account for from address. No token account found for token: ${tokenIn} and address: ${from}`);
|
|
116
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.QUOTE_NOT_FOUND, `Failed to find input token account for from address. No token account found for token: ${tokenIn} and address: ${from}`);
|
|
117
|
+
}
|
|
118
|
+
logger.debug('Making Raydium V2 quote request', {
|
|
119
|
+
from,
|
|
120
|
+
isInputSol,
|
|
121
|
+
isOutputSol,
|
|
122
|
+
computeBudget: computeBudgetTiers.data.default.h,
|
|
123
|
+
});
|
|
124
|
+
const raydiumQuoteResponse = await this.requestRaydiumV2Quote({
|
|
125
|
+
computeBudget: computeBudgetTiers.data.default.h,
|
|
126
|
+
priceResponse: priceResponse.protocolResponse,
|
|
127
|
+
from,
|
|
128
|
+
isInputSol,
|
|
129
|
+
isOutputSol,
|
|
130
|
+
inputAccount: inputTokenAcc ? inputTokenAcc.toBase58() : undefined,
|
|
131
|
+
outputAccount: outputTokenAcc ? outputTokenAcc.toBase58() : undefined,
|
|
132
|
+
});
|
|
133
|
+
const data = raydiumQuoteResponse.data[0];
|
|
134
|
+
if (!data) {
|
|
135
|
+
logger.error(`Failed to fetch quote from Raydium, no data found in Raydium response`);
|
|
136
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.QUOTE_NOT_FOUND, `Failed to fetch quote from Raydium, no data found in Raydium response`);
|
|
137
|
+
}
|
|
138
|
+
const swapTransaction = data.transaction;
|
|
139
|
+
const encodedTransaction = (0, base64_to_base58_1.convertBase64ToBase58)(swapTransaction);
|
|
140
|
+
logger.debug('Successfully received quote from Raydium V2');
|
|
141
|
+
return {
|
|
142
|
+
protocol: enums_1.ProtocolEnum.RAYDIUM_V2,
|
|
143
|
+
tokenIn: priceResponse.tokenIn,
|
|
144
|
+
tokenOut: priceResponse.tokenOut,
|
|
145
|
+
amountIn: priceResponse.amountIn,
|
|
146
|
+
amountOut: priceResponse.amountOut,
|
|
147
|
+
from,
|
|
148
|
+
receiver: from,
|
|
149
|
+
networkIn: enums_1.ChainIdEnum.SOLANA,
|
|
150
|
+
networkOut: enums_1.ChainIdEnum.SOLANA,
|
|
151
|
+
slippage: priceResponse.slippage,
|
|
152
|
+
protocolResponse: raydiumQuoteResponse,
|
|
153
|
+
executionPayload: {
|
|
154
|
+
transactionData: [encodedTransaction],
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
|
|
160
|
+
logger.error(`Failed to fetch quote from ${this.protocol}`, errorMessageError);
|
|
161
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.QUOTE_NOT_FOUND, `Failed to fetch Raydium V2 quote, error: ${errorMessage}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
async requestRaydiumV2Price(params) {
|
|
165
|
+
const { tokenIn, tokenOut, amountIn, slippage } = params;
|
|
166
|
+
const queryParams = new URLSearchParams({
|
|
167
|
+
inputMint: tokenIn,
|
|
168
|
+
outputMint: tokenOut,
|
|
169
|
+
amount: amountIn,
|
|
170
|
+
slippageBps: (slippage * 100).toString(),
|
|
171
|
+
txVersion: this.txVersion,
|
|
172
|
+
});
|
|
173
|
+
const url = `${raydium_sdk_v2_1.API_URLS.SWAP_HOST}/compute/swap-base-in?${queryParams}`;
|
|
174
|
+
logger.debug(`Making Raydium V2 price request to: ${url}`);
|
|
175
|
+
try {
|
|
176
|
+
const response = await axios_1.default.get(url);
|
|
177
|
+
if (response.status !== 200) {
|
|
178
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.FAILED_HTTP_REQUEST, `HTTP error! status: ${response.status}`);
|
|
179
|
+
}
|
|
180
|
+
return response.data;
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
|
|
184
|
+
logger.error('Failed to request Raydium V2 price', errorMessageError);
|
|
185
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.FAILED_HTTP_REQUEST, `Failed to request Raydium V2 price: ${errorMessage}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async requestRaydiumV2Quote(params) {
|
|
189
|
+
const { priceResponse, from, isInputSol, isOutputSol, inputAccount, outputAccount } = params;
|
|
190
|
+
const url = `${raydium_sdk_v2_1.API_URLS.SWAP_HOST}/transaction/swap-base-in`;
|
|
191
|
+
const requestBody = {
|
|
192
|
+
computeUnitPriceMicroLamports: '0',
|
|
193
|
+
swapResponse: priceResponse,
|
|
194
|
+
txVersion: this.txVersion,
|
|
195
|
+
wallet: from,
|
|
196
|
+
wrapSol: isInputSol,
|
|
197
|
+
unwrapSol: isOutputSol,
|
|
198
|
+
inputAccount: inputAccount,
|
|
199
|
+
outputAccount: outputAccount,
|
|
200
|
+
};
|
|
201
|
+
logger.debug(`Making Raydium V2 quote request to: ${url}`, requestBody);
|
|
202
|
+
try {
|
|
203
|
+
const response = await axios_1.default.post(url, requestBody);
|
|
204
|
+
if (response.status !== 200) {
|
|
205
|
+
logger.error(`Failed to fetch quote from Raydium: ${JSON.stringify(response.data)}`);
|
|
206
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.FAILED_HTTP_REQUEST, `Failed to fetch quote from Raydium: ${JSON.stringify(response.data)}`);
|
|
207
|
+
}
|
|
208
|
+
return response.data;
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
|
|
212
|
+
logger.error('Failed to request Raydium V2 quote', errorMessageError);
|
|
213
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.FAILED_HTTP_REQUEST, `Failed to request Raydium V2 quote: ${errorMessage}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async requestRaydiumFees() {
|
|
217
|
+
const url = `${raydium_sdk_v2_1.API_URLS.BASE_HOST}${raydium_sdk_v2_1.API_URLS.PRIORITY_FEE}`;
|
|
218
|
+
logger.debug(`Making Raydium V2 fees request to: ${url}`);
|
|
219
|
+
try {
|
|
220
|
+
const response = await axios_1.default.get(url);
|
|
221
|
+
if (response.status !== 200 || !response?.data?.success) {
|
|
222
|
+
logger.error(`Failed to fetch fees from Raydium: ${JSON.stringify(response.data)}`);
|
|
223
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.FAILED_HTTP_REQUEST, `HTTP error! status: ${response.status}`);
|
|
224
|
+
}
|
|
225
|
+
return response.data;
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
|
|
229
|
+
logger.error('Failed to request Raydium fees', errorMessageError);
|
|
230
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.FAILED_HTTP_REQUEST, `Failed to request Raydium fees: ${errorMessage}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async fetchTokenAccountData(owner, connection) {
|
|
234
|
+
try {
|
|
235
|
+
logger.debug(`Fetching token account data for owner: ${owner}`);
|
|
236
|
+
const ownerPublicKey = new web3_js_1.PublicKey(owner);
|
|
237
|
+
const solAccountRespPromise = connection.getAccountInfo(ownerPublicKey);
|
|
238
|
+
const tokenAccountRespPromise = connection.getTokenAccountsByOwner(ownerPublicKey, {
|
|
239
|
+
programId: spl_token_1.TOKEN_PROGRAM_ID,
|
|
240
|
+
});
|
|
241
|
+
const token2022ReqPromise = connection.getTokenAccountsByOwner(ownerPublicKey, {
|
|
242
|
+
programId: spl_token_1.TOKEN_2022_PROGRAM_ID,
|
|
243
|
+
});
|
|
244
|
+
const [solAccountResp, tokenAccountResp, token2022Req] = await Promise.all([
|
|
245
|
+
solAccountRespPromise,
|
|
246
|
+
tokenAccountRespPromise,
|
|
247
|
+
token2022ReqPromise,
|
|
248
|
+
]);
|
|
249
|
+
const tokenAccountData = (0, raydium_sdk_v2_1.parseTokenAccountResp)({
|
|
250
|
+
owner: ownerPublicKey,
|
|
251
|
+
solAccountResp,
|
|
252
|
+
tokenAccountResp: {
|
|
253
|
+
context: tokenAccountResp.context,
|
|
254
|
+
value: [...tokenAccountResp.value, ...token2022Req.value],
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
return tokenAccountData;
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
const { errorMessage, errorMessageError } = (0, create_error_message_1.createErrorMessage)(error);
|
|
261
|
+
logger.error(`Failed to fetch token account data`, errorMessageError);
|
|
262
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.FAILED_HTTP_REQUEST, `Failed to fetch token account data: ${errorMessage}`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
validatePriceParams(params) {
|
|
266
|
+
const { networkIn, networkOut } = params;
|
|
267
|
+
if (!this.multiChain && networkIn !== networkOut) {
|
|
268
|
+
logger.error('Multi-chain swaps not supported');
|
|
269
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, 'Multi-chain swaps not supported');
|
|
270
|
+
}
|
|
271
|
+
if (!this.chains.includes(networkIn)) {
|
|
272
|
+
logger.error(`Network ${networkIn} not supported`);
|
|
273
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, `Network ${networkIn} not supported`);
|
|
274
|
+
}
|
|
275
|
+
if (!this.chains.includes(networkOut)) {
|
|
276
|
+
logger.error(`Network ${networkOut} not supported`);
|
|
277
|
+
throw (0, throw_error_1.sdkError)(enums_1.SdkErrorEnum.INVALID_PARAMS, `Network ${networkOut} not supported`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
isRaydiumPriceResponse(response) {
|
|
281
|
+
return (typeof response === 'object' &&
|
|
282
|
+
response !== null &&
|
|
283
|
+
'id' in response &&
|
|
284
|
+
'success' in response &&
|
|
285
|
+
'version' in response &&
|
|
286
|
+
'data' in response &&
|
|
287
|
+
typeof response.data === 'object' &&
|
|
288
|
+
response.data !== null &&
|
|
289
|
+
'swapType' in response.data &&
|
|
290
|
+
'inputMint' in response.data &&
|
|
291
|
+
'inputAmount' in response.data &&
|
|
292
|
+
'outputMint' in response.data &&
|
|
293
|
+
'outputAmount' in response.data &&
|
|
294
|
+
'otherAmountThreshold' in response.data &&
|
|
295
|
+
'slippageBps' in response.data &&
|
|
296
|
+
'priceImpactPct' in response.data &&
|
|
297
|
+
'routePlan' in response.data);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
exports.RaydiumV2Service = RaydiumV2Service;
|
|
301
|
+
//# sourceMappingURL=raydium-v2.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raydium-v2.service.js","sourceRoot":"","sources":["../../../../src/protocols/raydium/raydium-v2.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { TokenAccount, TokenAccountRaw } from '@raydium-io/raydium-sdk-v2';
|
|
2
|
+
export type RaydiumSdkConfig = {
|
|
3
|
+
solanaRpcUrl: string;
|
|
4
|
+
};
|
|
5
|
+
export type RaydiumApiPriceParams = {
|
|
6
|
+
tokenIn: string;
|
|
7
|
+
tokenOut: string;
|
|
8
|
+
amountIn: string;
|
|
9
|
+
slippage: number;
|
|
10
|
+
};
|
|
11
|
+
export type RaydiumApiQuoteParams = {
|
|
12
|
+
computeBudget: number;
|
|
13
|
+
priceResponse: RaydiumV2PriceResponse;
|
|
14
|
+
from: string;
|
|
15
|
+
isInputSol: boolean;
|
|
16
|
+
isOutputSol: boolean;
|
|
17
|
+
inputAccount?: string;
|
|
18
|
+
outputAccount?: string;
|
|
19
|
+
};
|
|
20
|
+
export type RaydiumTokenAccountsResponse = {
|
|
21
|
+
tokenAccounts: TokenAccount[];
|
|
22
|
+
tokenAccountRawInfos: TokenAccountRaw[];
|
|
23
|
+
};
|
|
24
|
+
export type RaydiumV2PriceResponse = {
|
|
25
|
+
id: string;
|
|
26
|
+
success: boolean;
|
|
27
|
+
version: 'V0' | 'V1';
|
|
28
|
+
openTime?: undefined;
|
|
29
|
+
msg: undefined;
|
|
30
|
+
data: SwapData;
|
|
31
|
+
};
|
|
32
|
+
export type RaydiumV2QuoteResponse = {
|
|
33
|
+
id: string;
|
|
34
|
+
version: string;
|
|
35
|
+
success: boolean;
|
|
36
|
+
data: {
|
|
37
|
+
transaction: string;
|
|
38
|
+
}[];
|
|
39
|
+
};
|
|
40
|
+
export type RaydiumV2QuoteErrorResponse = {
|
|
41
|
+
id: string;
|
|
42
|
+
version: string;
|
|
43
|
+
success: boolean;
|
|
44
|
+
msg: string;
|
|
45
|
+
};
|
|
46
|
+
export type RaydiumV2FeesResponse = {
|
|
47
|
+
id: string;
|
|
48
|
+
success: boolean;
|
|
49
|
+
data: RaydiumV2FeeData;
|
|
50
|
+
};
|
|
51
|
+
export type RaydiumV2TransactionResponse = {
|
|
52
|
+
id: string;
|
|
53
|
+
version: string;
|
|
54
|
+
success: boolean;
|
|
55
|
+
data: TransactionData[];
|
|
56
|
+
};
|
|
57
|
+
export type RaydiumV2FeeData = {
|
|
58
|
+
id: string;
|
|
59
|
+
success: boolean;
|
|
60
|
+
data: {
|
|
61
|
+
default: {
|
|
62
|
+
vh: number;
|
|
63
|
+
h: number;
|
|
64
|
+
m: number;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
type TransactionData = {
|
|
69
|
+
transaction: string;
|
|
70
|
+
};
|
|
71
|
+
type RoutePlanItem = {
|
|
72
|
+
poolId: string;
|
|
73
|
+
inputMint: string;
|
|
74
|
+
outputMint: string;
|
|
75
|
+
feeMint: string;
|
|
76
|
+
feeRate: number;
|
|
77
|
+
feeAmount: string;
|
|
78
|
+
remainingAccounts: any[];
|
|
79
|
+
};
|
|
80
|
+
type SwapData = {
|
|
81
|
+
swapType: 'BaseIn';
|
|
82
|
+
inputMint: string;
|
|
83
|
+
inputAmount: string;
|
|
84
|
+
outputMint: string;
|
|
85
|
+
outputAmount: string;
|
|
86
|
+
otherAmountThreshold: string;
|
|
87
|
+
slippageBps: number;
|
|
88
|
+
priceImpactPct: number;
|
|
89
|
+
referrerAmount: string;
|
|
90
|
+
routePlan: RoutePlanItem[];
|
|
91
|
+
};
|
|
92
|
+
export type RaydiumQuoteResponses = {
|
|
93
|
+
transactions: string[];
|
|
94
|
+
};
|
|
95
|
+
export {};
|
|
96
|
+
//# sourceMappingURL=raydium-v2.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raydium-v2.types.d.ts","sourceRoot":"","sources":["../../../../src/protocols/raydium/raydium-v2.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"raydium-v2.types.js","sourceRoot":"","sources":["../../../../src/protocols/raydium/raydium-v2.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { ZeroXService } from './zeroX.service';
|
|
2
|
+
export type { ZeroXConfig, ZeroXPriceRequestParams, ZeroXQuoteRequestParams, ZeroXFee, ZeroXFees, ZeroXBalanceIssue, ZeroXIssues, ZeroXFill, ZeroXToken, ZeroXRoute, ZeroXTokenTaxInfo, ZeroXTokenMetadata, ZeroXTransaction, ZeroXSwapQuoteResponse, ZeroXPriceResponse, ZeroXQuoteResponse, ZeroXMultiPriceParams, ZeroXMultiQuoteParams, } from './zeroX.types';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/protocols/zeroX/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EACV,WAAW,EACX,uBAAuB,EACvB,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZeroXService = void 0;
|
|
4
|
+
// 0x Protocol - All exports
|
|
5
|
+
var zeroX_service_1 = require("./zeroX.service");
|
|
6
|
+
Object.defineProperty(exports, "ZeroXService", { enumerable: true, get: function () { return zeroX_service_1.ZeroXService; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/protocols/zeroX/index.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AAC5B,iDAA+C;AAAtC,6GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { IIntentProtocol } from '../../interfaces/intent-protocol';
|
|
2
|
+
import { ChainIdEnum, ProtocolEnum } from '../../types/enums';
|
|
3
|
+
import { IntentPriceParams } from '../../types/price-params';
|
|
4
|
+
import { PriceResponse, RawProtocolPriceResponse } from '../../types/price-response';
|
|
5
|
+
import { IntentQuoteParams } from '../../types/quote-params';
|
|
6
|
+
import { QuoteResponse, RawProtocolQuoteResponse } from '../../types/quote-response';
|
|
7
|
+
import { IntentsSDKConfig } from '../../types/sdk-config';
|
|
8
|
+
import { ZeroXConfig, ZeroXPriceResponse, ZeroXQuoteResponse } from './zeroX.types';
|
|
9
|
+
export declare class ZeroXService implements IIntentProtocol {
|
|
10
|
+
readonly protocol = ProtocolEnum.ZEROX;
|
|
11
|
+
readonly chains: ChainIdEnum[];
|
|
12
|
+
readonly singleChain = true;
|
|
13
|
+
readonly multiChain = false;
|
|
14
|
+
baseUrl: string;
|
|
15
|
+
readonly apiKey: string;
|
|
16
|
+
constructor(config?: IntentsSDKConfig & ZeroXConfig);
|
|
17
|
+
isCorrectConfig<T extends {
|
|
18
|
+
[key: string]: string;
|
|
19
|
+
}>(config: {
|
|
20
|
+
[key: string]: string;
|
|
21
|
+
}): config is T;
|
|
22
|
+
/**
|
|
23
|
+
* Unlike other DEX aggregators like KyberSwap, 0x doesn't have a separate price fetch endpoint.
|
|
24
|
+
* Instead, we'll use the quote endpoint to get price information as well.
|
|
25
|
+
*/
|
|
26
|
+
fetchPrice(params: IntentPriceParams): Promise<Omit<PriceResponse, 'protocolResponse'> & {
|
|
27
|
+
protocolResponse: ZeroXPriceResponse;
|
|
28
|
+
}>;
|
|
29
|
+
fetchQuote(params: IntentQuoteParams): Promise<QuoteResponse & {
|
|
30
|
+
protocolResponse: ZeroXQuoteResponse;
|
|
31
|
+
}>;
|
|
32
|
+
protected buildRequestUrl(params: IntentQuoteParams): string;
|
|
33
|
+
protected validatePriceParams(params: IntentPriceParams): void;
|
|
34
|
+
protected isZeroXPriceResponse(response: RawProtocolPriceResponse): response is ZeroXPriceResponse;
|
|
35
|
+
protected isZeroXQuoteResponse(response: RawProtocolQuoteResponse): response is ZeroXQuoteResponse;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=zeroX.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zeroX.service.d.ts","sourceRoot":"","sources":["../../../../src/protocols/zeroX/zeroX.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAgB,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAO1D,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,eAAe,CAAC;AAIvB,qBAAa,YAAa,YAAW,eAAe;IAClD,SAAgB,QAAQ,sBAAsB;IAC9C,SAAgB,MAAM,gBAQpB;IACF,SAAgB,WAAW,QAAQ;IACnC,SAAgB,UAAU,SAAS;IACnC,OAAO,SAAoD;IAC3D,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAEnB,MAAM,CAAC,EAAE,gBAAgB,GAAG,WAAW;IAmBnD,eAAe,CAAC,CAAC,SAAS;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;KACvB,GAAG,MAAM,IAAI,CAAC;IAIf;;;OAGG;IACU,UAAU,CACrB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG;QAAE,gBAAgB,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAoDjF,UAAU,CACrB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,aAAa,GAAG;QAAE,gBAAgB,EAAE,kBAAkB,CAAA;KAAE,CAAC;IA+EpE,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAmB5D,SAAS,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAsB9D,SAAS,CAAC,oBAAoB,CAC5B,QAAQ,EAAE,wBAAwB,GACjC,QAAQ,IAAI,kBAAkB;IAIjC,SAAS,CAAC,oBAAoB,CAC5B,QAAQ,EAAE,wBAAwB,GACjC,QAAQ,IAAI,kBAAkB;CAGlC"}
|