import { BelongsTo, Column, DataType, ForeignKey, HasMany, Index, Model, Table, } from 'sequelize-typescript'; import { Address } from './address'; import { Coin } from './coin'; import { Nft } from './nft'; import { NftReserve } from './nftReserve'; import { UndelegationNft } from './undelegationNft'; import { Validator } from './validator'; @Table({ timestamps: true }) export class StakeNft extends Model { @Index({ name: 'stakeNft-nft-index', using: 'HASH', }) @ForeignKey(() => Nft) @Column(DataType.INTEGER) nftId: number; @Index({ name: 'stakeNft-coin-index', using: 'HASH', }) @ForeignKey(() => Coin) @Column(DataType.INTEGER) coinId: number; @Column(DataType.DECIMAL) quantity: string; @Column(DataType.DECIMAL) unbondQuantity: string; @Index({ name: 'stakeNft-delegator-index', using: 'HASH', }) @ForeignKey(() => Address) @Column(DataType.INTEGER) delegatorId: number; @BelongsTo(() => Address) delegator: Address; @Index({ name: 'stakeNft-validator-index', using: 'HASH', }) @ForeignKey(() => Validator) @Column(DataType.INTEGER) validatorId: number; @BelongsTo(() => Validator) validator: Validator; @BelongsTo(() => Nft) nft: Nft; @BelongsTo(() => Coin) coin: Coin; @HasMany(() => NftReserve) nftReserves: NftReserve[]; @HasMany(() => UndelegationNft) undelegations: UndelegationNft[]; }