Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions migration/1770366346107-createMonitoringEvmBalance.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* @typedef {import('typeorm').MigrationInterface} MigrationInterface
* @typedef {import('typeorm').QueryRunner} QueryRunner
*/

/**
* @class
* @implements {MigrationInterface}
*/
module.exports = class CreateMonitoringEvmBalance1770366346107 {
name = 'CreateMonitoringEvmBalance1770366346107'

/**
* @param {QueryRunner} queryRunner
*/
async up(queryRunner) {
await queryRunner.query(`CREATE TABLE "monitoring_evm_balance" ("id" int NOT NULL IDENTITY(1,1), "created" datetime2 NOT NULL CONSTRAINT "DF_a12be90866896c9f2bfca372813" DEFAULT getdate(), "updated" datetime2 NOT NULL CONSTRAINT "DF_58ba0fc2da4061d234fac997dbb" DEFAULT getdate(), "blockchain" varchar(50) NOT NULL, "nativeSymbol" varchar(10) NOT NULL, "nativeBalance" float NOT NULL CONSTRAINT "DF_3223bf469c487599a6954599f5c" DEFAULT 0, "tokenBalances" nvarchar(max), CONSTRAINT "PK_9e27ea97b0eb8872a956abd8e2f" PRIMARY KEY ("id"))`);
await queryRunner.query(`CREATE INDEX "IDX_708ecfcf63cd709863b65da2e1" ON "monitoring_evm_balance" ("blockchain") `);
}

/**
* @param {QueryRunner} queryRunner
*/
async down(queryRunner) {
await queryRunner.query(`DROP INDEX "IDX_708ecfcf63cd709863b65da2e1" ON "monitoring_evm_balance"`);
await queryRunner.query(`DROP TABLE "monitoring_evm_balance"`);
}
}
34 changes: 34 additions & 0 deletions src/config/balance-thresholds.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { Blockchain } from 'src/shared/enums/blockchain.enum';
import { Direction } from 'src/subdomains/boltz/dto/boltz.dto';

export interface BalanceThreshold {
blockchain: Blockchain;
asset: string;
minBalance: number;
maxBalance: number;
direction?: Direction;
}

export const BALANCE_THRESHOLDS: BalanceThreshold[] = [
// Bitcoin
{ blockchain: Blockchain.BITCOIN, asset: 'BTC', minBalance: 0.1, maxBalance: 1 },

// Lightning (Onchain, Outgoing and Incoming Channels)
{ blockchain: Blockchain.LIGHTNING, asset: 'BTC', minBalance: 0.1, maxBalance: 1 },
{ blockchain: Blockchain.LIGHTNING, asset: 'BTC', minBalance: 1, maxBalance: 5, direction: Direction.OUTGOING },
{ blockchain: Blockchain.LIGHTNING, asset: 'BTC', minBalance: 1, maxBalance: 5, direction: Direction.INCOMING },

// Citrea
{ blockchain: Blockchain.CITREA, asset: 'cBTC', minBalance: 0.1, maxBalance: 1 },
{ blockchain: Blockchain.CITREA, asset: 'JUSD', minBalance: 1000, maxBalance: 100000 },

// Ethereum
{ blockchain: Blockchain.ETHEREUM, asset: 'ETH', minBalance: 0.001, maxBalance: 0.1 },
{ blockchain: Blockchain.ETHEREUM, asset: 'USDC', minBalance: 1000, maxBalance: 100000 },
{ blockchain: Blockchain.ETHEREUM, asset: 'USDT', minBalance: 1000, maxBalance: 100000 },
{ blockchain: Blockchain.ETHEREUM, asset: 'WBTC', minBalance: 0, maxBalance: 1 },

// Polygon
{ blockchain: Blockchain.POLYGON, asset: 'POL', minBalance: 1, maxBalance: 100 },
{ blockchain: Blockchain.POLYGON, asset: 'USDT', minBalance: 1000, maxBalance: 100000 },
];
11 changes: 6 additions & 5 deletions src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ export enum Process {
UPDATE_WALLET_BALANCE = 'UpdateWalletBalance',
UPDATE_LIGHTNING_USER_TRANSACTION = 'UpdateLightingUserTransaction',
UPDATE_PAYMENT_REQUEST = 'UpdatePaymentRequest',
MONITORING = 'Monitoring',
}

