/**
 * Copyright (c) 2025 Elara AI Pty Ltd
 * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
 */
/**
 * File transfer platform functions.
 *
 * Provides FTP and SFTP file transfer operations for East programs,
 * supporting upload, download, list, and delete operations.
 *
 * @packageDocumentation
 */
export * from "./ftp.js";
export * from "./sftp.js";
export { FtpConfigType, SftpConfigType, FileInfoType } from "./types.js";
/**
 * File transfer platform functions.
 *
 * Provides FTP and SFTP file transfer operations for East programs,
 * including upload, download, list, and delete operations.
 *
 * @example
 * ```ts
 * import { East, StringType, BlobType, NullType } from "@elaraai/east";
 * import { Transfer } from "@elaraai/east-node-io";
 *
 * const uploadFile = East.function([StringType, BlobType], NullType, ($, filename, data) => {
 *     const config = $.let({
 *         host: "ftp.example.com",
 *         port: 21n,
 *         user: "username",
 *         password: "password",
 *         secure: false,
 *     });
 *
 *     const conn = $.let(Transfer.FTP.connect(config));
 *     $(Transfer.FTP.put(conn, `/uploads/${filename}`, data));
 *     $(Transfer.FTP.close(conn));
 * });
 *
 * const compiled = East.compileAsync(uploadFile.toIR(), Transfer.FTP.Implementation);
 * await compiled("document.pdf", pdfData);
 * ```
 */
