import type * as KeetaAnchorHTTPServer from '../../lib/http-server/index.js';
import { KeetaAnchorMetadataServer } from '../../lib/anchor-metadata-server.js';
import type { KeetaAnchorMetadataServerConfig } from '../../lib/anchor-metadata-server.js';
import type { KeetaAssetMovementAnchorCreatePersistentForwardingRequest, KeetaAssetMovementAnchorCreatePersistentForwardingResponse, KeetaAssetMovementAnchorInitiateTransferRequest, KeetaAssetMovementAnchorInitiateTransferResponse, KeetaAssetMovementAnchorGetTransferStatusResponse, KeetaAssetMovementAnchorlistTransactionsRequest, KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse, KeetaAssetMovementAnchorListPersistentForwardingRequest, KeetaAssetMovementAnchorListPersistentForwardingResponse, KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest, KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse, KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse, KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest, KeetaAssetMovementAnchorListForwardingAddressTemplateRequest, KeetaAssetMovementAnchorListForwardingAddressTemplateResponse, KeetaAssetMovementAnchorShareKYCRequest, KeetaAssetMovementAnchorShareKYCResponse, KeetaAssetMovementAnchorExecuteTransferRequest, KeetaAssetMovementAnchorExecuteTransferResponse, KeetaAssetMovementAnchorSimulateTransferRequest, KeetaAssetMovementAnchorSimulateTransferResponse } from './common.ts';
import type { ServiceMetadata } from '../../lib/resolver.ts';
import type Account from '@keetanetwork/keetanet-client/lib/account.js';
import type { ExtractOk } from '../../lib/http-server/common.js';
import type { SharedAnchorMetadataLegalExtension } from '../../lib/metadata.types.js';
type AssetMovementServiceMetadata = NonNullable<ServiceMetadata['services']['assetMovement']>[string];
export interface KeetaAnchorAssetMovementServerConfig extends KeetaAnchorMetadataServerConfig {
    /**
     * The data to use for the index page (optional)
     */
    homepage?: string | (() => Promise<string> | string);
    /**
     * Configuration for asset movement operations
     */
    assetMovement: SharedAnchorMetadataLegalExtension & Pick<AssetMovementServiceMetadata, 'supportedAssets' | 'locationMetadata'> & {
        authenticationRequired?: boolean;
        /**
         * Method to initiate the two-step creation of a persistent forwarding address template.
         * Returns a session ID and provider-specific data (e.g. a Plaid link token) for the client to complete.
         */
        initiatePersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorInitiatePersistentForwardingAddressTemplateResponse>>;
        /**
         * Method to create a persistent forwarding address template.
         * Accepts either a direct resolved address or a session completion payload (e.g. Plaid public token).
         */
        createPersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingAddressTemplateResponse>>;
        /**
         * Method to list persistent forwarding address templates
         */
        listPersistentForwardingTemplate?: (request: KeetaAssetMovementAnchorListForwardingAddressTemplateRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorListForwardingAddressTemplateResponse>>;
        /**
         * Method to create a persistent forwarding address
         */
        createPersistentForwarding?: (request: KeetaAssetMovementAnchorCreatePersistentForwardingRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorCreatePersistentForwardingResponse>>;
        /**
         * Method to list persistent forwarding addresses
         */
        listPersistentForwarding?: (request: KeetaAssetMovementAnchorListPersistentForwardingRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorListPersistentForwardingResponse>>;
        /**
         * Method to initiate a transfer
         */
        initiateTransfer?: (request: KeetaAssetMovementAnchorInitiateTransferRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorInitiateTransferResponse>>;
        /**
         * Method to initiate a transfer
         */
        simulateTransfer?: (request: KeetaAssetMovementAnchorSimulateTransferRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorSimulateTransferResponse>>;
        /**
         * Method to get the status of a transfer
         */
        getTransferStatus?: (id: string, account: Account.Account | null) => Promise<ExtractOk<KeetaAssetMovementAnchorGetTransferStatusResponse>>;
        /**
         * Method to list transactions
         */
        listTransactions?: (request: KeetaAssetMovementAnchorlistTransactionsRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorlistPersistentForwardingTransactionsResponse>>;
        /**
         * Method to share KYC (Know Your Customer) information
         */
        shareKYC?: (request: KeetaAssetMovementAnchorShareKYCRequest) => Promise<ExtractOk<KeetaAssetMovementAnchorShareKYCResponse>>;
        /**
         * Method to execute a transfer instruction, used for pull based transactions
         */
        executeTransfer?: (request: KeetaAssetMovementAnchorExecuteTransferRequest & {
            id: string;
        }) => Promise<ExtractOk<KeetaAssetMovementAnchorExecuteTransferResponse>>;
    };
}
export declare class KeetaNetAssetMovementAnchorHTTPServer extends KeetaAnchorMetadataServer<NonNullable<ServiceMetadata['services']['assetMovement']>[string], KeetaAnchorAssetMovementServerConfig> implements Omit<Required<KeetaAnchorAssetMovementServerConfig>, 'metadataSigner'> {
    readonly homepage: NonNullable<KeetaAnchorAssetMovementServerConfig['homepage']>;
    readonly assetMovement: NonNullable<KeetaAnchorAssetMovementServerConfig['assetMovement']>;
    constructor(config: KeetaAnchorAssetMovementServerConfig);
    protected initRoutes(config: KeetaAnchorAssetMovementServerConfig): Promise<KeetaAnchorHTTPServer.Routes>;
    protected buildServiceMetadata(): Promise<NonNullable<ServiceMetadata['services']['assetMovement']>[string]>;
}
export {};
//# sourceMappingURL=server.d.ts.map