# SingleSwapPrice\<T>

Defined in: [atomiq-sdk/src/prices/SingleSwapPrice.ts:10](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/SingleSwapPrice.ts#L10)

Swap price API using a single price source

## Extends

* `ICachedSwapPrice`<`T`>

## Type Parameters

| Type Parameter             |
| -------------------------- |
| `T` *extends* `MultiChain` |

## Constructors

### Constructor

```
new SingleSwapPrice<T>(

   maxAllowedFeeDiffPPM, 

   priceProvider, 

cacheTimeout?): SingleSwapPrice<T>;
```

Defined in: [atomiq-sdk/src/prices/SingleSwapPrice.ts:14](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/SingleSwapPrice.ts#L14)

#### Parameters

| Parameter              | Type                  |
| ---------------------- | --------------------- |
| `maxAllowedFeeDiffPPM` | `bigint`              |
| `priceProvider`        | `IPriceProvider`<`T`> |
| `cacheTimeout?`        | `number`              |

#### Returns

`SingleSwapPrice`<`T`>

#### Overrides

```
ICachedSwapPrice<T>.constructor
```

## Properties

### cache

```
cache: { [chainIdentifier in string | number | symbol]?: { [tokenAddress: string]: { expiry: number; price: Promise<bigint> } } } = {};
```

Defined in: [atomiq-sdk/src/prices/abstract/ICachedSwapPrice.ts:8](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ICachedSwapPrice.ts#L8)

#### Inherited from

```
ICachedSwapPrice.cache
```

***

### cacheTimeout

```
cacheTimeout: number;
```

Defined in: [atomiq-sdk/src/prices/abstract/ICachedSwapPrice.ts:20](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ICachedSwapPrice.ts#L20)

#### Inherited from

[`RedundantSwapPrice`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/RedundantSwapPrice.md).[`cacheTimeout`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/classes/RedundantSwapPrice.md#cachetimeout)

***

### maxAllowedFeeDifferencePPM

```
maxAllowedFeeDifferencePPM: bigint;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:12](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L12)

#### Inherited from

```
ICachedSwapPrice.maxAllowedFeeDifferencePPM
```

***

### priceProvider

```
priceProvider: IPriceProvider<T>;
```

Defined in: [atomiq-sdk/src/prices/SingleSwapPrice.ts:12](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/SingleSwapPrice.ts#L12)

***

### usdCache?

```
optional usdCache: object;
```

Defined in: [atomiq-sdk/src/prices/abstract/ICachedSwapPrice.ts:16](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ICachedSwapPrice.ts#L16)

#### expiry

```
expiry: number;
```

#### price

```
price: Promise<number>;
```

#### Inherited from

```
ICachedSwapPrice.usdCache
```

## Methods

### getBtcUsdValue()

```
getBtcUsdValue(

   btcSats, 

   abortSignal?, 

preFetchedUsdPrice?): Promise<number>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:338](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L338)

Returns the USD value of the bitcoin amount

#### Parameters

| Parameter             | Type          | Description                                                              |
| --------------------- | ------------- | ------------------------------------------------------------------------ |
| `btcSats`             | `bigint`      | Bitcoin amount in satoshis                                               |
| `abortSignal?`        | `AbortSignal` |                                                                          |
| `preFetchedUsdPrice?` | `number`      | An optional price pre-fetched with [preFetchUsdPrice](#prefetchusdprice) |

#### Returns

`Promise`<`number`>

#### Inherited from

```
ICachedSwapPrice.getBtcUsdValue
```

***

### getFromBtcSwapAmount()

```
getFromBtcSwapAmount<C>(

   chainIdentifier, 

   fromAmount, 

   toToken, 

   abortSignal?, 

preFetchedPrice?): Promise<bigint>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:274](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L274)

Returns amount of `toToken` that is equivalent to `fromAmount` satoshis

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter          | Type          | Description                                                        |
| ------------------ | ------------- | ------------------------------------------------------------------ |
| `chainIdentifier`  | `C`           | Chain identifier string for the smart chain                        |
| `fromAmount`       | `bigint`      | Amount of satoshis                                                 |
| `toToken`          | `string`      | Token address                                                      |
| `abortSignal?`     | `AbortSignal` |                                                                    |
| `preFetchedPrice?` | `bigint`      | An optional price pre-fetched with [preFetchPrice](#prefetchprice) |

#### Returns

`Promise`<`bigint`>

#### Throws

when token is not found

#### Inherited from

```
ICachedSwapPrice.getFromBtcSwapAmount
```

***

### getToBtcSwapAmount()

```
getToBtcSwapAmount<C>(

   chainIdentifier, 

   fromAmount, 

   fromToken, 

   abortSignal?, 

preFetchedPrice?): Promise<bigint>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:301](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L301)

Returns amount of satoshis that are equivalent to `fromAmount` of `fromToken`

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter          | Type          | Description                                                        |
| ------------------ | ------------- | ------------------------------------------------------------------ |
| `chainIdentifier`  | `C`           | Chain identifier string for the smart chain                        |
| `fromAmount`       | `bigint`      | Amount of the token                                                |
| `fromToken`        | `string`      | Token address                                                      |
| `abortSignal?`     | `AbortSignal` |                                                                    |
| `preFetchedPrice?` | `bigint`      | An optional price pre-fetched with [preFetchPrice](#prefetchprice) |

#### Returns

`Promise`<`bigint`>

#### Throws

when token is not found

#### Inherited from

```
ICachedSwapPrice.getToBtcSwapAmount
```

***

### getTokenUsdValue()

```
getTokenUsdValue<C>(

   chainIdentifier, 

   tokenAmount, 

   tokenAddress, 

   abortSignal?, 

preFetchedUsdPrice?): Promise<number>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:355](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L355)

Returns the USD value of the smart chain token amount

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter             | Type          | Description                                                              |
| --------------------- | ------------- | ------------------------------------------------------------------------ |
| `chainIdentifier`     | `C`           | Chain identifier string for the smart chain                              |
| `tokenAmount`         | `bigint`      | Amount of the token in base units                                        |
| `tokenAddress`        | `string`      | Token address                                                            |
| `abortSignal?`        | `AbortSignal` |                                                                          |
| `preFetchedUsdPrice?` | `number`      | An optional price pre-fetched with [preFetchUsdPrice](#prefetchusdprice) |

#### Returns

`Promise`<`number`>

#### Inherited from

```
ICachedSwapPrice.getTokenUsdValue
```

***

### getUsdValue()

```
getUsdValue<C>(

   amount, 

   token, 

   abortSignal?, 

preFetchedUsdPrice?): Promise<number>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:377](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L377)

Returns the USD value of the token amount

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter             | Type                                                                                                | Description                                                              |
| --------------------- | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| `amount`              | `bigint`                                                                                            | Amount in base units of the token                                        |
| `token`               | [`Token`](https://docs.atomiq.exchange/sdk-reference/api/atomiq-sdk/src/type-aliases/Token.md)<`C`> | Token to fetch the usd price for                                         |
| `abortSignal?`        | `AbortSignal`                                                                                       |                                                                          |
| `preFetchedUsdPrice?` | `number`                                                                                            | An optional price pre-fetched with [preFetchUsdPrice](#prefetchusdprice) |

#### Returns

`Promise`<`number`>

#### Inherited from

```
ICachedSwapPrice.getUsdValue
```

***

### isValidAmountReceive()

```
isValidAmountReceive<C>(

   chainIdentifier, 

   amountSats, 

   satsBaseFee, 

   feePPM, 

   receiveToken, 

   tokenAddress, 

   abortSignal?, 

   preFetchedPrice?, 

realSwapFeeSats?): Promise<PriceInfoType>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:195](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L195)

Checks whether the swap amounts are valid given the current market rate for a given pair

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter          | Type          | Description                                                        |
| ------------------ | ------------- | ------------------------------------------------------------------ |
| `chainIdentifier`  | `C`           | Chain identifier of the smart chain                                |
| `amountSats`       | `bigint`      | Amount of sats (BTC) to be paid to the swap                        |
| `satsBaseFee`      | `bigint`      | Base fee in sats (BTC) as reported by the intermediary             |
| `feePPM`           | `bigint`      | PPM fee rate as reported by the intermediary                       |
| `receiveToken`     | `bigint`      | Amount of token to be received from the swap                       |
| `tokenAddress`     | `string`      | Token address to be received                                       |
| `abortSignal?`     | `AbortSignal` |                                                                    |
| `preFetchedPrice?` | `bigint`      | An optional price pre-fetched with [preFetchPrice](#prefetchprice) |
| `realSwapFeeSats?` | `bigint`      |                                                                    |

#### Returns

`Promise`<`PriceInfoType`>

#### Inherited from

```
ICachedSwapPrice.isValidAmountReceive
```

***

### isValidAmountSend()

```
isValidAmountSend<C>(

   chainIdentifier, 

   amountSats, 

   satsBaseFee, 

   feePPM, 

   paidToken, 

   tokenAddress, 

   abortSignal?, 

   preFetchedPrice?, 

realSwapFeeSats?): Promise<PriceInfoType>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:105](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L105)

Checks whether the swap amounts are valid given the current market rate for a given pair

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter          | Type          | Description                                                        |
| ------------------ | ------------- | ------------------------------------------------------------------ |
| `chainIdentifier`  | `C`           | Chain identifier of the smart chain                                |
| `amountSats`       | `bigint`      | Amount of sats (BTC) to be received from the swap                  |
| `satsBaseFee`      | `bigint`      | Base fee in sats (BTC) as reported by the intermediary             |
| `feePPM`           | `bigint`      | PPM fee rate as reported by the intermediary                       |
| `paidToken`        | `bigint`      | Amount of token to be paid to the swap                             |
| `tokenAddress`     | `string`      | Token address to be paid                                           |
| `abortSignal?`     | `AbortSignal` |                                                                    |
| `preFetchedPrice?` | `bigint`      | An optional price pre-fetched with [preFetchPrice](#prefetchprice) |
| `realSwapFeeSats?` | `bigint`      |                                                                    |

#### Returns

`Promise`<`PriceInfoType`>

#### Inherited from

```
ICachedSwapPrice.isValidAmountSend
```

***

### preFetchPrice()

```
preFetchPrice<C>(

   chainIdentifier, 

   tokenAddress, 

abortSignal?): Promise<bigint>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:250](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L250)

Pre-fetches the pricing data for a given token, such that further calls to [isValidAmountReceive](#isvalidamountreceive) or [isValidAmountSend](#isvalidamountsend) are quicker and don't need to wait for the price fetch

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter         | Type          | Description                         |
| ----------------- | ------------- | ----------------------------------- |
| `chainIdentifier` | `C`           | Chain identifier of the smart chain |
| `tokenAddress`    | `string`      | Token address                       |
| `abortSignal?`    | `AbortSignal` |                                     |

#### Returns

`Promise`<`bigint`>

#### Inherited from

```
ICachedSwapPrice.preFetchPrice
```

***

### preFetchUsdPrice()

```
preFetchUsdPrice(abortSignal?): Promise<number>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:260](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L260)

Pre-fetches the Bitcoin USD price data, such that further calls to [getBtcUsdValue](#getbtcusdvalue), [getTokenUsdValue](#gettokenusdvalue) or [getUsdValue](#getusdvalue) are quicker and don't need to wait for the price fetch

#### Parameters

| Parameter      | Type          | Description |
| -------------- | ------------- | ----------- |
| `abortSignal?` | `AbortSignal` |             |

#### Returns

`Promise`<`number`>

#### Inherited from

```
ICachedSwapPrice.preFetchUsdPrice
```

***

### recomputePriceInfoReceive()

```
recomputePriceInfoReceive<C>(

   chainIdentifier, 

   amountSats, 

   satsBaseFee, 

   feePPM, 

   receiveToken, 

   tokenAddress): PriceInfoType;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:159](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L159)

Recomputes pricing info without fetching the current price

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter         | Type     | Description                                            |
| ----------------- | -------- | ------------------------------------------------------ |
| `chainIdentifier` | `C`      | Chain identifier of the smart chain                    |
| `amountSats`      | `bigint` | Amount of sats (BTC) to be paid to the swap            |
| `satsBaseFee`     | `bigint` | Base fee in sats (BTC) as reported by the intermediary |
| `feePPM`          | `bigint` | PPM fee rate as reported by the intermediary           |
| `receiveToken`    | `bigint` | Amount of token to be received from the swap           |
| `tokenAddress`    | `string` | Token address to be received                           |

#### Returns

`PriceInfoType`

#### Inherited from

```
ICachedSwapPrice.recomputePriceInfoReceive
```

***

### recomputePriceInfoSend()

```
recomputePriceInfoSend<C>(

   chainIdentifier, 

   amountSats, 

   satsBaseFee, 

   feePPM, 

   paidToken, 

   tokenAddress): PriceInfoType;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:69](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L69)

Recomputes pricing info without fetching the current price

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter         | Type     | Description                                            |
| ----------------- | -------- | ------------------------------------------------------ |
| `chainIdentifier` | `C`      | Chain identifier of the smart chain                    |
| `amountSats`      | `bigint` | Amount of sats (BTC) to be received from the swap      |
| `satsBaseFee`     | `bigint` | Base fee in sats (BTC) as reported by the intermediary |
| `feePPM`          | `bigint` | PPM fee rate as reported by the intermediary           |
| `paidToken`       | `bigint` | Amount of token to be paid to the swap                 |
| `tokenAddress`    | `string` | Token address to be paid                               |

#### Returns

`PriceInfoType`

#### Inherited from

```
ICachedSwapPrice.recomputePriceInfoSend
```

***

### shouldIgnore()

```
shouldIgnore<C>(chainIdentifier, tokenAddress): boolean;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:325](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L325)

Returns whether the token should be ignored and pricing for it not calculated

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter         | Type     | Description                                 |
| ----------------- | -------- | ------------------------------------------- |
| `chainIdentifier` | `C`      | Chain identifier string for the smart chain |
| `tokenAddress`    | `string` | Token address                               |

#### Returns

`boolean`

#### Throws

if token is not found

#### Inherited from

```
ICachedSwapPrice.shouldIgnore
```

***

### fetchPrice()

```
protected fetchPrice<C>(

   chainIdentifier, 

   token, 

abortSignal?): Promise<bigint>;
```

Defined in: [atomiq-sdk/src/prices/SingleSwapPrice.ts:28](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/SingleSwapPrice.ts#L28)

Fetch price in uSats (micro sats) for a given token against BTC

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter         | Type          | Description |
| ----------------- | ------------- | ----------- |
| `chainIdentifier` | `C`           |             |
| `token`           | `string`      |             |
| `abortSignal?`    | `AbortSignal` |             |

#### Returns

`Promise`<`bigint`>

token price in uSats (micro sats)

#### Overrides

```
ICachedSwapPrice.fetchPrice
```

***

### fetchUsdPrice()

```
protected fetchUsdPrice(abortSignal?): Promise<number>;
```

Defined in: [atomiq-sdk/src/prices/SingleSwapPrice.ts:46](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/SingleSwapPrice.ts#L46)

Fetches BTC price in USD

#### Parameters

| Parameter      | Type          | Description |
| -------------- | ------------- | ----------- |
| `abortSignal?` | `AbortSignal` |             |

#### Returns

`Promise`<`number`>

token price in uSats (micro sats)

#### Overrides

```
ICachedSwapPrice.fetchUsdPrice
```

***

### getDecimals()

```
protected getDecimals<C>(chainIdentifier, token): number;
```

Defined in: [atomiq-sdk/src/prices/SingleSwapPrice.ts:35](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/SingleSwapPrice.ts#L35)

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter         | Type     |
| ----------------- | -------- |
| `chainIdentifier` | `C`      |
| `token`           | `string` |

#### Returns

`number`

#### Inherit Doc

#### Overrides

```
ICachedSwapPrice.getDecimals
```

***

### getDecimalsThrowing()

```
protected getDecimalsThrowing<C>(chainIdentifier, tokenAddress): number;
```

Defined in: [atomiq-sdk/src/prices/abstract/ISwapPrice.ts:53](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ISwapPrice.ts#L53)

Gets the decimal places for a given token, returns `-1` if token should be ignored & throws if token is not found

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter         | Type     | Description                         |
| ----------------- | -------- | ----------------------------------- |
| `chainIdentifier` | `C`      | Chain identifier of the smart chain |
| `tokenAddress`    | `string` | Token address                       |

#### Returns

`number`

#### Throws

When token is not known

#### Inherited from

```
ICachedSwapPrice.getDecimalsThrowing
```

***

### getPrice()

```
protected getPrice<C>(

   chainIdentifier, 

   tokenAddress, 

abortSignal?): Promise<bigint>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ICachedSwapPrice.ts:30](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ICachedSwapPrice.ts#L30)

Returns the price of the token in BTC uSats (microSats)

#### Type Parameters

| Type Parameter         |
| ---------------------- |
| `C` *extends* `string` |

#### Parameters

| Parameter         | Type          | Description                         |
| ----------------- | ------------- | ----------------------------------- |
| `chainIdentifier` | `C`           | Chain identifier of the smart chain |
| `tokenAddress`    | `string`      | Token address                       |
| `abortSignal?`    | `AbortSignal` |                                     |

#### Returns

`Promise`<`bigint`>

#### Inherited from

```
ICachedSwapPrice.getPrice
```

***

### getUsdPrice()

```
protected getUsdPrice(abortSignal?): Promise<number>;
```

Defined in: [atomiq-sdk/src/prices/abstract/ICachedSwapPrice.ts:64](https://github.com/atomiqlabs/atomiq-sdk/blob/786509324f7f09c427e9ccfe527d82e496f06af5/src/prices/abstract/ICachedSwapPrice.ts#L64)

Returns BTC price in USD (sats/USD)

#### Parameters

| Parameter      | Type          | Description |
| -------------- | ------------- | ----------- |
| `abortSignal?` | `AbortSignal` |             |

#### Returns

`Promise`<`number`>

#### Throws

if token is not found

#### Inherited from

```
ICachedSwapPrice.getUsdPrice
```