export declare const Transfer: {
    /**
     * FTP and FTPS file transfer operations.
     *
     * Provides platform functions for FTP (File Transfer Protocol) and
     * FTPS (FTP over SSL/TLS) servers.
     */
    readonly FTP: {
        /**
         * Connects to an FTP server.
         *
         * Creates a connection to an FTP or FTPS server and returns an
         * opaque handle for use in file transfer operations.
         *
         * @example
         * ```ts
         * const uploadFile = East.function([StringType, BlobType], NullType, ($, path, data) => {
         *     const config = $.let({
         *         host: "ftp.example.com",
         *         port: 21n,
         *         user: "username",
         *         password: "password",
         *         secure: false,
         *     });
         *
         *     const conn = $.let(Transfer.FTP.connect(config));
         *     $(Transfer.FTP.put(conn, path, data));
         *     $(Transfer.FTP.close(conn));
         * });
         *
         * const compiled = East.compileAsync(uploadFile.toIR(), Transfer.FTP.Implementation);
         * await compiled("/uploads/report.pdf", pdfData);
         * ```
         */
        readonly connect: import("@elaraai/east").AsyncPlatformDefinition<[import("@elaraai/east").StructType<{
            readonly host: import("./types.js").StringType;
            readonly port: import("@elaraai/east").IntegerType;
            readonly user: import("./types.js").StringType;
            readonly password: import("./types.js").StringType;
            readonly secure: import("@elaraai/east").BooleanType;
        }>], import("./types.js").StringType>;
        /**
         * Uploads a file to an FTP server.
         *
         * Uploads binary data to the FTP server at the specified remote path.
         *
         * @example
         * ```ts
         * const uploadFile = East.function([StringType, BlobType], NullType, ($, path, data) => {
         *     const config = $.let({
         *         host: "ftp.example.com",
         *         port: 21n,
         *         user: "username",
         *         password: "password",
         *         secure: false,
         *     });
         *     const conn = $.let(Transfer.FTP.connect(config));
         *     $(Transfer.FTP.put(conn, path, data));
         *     $(Transfer.FTP.close(conn));
         * });
         *
         * const compiled = East.compileAsync(uploadFile.toIR(), Transfer.FTP.Implementation);
         * await compiled("/uploads/file.txt", fileData);
         * ```
         */
        readonly put: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType, import("./types.js").StringType, import("@elaraai/east").BlobType], import("@elaraai/east").NullType>;
        /**
         * Downloads a file from an FTP server.
         *
         * Retrieves binary data from the FTP server at the specified remote path.
         *
         * @example
         * ```ts
         * const downloadFile = East.function([StringType], BlobType, ($, path) => {
         *     const config = $.let({
         *         host: "ftp.example.com",
         *         port: 21n,
         *         user: "username",
         *         password: "password",
         *         secure: false,
         *     });
         *     const conn = $.let(Transfer.FTP.connect(config));
         *     const data = $.let(Transfer.FTP.get(conn, path));
         *     $(Transfer.FTP.close(conn));
         *     $.return(data);
         * });
         *
         * const compiled = East.compileAsync(downloadFile.toIR(), Transfer.FTP.Implementation);
         * await compiled("/downloads/file.txt");  // Uint8Array
         * ```
         */
        readonly get: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType, import("./types.js").StringType], import("@elaraai/east").BlobType>;
        /**
         * Lists files in an FTP directory.
         *
         * Retrieves metadata for all files and directories in the specified path.
         *
         * @example
         * ```ts
         * const listFiles = East.function([StringType], ArrayType(FileInfoType), ($, path) => {
         *     const config = $.let({
         *         host: "ftp.example.com",
         *         port: 21n,
         *         user: "username",
         *         password: "password",
         *         secure: false,
         *     });
         *     const conn = $.let(Transfer.FTP.connect(config));
         *     const files = $.let(Transfer.FTP.list(conn, path));
         *     $(Transfer.FTP.close(conn));
         *     $.return(files);
         * });
         *
         * const compiled = East.compileAsync(listFiles.toIR(), Transfer.FTP.Implementation);
         * await compiled("/uploads");  // [{name: "file.txt", size: 1024n, ...}, ...]
         * ```
         */
        readonly list: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType, import("./types.js").StringType], import("@elaraai/east").ArrayType<import("@elaraai/east").StructType<{
            readonly name: import("./types.js").StringType;
            readonly path: import("./types.js").StringType;
            readonly size: import("@elaraai/east").IntegerType;
            readonly isDirectory: import("@elaraai/east").BooleanType;
            readonly modifiedTime: import("./types.js").StringType;
        }>>>;
        /**
         * Deletes a file from an FTP server.
         *
         * Removes a file from the FTP server at the specified remote path.
         *
         * @example
         * ```ts
         * const deleteFile = East.function([StringType], NullType, ($, path) => {
         *     const config = $.let({
         *         host: "ftp.example.com",
         *         port: 21n,
         *         user: "username",
         *         password: "password",
         *         secure: false,
         *     });
         *     const conn = $.let(Transfer.FTP.connect(config));
         *     $(Transfer.FTP.delete(conn, path));
         *     $(Transfer.FTP.close(conn));
         * });
         *
         * const compiled = East.compileAsync(deleteFile.toIR(), Transfer.FTP.Implementation);
         * await compiled("/uploads/old-file.txt");
         * ```
         */
        readonly delete: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType, import("./types.js").StringType], import("@elaraai/east").NullType>;
        /**
         * Closes the FTP connection.
         *
         * Closes the connection and releases all resources.
         *
         * @example
         * ```ts
         * const cleanup = East.function([], NullType, $ => {
         *     const config = $.let({
         *         host: "ftp.example.com",
         *         port: 21n,
         *         user: "username",
         *         password: "password",
         *         secure: false,
         *     });
         *     const conn = $.let(Transfer.FTP.connect(config));
         *     // ... do work ...
         *     $(Transfer.FTP.close(conn));
         * });
         *
         * const compiled = East.compileAsync(cleanup.toIR(), Transfer.FTP.Implementation);
         * await compiled();
         * ```
         */
        readonly close: import("@elaraai/east").PlatformDefinition<[import("./types.js").StringType], import("@elaraai/east").NullType>;
        /**
         * Node.js implementation of FTP platform functions.
         *
         * Pass this to East.compileAsync() to enable FTP operations.
         */
        readonly Implementation: import("@elaraai/east/internal").PlatformFunction[];
        /**
         * Type definitions for FTP operations.
         */
        readonly Types: {
            /**
             * FTP connection configuration type.
             */
            readonly Config: import("@elaraai/east").StructType<{
                readonly host: import("./types.js").StringType;
                readonly port: import("@elaraai/east").IntegerType;
                readonly user: import("./types.js").StringType;
                readonly password: import("./types.js").StringType;
                readonly secure: import("@elaraai/east").BooleanType;
            }>;
            /**
             * File information metadata type.
             */
            readonly FileInfo: import("@elaraai/east").StructType<{
                readonly name: import("./types.js").StringType;
                readonly path: import("./types.js").StringType;
                readonly size: import("@elaraai/east").IntegerType;
                readonly isDirectory: import("@elaraai/east").BooleanType;
                readonly modifiedTime: import("./types.js").StringType;
            }>;
        };
    };
    /**
     * SFTP file transfer operations.
     *
     * Provides platform functions for SFTP (SSH File Transfer Protocol) servers.
     */
    readonly SFTP: {
        /**
         * Connects to an SFTP server.
         *
         * Creates a connection to an SFTP server and returns an
         * opaque handle for use in file transfer operations.
         *
         * @example
         * ```ts
         * const uploadFile = East.function([StringType, BlobType], NullType, ($, path, data) => {
         *     const config = $.let({
         *         host: "sftp.example.com",
         *         port: 22n,
         *         username: "user",
         *         password: East.some("password"),
         *         privateKey: variant('none', null),
         *     });
         *
         *     const conn = $.let(Transfer.SFTP.connect(config));
         *     $(Transfer.SFTP.put(conn, path, data));
         *     $(Transfer.SFTP.close(conn));
         * });
         *
         * const compiled = East.compileAsync(uploadFile.toIR(), Transfer.SFTP.Implementation);
         * await compiled("/uploads/report.pdf", pdfData);
         * ```
         */
        readonly connect: import("@elaraai/east").AsyncPlatformDefinition<[import("@elaraai/east").StructType<{
            readonly host: import("./types.js").StringType;
            readonly port: import("@elaraai/east").IntegerType;
            readonly username: import("./types.js").StringType;
            readonly password: import("@elaraai/east").OptionType<import("./types.js").StringType>;
            readonly privateKey: import("@elaraai/east").OptionType<import("./types.js").StringType>;
        }>], import("./types.js").StringType>;
        /**
         * Uploads a file to an SFTP server.
         *
         * Uploads binary data to the SFTP server at the specified remote path.
         *
         * @example
         * ```ts
         * const uploadFile = East.function([StringType, BlobType], NullType, ($, path, data) => {
         *     const config = $.let({
         *         host: "sftp.example.com",
         *         port: 22n,
         *         username: "user",
         *         password: variant('some', "password"),
         *         privateKey: variant('none', null),
         *     });
         *     const conn = $.let(Transfer.SFTP.connect(config));
         *     $(Transfer.SFTP.put(conn, path, data));
         *     $(Transfer.SFTP.close(conn));
         * });
         *
         * const compiled = East.compileAsync(uploadFile.toIR(), Transfer.SFTP.Implementation);
         * await compiled("/uploads/file.txt", fileData);
         * ```
         */
        readonly put: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType, import("./types.js").StringType, import("@elaraai/east").BlobType], import("@elaraai/east").NullType>;
        /**
         * Downloads a file from an SFTP server.
         *
         * Retrieves binary data from the SFTP server at the specified remote path.
         *
         * @example
         * ```ts
         * const downloadFile = East.function([StringType], BlobType, ($, path) => {
         *     const config = $.let({
         *         host: "sftp.example.com",
         *         port: 22n,
         *         username: "user",
         *         password: variant('some', "password"),
         *         privateKey: variant('none', null),
         *     });
         *     const conn = $.let(Transfer.SFTP.connect(config));
         *     const data = $.let(Transfer.SFTP.get(conn, path));
         *     $(Transfer.SFTP.close(conn));
         *     $.return(data);
         * });
         *
         * const compiled = East.compileAsync(downloadFile.toIR(), Transfer.SFTP.Implementation);
         * await compiled("/downloads/file.txt");  // Uint8Array
         * ```
         */
        readonly get: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType, import("./types.js").StringType], import("@elaraai/east").BlobType>;
        /**
         * Lists files in an SFTP directory.
         *
         * Retrieves metadata for all files and directories in the specified path.
         *
         * @example
         * ```ts
         * const listFiles = East.function([StringType], ArrayType(FileInfoType), ($, path) => {
         *     const config = $.let({
         *         host: "sftp.example.com",
         *         port: 22n,
         *         username: "user",
         *         password: variant('some', "password"),
         *         privateKey: variant('none', null),
         *     });
         *     const conn = $.let(Transfer.SFTP.connect(config));
         *     const files = $.let(Transfer.SFTP.list(conn, path));
         *     $(Transfer.SFTP.close(conn));
         *     $.return(files);
         * });
         *
         * const compiled = East.compileAsync(listFiles.toIR(), Transfer.SFTP.Implementation);
         * await compiled("/uploads");  // [{name: "file.txt", size: 1024n, ...}, ...]
         * ```
         */
        readonly list: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType, import("./types.js").StringType], import("@elaraai/east").ArrayType<import("@elaraai/east").StructType<{
            readonly name: import("./types.js").StringType;
            readonly path: import("./types.js").StringType;
            readonly size: import("@elaraai/east").IntegerType;
            readonly isDirectory: import("@elaraai/east").BooleanType;
            readonly modifiedTime: import("./types.js").StringType;
        }>>>;
        /**
         * Deletes a file from an SFTP server.
         *
         * Removes a file from the SFTP server at the specified remote path.
         *
         * @example
         * ```ts
         * const deleteFile = East.function([StringType], NullType, ($, path) => {
         *     const config = $.let({
         *         host: "sftp.example.com",
         *         port: 22n,
         *         username: "user",
         *         password: variant('some', "password"),
         *         privateKey: variant('none', null),
         *     });
         *     const conn = $.let(Transfer.SFTP.connect(config));
         *     $(Transfer.SFTP.delete(conn, path));
         *     $(Transfer.SFTP.close(conn));
         * });
         *
         * const compiled = East.compileAsync(deleteFile.toIR(), Transfer.SFTP.Implementation);
         * await compiled("/uploads/old-file.txt");
         * ```
         */
        readonly delete: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType, import("./types.js").StringType], import("@elaraai/east").NullType>;
        /**
         * Closes the SFTP connection.
         *
         * Closes the connection and releases all resources.
         *
         * @example
         * ```ts
         * const cleanup = East.function([], NullType, $ => {
         *     const config = $.let({
         *         host: "sftp.example.com",
         *         port: 22n,
         *         username: "user",
         *         password: variant('some', "password"),
         *         privateKey: variant('none', null),
         *     });
         *     const conn = $.let(Transfer.SFTP.connect(config));
         *     // ... do work ...
         *     $(Transfer.SFTP.close(conn));
         * });
         *
         * const compiled = East.compileAsync(cleanup.toIR(), Transfer.SFTP.Implementation);
         * await compiled();
         * ```
         */
        readonly close: import("@elaraai/east").AsyncPlatformDefinition<[import("./types.js").StringType], import("@elaraai/east").NullType>;
        /**
         * Node.js implementation of SFTP platform functions.
         *
         * Pass this to East.compileAsync() to enable SFTP operations.
         */
        readonly Implementation: import("@elaraai/east/internal").PlatformFunction[];
        /**
         * Type definitions for SFTP operations.
         */
        readonly Types: {
            /**
             * SFTP connection configuration type.
             */
            readonly Config: import("@elaraai/east").StructType<{
                readonly host: import("./types.js").StringType;
                readonly port: import("@elaraai/east").IntegerType;
                readonly username: import("./types.js").StringType;
                readonly password: import("@elaraai/east").OptionType<import("./types.js").StringType>;
                readonly privateKey: import("@elaraai/east").OptionType<import("./types.js").StringType>;
            }>;
            /**
             * File information metadata type.
             */
            readonly FileInfo: import("@elaraai/east").StructType<{
                readonly name: import("./types.js").StringType;
                readonly path: import("./types.js").StringType;
                readonly size: import("@elaraai/east").IntegerType;
                readonly isDirectory: import("@elaraai/east").BooleanType;
                readonly modifiedTime: import("./types.js").StringType;
            }>;
        };
    };
};
//# sourceMappingURL=index.d.ts.map