export enum Environment {
Expand Down Expand Up @@ -148,11 +149,6 @@ export class Configuration {
chainId: +(process.env.BASE_CHAIN_ID ?? -1),
walletAddress: process.env.EVM_PAYMENT_ADDRESS ?? '',
},
rootstock: {
gatewayUrl: process.env.ROOTSTOCK_GATEWAY_URL ?? '',
apiKey: process.env.ALCHEMY_API_KEY ?? '',
chainId: +(process.env.ROOTSTOCK_CHAIN_ID ?? -1),
},
citrea: {
gatewayUrl: process.env.CITREA_GATEWAY_URL ?? '',
chainId: +(process.env.CITREA_CHAIN_ID ?? -1),
Expand Down Expand Up @@ -215,6 +211,11 @@ export class Configuration {
evmWalletAddress: process.env.BOLTZ_WALLET_ADDRESS ?? '',
};

telegram = {
botToken: process.env.TELEGRAM_BOT_TOKEN ?? '',
chatId: process.env.TELEGRAM_CHAT_ID ?? '',
};

// --- GETTERS --- //
get baseUrl(): string {
return this.environment === Environment.LOC
Expand Down
2 changes: 0 additions & 2 deletions src/integration/blockchain/blockchain.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import { EthereumModule } from './ethereum/ethereum.module';
import { LightningModule } from './lightning/lightning.module';
import { OptimismModule } from './optimism/optimism.module';
import { PolygonModule } from './polygon/polygon.module';
import { RootstockModule } from './rootstock/rootstock.module';
import { CryptoService } from './services/crypto.service';
import { UmaModule } from './uma/uma.module';

Expand All @@ -21,7 +20,6 @@ import { UmaModule } from './uma/uma.module';
OptimismModule,
PolygonModule,
BaseModule,
RootstockModule,
CitreaModule,
],
controllers: [],
Expand Down
53 changes: 26 additions & 27 deletions src/integration/blockchain/citrea/citrea-client.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
import { Config } from 'src/config/config';
import { EvmUtil } from 'src/subdomains/evm/evm.util';
import { AssetTransferEntity } from 'src/subdomains/master-data/asset/entities/asset-transfer.entity';
import { LightningHelper } from '../lightning/lightning-helper';
import { EvmTokenBalance } from '../shared/evm/dto/evm-token-balance.dto';
import { EvmClient, EvmClientParams } from '../shared/evm/evm-client';

export class CitreaClient extends EvmClient {
constructor(private readonly params: EvmClientParams) {
super(params);
}

async getNativeCoinBalance(): Promise<number> {
const walletAddress = EvmUtil.createWallet({ seed: Config.evm.walletSeed, index: 0 }).address;

const balance = await this.provider.getBalance(walletAddress);
return LightningHelper.btcToSat(EvmUtil.fromWeiAmount(balance.toString()));
}

async getTokenBalance(_asset: AssetTransferEntity): Promise<number> {
throw new Error('Method not implemented.');
}

async getTokenBalances(_assets: AssetTransferEntity[]): Promise<EvmTokenBalance[]> {
throw new Error('Method not implemented.');
}
}
import { GetConfig } from 'src/config/config';
import { EvmUtil } from 'src/subdomains/evm/evm.util';
import { LightningHelper } from '../lightning/lightning-helper';
import { EvmClient, EvmClientParams } from '../shared/evm/evm-client';

export class CitreaClient extends EvmClient {
private readonly walletAddress: string;

constructor(params: EvmClientParams) {
super(params);

this.walletAddress = EvmUtil.createWallet({ seed: GetConfig().evm.walletSeed, index: 0 }).address;
}

async getNativeCoinBalance(): Promise<number> {
const balance = await this.provider.getBalance(this.walletAddress);
return LightningHelper.btcToSat(EvmUtil.fromWeiAmount(balance.toString()));
}

async getTokenBalanceByAddress(tokenAddress: string, decimals: number): Promise<number> {
const contract = this.getERC20ContractForDex(tokenAddress);
const balance = await contract.balanceOf(this.walletAddress);

return EvmUtil.fromWeiAmount(balance, decimals);
}
}
40 changes: 0 additions & 40 deletions src/integration/blockchain/rootstock/rootstock-client.ts

This file was deleted.

12 changes: 0 additions & 12 deletions src/integration/blockchain/rootstock/rootstock.module.ts

This file was deleted.

26 changes: 0 additions & 26 deletions src/integration/blockchain/rootstock/rootstock.service.ts

This file was deleted.

Loading