import { Sequelize, Model, Association } from 'sequelize';
import { Address } from '@graphprotocol/common-ts';
export interface AllocationReceiptAttributes {
    id: string;
    allocation: Address;
    fees: string;
    signature: string;
}
export declare class AllocationReceipt extends Model<AllocationReceiptAttributes> implements AllocationReceiptAttributes {
    id: string;
    allocation: Address;
    fees: string;
    signature: string;
    readonly createdAt: Date;
    readonly updatedAt: Date;
}
export interface VoucherAttributes {
    allocation: Address;
    amount: string;
    signature: string;
}
export declare class Voucher extends Model<VoucherAttributes> implements VoucherAttributes {
    allocation: Address;
    amount: string;
    signature: string;
    readonly createdAt: Date;
    readonly updatedAt: Date;
    readonly allocationSummary?: AllocationSummary;
    static associations: {
        allocationSummary: Association<Voucher, AllocationSummary>;
    };
}
export interface TransferReceiptAttributes {
    id: number;
    signer: Address;
    fees: string;
    signature: string;
}
export declare class TransferReceipt extends Model<TransferReceiptAttributes> implements TransferReceiptAttributes {
    id: number;
    signer: Address;
    fees: string;
    signature: string;
    readonly createdAt: Date;
    readonly updatedAt: Date;
    readonly transfer?: Transfer;
    static associations: {
        transfer: Association<TransferReceipt, Transfer>;
    };
}
export declare enum TransferStatus {
    OPEN = "OPEN",
    ALLOCATION_CLOSED = "ALLOCATION_CLOSED",
    RESOLVED = "RESOLVED",
    FAILED = "FAILED"
}
export interface TransferAttributes {
    routingId: string;
    allocation: Address;
    signer: Address;
    allocationClosedAt: Date | null;
    status: TransferStatus;
}
export declare class Transfer extends Model<TransferAttributes> implements TransferAttributes {
    routingId: string;
    allocation: Address;
    signer: Address;
    allocationClosedAt: Date | null;
    status: TransferStatus;
    readonly createdAt: Date;
    readonly updatedAt: Date;
    readonly receipts?: TransferReceipt[];
    static associations: {
        receipts: Association<Transfer, TransferReceipt>;
    };
}
export interface AllocationSummaryAttributes {
    allocation: Address;
    closedAt: Date | null;
    createdTransfers: number;
    resolvedTransfers: number;
    failedTransfers: number;
    openTransfers: number;
    collectedFees: string;
    withdrawnFees: string;
}
export declare class AllocationSummary extends Model<AllocationSummaryAttributes> implements AllocationSummaryAttributes {
    allocation: Address;
    closedAt: Date;
    createdTransfers: number;
    resolvedTransfers: number;
    failedTransfers: number;
    openTransfers: number;
    collectedFees: string;
    withdrawnFees: string;
    readonly createdAt: Date;
    readonly updatedAt: Date;
    readonly transfers?: Transfer[];
    readonly allocationReceipts?: AllocationReceipt[];
    readonly voucher?: Voucher;
    static associations: {
        transfers: Association<AllocationSummary, Transfer>;
        allocationReceipts: Association<AllocationSummary, AllocationReceipt>;
        voucher: Association<AllocationSummary, Voucher>;
    };
}
export interface QueryFeeModels {
    allocationReceipts: typeof AllocationReceipt;
    vouchers: typeof Voucher;
    transferReceipts: typeof TransferReceipt;
    transfers: typeof Transfer;
    allocationSummaries: typeof AllocationSummary;
}
export declare function defineQueryFeeModels(sequelize: Sequelize): QueryFeeModels;
