import { AbstractSimplePool } from "nostr-tools/lib/types/pool";
type ErrorDelta = {
    max_delta_ms: number;
    actual_delta_ms: number;
};
type ErrorRange = {
    min: number;
    max: number;
};
export type NmanageSuccess = {
    res: 'ok';
    resource: 'offer';
    details?: OfferData | OfferData[];
};
export type NmanageFailure = {
    res: 'GFY';
    error: string;
    code: number;
    delta?: ErrorDelta;
    retry_after?: number;
    field?: string;
    range?: ErrorRange;
};
export type NmanageResponse = NmanageSuccess | NmanageFailure;
export type OfferFields = {
    label: string;
    price_sats: number;
    callback_url: string;
    payer_data: string[];
};
export type OfferData = OfferFields & {
    id: string;
    noffer: string;
};
export type NmanageCreateOffer = {
    resource: 'offer';
    action: 'create';
    pointer?: string;
    offer: {
        fields: OfferFields;
    };
};
export type NmanageUpdateOffer = {
    resource: 'offer';
    action: 'update';
    offer: {
        id: string;
        fields: OfferFields;
    };
};
export type NmanageDeleteOffer = {
    resource: 'offer';
    action: 'delete';
    offer: {
        id: string;
    };
};
export type NmanageGetOffer = {
    resource: 'offer';
    action: 'get';
    offer: {
        id: string;
    };
};
export type NmanageListOffers = {
    resource: 'offer';
    action: 'list';
    pointer?: string;
};
export type NmanageRequest = NmanageCreateOffer | NmanageUpdateOffer | NmanageDeleteOffer | NmanageGetOffer | NmanageListOffers;
export declare const SendNmanageRequest: (pool: AbstractSimplePool, privateKey: Uint8Array, relays: string[], toPubKey: string, data: NmanageRequest, timeoutSeconds?: number) => Promise<NmanageResponse>;
export declare const newNmanageEvent: (content: string, fromPub: string, toPub: string) => {
    content: string;
    created_at: number;
    kind: number;
    pubkey: string;
    tags: string[][];
};
export declare const newNmanageFilter: (publicKey: string, eventId: string) => {
    since: number;
    kinds: number[];
    '#p': string[];
    '#e': string[];
};
type CreateOfferData = {
    price_sats?: number;
    callback_url?: string;
    payer_data?: string[];
};
export declare const newCreateRequest: (label: string, data?: CreateOfferData, pointer?: string) => NmanageCreateOffer;
export declare const newUpdateRequest: (updatedOffer: OfferData) => NmanageUpdateOffer;
export declare const newDeleteRequest: (offerId: string) => NmanageDeleteOffer;
export declare const newGetRequest: (offerId: string) => NmanageGetOffer;
export declare const newListRequest: (pointer?: string) => NmanageListOffers;
export {};
