diff --git a/README.md b/README.md index f2a2e47..c707a2f 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,13 @@ Broadcast a sponsored transaction to Alex's sponsored tx services function broadcastSponsoredTx(txRaw: string): Promise; ```` +### isSponsoredSwapEnabled + +Broadcast a sponsored transaction to Alex's sponsored tx services +```javascript +function isSponsoredSwapEnabled(): Promise; +```` + ## Installation You can install Alex-SDK using npm: diff --git a/src/alexSDK.ts b/src/alexSDK.ts index a4055f9..925a761 100644 --- a/src/alexSDK.ts +++ b/src/alexSDK.ts @@ -12,7 +12,10 @@ import { import { fetchLatestPrices } from './utils/currencyPrice'; import { assignConfig, AssignConfigParams, configs } from './config'; import { AlexContracts } from './generated/smartContract/contracts_Alex'; -import { broadcastSponsoredTx } from './utils/sponsoredTx'; +import { + broadcastSponsoredTx, + isSponsoredSwapEnabled, +} from './utils/sponsoredTx'; export { SponsoredTxError, SponsoredTxErrorCode } from './utils/sponsoredTx'; export class AlexSDK { @@ -102,4 +105,8 @@ export class AlexSDK { broadcastSponsoredTx(txRaw: string): Promise { return broadcastSponsoredTx(txRaw); } + + isSponsoredSwapEnabled(): Promise { + return isSponsoredSwapEnabled(); + } } diff --git a/src/utils/sponsoredTx.ts b/src/utils/sponsoredTx.ts index e94fc9a..925888b 100644 --- a/src/utils/sponsoredTx.ts +++ b/src/utils/sponsoredTx.ts @@ -127,3 +127,25 @@ function hexAddressToHasuraAddress(input: string): string { function hasuraAddressToHex(input: string): string { return input.replace(/\\x/, '0x').toLowerCase(); } + +export async function isSponsoredSwapEnabled(): Promise { + const response = await fetch(configs.SPONSORED_TX_EXECUTOR, { + method: 'POST', + mode: 'cors', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ + query: `query { + isSwapServiceAvailable { + status + } +}`, + }), + }); + if (!response.ok) { + return false; + } + const result = await response.json(); + return result?.data.isSwapServiceAvailable.status === 'ok'; +}