export type BlockTemplateRule = 'segwit' | 'signet' | 'csv' | 'taproot' | (string & {});
export type BlockTemplateMutable = 'time' | 'transactions' | 'transactions/add' | 'transactions/remove' | 'prevblock' | 'coinbase' | 'coinbase/append' | 'generation' | (string & {});
export type BlockTemplateCapability = 'longpoll' | 'coinbasetxn' | 'coinbasevalue' | 'proposal' | 'serverlist' | 'workid' | (string & {});
export interface BlockTemplateTx {
    readonly data: string;
    readonly txid: string;
    readonly hash: string;
    readonly fee: number;
    readonly sigops: number;
    readonly weight: number;
    readonly depends?: readonly number[];
}
export interface CoinbaseAux {
    readonly flags?: string;
    readonly [key: string]: string | undefined;
}
export interface BlockTemplate {
    readonly capabilities?: readonly string[];
    readonly version: number;
    readonly rules?: readonly BlockTemplateRule[];
    readonly vbavailable?: Readonly<Record<string, number>>;
    readonly vbrequired?: number;
    readonly previousblockhash: string;
    readonly transactions: readonly BlockTemplateTx[];
    readonly coinbaseaux: CoinbaseAux;
    readonly coinbasevalue: number;
    readonly coinbasetxn?: Readonly<Record<string, unknown>>;
    readonly longpollid?: string;
    readonly target: string;
    readonly mintime: number;
    readonly mutable?: readonly BlockTemplateMutable[];
    readonly noncerange?: string;
    readonly curtime: number;
    readonly bits: string;
    readonly height: number;
    readonly signet_challenge?: string;
    readonly default_witness_commitment?: string;
    readonly weightlimit?: number;
    readonly sigoplimit?: number;
    readonly sizelimit?: number;
}
