import {PublicKey, Script} from "libnexa-ts";

export type PermissionLabel = 'authorise' | 'mint' | 'melt' | 'rescript' | 'subgroup';

export type TxEntityState = 'incoming' | 'outgoing' | 'both'

export interface TxTemplateData {
    templateScript: Script;
    constraintScript: Script;
    visibleArgs: any[];
    publicKey: PublicKey;
}

export interface TxOptions {
    isConsolidate?: boolean;
    toChange?: string;
    templateData?: TxTemplateData;
    feeFromAmount?: boolean;
}
export interface TokenAction {
    token?: string
    parentToken?: string
    amount: bigint;
    action: string;
    extraData?: {
        perms?: PermissionLabel[],
        outpoint?: string
        opReturnData?: string
        address?: string
    }
}

export interface TransactionEntity {
    txIdem: string
    txId: string
    time: number
    height: number
    payTo: string
    state: TxEntityState
    value: string
    fee: number
    token: string
    extraGroup: string
    txGroupType: number
    tokenAmount: string
}
