import { AbacusClient, AbacusClientOptions } from '@abacus/api-client';
import { AbacusStateActionStatus } from '@abacus/api-state-client';
import { Optional } from '@abacus/common';

type AbacusRoyaltiesClientOptions = {
    client: AbacusClient;
} | (Optional<AbacusClientOptions, "domain"> & {
    client?: undefined;
});
interface HelloResponse {
    status: string;
}
interface StatementPeriodAdjustmentFile {
    error_type?: StatementPeriodAdjustmentFileErrorType;
    file_name: string;
    invalid_file_location?: string;
    invalid_row_count: number;
    md5sum?: string;
    statement_period_adjustment_file_id: number;
    statement_period_id: number;
    total_file_amount_multicurrency: string;
    total_rounded_amount_multicurrency: string;
    valid_file_location: string;
    valid_row_count: number;
}
declare enum StatementPeriodAdjustmentFileActionName {
    UploadFile = "upload_file"
}
declare enum StatementPeriodAdjustmentFileErrorType {
    ContentError = "content_error",
    FormatError = "format_error"
}
interface StatementPeriodPaymentEntityState {
    abacus_state_id: number;
    action_name: string;
    action_status: AbacusStateActionStatus;
    reference_payment_entity_id: number;
    statement_period_id: number;
    statement_period_payment_entity_id: number;
}

declare class AbacusRoyaltiesClient {
    static readonly Domain = "ows-royalties.theorchard.io";
    client: AbacusClient;
    constructor(opts: AbacusRoyaltiesClientOptions);
    /**
     * Get statement period adjustment file by ID.
     *
     * @param adjustmentFileId - ID of the statement period adjustment file
     * @return - OWS Response
     */
    getStatementPeriodAdjustmentFile(adjustmentFileId: number): Promise<StatementPeriodAdjustmentFile>;
    /**
     * Get statement_period_payment_entity states for the statement_period.
     * @param statementPeriodId ID of the statement_period to apply adjustments
     * @returns OWS Response
     */
    getStatementPeriodPaymentEntityStates(statementPeriodId: number): Promise<StatementPeriodPaymentEntityState[]>;
    hello(): Promise<HelloResponse>;
    /**
     * Get statement_period_payment_entity states for the statement_period.
     * @param statementPeriodId ID of the statement_period to apply adjustments
     * @returns OWS Response
     */
    updateStatementPeriodAdjustmentFile(statementPeriodId: number, adjustmentFileId: number, data: unknown): Promise<StatementPeriodAdjustmentFile>;
}

export { AbacusRoyaltiesClient, type AbacusRoyaltiesClientOptions, type HelloResponse, type StatementPeriodAdjustmentFile, StatementPeriodAdjustmentFileActionName, StatementPeriodAdjustmentFileErrorType, type StatementPeriodPaymentEntityState };
