@ledgerhq/coin-hedera
Version:
Ledger Hedera Coin integration
160 lines (152 loc) • 4.7 kB
text/typescript
import type { TokenCurrency } from "@ledgerhq/types-cryptoassets";
import type { TokenAccount } from "@ledgerhq/types-live";
import BigNumber from "bignumber.js";
import type {
HederaAccount,
HederaAccountRaw,
HederaResources,
HederaResourcesRaw,
} from "../../types";
import { getMockedCurrency, getMockedHTSTokenCurrency } from "./currency.fixture";
const defaultMockedCurrency = getMockedCurrency();
const defaultMockedTokenCurrency = getMockedHTSTokenCurrency();
const defaultMockAccountId = "js:2:hedera:0.0.1234567:hederaBip44";
const defaultMockTokenAccountId = `${defaultMockAccountId}+${defaultMockedTokenCurrency.id}`;
const defaultBalance = new BigNumber(100000000);
const defaultTokenBalance = new BigNumber(10);
export const mockHederaResources: HederaResources = {
maxAutomaticTokenAssociations: 0,
isAutoTokenAssociationEnabled: false,
delegation: null,
};
export const mockHederaResourcesRaw: HederaResourcesRaw = {
maxAutomaticTokenAssociations: 0,
isAutoTokenAssociationEnabled: false,
delegation: null,
};
/**
* default settings:
* - account balance is 1 HBAR
* - auto token association is disabled
* - subAccounts array is empty (no tokens account are used)
*/
export const getMockedAccount = (overrides?: Partial<HederaAccount>): HederaAccount => {
return {
type: "Account",
id: defaultMockAccountId,
seedIdentifier: "",
derivationMode: "",
index: 0,
freshAddress: "0.0.12345",
freshAddressPath: "44/3030",
used: false,
balance: defaultBalance,
spendableBalance: defaultBalance,
creationDate: new Date(),
blockHeight: 0,
currency: defaultMockedCurrency,
operationsCount: 0,
operations: [],
pendingOperations: [],
lastSyncDate: new Date(),
balanceHistoryCache: {
HOUR: { latestDate: null, balances: [] },
DAY: { latestDate: null, balances: [] },
WEEK: { latestDate: null, balances: [] },
},
swapHistory: [],
subAccounts: [],
hederaResources: mockHederaResources,
...overrides,
};
};
export const getMockedAccountRaw = (overrides?: Partial<HederaAccountRaw>): HederaAccountRaw => {
return {
id: defaultMockAccountId,
seedIdentifier: "",
derivationMode: "",
index: 0,
freshAddress: "0.0.12345",
freshAddressPath: "44/3030",
used: false,
balance: defaultBalance.toString(),
spendableBalance: defaultBalance.toString(),
creationDate: new Date().toISOString(),
blockHeight: 0,
currencyId: defaultMockedCurrency.id,
operationsCount: 0,
operations: [],
pendingOperations: [],
lastSyncDate: new Date().toISOString(),
balanceHistoryCache: {
HOUR: { latestDate: null, balances: [] },
DAY: { latestDate: null, balances: [] },
WEEK: { latestDate: null, balances: [] },
},
swapHistory: [],
subAccounts: [],
hederaResources: mockHederaResourcesRaw,
...overrides,
};
};
/**
* default settings:
* - balance is 10
*/
export const getMockedTokenAccount = (
token: TokenCurrency,
overrides?: Partial<TokenAccount>,
): TokenAccount => {
return {
type: "TokenAccount",
id: defaultMockTokenAccountId,
parentId: defaultMockAccountId,
token,
balance: defaultTokenBalance,
spendableBalance: defaultTokenBalance,
creationDate: new Date(),
operations: [],
operationsCount: 0,
pendingOperations: [],
swapHistory: [],
balanceHistoryCache: {
HOUR: { latestDate: null, balances: [] },
DAY: { latestDate: null, balances: [] },
WEEK: { latestDate: null, balances: [] },
},
...overrides,
};
};
export const MAINNET_TEST_ACCOUNTS = {
pristine: {
accountId: "0.0.800000",
publicKey: "3608128be58bfb7e753068e0bc82430ec77e51eed578e0a7055a0bd1296fe334",
},
withoutTokens: {
accountId: "0.0.8000000",
publicKey: "96eae0821a63a138f37e0a60a83f9a0317fa11dde4d7669a62afb5ced2158141",
},
withTokens: {
accountId: "0.0.8835924",
accountIdWithErc20: "0.0.4351292",
publicKey: "34e26415574250721e8869bd33ea2678c2bbccff5fc70bd8b0ec9239295fd2cf",
associatedTokenWithBalance: "0.0.456858",
associatedTokenWithoutBalance: "0.0.7243470",
notAssociatedToken: "0.0.3176721",
erc20Token: "0xca367694cdac8f152e33683bb36cc9d6a73f1ef2",
},
withQuickBalanceChanges: {
accountId: "0.0.10176637",
},
activeStaking: {
accountId: "0.0.8835924",
publicKey: "34e26415574250721e8869bd33ea2678c2bbccff5fc70bd8b0ec9239295fd2cf",
},
inactiveStaking: {
accountId: "0.0.9806001",
publicKey: "0283ef0997da7161c9a3aec45c57f4e074cb67916c97c1e5339d9f988e702e0450",
},
withStakingHistory: {
accountId: "0.0.10083165",
},
};