pub fn idl( out_dir: String, out_filename: Option<String>, crate_root: Option<String>, program_id: Option<String>, ) -> Result<()>