interface ItemTransaction {
    image?: string;
    name: string;
    description?: string;
    quantity: number;
    price: number;
    total: number;
}
type NetworkType = 'BSC' | 'BTC' | 'ETH' | 'TRX' | 'MATIC' | 'SOL';
type TokenType = 'USDT' | 'USDC' | 'ETH' | 'BNB' | 'TRX' | 'SOL' | 'BTC';
interface TransactionRequest {
    customerNames: string;
    customerEmail: string;
    externalId: string;
    network: NetworkType;
    token: TokenType;
    amount: number | string;
    expiration?: number;
    items?: Array<ItemTransaction>;
}
interface TransactionResponse {
    uuid: string;
    customerName: string;
    customerEmail: string;
    purchaseId: string;
    amount: string;
    amountUsd: string;
    received: string;
    receivedUsd: string;
    address: string;
    statusUuid: string;
    status: {
        value: string;
        name: string;
    };
    network: {
        name: string;
        symbol: string;
        logo: string;
    };
    token: {
        name: string;
        symbol: string;
        logo: string;
        decimals: number;
        rounded: number;
    };
    merchant: {
        uuid: string;
        name: string;
    };
    createdAt: string;
    updatedAt: string;
    expiresAt: string;
    webhookSent: boolean;
    purchaseItems: Array<ItemTransaction>;
}

declare class TransactionsModule {
    private client;
    constructor(apiKey: string, baseURL: string);
    create(data: TransactionRequest): Promise<TransactionResponse>;
    show(transactionId: string): Promise<TransactionResponse>;
    validate(transactionId: string): Promise<TransactionResponse>;
    cancel(transactionId: string): Promise<TransactionResponse>;
}

interface Shipment {
    address: string;
    amount: number;
}
interface MassPaymentRequest {
    name: string;
    wallet: string;
    notes?: string;
    shipments: Array<Shipment>;
    sendAt?: string;
}
interface ShipmentResponse extends Shipment {
    validated: boolean;
}
interface MassPaymentResponse {
    uuid: string;
    name: string;
    id: number;
    statusUuid: string;
    walletUuid: string;
    sendAt: string | null;
    notes: string;
    initiatedBy: string;
    status: {
        uuid: string;
        name: string;
        value: string;
    };
    wallet: {
        address: string;
        balance: string;
        balanceUsd: number;
        network: {
            uuid: string;
            name: string;
            symbol: string;
            logo: string;
        };
        token: {
            uuid: string;
            name: string;
            symbol: string;
            logo: string;
        };
    };
}

declare class MassPaymentsModule {
    private client;
    constructor(apiKey: string, baseURL: string);
    shedule(data: MassPaymentRequest): Promise<MassPaymentResponse>;
    list(data?: {
        status?: string;
        wallets?: string;
        names?: string;
    }): Promise<MassPaymentResponse[]>;
    show(paymentId: string): Promise<MassPaymentResponse>;
    validate(data: MassPaymentRequest): Promise<ShipmentResponse>;
}

declare class Monzi {
    transactions: TransactionsModule;
    mass: MassPaymentsModule;
    constructor(apiKey: string, baseURL?: string);
}

export { Monzi as default };
