UNPKG

@ledgerhq/coin-ton

Version:
302 lines (265 loc) 6.65 kB
import { Account, Operation, TokenAccount, TransactionCommon, TransactionCommonRaw, TransactionStatusCommon, TransactionStatusCommonRaw, } from "@ledgerhq/types-live"; import { Address, SendMode, StateInit, Cell } from "@ton/core"; import BigNumber from "bignumber.js"; type FamilyType = "ton"; // ledger app does not support encrypted comments yet // leaving the arch for the future export interface TonComment { isEncrypted: boolean; text: string; } export type Transaction = TransactionCommon & { family: FamilyType; fees: BigNumber; comment: TonComment; payload?: TonPayloadFormat; }; export type TransactionRaw = TransactionCommonRaw & { family: FamilyType; fees: string; comment: TonComment; payload?: TonPayloadFormatRaw; }; export type TransactionStatus = TransactionStatusCommon; export type TransactionStatusRaw = TransactionStatusCommonRaw; export type TonOperation = Operation<TonOperationExtra>; export type TonPayloadJettonTransfer = { type: "jetton-transfer"; queryId: bigint | null; amount: bigint; destination: Address; responseDestination: Address; customPayload: TonCell | null; forwardAmount: bigint; forwardPayload: TonCell | null; knownJetton: { jettonId: number; workchain: number; } | null; }; export type TonPayloadJettonTransferRaw = { type: "jetton-transfer"; queryId: string | null; amount: string; destination: string; responseDestination: string; customPayload: string | null; forwardAmount: string; forwardPayload: string | null; knownJetton: { jettonId: number; workchain: number; } | null; }; export type TonPayloadNftTransfer = { type: "nft-transfer"; queryId: bigint | null; newOwner: Address; responseDestination: Address; customPayload: TonCell | null; forwardAmount: bigint; forwardPayload: TonCell | null; }; export type TonPayloadNftTransferRaw = { type: "nft-transfer"; queryId: string | null; newOwner: string; responseDestination: string; customPayload: string | null; forwardAmount: string; forwardPayload: string | null; }; export type TonPayloadComment = { type: "comment"; text: string; }; export type TonPayloadCommentRaw = { type: "comment"; text: string; }; export type TonPayloadUnsafe = { type: "unsafe"; message: TonCell; }; export type TonPayloadUnsafeRaw = { type: "unsafe"; message: string; }; export type TonPayloadJettonBurn = { type: "jetton-burn"; queryId: bigint | null; amount: bigint; responseDestination: Address; customPayload: TonCell | Buffer | null; }; export type TonPayloadJettonBurnRaw = { type: "jetton-burn"; queryId: string | null; amount: string; responseDestination: string; customPayload: string | null; }; export type TonPayloadAddWhitelist = { type: "add-whitelist"; queryId: bigint | null; address: Address; }; export type TonPayloadAddWhitelistRaw = { type: "add-whitelist"; queryId: string | null; address: string; }; export type TonPayloadSingleNominatorWithdraw = { type: "single-nominator-withdraw"; queryId: bigint | null; amount: bigint; }; export type TonPayloadSingleNominatorWithdrawRaw = { type: "single-nominator-withdraw"; queryId: string | null; amount: string; }; export type TonPayloadSingleNominatorChangeValidator = { type: "single-nominator-change-validator"; queryId: bigint | null; address: Address; }; export type TonPayloadSingleNominatorChangeValidatorRaw = { type: "single-nominator-change-validator"; queryId: string | null; address: string; }; export type TonPayloadTonStakersDeposit = { type: "tonstakers-deposit"; queryId: bigint | null; appId: bigint | null; }; export type TonPayloadTonStakersDepositRaw = { type: "tonstakers-deposit"; queryId: string | null; appId: string | null; }; export type TonPayloadVoteForProposal = { type: "vote-for-proposal"; queryId: bigint | null; votingAddress: Address; expirationDate: number; vote: boolean; needConfirmation: boolean; }; export type TonPayloadVoteForProposalRaw = { type: "vote-for-proposal"; queryId: string | null; votingAddress: string; expirationDate: number; vote: boolean; needConfirmation: boolean; }; export type TonPayloadChangeDnsRecord = { type: "change-dns-record"; queryId: bigint | null; record: | { type: "wallet"; value: { address: Address; capabilities: { isWallet: boolean; } | null; } | null; } | { type: "unknown"; key: Buffer; value: TonCell | null; }; }; export type TonPayloadChangeDnsRecordRaw = { type: "change-dns-record"; queryId: string | null; record: | { type: "wallet"; value: { address: string; capabilities: { isWallet: boolean; } | null; } | null; } | { type: "unknown"; key: string; value: string | null; }; }; export type TonPayloadTokenBridgePaySwap = { type: "token-bridge-pay-swap"; queryId: bigint | null; swapId: Buffer; }; export type TonPayloadTokenBridgePaySwapRaw = { type: "token-bridge-pay-swap"; queryId: string | null; swapId: string; }; export type TonPayloadFormat = | TonPayloadComment | TonPayloadJettonTransfer | TonPayloadNftTransfer | TonPayloadUnsafe | TonPayloadJettonBurn | TonPayloadAddWhitelist | TonPayloadSingleNominatorWithdraw | TonPayloadSingleNominatorChangeValidator | TonPayloadTonStakersDeposit | TonPayloadVoteForProposal | TonPayloadChangeDnsRecord | TonPayloadTokenBridgePaySwap; export type TonPayloadFormatRaw = | TonPayloadCommentRaw | TonPayloadJettonTransferRaw | TonPayloadNftTransferRaw | TonPayloadUnsafeRaw | TonPayloadJettonBurnRaw | TonPayloadAddWhitelistRaw | TonPayloadSingleNominatorWithdrawRaw | TonPayloadSingleNominatorChangeValidatorRaw | TonPayloadTonStakersDepositRaw | TonPayloadVoteForProposalRaw | TonPayloadChangeDnsRecordRaw | TonPayloadTokenBridgePaySwapRaw; export interface TonTransaction { to: Address; sendMode: SendMode; seqno: number; timeout: number; bounce: boolean; amount: bigint; stateInit?: StateInit; payload?: TonPayloadFormat; } export interface TonCell extends Cell {} export type TonOperationExtra = { comment: TonComment; lt: string; explorerHash: string; }; export type KnownJetton = { symbol: string; masterAddress: Address; }; export type TonSubAccount = TokenAccount & { jettonWallet: string; }; export type TonAccount = Omit<Account, "subAccounts"> & { subAccounts?: TonSubAccount[]; };